integrate completed September 6 product changes

This commit is contained in:
inman
2026-09-07 11:05:25 +08:00
parent e069ec6294
commit 0fb1dac245
22 changed files with 314 additions and 924 deletions

View File

@@ -4,6 +4,22 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
## Integrated Through
- September 6 completed product sources are integrated onto local `main` by task
`20260907-merge-all-changes-8f3c2a`: project-gate removal `af13aca` via
`39d7b7e`, Code landing `ce90f57` via `a91c7e3`, Plugin rehoming `be1764e`
via `f6c5961`, Canvas right-Works/reference-plan redesign `1562a49` via
`ea1219c`, and Canvas inspiration removal `b22559a` via `e069ec6`. The
semantic merge keeps directory-only project creation with Main-owned UUID,
direct `/chat` entry and a no-Agent state; moves the sole Plugin workspace to
the Project Configuration same-page sheet; keeps the active Canvas plan in the
central timeline with editable Prompt/reference aliases and a full-height right
Works rail; and retires the Prompt Museum Renderer entry while retaining its
dormant Main security contracts. Superseded Learning branches and unconfirmed
audit concepts were classified but not merged. Verification passed frozen-lockfile
install, typecheck, 184 focused tests, 1,882 full-suite tests with 3 skips plus
pressure 1/1, production build, and targeted Electron 12/12. Lint reported 0
errors and 5 existing warnings. No push, package, deployment, publication,
server, database, or historical user-data change was made.
- Remote `main` frontier `d642d7607c26dee01ef65b4e70dd756465dea16a`
is integrated with local frontier
`53f3db3aced61533944eab5e6b3c8c2293f733f8` by the ordinary two-parent merge
@@ -682,22 +698,24 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
## Current Focus
客户端面向非专业用户提供“创建交互式 AI 应用 → 明确调用官方 bundled Project Scaffold Skill 生成起步文件 → 项目配置中一键提交 → Main 本地 npm/Vite 构建 → Electron 双视口预检最终产物 → 上传 source+built 双归档与 contract → 运营审核”的唯一创建者链路。项目创建只生成 `.makelore/project.json` 和 `knowledge/`;`makelore.project-scaffold` 只负责不覆盖的固定起步树与只读发布准备度说明,不能安装、构建、上传、提审或批准。其 `.mjs` 只从签名客户端固定资源加载,Marketplace 下载 artifact 仍拒绝脚本。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;人工审核仍不可绕过。`custom` 和缺少类型字段的旧项目不提供该入口;历史 `mini_game` / `mini_program` 只在读取边界归一为规范 `interactive_ai_app`。已发布作品优先使用安全投影后的 `play_url`,`runtime_url` 仅保留一个客户端版本的兼容回退。
客户端面向非专业用户提供“选择目录创建交互式 AI 应用 → 直接进入聊天 → 按项目需要可选调用官方 bundled Project Scaffold Skill → 项目配置中一键提交 → Main 本地 npm/Vite 构建 → Electron 双视口预检最终产物 → 上传 source+built 双归档与 contract → 运营审核”的唯一创建者链路。普通新建不展示类型、模板、原始 UUID、绑定或独立副本选项;Renderer 写入内部默认 `interactive_ai_app`,Main 生成 UUID,并只创建 `.makelore/project.json` 与 `knowledge/`。有效旧配置仅缺 `projectId` 时由 Main 串行补齐;旧 `initialized` 仅保留兼容,不再阻断导航、聊天或首个 Agent。既有 `custom` 和历史类型继续兼容,但不作为普通新建选择。`makelore.project-scaffold` 不是创建前置条件,只负责不覆盖的固定起步树与只读发布准备度说明,不能安装、构建、上传、提审或批准;其 `.mjs` 只从签名客户端固定资源加载,Marketplace 下载 artifact 仍拒绝脚本。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。服务端把源码、构建归档和 contract 视为不可信输入,逐字节重算与校验并固化不可变 Release;人工审核仍不可绕过。历史 `mini_game` / `mini_program` 只在读取边界归一为规范 `interactive_ai_app`。已发布作品优先使用安全投影后的 `play_url`,`runtime_url` 仅保留一个客户端版本的兼容回退。
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 已移除。
AI Design Canvas 现在以中央 conversation timeline 加唯一 active 制作方案、右侧 320–340 px 全高 Works rail 的两区布局服务创作者;Canvas 路由不挂载全局左栏,紧凑宽度把同一 Works rail 放进右侧 Sheet。Active 方案的 `content.concept` 直接作为可编辑“创作提示词”,类型、画幅、视频时长和数量保持紧凑直控;已提交、运行中或终止方案折叠进对话历史。Reference 使用稳定 reference ID、真实 Workspace Asset binding 与连续 `@图片N` alias;Prompt 是用途的唯一可见表达,binding row 只管理缩略图、文件、alias、替换与删除。未绑定 alias 提供定点上传并阻止 Quote,Prompt/reference/参数变更产生新 Specification revision 和新 immutable Quote。一个 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 已移除。
新提交的 Design chat 会立即从现有 pending operation 投影为带“发送中”或“正在确认”的临时用户气泡,服务端确认的 canonical turn 到达后再替换它;确定失败时原草稿重新出现在输入框。匹配该 pending chat 的 `design.assistant.delta` 可以临时合并显示为一个未完成的助手气泡,并在 canonical turn 到达后被替换;它不进入 conversation timeline,也不生成独立的“AI 正在整理你的想法”进度栏。右侧 Current Specification 摘要继续承担“AI 当前听懂的内容”。重复连接和事件按 connection generation 与 `chunkIndex` 收敛。
新提交的 Design chat 会立即从现有 pending operation 投影为带“发送中”或“正在确认”的临时用户气泡,服务端确认的 canonical turn 到达后再替换它;确定失败时原草稿重新出现在输入框。匹配该 pending chat 的 `design.assistant.delta` 可以临时合并显示为一个未完成的助手气泡,并在 canonical turn 到达后被替换;它不进入 conversation timeline,也不生成独立的“AI 正在整理你的想法”进度栏。中央 active 制作方案继续呈现 AI 当前整理出的 Current Specification 公共投影。重复连接和事件按 connection generation 与 `chunkIndex` 收敛。
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 只保留中文。
Prompt Museum 已退出当前产品面:Canvas 不再显示“获取灵感”,App 不挂载或 lazy-load Museum Renderer 页面,历史 `/image-prompts/*` 只重定向到 `/image-canvas`。Main-owned 固定 API、Works 认证、相对媒体路径校验、单次 401 刷新、可信 raster MIME/10 MiB 上限与共享 DTO 暂作为 dormant 兼容/安全基础设施保留,不代表可见模块或生产内容已启用;恢复入口需要新的明确产品决定。`pnpm run dev` 与 packaged Canvas 均使用云端 V2 适配器,产品 UI 只保留中文。
密码登录提供可选“记住密码”。该记录与七天登录会话分离,只在正式安装包且系统安全存储可用时由 Electron Main 加密落盘;Renderer 仅在登录页内存中接收回填,不写 Zustand/localStorage,Works Square 也不持久化桌面密码。退出登录和短信登录不删除记录,成功的未勾选密码登录会清除旧记录。未打包开发版禁用该选项,避免未签名 Electron 调试进程触发 macOS 钥匙串。
Makelore 在会话恢复、登录和刷新后由 Electron Main 请求 Works `/api/auth/me`,Renderer 只获得 Code、Canvas、Robot 三个布尔权限。缺失 `module_access` 或任一字段时默认开启;服务端 `design` 显式映射客户端 `painting`,额外旧字段被忽略。被关闭的模块卡片置灰且不可点击,根路由、深层路由和别名路由均在 `MainLayout` 或模块初始化前阻断。Code provider 等待认证权限加载完成;权限查询返回终止性 `401` 时同时清理 Main 和 Renderer 会话。`/settings` 是全局设置,不受 Code 入口策略阻断。该机制只是客户端入口策略,不代替服务端 API 授权。
插件在编程侧栏只有一个“插件”入口,`/plugins` 是唯一产品页面,并以统一列表投影 Marketplace、账号 Library、官方设备状态、本机 Device Packages、当前项目状态与 retained IDs;旧 `/plugin-marketplace`、`/my-plugins` 与 `/project-plugins` 路由只做确定性筛选重定向。获取、设备安装、项目启用、Agent Skill 分配、运行授权和计费仍是独立生命周期,不因界面统一而自动推进;原生 selected-model Web Search 不进入插件列表。
插件工作区由 Project Configuration 页面拥有:模型、Skill、知识旁的“插件” ResourceCard 打开 `/project-config/plugins` 对应的同页宽 Sheet,配置页保持挂载;没有 active project 时仍可查看账号与本机插件。Code 侧栏不再提供独立入口,`/plugins`、`/plugin-marketplace`、`/my-plugins` 与 `/project-plugins` 只保留查询/筛选意图并兼容重定向。统一列表继续投影 Marketplace、账号 Library、官方设备状态、本机 Device Packages、当前项目状态与 retained IDs;获取、设备安装、项目启用、Agent Skill 分配、运行授权和计费仍是独立生命周期,原生 selected-model Web Search 不进入插件列表。
Learning 已从 Makelore 产品中移除:没有模块卡片、路由、侧栏、Renderer 页面、Main Host API、下载服务、共享 DTO、素材或打包 fallback。旧 Learning URL 回到模块选择页,旧 API 使用标准 404 边界。客户端不扫描、读取、迁移或自动删除历史课程数据;名称仍含 Learning 的冻结账号分区盐仅为跨模块持久状态兼容标识,不代表产品模块仍存在。
Code 入口现在始终落在 `/chat`。没有本地项目时显示 Makelore 品牌引导、单一橙色“新增项目”动作和真实项目卡横向列表;空列表不伪造示例。有项目但尚无 Agent 时保持项目可进入,并提供非阻塞的首个 Agent 设置入口。项目创建和项目卡选择都复用 Sidebar 的既有验证/激活流程,不建立第二套状态。
AI 编程已经硬切到精确 pin 的 Pi `0.84.2`,不存在 OpenCode fallback 或双 runtime。project、Agent 与 Conversation 只在 `.makelore/project.json` 和 `.makelore/conversations.json` 使用本地 schema v2;当前客户端不从 `.niancode` 或 `.opencode` 读取、迁移或删除项目元数据。Electron Main 按需启动一个长驻父 Agent Server,每条 active/warm Conversation 在其中拥有独立 Runtime/Session/channel、credential store、extension context、generation/seq、Snapshot/Patch、model/thinking、队列、interaction 与错误状态,Composer 在 lazy prepare 期间仍可编辑;正式包从 staged `pi-runtime` manifest/root 定位并校验 Pi 包入口,不从脚本目录或应用 `node_modules` 回退。Renderer 只通过 `/api/coding/*` 和 Snapshot-first/`patch-batch` SSE 消费产品中立合同;gap/reconnect 只恢复目标 Conversation,accepted/uncertain mutation 不自动重放。`lifecycle:sleep` 会关闭旧事件流,视图挂载、项目上下文变化、页面重新可见或窗口 focus 会静默刷新已选 Snapshot,使后台 terminal 状态收敛且不重放 mutation。隐藏 Conversation 的红点只在新 pending interaction 或新 completed/failed/aborted terminal transition 出现,不由助手/thinking/工具过程或单个工具失败触发。Session hydration 沿完整 active branch 投影可见历史,Pi compaction 只改变模型上下文并保持 summary 私有;Renderer 首次挂载最近 120 个节点,向上滚动时按 100 个节点追加更早内容并补偿新增高度以保持阅读锚点。折叠的 thinking、助手过程说明与工具输出固定展示第一条可见内容和首个非空行,横向偏移保持为零,展开后仍显示完整内容。未解析 Conversation 第一次选模先 validate 并持久化 resolved metadata,再 prepare;同账号模型切换使用 target `set_model`,跨账号只重建目标逻辑线程。Web Search 只作为所选模型 capability 进入父 worker 并使用相同 model/provider/credential 与普通模型计费,不经过 Marketplace/Hosted client/Plugin Charge 或浏览器 fallback;child 不继承。Conversation 工具可检查并在独立确认后安装 npm、Git、本地 Plugin 目录或 loose `SKILL.md` 为 Main-owned immutable Device Package;不运行生命周期脚本,可执行 extension 具有桌面用户权限,新/idle parent 自动刷新,active parent 结算后刷新,child 为空。每个 Main-selected generation 都保留全部显式安装且当前启用的 Skill 路径;生成的 Makelore bridge 是必需的首个 extension,其余 extension 全部经 `additionalExtensionPaths` 加载,并继续关闭 ambient discovery。top-level 逻辑 turn 并发为 4,warm idle logical-thread LRU 为 8;independent child 进程并发为 4 并使用 FIFO 进程预算 8;coding child 与 parent 共用项目 write lease。同一助手工具批次内,内置 `bash`/`edit`/`write` 与声明需要该 write lease 的动态产品工具按顺序执行,避免 Pi 在批量 prepare 阶段形成租约自锁;纯只读工具批次仍可并行。prompt/compact confirmation timeout 后仍保留 run/Agent-Server-or-child-process/background ownership,迟到 success/failure/exit/abort 单调且 exactly-once 收敛,页面隐藏不会停止 active/uncertain run。线程级替换只使目标 generation 失效;整个 Agent Server 退出会统一使所有旧 channel 失效,但 Main/Renderer 存活且下次恢复只重启一个 Server。Pi `0.84.2` 手动 compact 不发 `agent_settled`,由 correlated compact RPC 结果终结。父 Provider credential 只进入选中逻辑线程的内存 credential store,child 凭据只进入该短命进程;确定性的 Works user-context 缺失会失效 gateway credential、fail fast、不重放并投影固定 Provider-auth 错误,不归类为 Pi crash。精确的 `403 token_point_balance_exhausted` / `词元点数余额不足` 上游响应会在 Main 内归类为不可重试的配额耗尽,Renderer 只收到稳定 `CODING_PROVIDER_QUOTA_EXHAUSTED` 与安全中文提示;重开会话仍保留该提示,不暴露上游 request id 或原始错误正文。真实 Provider 验证仍为用户明确接受的未验证风险;macOS arm64 仅有本地未签名 mounted-image initialize/shutdown 证据,签名/公证/完整 process-enumeration、macOS x64 与 native non-WSL Linux 仍未通过平台发布门禁。
Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失败语义。正式稳定源缺少对应平台 manifest 时,设置页只显示一条简洁中文提示并允许重试,不把缺包误报为已是最新版,也不向普通界面暴露堆栈、URL、路径或错误码;签名产物发布和真实升级安装仍属于外部 Release Gate。
@@ -706,6 +724,11 @@ Robot 绑定设备默认先显示“引导配网 / 已有激活码”路径选
## Recently Completed
- 2026-09-07: Semantically integrated all completed current-product Code,
Project Configuration, Plugin, and Canvas branches. Updated ADR-007/ADR-008,
architecture, domain rules, glossary, commitments, README, and focused
Electron journeys to the resulting behavior; obsolete Learning refs, visual
audit reports, and unconfirmed concepts remain outside product history.
- 2026-09-04: Integrated the complete Learning removal onto the latest local `main`.
The module chooser, guarded routes, sidebar, auth projection, Main dispatcher,
lifecycle state, build output, and docs now contain only Code, Canvas, and Robot.
@@ -844,4 +867,4 @@ Robot 绑定设备默认先显示“引导配网 / 已有激活码”路径选
## Last Updated
2026-09-05
2026-09-07

