Skip to content

Add PosterBoard: FigJam-style pan/zoom board card (v1 step 1)#665

Closed
burieberry wants to merge 2 commits into
mainfrom
cs-12193-productionize-poster-board
Closed

Add PosterBoard: FigJam-style pan/zoom board card (v1 step 1)#665
burieberry wants to merge 2 commits into
mainfrom
cs-12193-productionize-poster-board

Conversation

@burieberry

Copy link
Copy Markdown

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 — the PosterBoard card def. Isolated view wires pointer/wheel events into the rig and renders from its tracked state: single scale() translate() transform on one plane element, dot grid, zoom HUD (+ / % / − / 100% / Fit), Shift+=//0 keyboard 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 + computed cardTitle, 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 --card surface; color-mix for translucency — zero hex), local --pb-* custom properties for all metric values, htmlSafe getters for the dynamic transform/cursor styles, data-test-* attributes last on each element, and full teardown in willDestroy (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:

3 tests completed in 903 milliseconds, with 0 failed, 0 skipped, and 0 todo.
8 assertions of 8 passed, 0 failed.

ESLint, ember-template-lint, and glint (ember-tsc) all pass for contents/poster-board/.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown

Staging Submissions Preview

This PR's content is pushed to the staging submissions realm: https://realms-staging.stack.cards/submissions/

Changed folders:

  • poster-board/

Updated at 2026-07-17 20:07:45 UTC for commit 2a53765. Shared realm: only this PR's changed files are pushed; files touched by multiple PRs reflect whichever pushed last, and deleted files are not removed.

@burieberry burieberry closed this Jul 17, 2026
@burieberry
burieberry deleted the cs-12193-productionize-poster-board branch July 17, 2026 20:36
@burieberry

Copy link
Copy Markdown
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.

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