Skip to content

Change D: Poster tab - #24

Merged
asukiasov merged 9 commits into
mainfrom
web-poster-tab
Sep 6, 2026
Merged

asukiasov merged 9 commits into
mainfrom
web-poster-tab

Conversation

@asukiasov

Copy link
Copy Markdown
Owner

Summary

  • Adds a third working-area tab, Poster, composing one BitShaper shape into a modernist "grid of marks" poster.
  • Self-contained: shape-ID field + Use preview shape + Randomize; editable title / subtitle / caption, text position (top-left / top-split / bottom-left), columns × rows, palette (5 presets), colour pattern (checkerboard / per row), variation seed.
  • Poster state is namespaced into the URL (p* params) — shareable and restored on load; leaves ?id= untouched.
  • Export: 2:3 portrait SVG + PNG (2000×3000). exportPng gained optional width/height.

New modules (web/ only)

  • web/src/poster-templates.ts — pure renderPosterSvg(state) + palettes + defaults
  • web/src/poster-state.ts — pure URL read/write
  • web/src/poster.ts — vanilla-DOM tab UI
  • web/src/main.ts — TABS / panels / buildLayout return + #poster wiring; showShape now dispatches bitshaper:shape-changed

Not touched

  • src/core/, src/library/ (Change C owns those); Composition / Morph / Trace / catalog behaviour.

Verification

  • cd web && npx vitest run — 113 green
  • npm test (root) — 399 green
  • npx biome check . — clean
  • cd web && npm run build — ok

Design + plan: docs/superpowers/specs/2026-09-07-bitshaper-web-poster-tab-design.md, docs/superpowers/plans/2026-09-07-bitshaper-web-poster-tab.md

🤖 Generated with Claude Code

@asukiasov
asukiasov merged commit 88d9f81 into main Sep 6, 2026
4 checks passed
@asukiasov
asukiasov deleted the web-poster-tab branch September 6, 2026 20:28
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