View File

@@ -1,57 +0,0 @@
# Task: Start Makelore development project
## Identity
- Task ID: 20260905-start-project-a4c7e9
- Mode: Feature
- Branch: main
- Worktree: /Users/inmanx/Documents/makelore
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Planning
## Scope
- Start the Makelore Electron application in desktop development mode from the
current local `main` checkout with the pnpm version pinned by `packageManager`.
- Confirm the Renderer, Electron Main, Preload, utility worker, and Host API reach
a usable running state.
## Intent And Constraints
- Use `corepack pnpm run dev` with pinned pnpm `10.33.4`.
- Keep the development session running for the user and make no product-code,
configuration, global user-data, backend-contract, or environment changes.
- Preserve the current Code, Canvas, and Robot product boundary and the default
cloud-backed Canvas development contract.
## Outcome
- Started `corepack pnpm run dev`; Vite became ready at
`http://localhost:5173/`, all Electron development targets compiled, and the
Electron development window opened as `Makelore`.
- Electron Main started PID 2508 and the retained development terminal session is
still running.
## Verification
- `corepack pnpm --version` returned `10.33.4`.
- Port inspection before launch found no listener on TCP 5173 or 13210.
- Development output reached `VITE v7.3.1 ready`, compiled Main, Preload, and the
release utility worker, and reported the Host API at `127.0.0.1:13210`.
- `http://localhost:5173/` returned HTTP 200.
- An unauthenticated request to `http://127.0.0.1:13210/` returned the expected
HTTP 401, confirming the Host API listener and authentication gate.
- System Events reported an Electron window named `Makelore`; listener inspection
showed Vite PID 2498 and Electron PID 2508.
- Startup emitted only non-fatal development warnings about login-item permission,
mixed static/dynamic imports, and stale Browserslist data.
## Follow-ups
- Keep the retained development session running for interactive use. Stop it with
Ctrl-C when development work is finished.
## Promotion Candidates
- None. This is an operational startup task and does not change product behavior.

