docs: record youth design client integration
This commit is contained in:
@@ -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` 锁定的 Vite;Vite 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 Specification;conversation timeline 只记录交互历史。Chat、direct edits、decision responses、proposal acceptance、locks、Asset binding 与 restore 都通过 `design.input.apply` 进入同一服务端 reducer,Renderer 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 V2,V1 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 Specification;conversation timeline 只记录交互历史。Chat、direct edits、decision responses、proposal acceptance、locks、Asset binding 与 restore 都通过 `design.input.apply` 进入同一服务端 reducer,Renderer 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 V2,V1 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 URL;credential-free HTTPS CDN 图片保持直连。图片失败只显示卡片内占位,不阻断卡片或详情;缺少来源 URL 时显示纯文本。“使用此 Prompt”只把原文带回当前 Canvas 输入框,不自动发送。该模块不是投稿、点赞、评论或排行榜社区。客户端契约已就绪,但不据此宣称 Works Square 内容后台和生产数据已经部署。`pnpm run dev` 现在默认使用云端 Canvas 适配器,本地适配器只能通过显式开发命令启用;产品 UI 只保留中文。
|
||||
|
||||
|
||||
@@ -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
|
||||
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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user