108 lines
5.8 KiB
Markdown
108 lines
5.8 KiB
Markdown
# Task: Implement youth-facing AI Design experience
|
||
|
||
## Identity
|
||
|
||
- Task ID: 20260902-design-youth-client-7c5e3a82
|
||
- Mode: Feature
|
||
- Branch: codex/20260902-design-youth-client-7c5e3a82-design-youth-client
|
||
- Worktree: D:\Datas\OthersProjects\makelore-design-youth-client-7c5e3a82
|
||
- Base commit: 841273b43354b2237a52a7081a9fceb647ef4e3f
|
||
- Owner: codex-root
|
||
- Status: Ready for integration
|
||
|
||
## Scope
|
||
|
||
- Replace the default comprehensive AI Design form with conversation plus a compact
|
||
“我的创作” Creation Card projected from the canonical Current Specification.
|
||
- Add a reviewed A/B/C field-presentation catalog, pure youth projection, contextual
|
||
“精细调整” controls, responsive desktop/mobile composition, and youth-facing
|
||
conversation/Quote/Task/result copy.
|
||
- Reuse the existing V2 typed reducer, Quote confirmation, Task/Asset reconciliation,
|
||
upload and local-draft behavior; do not add another state store or API contract.
|
||
|
||
## Intent And Constraints
|
||
|
||
- One understandable default serves creators aged 8-16; there are no age or expert
|
||
modes. Advanced control is contextual progressive disclosure.
|
||
- Conversation is the default mobile surface. Desktop gives conversation visual
|
||
priority and keeps the concise Creation Card visible.
|
||
- Direct choices use existing typed semantic commands and never synthesize chat
|
||
turns. Readiness is derived from concrete blockers/questions, not field counts.
|
||
- Preserve Main ownership of Works credentials and V2 transport, Chinese-only UI,
|
||
existing light visual language, 44 px targets, keyboard focus and reduced motion.
|
||
- No database/DTO change, second brief/store, compatibility layer, broad redesign,
|
||
package, deployment, publication, push or paid generation is in scope.
|
||
|
||
## Concurrent Task Gate
|
||
|
||
- Task ID: `20260902-design-youth-client-7c5e3a82`
|
||
- Mode: Feature
|
||
- Branch/worktree: `codex/20260902-design-youth-client-7c5e3a82-design-youth-client` /
|
||
`D:\Datas\OthersProjects\makelore-design-youth-client-7c5e3a82`
|
||
- Base commit: `841273b43354b2237a52a7081a9fceb647ef4e3f`
|
||
- Ownership result: Isolated and claimed by `codex-root`.
|
||
- Other active work: Model Tools owns a separate integration worktree and Plugin/Pi
|
||
files; it does not own the ImageCanvas Design surface.
|
||
- Gate result: Passed.
|
||
|
||
## Project Context Loaded
|
||
|
||
- Read the startup memory set, current state, architecture, business rules, success
|
||
criteria, ADR-007, commitments, peer task scope, and the accepted youth
|
||
experience/implementation specifications.
|
||
- The Current Specification remains the single semantic authority; Renderer drafts,
|
||
Task events and assistant deltas cannot become Creation Card truth.
|
||
- The UI reference library reinforced progressive disclosure and accessibility; its
|
||
parallax/dark-mode direction was rejected as inconsistent with MakeLore.
|
||
- Planning Gate result: Passed.
|
||
|
||
## Outcome
|
||
|
||
- Replaced the default professional field matrix with a conversation-first AI Design
|
||
surface and one compact “我的创作” card. The card is a pure projection of the
|
||
canonical Workspace Specification, Quote, Task and Asset state; the existing V2
|
||
reducer and typed commands remain the only write path.
|
||
- Added an exhaustive A/B/C presentation catalog for every current Specification
|
||
field, one active creative choice with an additional “你帮我选” option, contextual
|
||
“精细调整”, and a responsive single-mounted card that becomes a mobile bottom
|
||
sheet at narrow widths.
|
||
- Reworded conversation, Quote, Task, recovery and result states for creators aged
|
||
8–16. Compiler and Provider issue messages now cross a code-based youth-copy
|
||
boundary with safe unknown fallbacks, so raw English or technical messages are
|
||
not rendered in the youth UI.
|
||
- Kept video story editing on stable canonical Shot identities. The drawer supports
|
||
the server contract of up to 24 Shots and preserves timing, camera, framing,
|
||
motion, focus and transition data while a creator edits only a story beat.
|
||
- Bound transient Quote blockers to the canonical Specification revision: same-
|
||
revision refreshes preserve useful feedback, while a successful semantic change
|
||
clears stale blockers and enables a fresh Quote check. A terminal
|
||
`design_quote_blocked` response or event also settles its pending operation, so an
|
||
old Quote request cannot remain as a misleading “unknown” recovery action.
|
||
- No database migration, public DTO/API change, compatibility layer, second semantic
|
||
store, Provider activation or paid generation was added.
|
||
|
||
## Verification
|
||
|
||
- `pnpm exec vitest run tests/unit/youth-form-projection.test.ts tests/unit/youth-creation-card.test.tsx tests/unit/youth-issue-copy.test.ts tests/unit/fine-tune-drawer.test.tsx tests/unit/image-workspace-store.test.ts tests/unit/image-canvas-page.test.tsx` — 40 passed, including terminal Quote-blocked settlement, blocked-event recovery into a revised Quote, 24-Shot preservation, and explicit deletion of a cleared Shot.
|
||
- Broad client suite — 1802 passed and 2 skipped; two Electron binary-preparation
|
||
cases initially reported transient Windows `spawn EBUSY`, then their focused
|
||
rerun passed 3/3. The separate pressure suite passed 1/1.
|
||
- `pnpm exec tsc --noEmit` — passed.
|
||
- Scoped ESLint over every changed/new source and test file — passed.
|
||
- `pnpm run build:vite` — passed; only pre-existing chunk-size and mixed static/
|
||
dynamic import warnings were reported.
|
||
- `pnpm exec playwright test tests/e2e/image-workspace-v2.spec.ts` — 2 passed,
|
||
covering 375 px, 768 px and desktop composition plus direct edit, chat, Quote,
|
||
confirmation and Task flow.
|
||
|
||
## Follow-ups
|
||
|
||
- Run moderated usability sessions with creators aged 8–16 after integration.
|
||
- Paid Provider activation and live paid-generation acceptance remain a separate
|
||
release gate.
|
||
|
||
## Promotion Candidates
|
||
|
||
- None. This task implements the already accepted youth Design experience and does
|
||
not introduce a new canonical architecture or product decision.
|