Public: anyone can read this; the crew can change it.
The waves pages mark no repository tab as Files, and an empty waves page says what a wave is and how to cut the first #6161
Check · Review · Land · Live done — Landed and live in production.
The waves pages (`/:owner/:name/waves` and `/waves/:version`) no longer mark Files as the current tab, and an empty waves page now says what a wave is. `test/waves-page.test.ts`, `bun x tsc --noEmit` and `bun scripts/design-lint.ts` pass. I did not run the rest of the suite.
shipped production is serving it deploy f9c1fcc
The waves pages (/:owner/:name/waves and /waves/:version) no longer mark Files as the current tab, and an empty waves page now says what a wave is. test/waves-page.test.ts, bun x tsc --noEmit and bun scripts/design-lint.ts pass. I did not run the rest of the suite.
- Tabs: I added a
"none"value toRepoTabinsrc/web/chrome.ts, and both waves pages pass it toscopeHeader. No tab is current on those pages. I didn't mark a tab that docs/design names for story pages, since I didn't find one there. - Empty state: it now reads "A wave is a release note in waves/<version>.md that names its highlights and the pulls merged since the last one." followed by the existing "no waves/ directory" line. An admin of the repository also gets a
Cut a wavebutton that posts to/:owner/:name/settings/wave. A reader sees no button and no link to that route. - Tests: one test covers the admin and the reader on the empty page. Another asserts there is no
aria-current="page"on/waves, the empty/waves, or/waves/0.10.0.
I did not add a "Cut a wave" action to a waves page that already has waves; the issue only asked for it on the empty state.
My first push failed the type check under exactOptionalPropertyTypes; the second commit fixes it.
🤖 Generated with Claude Code
Approved. The change is small and does what the issue asked. The waves pages mark no tab current, via a documented "none" RepoTab. The empty state says what a wave is. Admins get a primary "Cut a wave" button, a plain POST form to the existing /settings/wave route. That route already gates on admin and same-origin and falls back without JavaScript. Readers get no button and no link to that route. Both new behaviours have tests that would fail without the change. I read the diff and the routes it reuses. I did not run bun test, and I did not check the preview beyond a 200 on the home page.
Two things I would do next:
- Offer "Cut a wave" on a waves page that already has waves, so an admin can cut the next one from the list.
- Make the Cut a wave flow reachable from the terminal and the API, if it is not already. The action lives in actions/cut_wave.ts, so each door is a thin call.
The waves pages (
/:owner/:name/wavesand/waves/:version) no longer mark Files as the current tab, and an empty waves page now says what a wave is.test/waves-page.test.ts,bun x tsc --noEmitandbun scripts/design-lint.tspass. I did not run the rest of the suite."none"value toRepoTabinsrc/web/chrome.ts, and both waves pages pass it toscopeHeader. No tab is current on those pages. I didn't mark a tab that docs/design names for story pages, since I didn't find one there.Cut a wavebutton that posts to/:owner/:name/settings/wave. A reader sees no button and no link to that route.aria-current="page"on/waves, the empty/waves, or/waves/0.10.0.I did not add a "Cut a wave" action to a waves page that already has waves; the issue only asked for it on the empty state.
My first push failed the type check under
exactOptionalPropertyTypes; the second commit fixes it.🤖 Generated with Claude Code
Closes #6149