diff --git a/.project-docs/30-worklog/current-state.md b/.project-docs/30-worklog/current-state.md index 2bc12e0..1874c2a 100644 --- a/.project-docs/30-worklog/current-state.md +++ b/.project-docs/30-worklog/current-state.md @@ -4,6 +4,25 @@ This file is the integrated default-branch snapshot. Feature tasks record progre ## Integrated Through +- Remote `main` frontier `d642d7607c26dee01ef65b4e70dd756465dea16a` + is integrated with local frontier + `53f3db3aced61533944eab5e6b3c8c2293f733f8` by the ordinary two-parent merge + `a2cb07fedcf22bb14141a27cee2218c149b8c63e` under task + `20260905-integrate-remote-main-b83d6f`. The remote ADR-008 interactive AI + application type, bundled `makelore.project-scaffold` Skill, and bundled-delivery + status correction are retained alongside the local Learning removal: the product + still exposes only Code, Canvas, and Robot. Three canonical-document conflicts were + reconciled semantically, the application tree merged without content conflicts, + and README now describes minimal project creation plus explicit scaffold execution. + Verification passed 228 focused Vitest tests, the 12-test scaffold suite with the + canonical macOS temporary path, typecheck, 1,859 full-suite tests with 3 conditional + skips plus pressure 1/1, production build, and targeted Electron 1/1. Lint reported + 0 errors and 12 existing warnings. The default macOS `/var` temporary-path alias + still makes two copied-script scaffold tests exit before emitting JSON; the same + tests pass through the canonical `/private/var` path and remain a harness/path + portability follow-up. The two remote task records stay intact in remote parent + `d642d76` rather than being copied into this integration result. No push, package, + deployment, publication, or production database change was made. - Remote `main` frontier `336e0bb0caf24537b7b0f350aba3e04a37f5544c` is integrated with local frontier `2d3c103bac83fccffb15b760a6e79912c352541a` by the ordinary two-parent merge @@ -825,4 +844,4 @@ Robot 绑定设备默认先显示“引导配网 / 已有激活码”路径选 ## Last Updated -2026-09-04 +2026-09-05 diff --git a/.project-docs/30-worklog/tasks/20260904-project-scaffold-main-merge-e7b4c291.md b/.project-docs/30-worklog/tasks/20260904-project-scaffold-main-merge-e7b4c291.md deleted file mode 100644 index 51b812c..0000000 --- a/.project-docs/30-worklog/tasks/20260904-project-scaffold-main-merge-e7b4c291.md +++ /dev/null @@ -1,42 +0,0 @@ -# Task: Land official project scaffold plugin on main - -## Identity - -- Task ID: 20260904-project-scaffold-main-merge-e7b4c291 -- Mode: Integration -- Branch: main -- Worktree: D:\Datas\OthersProjects\makelore -- Base commit: 336e0bb0caf24537b7b0f350aba3e04a37f5544c -- Owner: codex -- Status: Ready for Integration - -## Scope - -- Fast-forward the verified integration commit `b92e7ba5bbde186626d93787ca358fbf4c2523a3` onto local `main`. -- Record final default-branch landing evidence while preserving the three explicitly adopted historical task documents unchanged and uncommitted. - -## Intent And Constraints - -- Preserve the accepted official bundled-plugin boundary: only the fixed code-owned resource root may execute `scaffold.mjs`; downloadable Marketplace artifacts continue to reject scripts. -- Preserve normal ancestry and do not package, publish, deploy, push, or alter the adopted historical task documents. - -## Outcome - -- Fast-forwarded local `main` from `336e0bb0caf24537b7b0f350aba3e04a37f5544c` to verified integration head `b92e7ba5bbde186626d93787ca358fbf4c2523a3`. -- Local `main` now contains the unified `interactive_ai_app` type and the official bundled Marketplace Plugin `makelore.project-scaffold`, including its Skill, templates, publication guidance, and `scaffold.mjs`. -- Preserved the three explicitly adopted historical task documents byte-for-byte and left them uncommitted. -- Excluded the completed source integration task record from the final default-branch tree; it remains reachable on its preserved source branch and commit. - -## Verification - -- The fast-forward completed without conflicts and `b92e7ba5bbde186626d93787ca358fbf4c2523a3` is an ancestor of local `main`. -- The exact landed integration head had already passed Plugin and Skill validators, 88 focused Vitest tests, 12 scaffold Node tests, TypeScript typecheck, Git whitespace checks, and project-document gates. -- The task-aware drift check passed while confirming all adopted historical documents remained unchanged. - -## Follow-ups - -- Packaging, installed-client smoke, live Marketplace publication, deployment, and remote push remain separate authorized operations. - -## Promotion Candidates - -- None. This task landed the already accepted and verified integration result. diff --git a/.project-docs/30-worklog/tasks/20260905-integrate-remote-main-b83d6f.md b/.project-docs/30-worklog/tasks/20260905-integrate-remote-main-b83d6f.md new file mode 100644 index 0000000..2429126 --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260905-integrate-remote-main-b83d6f.md @@ -0,0 +1,91 @@ +# Task: Integrate remote main into local main + +## Identity + +- Task ID: 20260905-integrate-remote-main-b83d6f +- Mode: Integration +- Branch: main +- Worktree: /Users/inmanx/Documents/makelore +- Base commit: 53f3db3aced61533944eab5e6b3c8c2293f733f8 +- Owner: codex +- Status: Transferred to Final Integration Gate + +## Scope + +- Merge fetched `origin/main@d642d76` into local `main@53f3db3` with a normal + two-parent merge and preserve both histories. +- Reconcile overlapping product and canonical documentation so the official + Project Scaffold plugin coexists with the locally integrated Learning removal. +- Verify ancestry, repository integrity, and focused behavior affected by any + conflict resolutions. + +## Intent And Constraints + +- Hold the Integration Gate lock for the complete merge and documentation + reconciliation. +- Do not rebase, reset, force-push, stash, discard local commits, or publish the + result remotely. +- Preserve the product boundary of Code, Canvas, and Robot only; do not restore + Learning routes, APIs, assets, or packaging paths. +- Accept ADR-008's already-reviewed `interactive_ai_app` and bundled official + Scaffold Skill boundary while retaining Main-owned build/release authority. +- Resolve semantic conflicts from source task outcomes and accepted decisions; + do not choose whole-file `ours` or `theirs` for canonical documents. + +## Outcome + +- Created ordinary two-parent merge + `a2cb07fedcf22bb14141a27cee2218c149b8c63e` with parents local + `53f3db3aced61533944eab5e6b3c8c2293f733f8` and remote + `d642d7607c26dee01ef65b4e70dd756465dea16a`; neither history was rewritten. +- Resolved the only three conflicts in `data-flow.md`, `system-overview.md`, and + `current-state.md`. The resulting canonical state keeps the three-module + Code/Canvas/Robot access projection and complete Learning removal while adopting + ADR-008, `interactive_ai_app`, the explicit bundled Project Scaffold Skill, and + its device-status correction. +- Application code, including the shared Sidebar, merged automatically without + conflict. Confirmed that no Learning implementation path was restored. +- Updated README to replace the obsolete automatic小游戏/小程序 template description + with minimal project creation, historical alias normalization, explicit scaffold + execution, and the code-owned bundled-script exception. +- Kept the two imported remote task records read-only and excluded them from the + resulting default-branch tree; both remain intact in remote parent `d642d76` and + its history, while their accepted outcomes are recorded in canonical current state. +- Local `main` is now 8 commits ahead and 0 behind `origin/main`. No push, package, + deployment, publication, or production database mutation was performed. + +## Verification + +- `git show -s --format='%H %P' a2cb07f` confirms the expected two parents, and + `git rev-list --left-right --count main...origin/main` returned `8 0` immediately + after the merge. +- Focused Vitest: 14 files, 228 tests passed. +- Scaffold Node tests: the default macOS `/var` temporary alias produced 10/12 with + two empty-output copied-script failures; rerunning through the canonical + `/private/var` temporary directory passed 12/12. The alias difference was confirmed + with `fs.realpathSync(os.tmpdir())` and did not require product-code conflict repair. +- `pnpm run typecheck` passed using pinned pnpm `10.33.4`. +- Full `pnpm test` passed 1,859 tests with 3 conditional skips, then pressure 1/1. +- `pnpm run lint:check` completed with 0 errors and 12 existing warnings. +- `pnpm run build:vite` completed all Renderer, Main, Preload, and utility builds. +- Targeted Electron E2E `project-configuration-skills.spec.ts` passed 1/1. +- Git whitespace and unresolved-conflict checks passed before the merge commit. +- The first task-aware drift check correctly blocked on the two task records imported + by the merge commit. It did not identify an authored mutation to either record; + final gate closure is transferred to a fresh Integration task whose base contains + the merged and reconciled history. + +## Follow-ups + +- Harden the scaffold CLI main-module check or its macOS test fixture so scripts + invoked through the `/var` alias match Node's canonical `/private/var` module URL; + this is not changed incidentally by repository synchronization. +- Deploy the matching Works Square server and migrate through + `20260904_project_scaffold_0085` before claiming production Marketplace availability. +- Close the project-document ownership check from fresh Integration task + `20260905-finalize-pull-integration-c49a71` based on the reconciled merge result. + +## Promotion Candidates + +- None. This Integration Gate applies the accepted ADR-008 and source-task outcomes + directly to canonical project memory. diff --git a/.project-docs/30-worklog/tasks/20260905-plugin-bundled-status-integration-8f2c5a41.md b/.project-docs/30-worklog/tasks/20260905-plugin-bundled-status-integration-8f2c5a41.md deleted file mode 100644 index cc189b8..0000000 --- a/.project-docs/30-worklog/tasks/20260905-plugin-bundled-status-integration-8f2c5a41.md +++ /dev/null @@ -1,60 +0,0 @@ -# Task: Integrate bundled official Plugin device-status fix - -## Identity - -- Task ID: 20260905-plugin-bundled-status-integration-8f2c5a41 -- Mode: Integration -- Branch: main -- Worktree: D:\Datas\OthersProjects\makelore -- Base commit: 9ed9bf4a715e300420e7a764a4cf576a6dfc4938 -- Owner: codex-root -- Status: Ready for Integration - -## Scope - -- Integrate feature commit `6bd9287c879dca93da11e17533f84e3535fc656a` - onto local `main` from its exact parent `9ed9bf4a715e300420e7a764a4cf576a6dfc4938`. -- Reconcile the source outcome into current state and remove only the duplicate source - task record from the default-branch checkpoint. - -## Intent And Constraints - -- Concurrent Task Gate: Passed after releasing the completed prior integration lock and - claiming this exact root/main worktree in Integration mode. -- Planning Gate: Passed after reading the source task outcome, ADR-008, current Plugin - architecture/business rules, current state, and the prior scaffold landing record. -- Preserve the three explicitly adopted historical task records byte-for-byte and - uncommitted; do not stash, reset, clean, move, or delete them. -- Preserve the accepted boundary: Project Scaffold ships in the signed client, has no - device download action, and still requires server-authoritative free account - acquisition before project enablement. - -## Outcome - -- Cherry-picked feature source `6bd9287c879dca93da11e17533f84e3535fc656a` - onto local `main` as product commit `6d102b2` without conflict. -- Removed only the duplicate source task record from the default-branch documentation - checkpoint; it remains intact on the source branch and commit. -- Updated current state with the accepted presentation correction and the separate - production server deployment/migration requirement. -- Preserved all three adopted historical task records byte-for-byte and uncommitted. - -## Verification - -- Source evidence: focused Plugin page/model 35 passed; typecheck and scoped ESLint - passed; all Vite targets passed; isolated Pi timing rerun 6/6 and pressure 1/1 passed. -- Source commit and landed product commit have the exact same tree - `1976d2f27f239dead6d26f99131182c7c657a9db`. -- Root replay was not claimed because the root checkout has no installed Vitest or - TypeScript executables; no dependency mutation was performed there. -- Local server evidence remains separate: Project Scaffold Marketplace tests 2/2 and - sole migration head `20260904_project_scaffold_0085`. - -## Follow-ups - -- Deploy the current Works Square server and migrate production through 0085 so the - public catalog can authorize and expose `免费获取`. - -## Promotion Candidates - -- None recorded. diff --git a/README.md b/README.md index 299500d..75e6478 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Makelore 是一个面向软件、视觉创作与智能机器人的 AI 桌面工 应用启动默认进入 AI 模块入口选择页。入口页可在未登录状态浏览;未登录用户点击已开通模块时进入客户端原生登录页,可使用账号密码或手机号短信验证码登录。密码登录可选“记住密码”:正式安装包仅由 Electron Main 使用系统受保护凭据存储加密保存和回填账号密码,不写入 Renderer 持久状态,未打包开发版或系统安全存储不可用时禁用该选项。登录请求由 Renderer 经 Host API 交给 Electron Main,再由 Main 调用 Works Square;成功后回到入口选择页。已登录时,Electron Main 会从 Works Square `/api/auth/me` 读取当前账号,只向 Renderer 投影用户名、账号/租户/部门标识、权限名列表与三个模块布尔开关,不透传上游资料或凭据。工作区门禁同时要求有效 Token 和完整用户身份;旧状态缺失身份时会先尝试从 Main 恢复,仍无法确认则清除残留会话并返回登录页。被管理员关闭的模块会在入口页置灰且无法点击,直接访问其工作区路径也会返回入口页。旧服务端未返回策略或缺少单项字段时默认开放;这个客户端门禁不替代服务端 API 授权。 -作品广场、素材广场、独立发布上传和云部署页面不属于 Makelore 2.0 工作台。新建项目可选择“小游戏”“小程序”或“自定义项目”:小游戏和小程序会创建完整的平台发布模板,项目配置底部提供“一键提交审核”;Main 自动预检、安全打包并提交,构建通过后进入运营审核,审核通过即直接发布。首次创建必须选择 PNG、JPEG 或 WebP 项目封面,并通过 Main-owned multipart 原子接口同时保存资料与封面;已有 draft/published 只提交新版本并沿用平台现有资料与封面。自定义项目只创建工作空间,不配置默认发布方式。项目成果预览 `/deliverables` 继续保留。 +作品广场、素材广场、独立发布上传和云部署页面不属于 Makelore 2.0 工作台。新建项目可选择“交互式 AI 应用”或“自定义项目”,创建服务只生成 `.makelore/project.json` 与 `knowledge/`;历史 `mini_game` / `mini_program` 配置在读取时归一为交互式 AI 应用,但不会因读取被改写。用户获取、启用并为智能体分配官方 bundled `makelore.project-scaffold` 插件后,可明确调用 `makelore-project-scaffold` Skill,以不覆盖既有路径的方式生成固定六文件 Vite 起步工程;该 Skill 不安装依赖、不联网、不构建、不上传或提审。交互式 AI 应用的项目配置底部提供“一键提交审核”;Main 自动预检、安全打包并提交,构建通过后进入运营审核,审核通过即直接发布。首次创建必须选择 PNG、JPEG 或 WebP 项目封面,并通过 Main-owned multipart 原子接口同时保存资料与封面;已有 draft/published 只提交新版本并沿用平台现有资料与封面。自定义项目只创建工作空间,不配置默认发布方式。项目成果预览 `/deliverables` 继续保留。 ## 当前产品状态 @@ -29,7 +29,7 @@ Makelore 是一个面向软件、视觉创作与智能机器人的 AI 桌面工 - AI 绘画健壮性:Renderer 为每次命令生成稳定 operation id,网络结果未知时保留原命令供原样重试,不把未知写入当失败或创建第二次生成。Main 负责 Token 刷新、Agent Gateway REST 提交和有界 Run 查询,并将可恢复事件流投影为 Host API SSE;断线后按事件游标续接并重新读取权威 Workspace。Canvas 只使用 Works Square 云端 V2 契约,没有本地语义适配器或降级路径,上游不可用时明确报错。 - AI 绘画项目栏只展示 Workspace,不再在项目下创建独立设计会话。删除时必须完整输入项目名称;删除后项目、Living Form、任务、参考图和生成作品会从账户中隐藏且无法访问,不影响用户已另存到磁盘的副本。删除当前项目后自动打开最近更新的剩余项目,删除最后一个项目后进入空状态。 - 插件工作台:Code 侧栏只有一个“插件”入口,`/plugins` 在同一列表中投影官方目录、账号 Library、本机 Device Packages 与当前项目状态;旧 Marketplace、My Plugins、Project Plugins URL 只做确定性筛选重定向。来源身份保持 `official:`、`local:`、`retained:` 分离;“免费获取”、官方设备交付、项目启用和伙伴分配仍分别写入既有 authority,不会自动推进下一步。任一来源失败不会清空其他来源;本机 Skill/Pi 插件仍只能通过对话安装,页面只管理已安装包并明确其本机全局生效范围。 -- 官方插件运行架构:Renderer 只调用 Main-owned Marketplace facade;Main 负责账号、请求 deadline、签名/摘要校验、不可变 Release、current selection 与原子回滚。Pi parent worker 使用冻结的 effective snapshot,将每个有效 Skill 与已验证 Package Store root 成对传给 resource loader、Extension Host 和 CLI;`skill_only` 不依赖运行时 Policy,也不执行分发包中的任意代码。正式激活仍等待官方 Ed25519 公钥(production key activation HOLD);生产私钥只能来自部署 secret,测试使用注入的临时密钥。 +- 官方插件运行架构:Renderer 只调用 Main-owned Marketplace facade;Main 负责账号、请求 deadline、签名/摘要校验、不可变 Release、current selection 与原子回滚。Pi parent worker 使用冻结的 effective snapshot,将每个有效 Skill 与已验证 Package Store root 成对传给 resource loader、Extension Host 和 CLI;普通 `skill_only` 下载包不依赖运行时 Policy,也不得携带可执行脚本。Project Scaffold 的 `.mjs` 是代码所有的 bundled 例外,只能从签名客户端固定资源根通过应用自带 Node 执行,不能扩展为 Marketplace 下载 artifact 的脚本权限。正式激活仍等待官方 Ed25519 公钥(production key activation HOLD);生产私钥只能来自部署 secret,测试使用注入的临时密钥。 - 原生 Web Search 是冻结 selected model/provider/credential 的 parent-only 模型工具;只有 Works `model_capabilities` 明确声明支持时才出现,使用当前模型的正常计费链,不依赖 Marketplace 获取、Release、Admission、Hosted Provider 或 `agent_browser` 回退。 - 本机 Device Packages 只由 Conversation 工具发起安装,支持 npm、Git、绝对本地 Plugin 目录和 loose `SKILL.md`。Main 在预览和独立确认后提交不可变本机 generation,禁用生命周期脚本;确认界面明确提示 Pi extension 以桌面当前用户权限执行。新建/空闲 parent 会同时加载所有显式安装且当前启用的 Skill,以及必需 Makelore 扩展之外的全部 Pi extension,active parent 在 turn settled 后切换,child 不继承这些资源,也不会扫描 ambient 项目或用户目录;Renderer 不提供安装源选择器。 - 提示词博物馆:只陈列经过审核的作品预览、Prompt、分类以及作者/来源/许可证信息,支持搜索、使用场景/风格/主体筛选和详情抽屉;“使用此 Prompt”只把原文带回当前 Canvas 对话草稿,不自动发送、不构成社区。列表和详情数据由服务端提供,客户端不打包数据集;服务端字段契约见 [`docs/prompt-museum-server-contract.md`](docs/prompt-museum-server-contract.md)。