Add PosterBoard: FigJam-style pan/zoom board card (v1 step 1)#665
Closed
burieberry wants to merge 2 commits into
Closed
Add PosterBoard: FigJam-style pan/zoom board card (v1 step 1)#665burieberry wants to merge 2 commits into
burieberry wants to merge 2 commits into
Conversation
Staging Submissions PreviewThis PR's content is pushed to the staging submissions realm: https://realms-staging.stack.cards/submissions/ Changed folders:
Updated at 2026-07-17 20:07:45 UTC for commit |
Author
|
[Claude Code 🤖] Superseded by #666 — same commits; the head branch was renamed from cs-12193-productionize-poster-board to cs-12213-posterboard-step-1-live-test-for-panzoom-board-first-boxel to match the step-1 ticket, which auto-closed this PR. |
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.
Adds
poster-board/, step 1 of the minimal poster-board plan (CS-12193): an infinite-canvas board card with pan, zoom, and a zoom toolbar — no cards on the board yet (that's step 2).Closes CS-12213.
What's here
rig.gts— pure-TS pan/zoom camera engine ("rig" as in camera rig): cursor-anchored wheel/pinch zoom, drag-pan sessions with velocity sampling, rAF momentum with time-normalized inertia decay for both pan and zoom. No DOM or card-api dependencies; ported nearly verbatim from the experiments-realm prototype.poster-board.gts— thePosterBoardcard def. Isolated view wires pointer/wheel events into the rig and renders from its tracked state: singlescale() translate()transform on one plane element, dot grid, zoom HUD (+ / % / − / 100% / Fit), Shift+=/−/0keyboard zoom. Fit currently resets the view; real fit-to-content lands in step 4 (CS-12216).poster-board.test.gts— live tests (3 tests / 8 assertions): isolated render + toolbar + computedcardTitle, zoom buttons changing/resetting the zoom readout, Fit resetting the view.PosterBoard/demo-poster-board.json— a demo instance.README.md— how to run the tests (browser and headless).Conventions applied
Semantic HTML (
h1/p/header,role='toolbar',<output>readout, aria labels), semantic color tokens only with bg/foreground pairing (HUD is a--cardsurface;color-mixfor translucency — zero hex), local--pb-*custom properties for all metric values,htmlSafegetters for the dynamic transform/cursor styles,data-test-*attributes last on each element, and full teardown inwillDestroy(momentum loops + window listener).Testing
The live-test CI job does not run on catalog-only PRs (its path filter excludes this repo's mount point), so tests were run locally against a running dev stack via the QUnit live-test page filtered to
poster-board:ESLint, ember-template-lint, and glint (
ember-tsc) all pass forcontents/poster-board/.🤖 Generated with Claude Code