docs: record youth design client integration

This commit is contained in:
2026-09-02 19:12:13 +08:00
parent 7469e95ef7
commit da3c3f8ead
3 changed files with 155 additions and 108 deletions

View File

@@ -4,6 +4,26 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
## Integrated Through
- Youth-facing AI Design client source
`0fd32a2d49045a8f9e7f2e19ba6477f48f93e30c` is integrated over Model Tools
frontier `7552cf59526449c29d663a769c0fb62d84a1a759` through merge
`16157388afc2f6103aaee0bfd3c4e4e80c8fec48` with startup correction
`c5447ae90c434c06dbafa724b229d8459cb829d0` by task
`20260902-design-youth-client-integration-7a6d3c92`. Canvas now defaults to
conversation plus one compact “我的创作” card for creators aged 8-16, with
contextual “精细调整” instead of an always-visible professional field matrix.
The card remains a pure projection of the canonical V2 Current Specification;
direct choices use typed commands, Quote blockers follow Specification revision,
terminal blocked Quotes settle pending operations, and code-based Chinese copy
prevents raw compiler/Provider text from reaching the youth UI. Video editing
preserves stable canonical Shot identities and all hidden production metadata for
up to 24 Shots. No database, DTO/API, pricing, Provider route, or compatibility
path changed. Integration verification passed 40 focused youth tests, 5 Device
Package tests, typecheck, scoped lint, production build, and 2 Electron E2E flows.
The Electron run also exposed and closed an existing current-frontier startup crash:
the ESM-only Pi package manager is now loaded only when remote Device Package
installation needs it. No package, deployment, publication, push, or paid request
is claimed.
- Model Tools and Device Packages client cutover is implemented by task
`20260902-model-tools-client-integration-5d8b2f73`. Web Search is now a parent-only
core tool of the frozen selected model/provider/credential; it no longer depends on
@@ -379,7 +399,7 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
客户端面向非专业用户提供“创建小游戏或小程序 → 项目配置中一键提交 → Main 本地 npm/Vite 构建 → Electron 双视口预检最终产物 → 上传 source+built 双归档与 contract → 运营审核”的唯一创建者链路。Main 对安全源码快照运行安装包内固定 npm 11.6.2 的 `npm ci --ignore-scripts`,再显式调用项目 `package-lock.json` 锁定的 ViteVite config/plugins 以当前桌面用户权限执行,因此只适用于用户信任的本地项目,不是 sandbox。预检由 Main 以临时 loopback origin 和 Electron WebContents/CDP 检查与最终 `built_archive` 相同的内存文件字节,覆盖桌面/移动视口、运行错误、白屏和外域访问;不使用 Playwright。该检查仍可由非官方客户端绕过不产生可信 receipt也不复刻生产 opaque-origin。服务端不再替客户端运行项目 Vite而是把源码、构建归档和 contract 视为不可信输入,逐字节重算与校验并固化不可变 Release人工审核仍不可绕过。自定义和缺少类型字段的旧项目不提供该入口。已发布作品优先使用安全投影后的 `play_url``runtime_url` 仅保留一个客户端版本的兼容回退。
AI Design Canvas 现在是持续可见的双栏 Living Form 工作区。一个 Workspace 公开一个 current Direction、一个 persistent Agent Session 和一个 Current Specificationconversation timeline 只记录交互历史。Chat、direct edits、decision responses、proposal acceptance、locks、Asset binding 与 restore 都通过 `design.input.apply` 进入同一服务端 reducerRenderer drafts 在 accepted 前保持本地。Main 持有 Works Token、stream ticket、WebSocket、request deadline、stable command/operation IDs 与错误脱敏unknown result 只能复用原 identity结构化业务错误不得重放。Generation 由服务端对 exact Specification revision 编译 immutable Quote客户端只展示 public output plan、warnings、expiry 与 Token Points并以 Quote ID 调用 `design.generation.confirm`Provider Prompt、model、route、storage 和 billing atoms 不进入 Renderer。Task/Asset events 独立收敛 Workspace resources不改写 Living Form。Development 与 packaged builds 均使用 Works Square V2V1 DTO、local semantic adapter、mutable Quote PATCH 与 editable provider Prompt 已移除。
AI Design Canvas 现在默认以对话和一张持续可见的“我的创作”卡服务 8-16 岁创作者;专业字段矩阵收进按需打开的“精细调整”,移动端保持对话优先并只挂载一个卡片/底部面板。Creation Card、精细调整、Quote、Task 与结果提示都只投影权威状态,已知问题按 code 转成通俗中文,未知服务端或 Provider 文本不会直接显示。一个 Workspace 仍只公开一个 current Direction、一个 persistent Agent Session 和一个 Current Specificationconversation timeline 只记录交互历史。Chat、direct edits、decision responses、proposal acceptance、locks、Asset binding 与 restore 都通过 `design.input.apply` 进入同一服务端 reducerRenderer drafts 在 accepted 前保持本地。Main 持有 Works Token、stream ticket、WebSocket、request deadline、stable command/operation IDs 与错误脱敏unknown result 只能复用原 identity结构化业务错误不得重放。Generation 由服务端对 exact Specification revision 编译 immutable Quote客户端只展示 public output plan、warnings、expiry 与 Token Points并以 Quote ID 调用 `design.generation.confirm`Provider Prompt、model、route、storage 和 billing atoms 不进入 Renderer。Task/Asset events 独立收敛 Workspace resources不改写 Living Form。Development 与 packaged builds 均使用 Works Square V2V1 DTO、local semantic adapter、mutable Quote PATCH 与 editable provider Prompt 已移除。
Canvas 侧栏提供“获取灵感”进入 Prompt Museum。列表、筛选、分页、详情、作者/来源/许可证和图片地址全部由服务端经 Main-owned Host API 提供,客户端不打包静态数据集;服务端相对媒体只允许固定 `/api/image-prompt-museum/{entry}/media/{thumbnail|number}` 形状,并由 Main 注入 Works Bearer、执行一次 401 刷新、可信 raster MIME 与 10 MiB 上限后转为 Renderer data URLcredential-free HTTPS CDN 图片保持直连。图片失败只显示卡片内占位,不阻断卡片或详情;缺少来源 URL 时显示纯文本。“使用此 Prompt”只把原文带回当前 Canvas 输入框,不自动发送。该模块不是投稿、点赞、评论或排行榜社区。客户端契约已就绪,但不据此宣称 Works Square 内容后台和生产数据已经部署。`pnpm run dev` 现在默认使用云端 Canvas 适配器,本地适配器只能通过显式开发命令启用;产品 UI 只保留中文。