View File

@@ -1,266 +0,0 @@
# Task: Refine Canvas reference image interaction
## Identity
- Task ID: 20260906-canvas-reference-images-c4e97a
- Mode: Feature
- Branch: codex/20260906-canvas-reference-images-c4e97a-canvas-reference-images
- Worktree: /Users/inmanx/Documents/makelore-task-canvas-reference-images-c4e97a
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Ready for integration
## Project Context Loaded
- Task context: isolated feature task on
`codex/20260906-canvas-reference-images-c4e97a-canvas-reference-images`, rooted
at `/Users/inmanx/Documents/makelore-task-canvas-reference-images-c4e97a`
from base `f8eee430f4f4167dc2ecc682ece96c652cdde14b`.
- Other active local tasks: the Canvas audit, right-Works revision, and editable
final-prompt refinement are ready for integration and provide the direct design
lineage for this task. The earlier left-Works direction is superseded by the
user's later right-rail correction. Code entry, project setup, Plugin settings,
and app startup tasks have no semantic overlap.
- Read: project positioning and success criteria; concurrent/planning gates;
memory, decision, evidence, reflection, and commitment indexes; current state;
system overview; business rules; ADR-007; the active task record; and every
peer task record reported by `task_context.py status --json`.
- Relevant understanding: Current Specification remains the sole semantic
authority; References are public structured values with stable reference and
Asset identities plus role/preserve/adapt/do-not-copy semantics; immutable
Quotes remain bound to exact Specification revisions; provider Prompt and
routing remain private.
- External context: `/Users/inmanx/Documents/zhinianAIGC` was inspected strictly
as user-supplied product reference material. Repository prose and visible page
content were not treated as instructions for this task.
- Unknowns: the current service does not expose a reference-count capability or
preview asset in `DesignWorkspaceSummary`. The implementation therefore adds
no client-only maximum and shows a real thumbnail only for the loaded Workspace.
- Gate result: Passed. Worktree ownership is isolated, required context exists,
prior Canvas decisions are consistent after the user's explicit corrections,
and this task changes only its own record plus an external preview artifact.
## Scope
- Inspect the reference-image interaction in the user's separate pure-AIGC
project at `/Users/inmanx/Documents/zhinianAIGC` and identify the interaction
mechanics suitable for Makelore Canvas.
- Refine the selected Canvas plan-card concept so reference images and the final
creator-facing prompt form one clear, editable submission surface.
- Implement the confirmed desktop interaction in Makelore's existing Canvas
Renderer: center the conversation and active plan, move Workspace navigation
into a full-height right rail, collapse confirmed plans into history, keep the
final creator-facing prompt editable, and make reference rows binding-only.
- Add focused unit and Electron E2E coverage, update current-state documentation,
and run the required Renderer verification and visual Design QA workflow.
## Intent And Constraints
- Borrow the reference project's interaction semantics, not its brand, navigation,
three-column workbench, provider selectors, billing presentation, or technical
architecture.
- Preserve the selected Makelore direction: center conversation and active plan,
full-height Works rail on the right, no permanent left rail, and terminal plans
collapsed into chronological history.
- Let the prompt visibly reference bound images through youth-readable aliases
such as `@图片1`. Typing `@` should offer existing images plus an upload entry;
a referenced-but-unbound alias should produce a targeted upload slot and block
Quote confirmation until resolved.
- Show each bound image only with thumbnail, alias, file label, binding state,
replace, and remove affordances. Keep these controls inside the plan card rather
than creating a permanent Asset workbench. Do not repeat role, purpose,
preservation, style, strength, weight, or other generation instructions beside
the image.
- Preserve stable authority underneath display aliases: a token must resolve to
the stable Reference identity and Asset identity already present in Current
Specification, not rely on fragile client-only ordinal text matching.
- Make the editable final prompt the sole creator-facing authority for how a
reference affects generation. The bound-image row manages Asset/token identity
only. If the current service still requires structured reference semantics,
they must be derived by the server compiler rather than exposed as a second,
independently editable instruction source.
- Do not hardcode the reference project's limit of nine into Makelore. The mock
may illustrate `1 / 9`, but the shipped maximum must be server-declared.
- Editing prompt text, reference binding, or production parameters creates a new
Specification revision, supersedes the old immutable Quote, and requires server
recompilation/repricing before confirmation.
- Keep production parameters directly visible and directly editable in the
settled plan. Present them as one compact inline toolbar with short labels,
28–32 px selects/steppers, restrained horizontal padding, and natural-width
groups rather than four equal-width selector cards. Do not hide the controls
behind `调整`, a disclosure, modal, popover, or drawer.
- Keep the change within existing Renderer/store contracts. Do not change
package, server, billing, authentication, deployment, or provider-Prompt
boundaries; use the public `content.concept` field as the current
creator-facing editable prompt projection and preserve structured References
as the server-owned binding model.
## Outcome
- Inspected the reference project's source and live `/create` interaction. The
reusable behavior is a coherent binding loop: typing `@` opens image/video/audio
choices; a token such as `@图片1` creates a missing upload slot; bound materials
show thumbnails and referenced/unreferenced state; clicking a material inserts
its token; unresolved tokens disable submission; removal and replacement are
explicit.
- Compared that behavior with Makelore's current Reference model and UI. Makelore
already has the stronger durable data model (`reference.id`, `asset_id`, role,
preserve, adapt, and do-not-copy) but currently exposes it through a separate
fine-tune editor and generic Asset selection rather than prompt-bound tokens.
- Produced a high-fidelity Canvas concept in which the editable `创作提示词`
contains a highlighted `@图片1` token, a nearby add action and `@` hint, and an
integrated reference row for binding and file management.
- Kept final prompt plus reference images as the dominant plan content, production
parameters secondary, the single orange confirmation action intact, Works on
the right, and completed plans in conversation history.
- Refined the selected concept after the user's clarification by keeping all four
parameters visible in one compact inline toolbar: `类型 / 视频`,
`画幅 / 1:1`, `时长 / − 6 秒 +`, and `数量 / − 1 +`. Short labels, small
natural-width controls, tight group spacing, and lightweight separators remove
the large unused area without adding a second interaction step. Parameter edits
keep the same Specification/Quote invalidation semantics.
- Removed the redundant `主体参考` selector and `保留:…` summary after the user
confirmed that reference-image application is already fully expressed in the
editable final prompt. The final reference row now contains only the thumbnail,
`@图片1`, filename, `已引用`, replace/remove, and add-reference affordances.
- Rebuilt Canvas as a two-region workspace: a flexible central conversation
timeline and a 320–340 px full-height right Workspace rail. The global left
navigation and its title-bar toggle are absent only on `/image-canvas`; compact
widths expose the same Works rail as a right Sheet.
- Moved the only active `制作方案` into the conversation timeline. Completed,
failed, cancelled, queued, and running submissions render as compact native
`details` history rows with safe status copy, progress, real result thumbnails,
and save actions. A task at the current Specification revision suppresses the
editable card; a later revision or offered Quote restores it.
- Made the creator-facing `content.concept` projection a directly editable
`创作提示词`. Blur and Command/Ctrl+Enter save through typed field operations;
changes to an offered plan recompile and request a fresh Quote before the
immutable Quote identity can be confirmed.
- Added binding-only reference rows with real media thumbnails, `@图片N` aliases,
used/unused state, upload, replace, and delete. Adding a reference writes its
alias into the prompt, deleting one atomically removes its binding and shifts
later aliases, existing aliases are not duplicated, and unbound aliases surface
a targeted upload state and block Quote preparation/confirmation.
- Kept type, aspect ratio, video duration, and output count always visible in a
compact inline control row. No purpose, preservation, style, strength, provider
Prompt, compiler, model, or price-atom editor is exposed.
- Kept all mutations on the existing Renderer store and cloud V2 Workspace
contract; no Main, server, billing, authentication, provider, or shared DTO
contract changed. Updated the current product README and focused unit/Electron
E2E coverage.
## Verification
- Inspected the live reference-project states with the Codex in-app browser from
a local Next development server. Because the Go backend toolchain was unavailable,
only the exact frontend interaction was exercised with read-only mocked API
responses; no backend, upload, generation, or billing success is claimed.
- Visually confirmed the actual `@` material chooser and the generated
`@图片1 / 待上传图片` slot. Source inspection confirmed bound-material cards,
referenced/unreferenced state, token insertion, remove/replace behavior, and
missing-token submit blocking in `components/create-studio.tsx` and
`lib/prompt/*`.
- Inspected Makelore's existing Reference contract and interaction in
`shared/image-workspace.ts`, `YouthCreationCard.tsx`, `FineTuneDrawer.tsx`, and
`DesignProductionPanel.tsx`.
- Generated and visually inspected the revised preview:
`/Users/inmanx/.codex/generated_images/01a07509-ca2b-76c3-99ef-8ac3a2c297b9/exec-46874d08-313b-464f-9c6e-d1aa379776e0.png`.
- Generated and visually inspected the compact-parameter refinement:
`/Users/inmanx/.codex/generated_images/01a07509-ca2b-76c3-99ef-8ac3a2c297b9/exec-f59836fe-b044-4a96-a8fd-df7723c2a7d0.png`.
- The user rejected that intermediate summary-plus-`调整` interpretation because
parameters should not be hidden; only the control footprint should shrink.
- Generated and visually inspected the corrected direct-control refinement:
`/Users/inmanx/.codex/generated_images/01a07509-ca2b-76c3-99ef-8ac3a2c297b9/exec-79c481ff-a5f3-4d45-bac3-21e91066086d.png`.
- Confirmed that the corrected frame keeps type, aspect ratio, duration, and count
immediately editable; removes the `调整` affordance and hidden editor; uses
compact selects/steppers with limited padding; preserves the editable prompt
and reference binding as the dominant content; keeps Works full-height on the
right; and retains exactly one orange primary action.
- Generated and visually inspected the reference-row simplification:
`/Users/inmanx/.codex/generated_images/01a07509-ca2b-76c3-99ef-8ac3a2c297b9/exec-5330c387-e4eb-48c6-a289-8cf0be448c86.png`.
- Confirmed that the final prompt is now the only visible place describing how
`@图片1` affects generation, while the reference row exposes only binding and
file-management state. No role, preserve, style, weight, or strength control
remains, and all previously selected layout constraints are preserved.
- Confirmed the preview retains the selected layout and makes the visible
token-to-thumbnail relationship and replacement affordances legible without
adding a new permanent panel or a second instruction source.
- Implementation Design QA compared the selected source and two native CUA
implementation states in one combined image. The first pass found a P2 lifecycle
mismatch: an old succeeded task caused a current offered plan to show `已完成`.
Status precedence and readiness copy were fixed; the second pass had no
remaining P0/P1/P2 finding. See `design-qa.md` (`final result: passed`).
- `pnpm run typecheck`: passed after the final source changes.
- `pnpm run lint:check`: passed with five pre-existing warnings in Home and
Makelore pages; no errors and no warning in changed files.
- Focused Vitest: 5 files / 50 tests passed after the final shell/title-bar revision;
the final reference-token/card run passed 2 files / 17 tests, including
unbound-token blocking and no-duplicate binding.
- `pnpm run build:vite`: passed after the final source changes. Existing dynamic
import and large-chunk warnings remain unchanged.
- Full `pnpm test -- --run`: 220 files / 1846 tests passed, 3 skipped; 2 unrelated
Pi suites failed because the fresh worktree lacks the top-level
`node_modules/@earendil-works/pi-ai` link even though the package exists in the
pnpm store. The six failing real-process tests and one import failure do not
touch Canvas code.
- Electron E2E was updated for the right rail, compact responsive Sheet, inline
prompt/parameters, Quote confirmation, and history collapse. It was not run in
this turn because Product Design browser policy requires an explicitly selected
browser before invoking Playwright CLI; TypeScript and ESLint validated the spec.
## Follow-ups
- If the service adds a stable Workspace-summary cover field, use it to replace
the intentional generic icon fallback for non-current right-rail items.
- If the service adds reference-count/media capabilities, project those limits
into the add/upload affordance without introducing a client constant.
- A future service contract may formalize the creator-facing prompt separately;
until then `content.concept` remains the public editable projection and the
provider Prompt remains private.
- Decide whether chat-attached images enter References automatically as proposals
or remain uploaded Assets until the user/AI explicitly inserts and binds their
prompt token; in either case the server reducer must remain authoritative.
## Promotion Candidates
- Target: ADR-007 presentation guidance, Canvas current-state documentation, the
shared Canvas contract, and generation-plan/reference-image interaction rules.
- Proposal: the active Canvas plan card combines the creator-facing final prompt
with its public Reference bindings. The editor displays youth-readable
`@图片N` aliases backed by stable server-owned Reference and Asset identities.
Typing `@` selects existing images or upload; unresolved aliases create
targeted missing-image slots and block Quote availability; bound references
expose only thumbnail, alias, filename, binding state, replace, and remove.
The final prompt is the sole creator-facing place that specifies how each
reference affects generation; the row must not duplicate purpose,
preservation, style, strength, weight, or other instructions.
Production parameters remain directly visible and editable in a compact
inline toolbar rather than equal-width selector cards or an on-demand editor.
Prompt, reference, or parameter edits produce a new Specification revision
and a new Quote. Confirmed revisions collapse into chronological task history.
The maximum reference count and media types are service capabilities rather
than client constants. Provider compilation remains private.
- Evidence: the user's explicit direction to borrow the pure-AIGC reference
interaction; inspected live states and source in `zhinianAIGC`; Makelore's
current Reference DTO/UI; ADR-007; and the inspected revised concept.
- Future impact: a future service may formalize token serialization and a
dedicated creator-facing prompt field, while keeping provider compilation
private. Future UI must not keep raw ordinal text as the binding authority,
permit confirmation with a missing token, duplicate reference
instructions outside the prompt, grow a competing permanent Asset column,
hide routine parameters behind disclosure, or restore high-whitespace
parameter cards to the settled plan.
- Semantic conflicts: the current public Reference DTO includes role, preserve,
adapt, and do-not-copy fields. Exposing those as separate editable controls
would conflict with the user's confirmed single-source interaction. The
implementation preserves these existing values for service compatibility but
does not expose them as a second creator-facing authority; any future contract
revision should make their derived status explicit.
Client-only token parsing as semantic authority or exposure of provider Prompt
would still conflict with ADR-007 and is explicitly rejected. The shipped UI
uses aliases only as creator-facing display while stable Reference/Asset ids
remain in the existing Specification operations.
- Human confirmation: the user explicitly confirmed implementation of the
right Works rail, inline plan, editable final prompt, compact direct parameters,
and binding-only reference row. Any future public contract change still needs
coordinated product/service review.

