feat: template picker section in Art Direction pane (UI template selection)#203
Merged
Conversation
…ection to Art Direction pane Add a persistent, header-like template picker above the style gallery (shared scroll container, independent display states). Clicking a card inserts a chat message — the agent remains the only actor that confirms a template (deck.json). Confirmed template is shown with an accent border, read via no-store polling of defsUrl (the stabilised URL cache never changes for deck.json, so prop-based updates cannot work). Closes #165 (UI selection for custom templates, like Change Style) SPEC: 20260715-1252_issue165-template-picker-art-direction Progress: implementation + tests complete (44/44), build:cloud OK Next: deploy to ap-northeast-1 and manual verification
…plate indication
1px teal border at 60% opacity was too subtle on the dark UI. Add ring +
tinted background, a teal check icon + teal name on the current card,
and a labelled header ('In use: {name}') instead of a bare muted name.
SPEC: 20260715-1252_issue165-template-picker-art-direction
…k API, not defsUrl
defsUrl points to compose/defs_<epoch>.json (slide animation defs), NOT
deck.json — the useCurrentTemplate hook always saw no 'template' field,
so the current-template indicator never appeared.
Fix: expose 'template' on the deck detail response (cloud Lambda reads
decks/{id}/deck.json from S3; local route already parses deck.json) and
pass it down as a prop. Updates now flow through the existing useWorkspace
polling + snapshot compare — the no-store polling hook is removed.
SPEC: 20260715-1252_issue165-template-picker-art-direction
…rd order stable Current-first reordering broke spatial memory when the template changed. Keep user → builtin order; the check icon, accent border, and header label indicate the current template instead. SPEC: 20260715-1252_issue165-template-picker-art-direction
…rts and stale eslint-disables in SlideCarousel Pre-existing warnings surfaced as CI annotations on the PR diff: unused Loader2/CloudOnly/LocalOnly/useAuth imports, unused 'auth' var, and four unused no-console eslint-disable directives. SPEC: 20260715-1252_issue165-template-picker-art-direction
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.
Summary
Implements #165 — explicit template selection from the UI, alongside the existing Change Style flow.
deck.jsontemplatefield on the deck detail API (cloud Lambda + local route) and indicated with a check icon, accent border, and an "In use: {name}" header labeltemplatePickernamespace (en/ja)Closes #165
Testing
web-ui: vitest 45/45 passed (7 new component tests),tsc --noEmit,eslint --quiet,build:cloudOK, en/ja key parity OKmake lint/make test(292 passed)Notes
defsUrlpoints tocompose/defs_<epoch>.json(animation defs), notdeck.json— hence the new API field instead of reusingdefsUrl