View File

@@ -1,107 +0,0 @@
# 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
816. 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 816 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.

View File

@@ -0,0 +1,134 @@
# Task: Integrate youth-facing AI Design client changes
## Identity
- Task ID: 20260902-design-youth-client-integration-7a6d3c92
- Mode: Integration
- Branch: codex/20260902-design-youth-client-integration-7a6d3c92-design-youth-client-integration
- Worktree: D:\Datas\OthersProjects\makelore-design-youth-integration-7a6d3c92
- Base commit: 7552cf59526449c29d663a769c0fb62d84a1a759
- Owner: codex-root
- Status: In Progress
## Scope
- Integrate reviewed Design Youth source commit
`0fd32a2d49045a8f9e7f2e19ba6477f48f93e30c` onto the current client frontier
`7552cf59526449c29d663a769c0fb62d84a1a759`.
- Replace the default professional field matrix with conversation plus one compact
“我的创作” card for creators aged 8-16, while retaining contextual “精细调整”.
- Preserve the V2 Current Specification reducer, immutable Quote confirmation,
Task/Asset reconciliation, stable operation identities, and Main-owned transport.
- Own the integration record, canonical current-state reconciliation, cross-frontier
verification, and safe promotion to local `main`.
- Correct the current frontier's eager CommonJS load of the ESM-only Pi package
manager, which the integrated Electron E2E exposed before any Design page opened.
## Intent And Constraints
- One understandable default serves creators aged 8-16; there is no separate age or
expert mode. Advanced controls remain progressive disclosure over canonical state.
- Direct choices use existing typed commands. Renderer drafts, assistant deltas,
Quote/Task events, and localized copy never become Specification authority.
- Known compiler/Task issues render code-based youth-facing Chinese copy; unknown
messages use a fixed safe fallback rather than raw server or Provider text.
- Do not add or change a database migration, DTO/API, semantic store, compatibility
layer, Provider route, pricing path, deployment, publication, push, or paid request.
- Keep the Pi package-manager correction limited to loading its existing dependency
on demand for remote Device Package installation; do not change package semantics.
- Preserve the two user-owned untracked records in the root checkout exactly as-is:
`20260901-package-122-c5e8.md` and `20260901-package-123-d7f3.md`.
- The source task record is read-only evidence. The integrated default branch will
retain this integration task and canonical memory, not import a second active task
ownership record.
## Concurrent Task Gate
- Task ID: `20260902-design-youth-client-integration-7a6d3c92`
- Mode: Integration
- Branch: `codex/20260902-design-youth-client-integration-7a6d3c92-design-youth-client-integration`
- Worktree: `D:\Datas\OthersProjects\makelore-design-youth-integration-7a6d3c92`
- Base commit: `7552cf59526449c29d663a769c0fb62d84a1a759`
- Ownership result: Claimed in an independent linked worktree. The preceding Model
Tools integration lock is complete and released; its exact client frontier is this
task's base commit.
- Other local state: root `main` contains only the two allowlisted user-owned untracked
task records. They are outside the source commit's changed paths and remain untouched.
- Gate result: Passed.
## Project Context Loaded
Read:
- the startup memory set, memory index, project positioning, success criteria,
decision index, current state, system overview, business rules, and ADR-007;
- source task `20260902-design-youth-client-7c5e3a82`, its exact commit boundary,
verification evidence, follow-ups, and promotion candidates;
- current Model Tools integration record and its released frontier.
Relevant understanding:
- The Current Specification remains the only semantic authority. The Creation Card
and Fine Tune drawer are projections/editors over the existing V2 reducer.
- Main remains the only Works Square transport and secret owner. Generation confirms
only an immutable Quote ID; public copy must not expose Provider internals.
- Youth readiness language may offer to check a production plan, but must not claim
server readiness before concrete Quote blockers have been evaluated.
- Source verification already covers responsive composition, direct edit, chat,
Quote/Task flow, stable Shot identities up to 24, terminal Quote-blocked settlement,
safe issue copy, typecheck, lint, build, broad tests, and Electron E2E.
- The new frontier changes Coding model tools/device packages and canonical memory,
not the ImageCanvas product/test files. Canonical documentation must be reconciled
in this integration task rather than overwritten from the older source base.
- Planning Gate result: Passed.
## Outcome
- Integrated reviewed source `0fd32a2d49045a8f9e7f2e19ba6477f48f93e30c`
onto the exact released Model Tools frontier with merge
`16157388afc2f6103aaee0bfd3c4e4e80c8fec48` and no source conflict.
- Canvas now presents one conversation-first “我的创作” card, A/B/C youth choices,
“你帮我选”, responsive single mounting, and contextual “精细调整” while the
server-owned Current Specification remains the only semantic authority.
- Quote blockers are revision-bound and terminal blocked responses/events settle
pending operations. Compiler and Task issues use code-based youth-facing Chinese
copy with fixed unknown fallbacks instead of raw technical messages.
- Fine Tune preserves stable Shot ids, timing/camera/framing/motion/focus/transition
metadata, supports the full 24-Shot server contract, and treats a cleared beat as
explicit deletion rather than submitting an invalid null value.
- The integrated Electron check exposed a pre-existing current-frontier startup
blocker before the Design page opened: Vite externalized an ESM-only static Pi
package-manager import as top-level CommonJS `require`. Commit
`c5447ae90c434c06dbafa724b229d8459cb829d0` now dynamically imports that existing
module only for remote Device Package installation; package semantics are unchanged.
- Removed the imported source task record from default-branch ownership scope; this
integration record and canonical current state contain the promoted evidence.
- No database migration, public DTO/API, second semantic store, compatibility layer,
Provider activation, paid generation, package, deployment, publication, push, or
PR was added or performed.
## Verification
- `corepack 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` — 6 files / 40 tests passed on the integrated frontier.
- `corepack pnpm exec vitest run tests/unit/device-package-manager.test.ts` — 5 tests
passed after the ESM loading correction.
- `corepack pnpm run typecheck` — passed before and after the correction.
- Scoped ESLint over all Design Youth source/tests and the corrected Device Package
manager — passed.
- `corepack pnpm run build:vite` — passed; only existing chunk-size and mixed
static/dynamic import warnings were reported. The active Main chunk contains the
expected dynamic Pi import and no eager Pi package-manager `require`.
- The first Electron run deterministically failed 2/2 at app launch with
`ERR_PACKAGE_PATH_NOT_EXPORTED`, before either test reached Canvas. After
`c5447ae`, the identical
`corepack pnpm exec playwright test tests/e2e/image-workspace-v2.spec.ts` run passed
2/2 in 3.8 seconds, covering Prompt Museum isolation plus desktop/375 px/768 px
Design conversation, direct edit, Quote confirmation, and Task flow.
## Follow-ups
- Run moderated usability sessions with creators aged 8-16 after packaging.
- Production package/deployment and real-account Design V2 smoke remain separate
release gates; paid Provider activation still requires explicit authorization.
## Promotion Candidates
- None recorded.