release: 1.4.1 — fix showcase zoom-churn + close the audit blind spot - #14
Merged
Conversation
… churn) The v1.4.0 showcase re-zoomed the deploy card 3x: it framed #deploy-panel, zoomed out, framed #rollback-countdown (which lives INSIDE #deploy-panel), zoomed out, then framed #deploy-panel again — same card, three needless focuses. Authoring bug, not the motor: the roster used camera:out between annotations on one panel (violating the zoom-churn rule the docs already state, which the audit missed because the selectors were nested, not identical). Fix: one held camera on #deploy-panel across the whole deploy flow (block -> auto-rollback -> re-run -> ship), swapping only the annotation + state colour. The deploy card is now framed once. Lighter too (6.2MB -> 5.0MB, 68s -> 60s).
The v1.4.0 showcase (fixed in the previous commit on this branch) exposed a gate blind spot: the zoom-churn safeguard only flagged re-framing the SAME selector after camera:"out", so re-framing a NESTED element of the same card (#deploy-panel -> #rollback-countdown-inside-it -> #deploy-panel) slipped past PLACE-clean + the audit. - auditRosterLive: DOM-aware zoom-churn — runs contains() both ways, so framing a child (or the parent) of a card framed a beat ago, across a camera:"out", warns. - audit-roster.mjs surfaces the live warnings alongside the static ones. - +1 test (573 total); bump 1.4.1 + CHANGELOG.
PR #13 shipped the new didactic showcase.mp4 but left the OLD ~90-step feature-cram roster committed as assets-src/showcase-steps.json — so the mp4 and its source were out of sync, and re-rendering "the same command" (README's promise) would reproduce the old reel, not the shipped one. This class is exactly "will it break again?": fix the OUTPUT but not the SOURCE and it regresses on the next render. Replace assets-src/showcase-steps.json with the fixed 19-step held-camera flow (byte-identical to the roster that rendered the shipped assets/showcase.mp4). Audit-clean (0 zoom-churn, no off-screen/anchor errors). Now source == output; re-rendering reproduces the fixed, churn-free reel. Render: node showreel/scripts/rec.mjs \ "file://$PWD/assets-src/demo/index.html?gate=fail" \ --steps assets-src/showcase-steps.json assets/showcase.mp4 \ --fps 30 --width 1600 --height 900
…own artifacts) The professional call on zoom-churn: keep it a WARN in the motor (a craft issue, not broken output; the contains() heuristic can flag a motivated return, so hard-erroring every render would be wrong), and enforce it in CI. The roster-audit job now runs the committed showcase roster with --strict, so ANY warning (churn, arbitrary-primitive, random-camera) fails the build. The project holds its own showcase to zero-churn; end-users keep warn-by-default + opt-in --strict. Verified: the fixed showcase roster passes --strict at the CI dims (1280x676), exit 0.
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.
Two fixes for the zoom-churn bug you spotted in the v1.4.0 showcase.
1. The showcase (asset). It re-zoomed the deploy card 3× — framed
#deploy-panel, pulled out, framed#rollback-countdown(which lives inside the panel), pulled out, framed#deploy-panelagain. Now one held camera on#deploy-panelcarries the whole flow (block → auto-rollback → re-run → ship), swapping only the annotation + state colour. Lighter too (6.2MB → 5.0MB). Authoring fix, not the motor.2. The gate that missed it (engine).
audit-rosteronly flagged re-framing the same selector aftercamera:"out"; it missed a nested element of the same card. The live audit now runs the DOMcontainscheck both ways, so framing a child — or the parent — of a card framed a beat ago is flaggedzoom-churn. Warning, never fatal. +1 test (573 total).Bumped to 1.4.1 + CHANGELOG.
🤖 Generated with Claude Code