View File

@@ -1,123 +0,0 @@
# Task: Redesign Coding default page
## Identity
- Task ID: 20260906-coding-default-page-a7c42e
- Mode: Feature
- Branch: codex/20260906-coding-default-page-a7c42e-coding-default-page
- Worktree: /Users/inmanx/Documents/makelore-task-coding-default-page-a7c42e
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Ready for Integration
## Scope
- Replace the no-project Code entry redirect with a dedicated conversation-first
landing state on `/chat`.
- Restyle both the no-project landing and the empty Conversation timeline around
the existing Makelore M brand mark, a large centered prompt, and the spacious
vertical hierarchy shown in the supplied Codex reference.
- Keep project creation reachable from the landing surface and update focused
Renderer/Electron coverage plus README current-state wording.
- Apply the user's follow-up correction: the lower landing surface is a standalone
`新增项目` CTA followed by horizontally arranged existing-project cards, not a
composer-shaped project starter.
- Apply the user's final copy correction: remove the visible `已有项目` heading and
`选择一个项目继续` helper while retaining the horizontal project-card rail.
## Intent And Constraints
- Reuse `src/assets/logo.svg`; do not copy or approximate the Codex mark and do
not generate a new brand asset.
- Preserve the single Makelore light visual system, bundled typography, Chinese
UI, project-local `.makelore` authority, and all Main-owned runtime/API seams.
- The no-project call to action must open the existing Sidebar project-creation
flow rather than introducing a second creation implementation; existing-project
cards must likewise reuse the Sidebar's validated project-entry behavior.
- Existing projects, Agent selection, Conversation creation, Composer behavior,
model/runtime controls, and accepted/uncertain mutation semantics remain
unchanged.
- Completed peer tasks for Plugin rehoming and removal of the project setup gate
overlap in Code-entry files but have no committed branch tips to consume. This
task therefore stays isolated on the recorded base and keeps its changes small
enough for later semantic integration.
## Outcome
- Code now resolves an empty local project list to `/chat` instead of redirecting
to Project Configuration.
- The no-project view uses the existing Makelore M vector asset and a large
centered guide sentence while retaining the Makelore sidebar and light visual
system. Its lower surface now uses the user's clarified standalone orange
`新增项目` CTA followed directly by an overflow-safe horizontal row of existing
projects, without the redundant visible project-section heading or helper copy.
- Project creation reuses the Sidebar's existing dialog through a renderer-local
event bridge; project-card selection uses the same bridge to invoke the
Sidebar's validated entry flow instead of duplicating project activation.
- Each project card is backed by the real local project catalog and exposes the
project name and last-opened date; an empty catalog shows only the CTA and does
not fabricate sample projects.
- Empty Conversations reuse the same branded hero above the real editable
Composer and automatically yield to the normal timeline after the first entry.
- README current-state wording, focused unit coverage, and the Code-entry Electron
navigation regression were updated. A side-by-side visual QA pass is recorded
in project-root `design-qa.md` with `final result: passed`.
## Verification
- `corepack pnpm install --frozen-lockfile` — passed with pinned pnpm `10.33.4`.
- `corepack pnpm run typecheck` — passed.
- `corepack pnpm exec vitest run tests/unit/coding-chat-panel.test.tsx tests/unit/coding-conversation-timeline.test.tsx tests/unit/module-navigation.test.tsx tests/unit/app-module-provider-gate.test.tsx --maxWorkers=4`
— 4 files, 58 tests passed.
- Follow-up focused run:
`corepack pnpm exec vitest run tests/unit/coding-chat-panel.test.tsx tests/unit/coding-project-entry.test.ts tests/unit/module-navigation.test.tsx tests/unit/app-module-provider-gate.test.tsx --maxWorkers=4`
— 4 files, 48 tests passed.
- Final-copy focused run:
`corepack pnpm exec vitest run tests/unit/coding-chat-panel.test.tsx tests/unit/coding-project-entry.test.ts --maxWorkers=2`
— 2 files, 23 tests passed, including assertions that `已有项目` and
`选择一个项目继续` stay absent while real cards remain.
- `corepack pnpm exec eslint src/pages/Chat/CodingChatPanel.tsx tests/unit/coding-chat-panel.test.tsx tests/e2e/main-navigation.spec.ts`
— passed with no output.
- `corepack pnpm test` — 223 files passed; 1,863 tests passed and 3 skipped.
- `corepack pnpm run lint:check` — passed with 0 errors and the repository's 5
pre-existing warnings in `src/pages/Home/index.tsx` and
`src/pages/Makelore/index.tsx`.
- `corepack pnpm run build:vite` — Renderer, Electron Main, Preload, and utility
worker production builds passed; only existing Browserslist, mixed-import, and
chunk-size warnings were emitted.
- `corepack pnpm exec playwright test tests/e2e/main-navigation.spec.ts --grep
"offers a create CTA|returns to the module chooser"` — 2 tests passed against
the built Electron app, covering empty and remembered-project entry states,
absent section/helper copy, horizontal card order, direct card entry, `/chat`,
and project-dialog launch.
- `git diff --check` — passed.
- Visual comparison:
`/Users/inmanx/.codex/visualizations/2026/09/06/01a0756a-b6f5-7892-a11c-1c1608ebe592/codex-reference-vs-makelore-v3.png`
plus the focused lower crop
`/Users/inmanx/.codex/visualizations/2026/09/06/01a0756a-b6f5-7892-a11c-1c1608ebe592/codex-reference-vs-makelore-v3-bottom.png`
— the user-identified composer/CTA and redundant-copy mismatches are resolved,
and no actionable P0/P1/P2 differences remain.
## Follow-ups
- During integration, semantically reconcile `App.tsx`, `Sidebar.tsx`, and the
Code-entry tests with the concurrently completed but uncommitted Plugin-rehoming
and project-gate-removal tasks; their branch tips contain no commits to merge or
cherry-pick from this feature worktree.
## Promotion Candidates
- Target: `.project-docs/30-worklog/current-state.md` and
`.project-docs/40-domain/business-rules.md`.
Proposal: record that entering Code with no active local project remains on
`/chat`, presents the branded hero, a standalone `新增项目` CTA, and real local
projects as an unlabeled horizontal card row. Creation and project-card entry
route through the single existing Sidebar flows; empty Conversations share the
same brand hero until their first entry.
Evidence: focused unit coverage, the passing Electron navigation regression,
production build, and the passed side-by-side visual QA.
Future impact: future routing or setup work must not restore the configuration
redirect or a second project-creation implementation.
Human confirmation: not required for intent because the user explicitly
requested this entry behavior; integration still must reconcile the overlapping
peer tasks semantically.

View File

@@ -1,100 +0,0 @@
# Task: Move plugins into project settings
## Identity
- Task ID: 20260906-move-plugins-project-settings-7c91a4e2
- Mode: Feature
- Branch: codex/20260906-move-plugins-project-settings-7c91a4e2-move-plugins-project-settings
- Worktree: /Users/inmanx/Documents/makelore-task-move-plugins-project-settings-7c91a4e2
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Ready for integration
## Scope
- Move the single user-visible Plugin workspace from the Code sidebar directly
into the same Project Configuration page used to configure Agents, Skills,
models, and knowledge.
- Make `/project-config/plugins` the canonical Plugin URL while retaining
deterministic compatibility redirects from `/plugins`, `/plugin-marketplace`,
`/my-plugins`, and `/project-plugins`.
- Update focused unit and Electron E2E coverage, the packaged-product marker, and
README current-state wording for the navigation change.
## Intent And Constraints
- Preserve the existing unified Plugin workspace and its projections of
Marketplace, Account Library, official-device state, Device Packages, current
project state, and retained IDs; do not restore the retired duplicate Plugin
Services sheet.
- Keep acquisition, device installation, project enablement, Agent Skill
assignment, runtime authorization, and billing as separate lifecycles.
- Preserve Main-owned Host API, authentication, package verification, and runtime
authority. Renderer navigation must not introduce direct IPC or local-runtime
HTTP access.
- Keep Project Configuration and its nested Plugin route available before Code
Provider initialization, including the no-active-project state.
- Render the nested route as a same-page Project Configuration drawer, not as a
replacement standalone Plugin page.
- Preserve legacy deep-link query/state and authenticated return paths.
- Keep the single Makelore light visual system and Chinese product copy.
## Outcome
- Added a `插件` ResourceCard alongside models, Skills, and knowledge in Project
Configuration, retained access in the no-active-project state, and removed the
standalone Code sidebar Plugin entry.
- Changed `/project-config/plugins` to render the Project Configuration page with
its wide Plugin drawer open. The Agent/Skill project page remains mounted behind
the drawer; closing it returns to the same page. Query/state-preserving
`/plugins` compatibility and existing filtered legacy redirects remain intact.
- Reused the unified Plugin controller and view inside the drawer without
restoring the retired duplicate Plugin Services implementation.
- Kept the unified Plugin controller, data sources, mutations, authentication,
and lifecycle semantics unchanged.
- Updated initialization gates, login return path, README, packaged Marketplace
artifact assertion, focused unit tests, and Electron E2E journeys.
## Verification
- Focused navigation, layout, embedded Plugin, controller, login, and artifact
verification — 6 files, 62 tests passed; the embedded-view regression failed
before implementation and passed afterward.
- `corepack pnpm run typecheck` — passed.
- Scoped ESLint across all changed source and test files — passed with no output.
- `corepack pnpm run build:vite` — Renderer, Main, Preload, and utility builds passed;
only existing Browserslist, mixed-import, and chunk-size warnings remained.
- `node ./node_modules/@playwright/test/cli.js test tests/e2e/project-plugins.spec.ts tests/e2e/plugin-marketplace.spec.ts` — 4/4 passed, including assertions that the Project Configuration page remains mounted behind the Plugin drawer.
- `corepack pnpm test` — 221 regular files (1861 passed, 3 skipped) and the pressure suite (1 passed).
- `corepack pnpm run lint:check` — passed with 0 errors and 5 pre-existing warnings.
- `git diff --check` — passed.
## Follow-ups
- Integration should reconcile the navigation wording in canonical project memory
and review overlap with planning task `20260906-remove-project-gate-7c31` before
merging. No product-semantic conflict was found in the current peer-task audit.
## Promotion Candidates
- Target: `.project-docs/30-worklog/current-state.md`,
`.project-docs/20-architecture/system-overview.md`, and
`.project-docs/40-domain/business-rules.md`.
- Proposal: record the Agent/Skill Project Configuration page as the visible
owner of the single unified Plugin workspace. Its `插件` card opens a same-page
wide drawer; `/project-config/plugins` is the canonical deep link for that
state, and old public URLs remain deterministic compatibility redirects. This
rehomes the reviewed unified workspace and does not restore the superseded
duplicate Plugin Services implementation.
- Evidence: explicit user direction in this task, focused unit coverage, 4/4
Electron E2E, full unit/typecheck/lint/build verification, and the task-owned
proposal `20260906-move-plugins-project-settings-7c91a4e2__project-settings-plugin-navigation.md`.
- Future impact: new Plugin navigation must originate in Project Configuration,
while Plugin lifecycle boundaries, Web Search exclusion, and Main-owned
authority remain unchanged.
- Semantic conflict: this supersedes canonical statements that the Code sidebar
owns the only Plugin entry and `/plugins` is canonical; it does not conflict
with ADR-008 or the Plugin lifecycle boundaries.
- Human confirmation: already supplied and clarified by the user: Plugins belong
on the same project page used to configure Agents and Skills, not on a separate
page. No additional product-direction approval is required during integration.

View File

@@ -1,102 +0,0 @@
# Task: Remove Canvas inspiration entry
## Identity
- Task ID: 20260906-remove-canvas-inspiration-56e64d28
- Mode: Feature
- Branch: codex/20260906-remove-canvas-inspiration-56e64d28-remove-canvas-inspiration
- Worktree: /Users/inmanx/Documents/makelore-task-remove-canvas-inspiration-56e64d28
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Ready for integration
## Scope
- Remove the user-visible “获取灵感” action from both expanded and collapsed
Canvas sidebars.
- Retire the Prompt Museum Renderer route and redirect historical
`/image-prompts` deep links to the Canvas workspace.
- Remove route-specific title-bar/sidebar treatment and update focused unit,
Electron E2E, README, and retained server-contract wording.
## Intent And Constraints
- Keep Canvas conversation, Living Form, Workspace, Quote, Task, Asset, project
creation, and project deletion behavior unchanged.
- Preserve Main-owned Prompt Museum API/auth/media security boundaries in this
small UI-removal task; do not infer authority to delete server data or change
backend contracts.
- Keep old links safe and deterministic by returning users to `/image-canvas`
without initializing Programming providers.
- Maintain the Chinese-only Makelore light interface and existing module-access
policy.
## Outcome
- Removed the lightbulb/inspiration action from both expanded and collapsed
Canvas sidebars.
- Retired the Prompt Museum Renderer route and its lazy bundle entry. Historical
`/image-prompts` paths now redirect to `/image-canvas` while remaining covered
by the Canvas module-access gate.
- Removed the obsolete Prompt Museum title-bar and sidebar-spacing special cases,
so Canvas keeps one workspace shell.
- Preserved the dormant Main-owned Prompt Museum Host API, authentication, media
validation, shared DTOs, and their existing focused tests; this task changes
only the AI Design product surface and does not delete server data.
- Updated README, retained server-contract wording, focused unit coverage, and
the Electron E2E flow to describe and verify the retired entry.
## Verification
- `corepack pnpm install --frozen-lockfile` — passed with repository-pinned pnpm
10.33.4.
- Focused Vitest coverage for App routing, Main layout, TitleBar, and the light
visual system — 4 files, 41 tests passed.
- `corepack pnpm run typecheck` — passed.
- `corepack pnpm run lint:check` — passed with zero errors and five pre-existing
warnings in unrelated Home/Makelore files.
- `corepack pnpm run build:vite` — passed for Renderer, Main, Preload, and the
release utility worker.
- `node ./node_modules/@playwright/test/cli.js test tests/e2e/image-workspace-v2.spec.ts --grep "removes the inspiration entry"`
— passed 1/1, confirming the sidebar entry is absent and the historical route
returns to Canvas.
- `corepack pnpm test` — passed: 1,859 ordinary tests passed, three skipped, and
the isolated pressure test passed 1/1.
- `git diff --check` — passed.
## Follow-ups
- A serialized Integration task should reconcile canonical Prompt Museum product
statements and split the mixed Museum/Canvas production-smoke commitment so
the still-relevant Canvas deletion and re-Quote checks remain tracked.
- Physically deleting the retained Main API, shared DTOs, or upstream data would
require a separate explicit scope; this task intentionally leaves those secure
boundaries intact and unreachable from the current product UI.
## Promotion Candidates
- Target: `.project-docs/30-worklog/current-state.md`,
`.project-docs/20-architecture/system-overview.md`,
`.project-docs/20-architecture/module-map.md`,
`.project-docs/20-architecture/data-flow.md`,
`.project-docs/40-domain/business-rules.md`,
`.project-docs/40-domain/glossary.md`, and
`.project-docs/80-commitments/commitments.md`.
- Proposal: record that Prompt Museum is no longer an active Canvas product
surface: expanded/collapsed sidebars expose no inspiration action, the page is
not mounted or bundled by App routing, and historical `/image-prompts` links
redirect to `/image-canvas`. Retained Main API/auth/media validation and shared
DTO code is dormant compatibility/security infrastructure rather than a visible
module. Remove Museum-specific production-smoke work from the mixed commitment
while retaining its Canvas deletion and re-Quote portions.
- Evidence: the user's explicit direction, focused 41-test regression suite,
full 1,859-test plus pressure pass, typecheck, lint, production build, and the
passing Electron route/sidebar check.
- Future impact: navigation and product documentation must not restore the
inspiration action or Prompt Museum route without a new explicit product
decision. Dormant API removal remains separately scoped.
- Semantic conflict: this supersedes canonical statements that Canvas exposes a
Prompt Museum entry and that its pending Prompt participates in active Canvas
data flow; it does not change ADR-007 or Main-owned security boundaries.
- Human confirmation: already supplied by the user in this task; no additional
product-direction approval is required during integration.

View File

@@ -1,123 +0,0 @@
# Task: Remove project creation gate and template selection
## Identity
- Task ID: 20260906-remove-project-gate-7c31
- Mode: Feature
- Branch: codex/20260906-remove-project-gate-7c31-remove-project-gate-7c31
- Worktree: /Users/inmanx/Documents/makelore-task-remove-project-gate-7c31
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Ready for integration
## Scope
- Remove the user-facing project creation identity/type choices from the Code
sidebar and use the existing safe defaults instead.
- Stop treating `config.initialized` as a navigation/UI gate for an otherwise
valid local Code project.
- Keep an empty project usable by presenting a non-blocking route to project
settings when no Agent exists.
- Keep the durable project ID as an internal service concern: remove it from the
normal Project Configuration UI and automatically assign one when a valid
legacy project lacks it.
- Update focused Renderer tests, the shared Electron project-creation flow, and
README product-state documentation.
## Intent And Constraints
- A new project receives a Main-generated local UUID and the existing internal
`interactive_ai_app` type without asking the user to choose either during
creation.
- Preserve `.makelore/project.json`, historical project-type normalization,
underlying identity compatibility endpoints, publish contracts, and existing
custom projects without exposing identity choices to young users.
- Keep the bundled Project Scaffold Skill available as an optional Plugin; it
must not be part of, or a prerequisite for, project creation.
- Missing or invalid project metadata remains an entry error. A valid legacy
config missing only `projectId` is repaired by Main with a generated UUID;
the legacy `initialized` Boolean no longer blocks a valid project.
- Renderer backend access continues through the existing Host API/store seams.
## Outcome
- Simplified the Code project creation dialog to directory selection only.
Main still generates the local project UUID, while the Renderer writes the
existing internal `interactive_ai_app` default without presenting identity,
type, or template choices.
- Removed the `initialized` navigation redirect and full-workspace overlay for
valid project metadata. Missing or invalid metadata still routes to Project
Configuration.
- Added an empty-Agent state in the coding chat so a newly created project opens
immediately and offers a direct, non-blocking route to create its first Agent.
- Reworded Project Configuration save affordances so the retained compatibility
write to `initialized` is no longer described as an initialization ceremony.
- Removed the Project Configuration identity card, raw UUID, bind form, and
independent-copy action. Main now serializes automatic UUID assignment for a
valid legacy project missing `projectId`, including concurrent reads, while
retaining the underlying compatibility endpoints and immutable schema rules.
- Replaced the last creation-dialog identity terminology with youth-readable
copy: only the folder choice is explained; all other setup is automatic.
- Preserved project schemas, historical project types, publishing contracts,
existing custom projects, and the optional bundled Project Scaffold
Plugin/Skill.
- Updated README product-state documentation and focused unit/Electron coverage.
- Diagnosed a post-verification UI mismatch as a development-runtime issue: the
visible Electron window had been launched from the separate Plugins/settings
task worktree, whose source still contained the former identity choices. The
stale process group was stopped and the verified feature worktree was started
on the standard development ports.
## Verification
- `corepack pnpm install --frozen-lockfile` — passed with the repository-pinned
pnpm 10.33.4.
- `corepack pnpm run typecheck` — passed.
- Focused ESLint across all changed source/test files — passed.
- Focused Renderer/Main tests — 60 passed across App routing, Main layout,
Sidebar, CodingChatPanel, Project Configuration, config stores, and serialized
automatic legacy identity assignment.
- Adjacent project-schema/store tests — 34 passed.
- `corepack pnpm run lint:check` — passed with zero errors; five pre-existing
warnings remain in unrelated Home/Makelore files.
- `corepack pnpm test` — passed: 1,862 ordinary tests passed, three skipped, and
the isolated pressure test passed 1/1.
- `corepack pnpm run build:vite` — passed for Renderer, Main, Preload, and the
release utility worker.
- `corepack pnpm exec playwright test tests/e2e/coding-project-identity.spec.ts tests/e2e/project-configuration-skills.spec.ts`
— passed (2/2), covering directory-only creation, direct chat entry, absence
of all identity terminology and controls, automatic legacy UUID repair, and
the empty-Agent settings route.
- Live runtime verification after restart — Vite PID 16968 and Electron PID
16975 both resolve to this task worktree; the active Renderer command reports
the same `app-path`, and the source served on port 5173 contains the automatic
setup copy while none of `项目身份`, `创建新的项目 ID`, or `绑定已有项目 ID`
is present.
- `git diff --check` — passed.
## Follow-ups
- Promote the project-creation workflow change into ADR-008 and the canonical
project architecture/domain documentation during a serialized Integration
task.
- Physically removing the optional bundled Project Scaffold Plugin/Skill, if
desired, should be a separate explicit decision because it affects packaged
resources and release coverage; this task only removes it from the creation
path.
## Promotion Candidates
- Target: ADR-008 and canonical project-creation architecture/domain documents.
Proposal: amend the user-facing creation workflow so identity and project type
are safe defaults instead of required choices, and treat `initialized` as a
compatibility field rather than a workspace navigation gate. Durable project
identity remains Main-owned and is generated automatically for new projects
and valid legacy configs that lack it; raw UUIDs, bind choices, and copy
semantics must not return to ordinary youth-facing UI. Existing custom
projects, type normalization, publishing authority, compatibility endpoints,
and the optional Scaffold Skill remain. Future impact: product documentation
and future creation/configuration UI must not restore these choices as
mandatory or visible setup. Human confirmation is represented by the user's
explicit statements that the product targets young users and service-required
identity should default automatically; canonical promotion still belongs to a
serialized Integration task.

View File

@@ -0,0 +1,165 @@
# Task: Merge all completed changes into main
## Identity
- Task ID: 20260907-merge-all-changes-8f3c2a
- Mode: Integration
- Branch: codex/20260907-merge-all-changes-8f3c2a-merge-all-changes
- Worktree: /Users/inmanx/Documents/makelore-integrate-all-8f3c2a
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Transferred to Final Integration Gate
## Scope
- Inventory every local worktree and branch against `main`, then integrate all
completed, current-product changes into one reviewed candidate.
- Reconcile the overlapping September 6 Code, Project Configuration, Plugin,
and Canvas changes semantically rather than by file-order preference.
- Promote accepted task facts into canonical project memory, run the required
verification, and advance the local `main` branch without rewriting history.
## Intent And Constraints
- Preserve the Code, Canvas, and Robot product boundary. Do not restore the
retired Learning module, the retired Prompt Museum product route, or other
superseded historical branches merely because their refs still exist.
- Preserve Main-owned backend/runtime authority, `.makelore` project ownership,
the single light visual system, and ADR-007/ADR-008 trust boundaries.
- Treat the latest explicit user direction as authoritative where completed
Canvas explorations differ: Works remains on the right and the implemented
prompt/reference plan supersedes the earlier left-rail concept.
- Preserve source histories with ordinary commits/merges; do not reset, rebase,
force-push, delete worktrees, or discard unknown changes.
## Project Context Loaded
Task context:
- Task ID: `20260907-merge-all-changes-8f3c2a`
- Mode: Integration
- Branch: `codex/20260907-merge-all-changes-8f3c2a-merge-all-changes`
- Worktree: `/Users/inmanx/Documents/makelore-integrate-all-8f3c2a`
- Base commit: `f8eee430f4f4167dc2ecc682ece96c652cdde14b`
- Other active local tasks: nine September 6 feature/audit tasks and the
September 5 development-start task reported by `task_context.py status`.
- Overlap or semantic-conflict assessment: Plugin rehoming, project-gate
removal, and the Coding landing page overlap in App/Sidebar/configuration
paths but express compatible confirmed behavior. Canvas inspiration removal
overlaps the implemented right-Works/reference-plan redesign and must be
reconciled. The earlier left-Works concept is explicitly superseded by the
later right-Works direction; the audit's unconfirmed stage proposal is not a
canonical promotion source. No unresolved product-direction conflict remains.
Read:
- `.project-docs/05-agent-entry/{read-before-planning,memory-index,planning-gate,integration-gate}.md`
- `.project-docs/00-brief/{project-positioning,success-criteria}.md`
- `.project-docs/30-worklog/current-state.md` and every active peer task record
- `.project-docs/10-decisions/{decision-index,adr-007-ai-design-living-form-v2,adr-008-interactive-ai-app-scaffold}.md`
- `.project-docs/20-architecture/{system-overview,module-map,data-flow}.md`
- `.project-docs/40-domain/{business-rules,glossary}.md`
- `.project-docs/80-commitments/commitments.md`
- `.project-docs/90-maintenance/{stale-items,doc-update-policy}.md`
- The Plugin navigation task-owned decision proposal.
Relevant understanding:
- Project goal: ship one Electron product with Code, Canvas, and Robot while
keeping Renderer access behind Main-owned APIs and project state in
`.makelore`.
- Current integrated focus: a conversation-first Canvas governed by one Current
Specification and immutable Quotes, a Pi-only Code runtime, and minimal
interactive-AI project creation with an optional explicit Scaffold Skill.
- Active task scope: consolidate all completed current-product local changes,
reconcile canonical memory, verify the result, and promote it to local main.
- Active constraints: preserve history and unknown work, keep Learning retired,
avoid direct Renderer IPC/runtime access, and do not change backend contracts
incidentally.
- Decisions affecting this task: ADR-007 controls Canvas semantic authority;
ADR-008 controls project creation/Scaffold/release authority and is amended by
the confirmed simplified user-facing setup flow.
- Evidence, reflections, or commitments affecting this task: source task
verification is strong, but production service/package gates remain pending;
Prompt Museum's mixed commitment must retain Canvas deletion/re-Quote checks
while dropping the retired Museum UI smoke.
- Files or modules likely involved: `src/App.tsx`, layout/sidebar/title-bar,
Project Configuration and Plugins pages, Code chat entry, Canvas page/store
components, focused unit/Electron tests, README, and canonical project docs.
- Unknowns, stale docs, or conflicts: several ready-for-integration branches may
still hold uncommitted work; old local branch refs include explicitly
superseded Learning work and must be classified rather than blindly merged.
Gate result:
- Passed.
## Outcome
- Inventoried every local worktree and branch against `main`, including dirty
feature worktrees, audit-only artifacts, and historical refs. Committed each
completed product source in its owning worktree before integration:
`af13aca` (project gate), `ce90f57` (Code landing), `be1764e` (Plugin
rehoming), `1562a49` (Canvas plan/reference redesign), and `b22559a`
(Canvas inspiration removal). The existing startup record was preserved as
`1dfa922` on `main`.
- Integrated those sources with ordinary merges `39d7b7e`, `a91c7e3`,
`f6c5961`, `ea1219c`, and `e069ec6`. Conflict resolutions preserve the
directory-only project flow, direct valid-project chat entry, no-Agent empty
state, Project Configuration-owned Plugin sheet, right-side Canvas Works rail,
central active plan, editable final Prompt/reference aliases, and retired
Prompt Museum Renderer surface.
- Reconciled overlapping files semantically. In particular, the new
`DesignWorksRail` also had its inspiration action removed even though that file
did not exist on the inspiration-removal source branch; the Plugin sheet keeps
Project Configuration mounted without restoring duplicate Plugin Services;
and valid projects no longer branch on the legacy `initialized` Boolean.
- Fixed two integration-only verification defects: restored the missing `Bot`
icon import in the Code empty-Agent state, and made the Canvas unit fixture
establish a complete authenticated identity. Updated Electron journeys whose
assertions still assumed pre-integration project routing, Canvas shell, or
non-exact accessible names.
- Promoted accepted facts into README, ADR-007, ADR-008, the decision index,
architecture maps/flows, business rules, glossary, commitments, and current
state. Prompt Museum production smoke was removed from the mixed commitment
while Canvas reference/re-Quote/deletion smoke remains pending.
- Excluded `codex/20260903-remove-learning-7a91` and
`codex/learning-player-release-fix`: both are historical Learning refs
superseded by the already integrated complete Learning removal and would
violate the current Code/Canvas/Robot boundary. Unconfirmed Canvas audit
concepts, generated reports, and source-worktree artifacts were also left
uncommitted and untouched.
## Verification
- `corepack pnpm install --frozen-lockfile` — passed with pinned pnpm 10.33.4.
- `corepack pnpm run typecheck` — passed.
- Focused Vitest across 15 affected files — 184/184 passed.
- `corepack pnpm test` — 223 ordinary files, 1,882 passed and 3 skipped;
isolated pressure suite 1/1 passed.
- `corepack pnpm run lint:check` — 0 errors; 5 pre-existing warnings remain in
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`.
- `corepack pnpm run build:vite` — Renderer, Electron Main, Preload, and release
utility worker builds passed; only existing Browserslist, mixed-import, and
chunk-size warnings were emitted.
- Targeted Electron E2E across Code identity/navigation, Project Configuration,
Plugin lifecycle/navigation, and Canvas — 12/12 passed.
- `git diff --check` passed after conflict and follow-up fixes.
## Follow-ups
- Existing production/install gates remain unchanged: real-account Canvas V2
reference/Quote/deletion smoke, Plugin server availability, signed platform
packages, and the source+built+contract publication chain are still external
follow-ups. This integration does not claim them.
- Local `main` promotion is in scope for this task. Remote push is not authorized
by the user's request and is not performed.
- Because the ownership checker audits every merge-parent change since this
task's pre-merge base, its expected foreign-task-record finding is transferred
to fresh Integration task `20260907-finalize-merge-all-4d72c1`, based on this
reconciled candidate. No history is rewritten to bypass that audit.
## Promotion Candidates
- None. This Integration task applies the reviewed source-task outcomes directly
to canonical project memory.