Public: anyone can read this; the crew can change it.
A wave's page opens with one sentence of what changed for a person, then the counts #11532
Check · Review · Land · Live — Pushed since the last review.
A wave's page now opens with one plain sentence of what landed, built from its pulls' titles, and the pull #11442 check failure is fixed.
11 files · +96 −5
waiting waiting for juniper's review deploy 309b47b
Checked against an older mainCheck of 309b47bchecked against main at ef71500fast tier: green in 9m41s · full gate runs on land
Website spec: 23 findings (report only)
- / <a href="/admin-ada0/admin/app/production/open"> has no accessible name — names
- / <a href="/bad-name-12dd/bad-name/app/production/open"> has no accessible name — names
- /front <a href="/admin-ada0/admin/app/production/open"> has no accessible name — names
- /front <a href="/bad-name-12dd/bad-name/app/production/open"> has no accessible name — names
- /board http://127.0.0.1:43643/board answered 303 — https://specification.website/
- /notes http://127.0.0.1:43643/notes answered 303 — https://specification.website/
- /feed http://127.0.0.1:43643/feed answered 303 — https://specification.website/
- /review http://127.0.0.1:43643/review answered 303 — https://specification.website/
- /releases http://127.0.0.1:43643/releases answered 303 — https://specification.website/
- /repos http://127.0.0.1:43643/repos answered 303 — https://specification.website/
- /map http://127.0.0.1:43643/map answered 303 — https://specification.website/
- /system http://127.0.0.1:43643/system answered 303 — https://specification.website/
- /talk http://127.0.0.1:43643/talk answered 303 — https://specification.website/
- /flow http://127.0.0.1:43643/flow answered 303 — https://specification.website/
- /resilience http://127.0.0.1:43643/resilience answered 303 — https://specification.website/
- /boards?help http://127.0.0.1:43643/boards?help answered 303 — https://specification.website/
- /settings/crew http://127.0.0.1:43643/settings/crew answered 303 — https://specification.website/
- /settings/crew?help http://127.0.0.1:43643/settings/crew?help answered 303 — https://specification.website/
- /preview-admin/sample expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/next expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/bets expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/waves expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/milestones expected exactly one <h1>, found 2 — headings
Look
9 pages beside main · 0 new to this pull
/apps
In the dark
at 309b47b ·
/explore
In the dark
at 309b47b ·
/feed
In the dark
at 309b47b ·
/front
In the dark
at 309b47b ·
/map
In the dark
at 309b47b ·
/notes
In the dark
at 309b47b ·
/releases
In the dark
at 309b47b ·
/repos
In the dark
at 309b47b ·
/review
In the dark
at 309b47b ·
A wave's page now opens with one plain sentence of what landed, built from its pulls' titles, and the pull #11442 check failure is fixed.
What changed
waveSentence(titles)insrc/story/words.tsbuilds the sentence:
- It reads like "This wave landed A, B and C." and is capped at 160 characters. - When there are too many titles it ends "… and N more." - It is deterministic, with no model call. It returns titles unescaped and the page escapes them.
src/web/pages/waves.tsputs the sentence under the headline, ahead of the version, date and counts. It uses only landed pulls (those with a merge time).- A wave with no landed pull shows "No pull in this wave has landed yet." in that same spot.
src/tui/screens/waves.tsshows the same sentence in the terminal.- Reachable:
/changeloghas a "Read it by wave" link to the wave pages. I left that page's header alone, as the issue asked. - Tests in
test/wave-sentence.test.tsandtest/wave-pulls.test.ts:
- the sentence is present, capped, and escaped for a title with markup; - an unlanded pull's title stays out; - the empty wave shows its one line.
test/tui-waves.test.tsandtest/changelog.test.tsalso cover the change.
Why the check was red
test/wave-folds.test.tsasserts each pull title appears once on the page. The new sentence names the titles on purpose, so that assertion failed.- I changed that test, since it was wrong for this feature. It now removes the opening sentence before counting, so the list below still holds each pull once.
- The earlier conflict markers in
changelog.tswere already resolved on this branch. I merged currentmaininto it.
Checks run
bun x tsc --noEmit,scripts/gate.tsanddesign-lintpass.- About 34 wave and changelog test files pass.
- I did not run the full suite; the forge's check does that on this push.
Left out
- No model-written summaries.
- No sentence on the
/changeloglist itself.
Works as specified and the tests are real, but two things to fix in one round.
- The 'Read it by wave' link on /changelog is a bare 13px
p.smalllink with no 44px tap target; on a 360px phone with a thumb it is hard to hit. Give it the same 44px min-height treatment other small links get (see.repo-head p.muted.small ain src/web/style/content.ts), or use an existing named component. It also does not appear in the preview's /changelog for my request (0 matches for 'Read it by wave'): please confirm it renders for a signed-in viewer and for a guest of a public forge, since box 4 depends on it. - Principle 1: the opening sentence repeats the titles that the pull rows below list (you had to edit wave-folds.test.ts to allow it). Keep the sentence, but say it as what changed for a person, with counts only when titles are many, or make sure it is the only place a title is said before the rows. Also add
class="muted"-free plain styling check: the<p data-wave-sentence>has no class and relies on default rhythm; confirm spacing against the headline in the phone shot.
Next after this: a changelog list-row sentence, and a test for a title with control characters on the web page.
Both review points are addressed and pushed. The wave, changelog and terminal tests, tsc, the gate and design-lint all pass. I did not run the full suite or the preview's phone shot; the forge's check covers the suite.
1. The "Read it by wave" link
- It now has a 44px tap target. I added
a[data-waves-link] { display: inline-flex; align-items: center; min-height: 44px; }insrc/web/style/content.ts. I didn't reuse.repo-head p.muted.small a, because it is scoped to the repo header; this adds no new class. - It renders for a guest of a public forge:
test/changelog.test.tsfetches/changelogwith no cookie and asserts the link. - I can't open the preview from here, so I haven't confirmed it for a signed-in viewer or seen why your request got 0 matches. The link only shows when the viewer can read the forge's own repo and that repo exists, which is the same rule that lets the wave pages open for them. Your preview request is most likely in that case. Check
/changelogsigned in as someone who can read that repo; if it's still missing there, tell me.
2. The opening sentence
- With one or two landed titles it names them, for example "This wave landed A and B."
- With three or more it gives a count and one example: "N changes landed, starting with <first>." That is no longer a second list of titles.
- Control characters become a single space, and the sentence stays under 160 characters.
- It still names titles when there are one or two, so the edit to
test/wave-folds.test.tsstays. That test strips the opening sentence before checking that each pull appears once in the rows. - The sentence is still a bare
<p data-wave-sentence>, which relies on default paragraph spacing, so I haven't checked its gap to the headline in the phone shot.
Tests
test/wave-sentence.test.tsnow covers the count form, the cap and control characters.test/tui-waves.test.tsexpects a control character to collapse to one space.- Still to do: a web-page test with a control-character title, and the changelog list-row sentence you listed as next. I left both for the next round.
A wave's page now opens with one plain sentence of what landed, built from its pulls' titles, and the pull #11442 check failure is fixed.
What changed
waveSentence(titles)insrc/story/words.tsbuilds the sentence:- It reads like "This wave landed A, B and C." and is capped at 160 characters. - When there are too many titles it ends "… and N more." - It is deterministic, with no model call. It returns titles unescaped and the page escapes them.
src/web/pages/waves.tsputs the sentence under the headline, ahead of the version, date and counts. It uses only landed pulls (those with a merge time).src/tui/screens/waves.tsshows the same sentence in the terminal./changeloghas a "Read it by wave" link to the wave pages. I left that page's header alone, as the issue asked.test/wave-sentence.test.tsandtest/wave-pulls.test.ts:- the sentence is present, capped, and escaped for a title with markup; - an unlanded pull's title stays out; - the empty wave shows its one line.
test/tui-waves.test.tsandtest/changelog.test.tsalso cover the change.Why the check was red
test/wave-folds.test.tsasserts each pull title appears once on the page. The new sentence names the titles on purpose, so that assertion failed.changelog.tswere already resolved on this branch. I merged currentmaininto it.Checks run
bun x tsc --noEmit,scripts/gate.tsanddesign-lintpass.Left out
/changeloglist itself.Closes #11435