Releases: MrToyy/convosketchpad
Release list
v0.6.0
发布摘要
ConvoSketchpad v0.6.0 完成“资源引用 → 分支合并 → 跨 Agent 交接”路线。用户可以把任意已完成 Interaction 逐个连接到现有 Composer,并在每个 Composer 选择目标 Agent;Continue 改选 Agent 时,后端完整回放当前 Branch 和已冻结的合并上下文,在目标 Agent 中创建新 Session。
连接成功后,目标 Composer 的 @ 资源目录立即包含接入路径中的附件和 Artifact。来源关系、发送快照、持久实线、嵌套合并与 Session Recovery 使用同一冻结语义,不依赖 Canvas 坐标或来源 Branch 后续变化。
本版本以一个 Canvas Composition 数据库迁移交付分支合并、节点级 Agent 归属和 Copy,并将 Schema Epoch 提升到 6。更新器会在安全停服和快照边界内完成迁移;不要用旧版本代码直接打开已经迁移的数据库。
当前版本亮点
- 已完成 Interaction 可通过右侧链路 Handle 接入任意有效 Composer;鼠标拖线与键盘目标选择复用同一持久连接命令。
- Root、Fork 与 Continue Composer 均可接收任意数量来源;来源 Interaction 已经是目标 Composer 普通入边的直接来源时,前后端都会拒绝重复接入。
- 后端为每个来源保存完整根路径,按 Interaction 身份去重共享祖先并稳定拓扑排序;发送预留冻结实际投递的 Merge Context Snapshot。
- 连接保存后立即扩展
@上游资源范围;Composer 发送并转换为 Interaction 后,合并实线继续保留。 - 合并上下文可进入后续 Continue、Fork、嵌套合并和 Session Recovery,不重新读取来源 Branch 的最新状态。
- Canvas 不再绑定 Agent;Root 使用全局默认 Agent,Fork、Continue 和 Copy 默认继承来源 Interaction,用户可在 Composer 中切换。
- 原“重试”改为“复制”:创建未发送的并列 Composer,复制原输入、附件、资源引用和 Merge 来源,编辑后手动提交。
新增
- 实现 Canvas 分支合并:连接即持久化、不可删除、不可重连或改序,且不设来源数量上限;Continue 在 Agent 不变时保持原 Conversation,改选 Agent 时完整回放并创建新 Session。
- 新增 Composer/Turn Merge 来源、节点级 Agent/Conversation 归属、Copy 来源、Graph/SSE 投影,以及单一
0.5.0_to_0.6.0_canvas_composition_v1数据库迁移。 - 新增跨 Agent
agent-handoff完整回放;目标接受前不切换 Branch,接受后与新 Interaction 原子切换当前 Session。 - Merge 来源接入后,目标 Composer 的
@目录立即扩展到来源完整路径;资源目录、发送校验和嵌套上游解析复用同一 DAG 范围。
变更
- 将应用与更新兼容清单版本提升到
0.6.0,数据库 Schema Epoch 提升到 6;分支合并与跨 Agent 结构合并为唯一0.5.0_to_0.6.0_canvas_composition_v1迁移。 - 将 Interaction 的 Merge 拖线入口升级为与 Fork 同尺寸的原生 React Flow 链路按钮;鼠标继续只负责拖线,键盘入口继续打开目标 Composer 选择框,悬停与拖线状态使用和 Fork 一致的反色反馈且不显示光晕;拖线期间,所有可连接 Composer 的原生 Target Handle 扩展为带
GitMerge图标的反色圆形提示。 - 缩小 Composer 与 Interaction 中的
@资源 Token 并裁剪长名称;收窄资源选择框,同时放大图片预览并为候选名称增加安全裁剪。 - Composer 的 Agent 选择移至标题栏并使用更明确的下拉样式;Interaction 在状态后以同一
Runtime:Profile格式标记实际 Agent。 - Copy 与 Fork 使用一致的操作样式,附件按钮增加主色边缘;移除节点内的 Agent 回放说明与 Merge 来源信息块,来源关系继续由不可删除的实线表达。
- README 中英文路线图新增分支评审与比较、批量并行探索、语义化资源引用、Canvas 分区与检索、Storyboard/Collection、用户私有素材架、Canvas 模板、发送前检查、图片区域批注、创意工作流后端及设计工具与交付平台连接;Windows 支持调整到上述产品能力之后,作为最后实施项。
- 认证检查与登录页不再预加载完整 Canvas;认证成功后按需加载主应用,仅在 Canvas 没有已保存布局或用户执行“重新排列”时加载自动布局引擎,并将稳定前端依赖拆为独立缓存 Chunk。
修复
- 修复已接入来源的 Composer 点选
@资源时可能丢失 Lexical selection,以及局域网 HTTP 访问下浏览器不提供crypto.randomUUID()、导致鼠标与键盘都无法插入资源 Token 的问题。 - 修复合并 Composer 被已接受的 Interaction 替换后,持久 Merge 边仍指向已不存在的 Composer Handle 而消失的问题;连接保存后统一显示为不可删除的实线,并在提交后稳定保留。
- 修复复制带有 Merge 来源的 Interaction 时,未提交 Copy Composer 不显示 Merge 边的问题;复制草稿创建后及刷新恢复后都会立即显示持久实线。
- 修复 Fork/Copy Branch 的 Continue Composer 可能错误继承最初分叉节点,或在 Branch 推进后复用上一代草稿 Agent,而没有继承普通入边直接上一层 Interaction Agent 的问题。
安装与升级
新安装继续使用正式安装器:
curl -fsSL https://raw.githubusercontent.com/MrToyy/convosketchpad/main/install.sh | bash已经安装官方 v0.5.0 的用户应先把 .env、database/ 和 artifacts/ 备份到仓库外,再运行:
npm run update -- --version v0.6.0本次更新会应用 0.5.0_to_0.6.0_canvas_composition_v1 并把数据库 Schema Epoch 提升到 6。不要绕过更新器快照,也不要用 v0.5.x 或更早代码直接打开已经迁移的数据库;安全回滚必须同时恢复更新器保存的代码、环境与 SQLite 快照。更早版本继续按升级文档完成既有桥接路径。
v0.5.0
发布摘要
ConvoSketchpad v0.5.0 让 Canvas 中的材料能够在用户提示词的准确位置被引用,并新增测试阶段的 OpenCode Agent Runtime Adapter。用户可以通过 @ 在提示词中插入本次上传或当前父链上游附件与 Artifact 的资源标记,让 Agent 明确知道相邻描述或要求所指向的资源;OpenClaw、Codex 与 OpenCode 继续通过同一 Agent Runtime 边界接入,不改变既有 Canvas 的执行归属和恢复模型。
本版本包含资源引用数据库迁移,并将 Schema Epoch 提升到 4。更新器会在安全停服和快照边界内完成迁移;不要用旧版本代码直接打开已经迁移的数据库。
当前版本亮点
- Composer 新增位置化
@资源 Token,可在提示词的准确位置引用本次附件和当前 Branch 父链上游的 Attachment/Artifact,让 Agent 明确识别相邻描述或要求所指向的资源。 - 资源引用在草稿、发送预留、Interaction、失败恢复与 Canonical Replay 中保持结构化位置;重复引用只占一个材料槽位。
- 服务端统一校验上游范围、所有者、Canvas、资源可用性、Runtime Capability 与九项材料上限,旁支或其他用户资源不能通过伪造请求发送。
- 新增测试阶段的本地 OpenCode
1.18.16+Adapter,支持默认 Profile、流式输出、审批、恢复核对和受管 Artifact。 - Codex 与 OpenCode 固定共用
~/.convosketchpad/workspace,Runtime 专属工作目录覆盖被移除。
新增
- Composer 新增文本内
@资源 Token;候选按本次附件和上游资源分组,图片支持安全缩略图,菜单使用可键盘选择的listbox/option语义。 - 新增结构化输入文档、父链上游解析器、发送材料编译器与
turn_resource_references持久化。结构化位置贯穿失败恢复、Interaction 和 Canonical Replay,同一资源重复出现只占一个槽位,本轮附件和上游引用合计最多九项。 - 新增
0.4.0_to_0.5.0_resource_references_v1迁移与 Schema Epoch 4;公开 API 返回安全引用元数据和缩略图,不暴露内容哈希、文件路径或 Runtime Handle。 - 新增测试阶段的 OpenCode Agent Runtime Adapter:监督本机 OpenCode
1.18.16+HTTP/SSE Server,提供单一opencode/defaultProfile、Session/Message 恢复、流式输出、审批、受管 Artifact 与上下文快照。所有附件类型均原样转交 OpenCode,默认模型或工具拒绝时反馈脱敏原生原因;图片生成取决于默认模型或第三方 MCP/工具。
变更
- 产品定位更新为“一张画布,多条思路,熟悉的 Agent / One canvas. Many paths. The agents you know.”,强调 Canvas 上的多路径探索与既有 Agent 的直接复用;README 以分支 AI 对话、OpenClaw/Codex/OpenCode 复用和线性聊天对比重组中英文介绍,并集中呈现当前支持、候选 Agent Runtime 与产品能力路线图;GitHub、网页与 Package 元数据同步使用可搜索的功能描述。“让想法自由分支 / Let ideas fly free”继续作为品牌标语。
- 记录“资源引用 → 分支合并 → 跨 Agent 交接”的能力依赖与实施顺序;
0.5.0完成第一阶段资源引用,Windows 支持排在上述产品能力之后。 - Codex 与 OpenCode 固定共用
~/.convosketchpad/workspace,不提供 Runtime 专属工作目录环境变量覆盖;Runtime 展示名统一为OpenCode。
安全
- 资源候选和发送复用同一父链解析与所有者校验,其他 Canvas、其他用户和无上游关系的旁支资源不会进入目录,也不能通过伪造稳定 ID 推断或发送。
- OpenCode Server 只监听自动分配的 loopback 端口并使用进程内临时 Basic Auth;受管 Artifact 只从结构化 FilePart/Tool attachment 或固定受管目录解析,并复用路径、链接、数量和大小限制。
安装与升级
新安装需要 Node.js 22.22.2+,并准备至少一个可访问的 Agent Runtime:OpenClaw Gateway、已登录的本地 Codex CLI 0.146.0+,或已配置默认模型的本地 OpenCode 1.18.16+。随后运行:
curl -fsSL https://raw.githubusercontent.com/MrToyy/convosketchpad/main/install.sh | bash已经安装官方 v0.4.2 的用户应先把 .env、database/ 和 artifacts/ 备份到仓库外,再运行:
npm run update -- --version v0.5.0本次更新会应用 0.4.0_to_0.5.0_resource_references_v1 并把数据库 Schema Epoch 提升到 4。不要绕过更新器快照,也不要用 v0.4.x 代码直接打开已经迁移的数据库;安全回滚必须同时恢复更新器保存的代码、环境与 SQLite 快照。更早版本继续按升级文档完成既有桥接路径。
v0.4.2
发布摘要
ConvoSketchpad v0.4.2 将更新器改造为可恢复、可验证的维护事务,重点解决进程中断、部分快照覆盖正式回滚点、SQLite 备份损坏、服务状态不稳定和新旧锁协议交接失败等问题。该补丁不改变 Canvas 数据模型,也不增加数据库迁移;从官方 v0.4.1 升级时保留严格验证的首次交接桥,完成后后续 Release 即使用新事务更新器。
当前版本亮点
- 更新阶段持久化到原子事务 Journal,中断后可通过
--status查看并用--resume恢复准确源快照、重试原目标 Release。 - 完整与部分快照分离,SQLite 备份经过外键、完整性、大小和 SHA-256 校验后才可成为正式回滚点。
- systemd/launchd 生命周期等待稳定状态;已
bootout的匹配 launchd Job 可由恢复进程重新识别并bootstrap。 - Maintenance Lease 绑定 nonce、父进程、安装目录和准确锁路径;Schema Epoch 清单显式限制代码与数据库的回滚兼容范围。
- 官方 v0.4.1 updater 可通过直接父进程 PID 锁验证,安全调用 v0.4.2 迁移器,不再因锁协议升级必然失败。
新增
- 更新器新增持久事务 journal 与
--status/--resume:每个破坏性阶段原子落盘,进程中断后先恢复准确源快照,再重新执行原目标 Release;普通更新不会覆盖未完成事务。 - 新增
--leave-stopped,完成完整离线快照、环境和数据库迁移后保持受管服务停止;与完全不管理服务和数据库的兼容参数--no-restart明确分离。
变更
- setup、migrate 和 update 的 PID 锁升级为进程绑定 Maintenance Lease,继承迁移器必须验证随机 nonce、准确锁路径、父 PID、安装目录和持有者存活;旧的布尔环境变量不能单独绕过锁或离线检查。
- 更新快照分为完整与部分类型。只有经 SQLite 外键、完整性、大小与 SHA-256 验证的完整离线快照可以替换
last-good;部分快照只属于当前事务,数据库回滚在修改现有文件前强制复核完整清单。 - Release 新增显式数据库 Schema Epoch 兼容清单;安装前校验目标清单,代码回滚前确认源版本可读取当前数据库,发布工作流强制应用版本和可读区间一致。
- systemd/launchd 生命周期等待稳定状态并区分转换中与未知;已经
bootout的匹配 launchd plist 仍可被新更新进程识别并恢复。
修复
- 为官方
0.4.1updater 驱动0.4.2迁移器增加一次性安全交接:仅当准确的 PID-only 锁属于迁移器直接父进程时接受旧持锁/离线变量,避免首次升级因新旧 Lease 协议不同必然失败。 - 修复
--no-restart或无服务管理器更新用不含数据库的快照覆盖正式回滚点,以及回滚缺失数据库副本时可能静默继续并报告成功的问题。
安装与升级
新安装继续使用正式安装器:
curl -fsSL https://raw.githubusercontent.com/MrToyy/convosketchpad/main/install.sh | bash已经安装官方 v0.4.1 的用户可在保留仓库外备份后运行:
npm run update -- --version v0.4.2这一跳仍由 v0.4.1 的源 updater 编排,目标迁移器会严格验证直接父进程持有的 PID-only 锁。升级期间不要强制终止进程或断电,也不要使用 --no-restart;安装到 v0.4.2 后,后续更新才完整具备持久事务恢复能力。更早版本继续按升级文档完成既有桥接路径。
v0.4.1
发布摘要
ConvoSketchpad v0.4.1 修复 v0.4.0 更新链路中暴露的维护停服、旧配置迁移、GitHub 限流诊断与关闭竞态,并为从 v0.3.x 升级提供明确的一次性离线桥接。该补丁不改变 Canvas 数据模型,不增加数据库迁移。
修复
- macOS 更新器以
launchctl bootout gui/<uid>/<label>真正卸载KeepAliveJob,恢复时从已验证 plist 执行bootstrap并用kickstart -k启动;状态查询改为精确 Domain/Label,避免服务在迁移期间被自动拉起或把未知状态误判为停止。 - 目标迁移器一次性原子转换 v0.3.x 的
AGENT_BACKENDS、GATEWAY_URL、GATEWAY_TOKEN和CONVOSKETCHPAD_GATEWAY_TIMEZONE。旧、新键冲突会在任何写入前失败,错误不包含配置值。 - GitHub Release 请求现在区分主 API 限流、带
Retry-After的临时限制和被拒绝的 Token;错误提供 UTC 重置时间或安全处理建议,不返回响应正文,也不降级到非 Release 更新源。 - 进程关闭先通过内部 AbortSignal 终止 Canvas/Runtime SSE 的订阅、心跳和 catch-up 定时器,再关闭 Runtime 与 SQLite;SIGTERM/SIGINT 重入也会被忽略,避免停机或回滚期间定时器读取已关闭数据库。
文档
- 更新文档明确说明 v0.3.0–v0.3.2 的源更新器会与目标迁移器发生维护锁自冲突,应使用
--no-restart后离线迁移;v0.4.0 的 macOS launchd 安装升级到本版时也需先bootout。补充已恢复数据库但旧服务重启失败时的判断与 GitHub 403 排障,并让 CLI 准确说明--no-restart不管理服务。
安装与升级
新安装可以使用正式安装器。v0.4.0 的 systemd 安装可直接运行:
npm run update -- --version v0.4.1v0.3.0–v0.3.2,以及 v0.4.0 的 macOS launchd 安装,必须按升级文档先完全停服,再执行 npm run update -- --version v0.4.1 --no-restart、npm run migrate -- --confirm-offline 并恢复服务。不要删除维护锁或手工编辑 SQLite。
v0.4.0
发布摘要
ConvoSketchpad v0.4.0 定位为“Agent 可视化分支工作台——从任意节点回溯并继续探索”,将 OpenClaw 从产品内部的固定运行时重构为标准 Agent Runtime Adapter,并通过同一边界直接接入本地 Codex App Server。现有 Canvas 交互保持不变,同时新增节点内审批、平权 Agent 目录和按 Runtime 分组的运行状态与用量。
本版本包含不可逆的数据库结构升级。服务启动会自动迁移;setup 和更新器只有在属于当前安装的受管服务已明确离线时才显式迁移并创建 SQLite 快照,没有可验证的服务管理器时推迟到下次启动。失败恢复同样不会在服务状态未知时替换数据库。
当前版本亮点
- 新建 Canvas 仍然一键完成,自动选择 setup 配置的可用默认 Agent(否则回退到首个可用项),并允许在第一次提交前更换。
- OpenClaw Agent、Codex Agent 和其他 Runtime Agent 使用同一目录与 Canvas 模型,不需要切换 Runtime 模式。
- 原生执行或插件审批直接出现在所属 Interaction 节点中,支持权限子集和持久授权确认。
- 设置、状态栏和用量面板按 Runtime 聚合;不完整或不可比较的数据不会被错误相加。
- OpenClaw 协议与凭据边界收敛到独立 Adapter,新增 Runtime 可遵循统一开发规范。
- 品牌标语统一为“让想法自由分支 / Let ideas fly free”,README、应用元数据、安装器和宣传图不再把产品描述为 OpenClaw 专属工作台。
新增
- 新增统一
AgentRuntime契约、Runtime Registry、语义化 Capabilities 和版本化不透明 Conversation/Turn/Artifact/Approval Handle;当前可同时注册 OpenClaw 与 Codex。 - 新增本地 Codex App Server Adapter,最低且已验证 Codex CLI
0.146.0:监督 stdio JSONL 子进程,提供codex/defaultAgent、Thread/Turn 恢复、文本/图片输入、流式输出、原生图片和通用 Artifact、账户用量/额度及节点内命令/文件/权限审批。多个受管用户共享宿主机 Codex 账户与配置的工作目录。 - Codex 通用交付物使用
CODEX_WORKING_DIRECTORY/.convosketchpad-artifacts/<turn-token>/outputs/受管目录,经过路径、链接、数量和大小校验后复制到 Canvas Artifact 存储;支持非图片文件下载,失败/中断 Turn 的可用文件保留并标注可能不完整,持久化后释放临时副本。SVG/HTML 等活动内容不内联预览。 - 统一 Runtime 事件从首阶段覆盖终态、流式输出、Artifact、用量和审批 required/resolved,并用按 Runtime 命名空间隔离的
runtime_event_inbox持久化、去重终态与审批;显式 Turn Handle 严格关联,晚到审批结果仍可在 Interaction 终止后收敛。全局断线由 Runtime 状态流传播,不混入 Canvas Inbox。 - Interaction 节点内新增审批卡片,展示已净化的风险、权限、作用域、到期和解析状态;支持权限子集选择、持久授权二次确认及统一审批 HTTP API。
- 新增 Runtime 配置/聚合目录:新建 Canvas 自动选择配置的可用默认 Agent并在必要时回退,首次发送预留前可更换;各 Runtime 的 Agent 平权展示,不提供 Runtime 切换模式。
- setup 新增 Runtime 只读探测与分组多选,并通过统一
RuntimeSetupDriver仅配置、校验用户选择的 Runtime;配置完成后通过统一 Runtime Port 选择默认 Agent,默认项不可用时安全回退到第一个可用 Agent。非交互模式支持--runtimes与--default-agent。 - 新增 Adapter 开发规范和
server/lib/agent-runtimes/adapters/<runtime-id>/目录约束。
变更
- 主体代码按职责收敛:Canvas 持久模型、纯领域规则、应用用例与 SQLite 持久化分别进入
canvas/model.ts、canvas/domain/、canvas/application/和canvas/persistence/;服务启动由显式ApplicationContext组合并注入 Runtime Registry 与 Store,不再保留导入即创建的全局 Runtime 单例。前端 Flow 类型/自动布局与节点渲染分离,Canvas 列表从页面编排组件拆出;setup 的 Runtime 选择、默认 Agent 与帮助输出也拆成独立模块。 - 删除浏览器不应直接驱动的
POST /api/canvas/send-operations/:id/dispatch;Runtime 重启入口统一为POST /api/runtime/:runtimeId/restart。setup 删除 OpenClaw 专属--gateway-timezone参数,交互模式继续询问远程 Gateway 时区,自动化使用正式环境变量。 - Canvas Route、发送 Service/Worker/Coordinator、事件消费、Reconciler、上下文快照、Artifact 物化、运行状态、用量和 Provider 配额改为通过统一 Runtime Port 调用;OpenClaw Gateway 方法名、Session Policy、Transcript 与 Artifact 下载收敛到独立 Adapter 目录。
- 导航栏/设置聚合所有 Runtime 的连接状态;账户用量和额度按 Runtime 分组,仅在币种、周期与可加性一致时显示费用合计。Canvas Branch、工作中和上下文仍保持当前 Canvas 局部语义。
- SQLite 在既有
0.3.2 → 0.4.0结构迁移内将旧 OpenClaw 顶层字段彻底迁移为 Runtime/Profile、Conversation/Turn/Artifact Handle、审批和通用事件 Inbox;旧列及gateway_signal_inbox成功后物理移除,不双写。全新数据库直接创建当前 Schema,不再先构造旧表再重建;setup、更新器和服务启动均自动执行安全迁移。 - 数据库迁移链收敛为且仅为三项:
0.2.0_to_0.3.0_v1、0.3.0_media_derivatives_v1和0.3.2_to_0.4.0_agent_runtime_v1。npm run migrate在外键与完整性检查后显式验证三项均已落账,并清理未发布开发版本留下的迁移标识;0.3.x可直接升级,0.2.0数据仍由目标迁移代码完整支持,但安装流程必须先完成既有的v0.3.0更新器桥接。 - Agent Runtime Schema 迁移会根据最早 Send Reservation 回填旧 Canvas 的 Agent 锁定时间,并以最早 Interaction 兜底;已经迁移但锁定字段缺失的数据库会被幂等修复,服务端同时拒绝对任何已有 Reservation 或 Interaction 的 Canvas 更换 Agent。
- 开发期 Backend Schema 会自动原地迁移为 Runtime 物理字段、Handle JSON 与事件表;
AGENT_BACKENDS由 setup/update 一次性转换为AGENT_RUNTIMES,正式运行不兼容读取、不双写。 - 派发可靠性增加完整恢复闭环:未知结果保存不透明恢复引用;非幂等 Runtime 必须先权威核对,无法核对时保持锁定且不盲目重发。图片生成 Capability 改为
supported | unsupported | unknown三态,OpenClaw 当前如实报告unknown。 - Conversation 连续性判断下放 Adapter:OpenClaw 继续解释 Session 重置策略,Codex
notLoadedThread 视为可恢复并继续原 Thread;只有权威记录确认缺失时才由通用层执行历史 Replay。Codexturn/start没有服务端幂等保证,传输结果未知时通过thread/read与交付 Token 对账。 - Codex 当前使用 Default 模式并继承宿主机模型、Sandbox、审批与 Reviewer 设置;统一审批暂不表达 execpolicy/network amendment,结构化 ask-user 和 MCP elicitation 无回答通道并会明确拒绝。这些限制不会被伪装成成功。
- 无副作用 Runtime Manifest 统一 ID/展示名支持清单,Definition 对清单逐项提供 Registry 所有的实例工厂与配置校验;ApplicationContext 独立拥有 Store、Adapter 生命周期和后台协调依赖,OpenClaw 共享传输使用租约避免相互关闭。OpenClaw 专属配置、CLI 定位及 setup 支持面收敛到 Adapter 目录,Runtime 状态事件、Canvas 事件消费和用量模块采用不混淆的独立命名。
- setup 与服务启动共用 Runtime 选择语义:只有缺失
AGENT_RUNTIMES时默认 OpenClaw,显式空配置统一拒绝。原生审批 resolved 事件会再次校验已声明 Choice 和权限子集,契约外结果保持unconfirmed,不再默认成功。 - OpenClaw CLI 定位改为显式
OPENCLAW_BIN优先、否则直接通过PATH执行openclaw;setup 选择页只用openclaw --version发现入口,不在用户选择前读取 Token 或原生配置,选中后才读取可用预填值。成功发现后持久化实际绝对路径,安装器与服务端不再扫描特定安装器或其他用户目录。本机缺少 CLI 不阻断远程 Gateway 安装。本轮默认 Agent 仅增加环境配置,不增加数据库迁移。 - Codex setup 只用
codex --version做发现;选择后默认创建并使用~/codex-convosketchpad,更新时优先沿用.env中的工作目录,再临时启动 App Server 读取账户状态。未登录时提示用户自行运行codex login后重跑 setup,不阻断其他配置,也不读取或修改CODEX_HOME。Codex 接入复用现有通用 Handle 与派发恢复字段,不增加第四条数据库迁移。 - 流式 Preview 按统一语义区分追加 Delta、累计快照和消息完成值,服务端按
messageId组装完整 Turn 文本后再发给前端;Codex 多段文字不再只显示最后一个 Delta,OpenClaw 累计message也不会被重复追加。运行节点在已有文字时继续显示工作指示,并使用固定高度的运行期输出面板,将正文滚动层与底部工作状态层分离;每次快照更新后正文自动跟随到底部,避免未闭合的流式 Markdown 持续改变容器和滚动轨道尺寸。Codex 上下文改用tokenUsage.last.totalTokens,并通用拒绝超出 Context Window 的累计用量快照。 - Runtime 状态读取改为无副作用快照;Gateway 不可达时,状态聚合和状态订阅不再反向触发即时重连,OpenClaw 严格保持 1–30 秒指数退避,避免启动期热循环和日志风暴。
- setup、migrate 和 update 共用维护锁,并校验 systemd/launchd 的名称、工作目录、启动命令和三态运行状态;只有属于当前安装且明确离线时才快照、迁移或恢复 SQLite。没有匹配管理器时 setup/update 推迟数据库迁移且失败回滚不替换 SQLite;独立 migrate 要求操作者显式确认手工进程已停止。setup 重启后验证服务状态、健康和版本,无法确认离线时不覆盖数据库并保留临时快照。环境配置迁移仍不依赖服务管理器,
--no-restart继续只恢复代码和.env。本轮复用既有派发恢复字段,不增加第四条数据库迁移。 - 安装器不再读取 OpenClaw 原生配置或直接生成 Runtime
.env,交互与非交互安装统一经过 setup;--skip-setup只复用已有配置。已有稳定版跨 Release 升级必须使用事务化更新器,安装器只处理新安装和同版本修复,并拒绝覆盖脏工作区及模糊 CLI 参数。setup 严格拒绝未知、重复、缺值和冲突参数;其一次性数据库快照不覆盖正式last-good,迁移或服务恢复失败时恢复.env与数据库并保持服务停止。Linux 系统级 systemd 的安装与更新统一经最小权限 sudo 路径执行。安装、setup 与 update 统一强制 Node.js>=22.22.2。
修复
- Canvas 连接边改为静态显示,避免 React Flow 的 SVG 虚线动画在空闲页面持续触发样式重算和 GPU 绘制;运行状态继续由 Interaction 节点和状态栏反馈。
安全
- OpenClaw 远程设备权限增加精确的
operator.approvalsscope,以便统一审批 Port 能真实响应原生审批;已有 read/write 设备需要重新配对或完成 scope upgrade。审批事件持久化前会移除命令环境等敏感原始数据。 - Runtime 发现 Driver 不再接收完整
.env,只获得是否已配置和非敏感可执行文件路径;未选择 Runtime 的发现阶段无法读取连接 Token。 - 更新 Hono、PostCSS、brace-expansion 与 jsdom/Undici 依赖链,修复正式 Release 审计发现的拒绝服务、响应解析、缓存与 Cookie 处理漏洞;完整依赖和生产依赖审计均不再报告已知漏洞。
安装与升级
v0.4.0 的安装、更新和源码构建需要 Node.js 22.22.2+。
新安装需先准备至少一个可访问的 Agent Runtime(OpenClaw Gateway,或已登录的本地 Codex CLI 0.146.0+),然后运行:
curl -fsSL https://raw.githubusercontent.com/MrToyy/convosketchpad/main/install.sh | bash已经安装 v0.3.0 或更高版本的用户可运行:
npm run update -- --version v0.4.0从 v0.2.0 升级必须先按升级文档固定升级到 v0.3.0,获得停服迁移、SQLite 快照和失败回滚能力后,再升级到 v0.4.0。不要用旧版本直接打开已经完成 0.4.0 结构迁移的数据库。
v0.3.2
发布摘要
ConvoSketchpad v0.3.2 增加安全、可预览的服务注销流程,让用户能够移除 launchd 或 systemd 集成,同时明确保留程序目录、Canvas 数据、附件、Artifact、Gateway 凭据和更新器快照。该版本不改变 Canvas、OpenClaw 集成或数据库语义。
新增
- 新增
./uninstall.sh与npm run uninstall入口,支持--dry-run,并通过工作目录、启动命令和生成模板校验,精确注销属于当前安装的 launchd/systemd 服务。 - 注销完成后列出
.env、Canvas SQLite、附件与 Artifact、Gateway 凭据和更新器状态的位置,提供明确警告的手动程序目录删除命令。 - 提供固定当前版本、复用现有配置的安装器命令,用于重新注册并启动已经注销的受管服务。
变更
- macOS 安装器生成的根目录
start.sh作为本地运行文件被 Git 忽略,避免自动生成的 launchd wrapper 阻塞后续原生更新。
安装与升级
新用户需要先安装并运行可访问的 OpenClaw Gateway,然后执行:
curl -fsSL https://raw.githubusercontent.com/MrToyy/convosketchpad/main/install.sh | bash已经安装 v0.3.0 或更高版本的用户可以在发布后运行:
npm run update -- --version v0.3.2从 v0.2.0 升级仍必须先按升级文档完成一次性 v0.3.0 桥接。升级前应停止服务,并把 .env、database/ 和 artifacts/ 一起备份到仓库外。
v0.3.1
发布摘要
ConvoSketchpad v0.3.1 是继 v0.3.0 架构升级后的推荐补丁版本。对于已经安装 v0.3.0 的用户,本版本修复离线迁移 CLI 记录错误应用版本的问题;为了让新用户完整了解当前产品,本说明同时汇总 v0.3.0 引入的主要体验、安全性和运维改进。
ConvoSketchpad 是 OpenClaw 可视化分支工作台:你可以从任意已完成的对话节点携带当时的上下文、附件与生成物继续探索,让不同方向各自延伸,同时保持任务主线清晰。
当前版本亮点
- 真正的上下文分支:从任意已完成的 Interaction 创建分支,完整保留历史文本及可用附件、Artifact 的逻辑位置;也可以继续当前方向或原样重试任意 Interaction。
- 可靠的发送与恢复:后端统一协调发送、幂等重试、Gateway 重连和终态收敛;Session 被替换或移除后,通过规范快照恢复 Branch 上下文。
- 持久化的可视化工作区:Canvas 拓扑、节点位置、用户尺寸和视口都会保存;“重新排列”可以按真实节点尺寸恢复清晰的从左到右布局。
- 附件与生成物归档:原始附件保持不可变,生成 Artifact 按 Canvas 和所有者持久化;图片缩略图与投递副本由后端统一生成和缓存。
- 更安全的 OpenClaw 集成:浏览器只连接 ConvoSketchpad 同源 HTTP/SSE,Gateway Token 和设备 Token 只存在于服务端;远程访问支持精确 Origin、受管用户认证和 Tailscale/反向代理拓扑。
- 一致的安装与更新体验:Setup 统一支持 Local、LAN、Tailscale IP、Tailscale Serve 和 Custom;从 v0.3.0 开始,更新器提供停服迁移、SQLite 快照、完整性校验和失败回滚。
修复
- 修复离线迁移 CLI 从
bin-dist运行时无法定位根package.json、导致迁移账本把实际应用版本记录为0.0.0的问题。
安装与升级
新用户需要先安装并运行可访问的 OpenClaw Gateway,然后执行:
curl -fsSL https://raw.githubusercontent.com/MrToyy/convosketchpad/main/install.sh | bash已经安装 v0.3.0 的用户可以在发布后运行:
npm run update -- --version v0.3.1从 v0.2.0 升级仍必须先按升级文档完成一次性 v0.3.0 桥接,再升级到 v0.3.1。升级前应停止服务,并把 .env、database/ 和 artifacts/ 一起备份到仓库外。
v0.3.0
变更
- 停止维护历史来源仓库的同步工作流,将
main明确为唯一长期维护和发布分支;产品文档仅保留独立的许可证与第三方来源说明入口。 - 将运行链路统一为“浏览器 HTTP/SSE ↔ ConvoSketchpad 后端 ↔ OpenClaw Gateway”,移除浏览器 Gateway RPC、通用 WebSocket 中继和浏览器 Gateway 凭据设置。
- 新增后端发送协调器、可恢复幂等重试和
ambiguous安全状态;未知发送结果会保持 Branch 锁定。 - 增量新增 Canvas 附件登记与发送派发字段,并提供从
0.2.0Schema 到单链条数据模型的事务化一次性迁移;旧 Interaction JSON 保持回滚兼容。 - Gateway 鉴权改为双模式:loopback backend 使用共享 Token且无需设备配对,远程 Gateway 的 WebSocket 才使用 read/write 设备 Token;所有 Gateway HTTP 请求固定使用共享 Token。
- 安装向导只为远程
gateway-client/backend/node发起配对,不再修改gateway.controlUi.allowedOrigins。 - 移除
CONVOSKETCHPAD_PUBLIC_ORIGIN、WS_ALLOWED_HOSTS和CSP_CONNECT_EXTRA;ALLOWED_ORIGINS只用于 ConvoSketchpad HTTP API/SSE。 - Graph 改为无副作用快照,并新增持久 cursor、按 Canvas 的完整实体 SSE、非持久 Preview 和
Retry-After降级退避,避免长响应触发 429。 - Interaction 执行状态与 Artifact 同步状态分离;后端持久化 Gateway 终态信号和 Artifact 同步任务,服务重启后继续协调。
- Gateway 首次连接和运行中断线统一使用 1–30 秒指数退避自恢复;发送重试改为新任务/重连主动唤醒和按
next_attempt_at单次定时,不再每秒扫描 SQLite。 - 失败 Interaction 同样保留独立的晚到 Artifact 观察,Runtime/Gateway 事件订阅会隔离并移除失效消费者,避免单个已关闭 SSE 中断后端状态发布。
- 修复 Artifact HTTP 下载错误使用设备 Token 导致的 401;已完成 run 无法反查 Session 时安全回退到当前 Interaction transcript。
- 修复已持久化 Artifact 仍长期显示“同步中”,将晚到 Artifact 静默观察与用户可见同步状态分离;
0.2.0_to_0.3.0_v1数据库迁移会一次性修复旧版误标的degraded节点、合并等价文件来源并防止旧 JSON 在重启后恢复重复记录,同时保留超出 OpenClaw Transcript 范围的既有持久化结果。 - 更新器新增一致 SQLite 快照、停服迁移、完整性校验和数据库回滚;运行时只恢复具有明确未完成状态或持久同步任务的节点,不再通过内部协调版本扫描历史。
- 移除面向用户的原始事件和 Agent log 面板,以及
/api/agentlog、agent-log.json写入链;后端诊断改为结构化服务日志。 - 清理旧 setup 自动管理员审批、Gateway workspace 文件 RPC、Agent Log Markdown 辅助、未使用 UI 组件与服务端文件工具,并将 Canvas 节点渲染和 Artifact 观察策略从大型协调模块中拆出。
- Setup 统一 Local、LAN、Tailscale IP、Tailscale Serve 和 Custom 的精确浏览器 Origin、绑定地址、可信代理与远程认证策略。
- 生产与开发统一使用
HOST/PORT作为浏览器入口;开发后端端口改为自动分配的 loopback 实现细节,并废弃用户级VITE_HOST/VITE_PORT。 - 移除应用和 Vite 的内置 TLS;HTTPS 统一由反向代理或 Tailscale Serve 终止。
- 用量面板移除高成本的 Provider 历史明细扫描,改为按需读取 Gateway 全局金额与 Input/Output/Cache Read;Provider 配额保持独立展示。
- 精简底部状态栏:分支和工作中数量直接来自 Graph;Interaction 完成时保存其 Session 累计上下文快照,获得焦点的 Compose Node 只展示来源节点的快照,不聚合祖先节点;移除实时 Branch 上下文查询、Canvas 级 Session 聚合、服务端时间、Gateway 运行时间及其周期轮询,并把版本与更新入口迁移到“设置 → 系统”。
- 重组设置面板为默认“外观”和“系统”两个页签;系统页分别呈现 OpenClaw 网关管理与 ConvoSketchpad 版本更新,并按运行能力区分本机重启和远程主机管理。
- Canvas 工具栏新增“重新排列”:在没有可见发送或运行任务时,按真实节点尺寸执行从左到右的拓扑布局、自动适应全图,并把节点位置与视口完整保存到后端。
- Canvas 的 Interaction 和 Composer 支持通过始终显示的右下角控制柄调整大小;用户尺寸随 Layout 持久化并在 Composer 提交后转移到新 Interaction,重新排列只更新位置而不重置尺寸。
- Fork 与失效 Session 恢复统一为完整 Replay Package:保留全部历史文本及可用附件/Artifact 的逻辑位置,按真实内容哈希去重物理文件,通过原生
chat.send.attachments投递。恢复 Interaction 完成后会收敛 Branch 的新物理 Session ID,超出 Gateway 载荷上限时明确失败而不静默裁剪历史。 - 图片压缩与历史媒体处理统一迁移到后端:原图保持不可变,投递图和 WebP 缩略图按 Canvas、内容哈希和策略版本缓存;Canvas 节点只加载缩略图,打开预览或下载时才读取原图,外部 HTTP Artifact 不主动抓取。
- 更新器停服迁移新增历史图片缩略图全量回填和 60 分钟超时;由
0.2.0旧更新器触发首次启动时,HTTP 先就绪、媒体回填再于后台可重试执行,避免历史图片较多导致旧更新器健康检查超时。单文件失败可诊断地跳过,显式迁移中的系统性存储或数据库错误触发回滚。移除浏览器压缩、媒体准备资源 API 和投递副本上传链。 - 重构 Canvas 继续/Fork 发送链路:分离前端 Graph、Composer 与 Flow 投影,后端拆分应用用例、发送判定、OpenClaw 适配、Worker、投递构建和事件消费;公开 API、SQLite Schema 与 Gateway 协议保持不变。修复排队发送完成或失败后 Composer 仍长期保持发送状态的问题。
- Canvas Interaction 新增“重试”:保留原节点和原执行,从上一节点创建普通 Branch 并原样提交相同文本与附件;首节点会创建新 Root,运行中、待确认、成功和失败节点均可使用。该操作复用现有发送状态机,不建立独立 Retry 模型;接受前失败会通过普通 Composer 恢复输入和持久附件。
- “继续分支”被 OpenClaw 接受后立即同步新的 Branch 头节点,使提交前节点无需等待新任务完成即可创建并行分支。
- 代码块改为安全的纯文本展示并保留复制操作,移除语法着色、语言识别、代码下载及相关 Highlight.js/DOMPurify 运行时依赖。
安全
- 升级 ESLint 与 TypeScript-ESLint 开发工具链,使用已修复拒绝服务漏洞的
brace-expansion版本。 - Gateway Token 和设备 Token 现在只存在于服务端;浏览器 CSP
connect-src限制为同源。 - 发送接口只接受已登记且属于当前 Canvas 的附件 ID。
- 远程 Gateway 设备 Token 保持精确 read/write;本机 loopback 不读取或使用已有设备凭据。
- 只有可信代理确认的 HTTPS 才设置 Secure Cookie 与 HSTS;远程 Origin 未认证时默认拒绝启动。
升级说明
0.2.0 → 0.3.0是一次性桥接升级。升级前停止服务,并把.env、database/和artifacts/一起备份到仓库外;随后固定执行npm run update -- --version v0.3.0。0.2.0旧更新器不会创建 SQLite 快照;需要完全停服迁移时使用--no-restart,更新完成后执行npm run migrate再启动服务。- 从已经安装的
0.3.0开始,后续稳定版保留累计迁移并支持直接升级到目标版本,无需逐个安装中间版本。
v0.2.0
Added
- A visual Canvas with multiple root branches, Continue and Fork workflows, persistent layout, localized controls, and one selected OpenClaw Agent per Canvas.
- Durable, owner-scoped attachments and generated Artifacts.
- Managed-user Token authentication, session revocation, request throttling, and Canvas owner isolation.
- Native OpenClaw device pairing and configuration through supported CLI commands.
- Session reset prediction, transcript reconciliation, and canonical Branch recovery.
- Release-only updater and platform service integration for supported macOS and Linux installs.
- Product artwork for the application icon, Apple Touch Icon, and favicon.
Changed
- Established ConvoSketchpad as an independently maintained product on the
mainbranch. - Renamed runtime paths, services, launchd identifiers, and environment variables for ConvoSketchpad.
- Separated browser and Node test environments.
- Unified product copy around “A branching AI workspace for visual thinkers” and consolidated the project documentation.
- Made the application version reported to OpenClaw derive from package metadata.
- Changed the installer to use official stable Releases by default and require an explicit
--branchoption for development installs. - Updated the Hono server adapter and other direct and transitive dependencies to patched versions.
Fixed
- Prevented the first ConvoSketchpad Release notes from being generated against inherited OpenClaw Nerve tags.
- Removed legacy runtime log prefixes and stale release-version examples.
Security
- Removed an unused development CLI that retained vulnerable server dependencies.
- Added full and production dependency audits to the Release validation gate.
Upgrade notes
- Back up the project-local
database/andartifacts/directories together before upgrading an existing installation. - Version
0.2.0does not require a manual database migration.
ConvoSketchpad is derived from OpenClaw Nerve. Earlier upstream release history remains available in the OpenClaw Nerve changelog.