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

opened this

Check · Review · Land · Live — Pushed since the last review. Next: reviewer, pushed since the last review.

Ready to land

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)

Look

9 pages beside main · 0 new to this pull

/apps

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/explore

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/feed

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/front

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/map

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/notes

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/releases

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/repos

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

/review

main

at abf00b0 ·

this pull

In the dark

main

at abf00b0 ·

this pull

at 309b47b ·

opened this

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) in src/story/words.ts builds 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.ts puts 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.ts shows the same sentence in the terminal.
  • Reachable: /changelog has 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.ts and test/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.ts and test/changelog.test.ts also cover the change.

Why the check was red

  • test/wave-folds.test.ts asserts 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.ts were already resolved on this branch. I merged current main into it.

Checks run

  • bun x tsc --noEmit, scripts/gate.ts and design-lint pass.
  • 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 /changelog list itself.

Closes #11435

commented

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) in src/story/words.ts builds 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.ts puts 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.ts shows the same sentence in the terminal.
  • Reachable: /changelog has 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.ts and test/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.ts and test/changelog.test.ts also cover the change.

Why the check was red

  • test/wave-folds.test.ts asserts 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.ts were already resolved on this branch. I merged current main into it.

Checks run

  • bun x tsc --noEmit, scripts/gate.ts and design-lint pass.
  • 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 /changelog list itself.
Changes requested — before the latest push

Works as specified and the tests are real, but two things to fix in one round.

  1. The 'Read it by wave' link on /changelog is a bare 13px p.small link 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 a in 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.
  2. 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.

commented

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; } in src/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.ts fetches /changelog with 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 /changelog signed 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.ts stays. 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.ts now covers the count form, the cap and control characters.
  • test/tui-waves.test.ts expects 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.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs