PosterBoard step 2: render linked cards at grid positions (read-only)#667
Open
Conversation
Adds the v1 schema (cards linksToMany, FrameSettingsField with cardIndex/x/y) and renders each linked card as a fitted 280x364 tile positioned by its frame setting, falling back to a 4-column grid layout. The hint header now shows only on an empty board. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tile dimensions now come from FITTED_FORMATS (cardsgrid-tile, 170x250) via fittedFormatById, feeding both the placement math and the --pb-tile-* CSS vars from one source instead of an invented 280x364. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The boxel-ui container applies the cardsgrid-tile dimensions from FITTED_FORMATS itself, so the tile CSS no longer sets width/height and the --pb-tile-* vars are gone; the placement math still derives its constants from the same spec. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
FittedCardContainer tiles no longer re-declare the fitted-card container context or force child sizing (the fitted rendering and CardContainer already provide both), and cards without frame settings now start 10px off the world origin instead of flush against it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wine bottles, a tier list, Wordle, and the blackjack table — cards whose fitted views don't traverse their own relations (CS-12220 tracks board tolerance for tiles that do). Two tiles use explicit frame settings, the rest flow into the default grid. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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 22:39:46 UTC for commit |
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.
Stacked on #666 (step 1). Adds the v1 schema and read-only card rendering to the poster-board — no dragging yet (that's step 3, CS-12215).
Closes CS-12214.
What's here
@field cards = linksToMany(() => CardDef)and@field frameSettings = containsMany(FrameSettingsField)(cardIndex/x/y, exported for tests).FittedCardContainer @size='cardsgrid-tile'(dimensions come fromFITTED_FORMATS— the same spec feeds the placement math viafittedFormatById), absolutely positioned byleft/topinside the single transformed plane.Number()-coerced withNumber.isFiniteguards, since instance JSON is hand-editable); cards without settings flow into a 4-column default grid offset 10px from the world origin.Known limitation
Cards whose fitted views read through their own
linksTorelations (e.g. BlogPost → author) currently crash the whole board render — tracked as CS-12220 (degrade to a placeholder tile instead). The demo links only relation-free fitted views.Testing
Live-test CI doesn't run on catalog-only PRs, so run locally: all 5 tests / 13 assertions pass (three step-1 tests, the momentum regression test, and the new placement test asserting persisted + grid-default positions and hidden hint header). ESLint, ember-template-lint, and glint pass for
contents/poster-board/.🤖 Generated with Claude Code