DEF-33: a cold start no longer announces "Animation paused" - #39
Merged
Merged
Conversation
Startup paused the animation after the pause listener was attached, so every load told a screen reader "Animation paused", and a restored session's "Previous session restored" was replaced at once; startup now pauses before attaching the listeners. Verify: 85 test files · 1,191 tests · shell 0 · build:check 0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013dV8F9uaxT1v6tu3JFqTkf
The review found the restored route unpinned and the cold check open to any other startup text; a booted restore now records exactly "Previous session restored", and a cold start leaves the live region empty. Verify: 85 test files · 1,192 tests · shell 0 · build:check 0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013dV8F9uaxT1v6tu3JFqTkf
The areaEdit file-map row they edited sits next to the bootApp row this PR edits; both rows keep their notes. Verify: 85 test files · 1,214 tests · shell 0 · build:check 0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013dV8F9uaxT1v6tu3JFqTkf
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.
Post-W2 queue · DEF-33 (plan §12.1 DEF-33, P3). This changes behaviour, for screen-reader users only. Loading the app no longer announces "Animation paused". A restored session's "Previous session restored" now stays long enough to be read.
The defect
Stated new behaviour
The change
src/main.js: the startuppause()andseekToProgress(1.0)run beforesetupAnimationEngineListeners()instead of after it.Evidence
Tests first. In
tests/bootApp.test.js, each on a booted app afterapp.ready:main: the live region reads "Animation paused" where it should be emptymain: the announcements are "Previous session restored" then "Animation paused"Mutations, each against the whole suite (parallel, JSON report, watchdog):
First round, on the first commit:
src/main.jsas onmainAfter the review:
src/main.jsas onmainIn a real browser (headless Chromium 141, in this session's cloud container). I built
mainandmainplus this change in throwaway clones and served each locally; nothing touched Joe's machine or the live site. A MutationObserver recorded every text the live region took during a load:mainReview
Codex isn't available in this cloud container. Instead, an independent Claude agent attacked five numbered claims. It had a fresh context, its own no-remote clone and the falsification brief Codex would get. It used Chromium on both builds across 16 startup routes, plus two more failure routes:
It confirmed all five claims:
mainexactly. The app has no URL or hash entry points.mainthey were overwritten within about 10 ms.main, by the buttons, Space, K, L, J,,and Home.mainand catches the order reverting.It asked for two test changes, both adopted:
It also noted:
displayinstead of the inlineinline-blockthe pause listener used to set. It measured pixel-identical at four viewport and pixel-ratio settings, so I left it alone. Firefox and Safari weren't available.app.ready, and the rerun passed. It's recorded for the wish-list.Found on the way, on
mainas here, to propose to Joe in the close-out PR:If Joe wants Codex's view before merging, the same falsification brief is ready to run against this branch.
Design review gate (
UI-STANDARDS.md)No control, layout or style changes. A screen-reader user no longer hears a pause they didn't make, and now hears their session being restored. The announcement policy is unchanged: polite, and only for what the author does or needs to know.
Still manual
file-map.md: thebootApptest row describes the new coverage. The plan: a dated note on DEF-33's row.Verify
npm run check: 85 test files · 1,192 tests · 2 todo · shell 0 · build:check 0.main: 85 · 1,190 · 2 todo.Rollback
Revert this PR. Either way, the change reaches users only through a release.
🤖 Generated with Claude Code
https://claude.ai/code/session_013dV8F9uaxT1v6tu3JFqTkf
Generated by Claude Code