Skip to content

feat(newsroom): version splash on every release, named in the rollout chart - #158

Merged
RonanHevenor merged 1 commit into
mainfrom
feat/version-splash
Sep 9, 2026
Merged

RonanHevenor merged 1 commit into
mainfrom
feat/version-splash

Conversation

@RonanHevenor

Copy link
Copy Markdown
Member

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.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 ever since.

What changed

VersionSplash replaces NewsroomMovedNotice and renders whatever version is deployed:

Welcome to Polymer 1.1.0 — Indigo! 🎉
Polymer 1.1.0 - Nobody gets their head cut off any more.

  • Gate is now latestVersion !== APP_VERSION instead of a literal '1.0.0'
  • /api/newsroom/version-notice stamps APP_VERSION instead of '1.0.0'
  • Release notes live in RELEASE_NOTES in lib/version.ts

Announcing a release is now a package.json bump 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:

stored legend
1.1.0 1.1.0 “Indigo”
1.0.0 1.0.0 “Indigo”
0.0.0 0.0.0
2.3.1 2.3.1

0.0.0 is 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_version has existed in both paths since 20260324_220000.

Verified

  • New route 401s unauthenticated; old path is now 404
  • Gate shows for 0.0.0 and 1.0.0, hides at 1.1.0
  • Legend labels render as in the table above

Note

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 typecheck clean. pnpm lint 0 errors (53 pre-existing migrations/ warnings, unchanged).

🤖 Generated with Claude Code

… 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>
@RonanHevenor
RonanHevenor merged commit 2900a1e into main Sep 9, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant