feat(newsroom): version splash on every release, named in the rollout chart - #158
Merged
Merged
Conversation
… chart The dashboard already had both halves of this and neither knew about the other: users.latestVersion recorded which release a person had acknowledged, and the admin-only pie chart grouped unretired staff by that field. But the notice that wrote it was hardcoded to 1.0.0 — component copy, gate condition and API route all — so it announced itself once, in March, and could never fire again. Everyone has been stuck in the 1.0.0 slice since. Generalises it. VersionSplash replaces NewsroomMovedNotice and renders whatever version is deployed: "Welcome to Polymer 1.1.0 — Indigo!", the release's tagline, and its notes. The gate is now latestVersion !== APP_VERSION rather than a literal, and /api/newsroom/version-notice stamps APP_VERSION rather than '1.0.0'. Announcing a release is now a package.json bump plus an entry in RELEASE_NOTES. Since dismissing the splash is what writes the field the chart counts, the chart becomes a read on how many people have actually seen the notes rather than a fossil. Its legend now carries the release name beside the number — 1.1.0 "Indigo" — falling back to the bare number for majors with no name, including the 0.0.0 bucket for staff who have not signed in since version tracking began. The old route is deleted rather than left in place; nothing else called it. Dismissal closes the modal even if the stamp request fails, so a network error means seeing the notice again next load rather than being trapped behind it. No migration: users.latest_version has existed in both paths since 20260324_220000. Verified: the new route 401s unauthenticated and the old path is now 404; the gate shows for 0.0.0 and 1.0.0 and hides at 1.1.0; the legend renders 1.0.0 "Indigo" and 1.1.0 "Indigo" while 0.0.0 and an unnamed 2.3.1 stay bare. pnpm typecheck clean. pnpm lint 0 errors (53 pre-existing migrations/ warnings, unchanged). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You asked for the splash — "welcome to version ___" — and to see it in the pie chart. Both halves already existed in the dashboard and neither knew about the other.
users.latestVersionrecorded which release a person had acknowledged, and the admin-only pie chart grouped unretired staff by that field. But the notice that wrote it was hardcoded to1.0.0— component copy, gate condition, and API route all. So it announced itself once, in March, and could never fire again. Everyone has been stuck in the 1.0.0 slice ever since.What changed
VersionSplashreplacesNewsroomMovedNoticeand renders whatever version is deployed:latestVersion !== APP_VERSIONinstead of a literal'1.0.0'/api/newsroom/version-noticestampsAPP_VERSIONinstead of'1.0.0'RELEASE_NOTESinlib/version.tsAnnouncing a release is now a
package.jsonbump plus one entry. Nothing else.The chart becomes live again
Dismissing the splash is what writes the field the chart counts — so the chart stops being a fossil and starts reading as how many people have actually seen the notes.
Its legend now carries the release name beside the number, falling back to the bare number for unnamed majors:
1.1.01.1.0 “Indigo”1.0.01.0.0 “Indigo”0.0.00.0.02.3.12.3.10.0.0is the bucket for staff who haven't signed in since version tracking began; the name is per major, which is why both 1.x entries read Indigo.Details
The old route is deleted rather than left behind — nothing else called it. Dismissal closes the modal even if the stamp request fails, so a network error means seeing the notice again next load rather than being trapped behind it.
No migration.
users.latest_versionhas existed in both paths since20260324_220000.Verified
401s unauthenticated; old path is now4040.0.0and1.0.0, hides at1.1.0Note
I could not click through the rendered modal or the chart — that needs a logged-in newsroom session, and I don't enter credentials. The logic above is verified directly; the visual pass is worth a look when you next open
/newsroom.pnpm typecheckclean.pnpm lint0 errors (53 pre-existingmigrations/warnings, unchanged).🤖 Generated with Claude Code