Skip to content

Retire the Changesets whitespace defect through Fast Forward Changelog #108

Closed

Description

@coisa

Delivery target and current plan

Resumed by the owner through PR #115, candidate 2120c39e276db1d6bffd35b44bd31152f9bb8bc9, reconciled with master fa5dd984977c2efc56b30bf97d92ce2887c53b51. This is compatible 2.x release-tooling maintenance; PR #3 remains independent.

The selected repair replaces the old Changesets generator rather than adding a parallel formatter. The new lifecycle uses the official Fast Forward Changelog v0 branch, reviewed against published v0.2.0. It preserves Markdown structure and the unchanged Git whitespace check. Ordinary contributions use independent .changelog/*.md fragments; historical normalization is explicit maintenance.

  • Remove the old generator and Node-only release tooling in the candidate.
  • Preserve meaningful multiline Markdown and empty-plan behavior in disposable CLI rehearsals; intentional two-space breaks remain subject to Git's existing trailing-whitespace rule.
  • Keep runtime PHP APIs, Composer constraints and existing coverage policy unchanged.
  • Update contribution/release guidance and include one new-format migration fragment.
  • Verify the updated candidate's exact-head consolidation and native PHP/docs/style/new-Changelog checks; document the old base-workflow's package.json failure separately.
  • Owner merged PR ci(release): replace Changesets with Fast Forward Changelog #115 at 2026-10-18T07:36:52Z as 98ed5171ce8a9d98dc11ce9002ac47c53e47d78a; its native Closes #108 link closed this issue.

Do not add a separate Changesets adapter or weaken validation. Historical GitHub Release body synchronization is prepared separately and requires explicit owner approval after the canonical history is merged. Issue #100 remains separate: changelog status is not PHP CI. No merge, tag, release publication or settings change is authorized by this implementation.

Prior investigation, scope and evidence

Observed tooling limitation

The release tooling already published in v2.5.0, source 83c887a145169b66548de2d2ce875055328c5aa1, can generate whitespace-only changelog lines from ordinary multiline Changeset summaries.

Native run 39008270037 tested PR #3 head 650a662ef88df895a072d9ad87db48437c0da401 through synthetic merge 8f231a901d79504618e2ebcb5f4ae46259d45288. Node 24.21.0 / npm 11.19.0 installed the locked tooling; Changesets CLI 3.0.3 correctly selected a major and generated its version changes. The final git diff --check rejected two generated CHANGELOG.md lines containing only two spaces.

In inspected @changesets/changelog-github 1.0.1, continuation lines receive two-space indentation, including empty internal separators. The release-plan trimming preserves those internal lines, and repository format: false performs no formatter cleanup. This was generated whitespace, not an incorrect release classification.

The compact-note correction in current PR #3 head e9fe5235988ef96562b046e9d9c95f72f6d34b0e avoids that input and passes native Changesets validation. General multiline support remains an optional tooling investigation; it does not block the major.

Goal and decision boundary

Decide whether to document the current compact-note constraint or support ordinary paragraph/list summaries. Prefer an actual upstream correction if a verified release provides it. A narrow adapter through the existing changelog hook or native formatter is an alternative to evaluate, not a chosen implementation or approved dependency.

Do not add a release runner, patch installed dependencies, relax Git whitespace validation, ignore the changelog or strip intentional hard-break spaces from every nonempty Markdown line. Keep GitHub attribution and the existing no-thanks policy.

Acceptance for a general repair

  • Establish the smallest supported correction with exact tooling/source versions; distinguish upstream facts from inference.
  • Reuse the existing native rehearsal on a disposable authorized 2.x checkout. A note with two paragraphs, wrapped text and a nested list must pass status/version commands and the unchanged final whitespace check.
  • Preserve paragraph/list structure, meaningful hard breaks/code, PR/commit links, historical text, both npm version fields and the current empty-plan/no-op behavior. Only intended version artifacts and consumed notes change.
  • Confirm existing single-line/compact notes still work; do not substitute a whitespace-helper unit test for the actual version command.
  • Update release/contributor guidance and apply the normal Changeset policy. No PHP API, Composer requirement, runtime test framework or major migration change is needed.

This is independent compatible 2.x release-tooling maintenance. Issue 100 concerns missing native CI on generated version-PR heads, a different scope. Issue 26 owns the major; this task neither changes its gates nor authorizes merge, release, tags or settings.

Activity

  1. added this to the 2.x maintenance milestone on Oct 17, 2026
  2. changed the title [-]Investigate whitespace-only changelog lines from multiline Changesets[/-] [+]Retire the Changesets whitespace defect through Fast Forward Changelog[/+] on Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions