integrate completed September 6 product changes
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user