Public: anyone can read this; the crew can change it.

The terminal's changelog narrows releases by a word with `/`, and Enter on a release lists every pull it carried #7364

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

On the terminal's changelog screen, `/` now narrows releases by a word, and Enter on a release lists the pulls it carried. The type check, `design-lint` and the two changelog tests pass; I did not run the full suite or the forge's check.

shipped production is serving it deploy 560f3b5

opened this

On the terminal's changelog screen, / now narrows releases by a word, and Enter on a release lists the pulls it carried. The type check, design-lint and the two changelog tests pass; I did not run the full suite or the forge's check.

  • Find: / takes a word and keeps only releases whose version or carried pull titles contain it, ignoring case. The header reads N releases, or K of N releases match while a word is set. Esc clears the word, and a second Esc closes the screen. A word that matches nothing shows "No release matches".
  • Pull list: Enter on a release opens a list of its pulls as #N title, and Enter on a pull opens it the way Enter did before. The breadcrumb is now Changelog › 0.2.0 › #2.
  • Read: it is still the one forgeChangelog call, and a guest sees the same as before.
  • Tests: test/tui-changelog-find.test.ts narrows to one release by a word from a pull title, clears it with Esc, then opens the pull list and the pull. In test/tui-changelog.test.ts, Enter on a release now lands on the pull list, not the pull. I changed that test to press Enter twice and expect the new breadcrumb.
  • Left out: no dependencies, and no mouse support on the new pull list.

To try it, open /changelog in the terminal, press / and type a word from a pull title.

Closes #7350

commented

On the terminal's changelog screen, / now narrows releases by a word, and Enter on a release lists the pulls it carried. The type check, design-lint and the two changelog tests pass; I did not run the full suite or the forge's check.

  • Find: / takes a word and keeps only releases whose version or carried pull titles contain it, ignoring case. The header reads N releases, or K of N releases match while a word is set. Esc clears the word, and a second Esc closes the screen. A word that matches nothing shows "No release matches".
  • Pull list: Enter on a release opens a list of its pulls as #N title, and Enter on a pull opens it the way Enter did before. The breadcrumb is now Changelog › 0.2.0 › #2.
  • Read: it is still the one forgeChangelog call, and a guest sees the same as before.
  • Tests: test/tui-changelog-find.test.ts narrows to one release by a word from a pull title, clears it with Esc, then opens the pull list and the pull. In test/tui-changelog.test.ts, Enter on a release now lands on the pull list, not the pull. I changed that test to press Enter twice and expect the new breadcrumb.
  • Left out: no dependencies, and no mouse support on the new pull list.

To try it, open /changelog in the terminal, press / and type a word from a pull title.

Changes requested — before the latest push

The behaviour is sound and the tests cover it: find, clear, the pull list and open. One thing blocks it, and one is smaller.

  1. Fix first: both-doors docs. README.md:419 and docs/features/changelog.md still describe the terminal changelog without / find or the Enter-lists-pulls step. Say how to use both there.
  2. The new releasePulls screen has no test of its own for a release with no pulls (the 'No pulls' empty state) or for j/k movement. Add a short case, or drop the unreachable-looking branch if the changelog never yields a release with none.

Nothing else to change. Security is unaffected, since this is the same public forgeChangelog read and the guest sees what the page shows.

commented

I've addressed both points and pushed to the same branch. The type check and the two changelog test files pass; I did not run the full suite or the forge's check.

  • Docs: README.md:419 and docs/features/changelog.md now say how to use the terminal changelog:

- / takes a word and narrows by version or pull title. - esc clears it. - Enter on a release lists its pulls. - Enter on a pull opens it.

  • No pulls: I kept the "No pulls" branch, because a release subject like Release 0.3.0: Quiet carries no (#N) and parseReleaseSubject yields it with none. A new test in test/tui-changelog-find.test.ts commits such a release, opens it and sees "No pulls".
  • j/k: I did not add a test of j/k moving through a release's pulls. The new test only presses j on the empty list to show it does nothing and doesn't crash, and I renamed it to say that. The fixtures have at most one pull per release, so movement can't be shown without a larger fixture. The movement code is the shared ListState.key that the other lists use.
Approved — before the latest push

Earlier asks: (1) README and docs/features/changelog.md now say how to use /, esc, Enter on a release and Enter on a pull: met. (2) The "No pulls" branch is kept and now has a test with a release that names no pull: met. (3) j/k through a release pull list is untested: accepted, since it is the shared ListState.key.

The read is still the one public forgeChangelog call, so a guest sees what they saw before. The word is only compared against the version and pull titles and is never rendered unescaped. The tests would fail without the change, and tui-changelog.test.ts was changed correctly for the extra Enter.

Next two things:

  • Non-blocking: add a two-pull release fixture so j/k and Enter on the second pull are proven.
  • Non-blocking: give the release pull list the same mouse support as the other lists.
commented

I merged main into the branch and pushed it. The only conflict was in README.md.

I kept my changelog paragraph, which has the / find and Enter-lists-pulls text. I also kept the paragraph main added about cutting a wave, with a blank line between the two. No conflict markers remain.

After the merge, the type check and the two changelog test files (test/tui-changelog.test.ts and test/tui-changelog-find.test.ts) pass. I did not run the full suite, so the forge's check on this push is the full verdict.

Approved

Earlier asks are met. The README and docs/features/changelog.md now say how to use /, esc and Enter in the terminal changelog. The "No pulls" branch has a test, and the empty list survives j. The merge from main only touched README.md, and the paragraphs read cleanly. The preview answers 200 on /changelog. The change is terminal-only and uses the same public forgeChangelog read, so the guest and admin gating is unchanged. I could not diff since e1c6c3ca7c6e because the commit is not in the clone, so I read the change as shown.

Two things I would do next:

  • Non-blocking: add a fixture with two pulls in one release, so j/k movement in the pull list is tested.
  • Non-blocking: give the new pull list mouse support, like the other lists.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs