Repository navigation
Releases
0.3.4
中文说明见下方 ↓ 中文说明
Autopilot you can see, a History wall for finished projects with the lessons they leave, and records that read well.
New
- Autopilot (beta). One round on a line, from the slider under Status in its panel or
trace-canvas autopilot <line>: the line's agent works through every open to-do by your decision profile, logs each decision with the rule it rests on, never sends email or messages to people, pushes, publishes or changes permissions, and stops to ask about anything risky or not covered. The slider has three steps (off · asked · running): it shows running only once the agent's hook has taken the prompt, so a prompt that never reached a session does not look like work. While a round runs, a light goes round the card and the line panel, a ticker names the to-do in hand, and the track fills with racing pixels; none of it when the system asks for less motion. The round ends with a summary record. docs/autopilot.svg shows how it decides. - The History wall. A finished project is archived from its group's panel: its lines leave the workspace and it gets a frosted plaque on the History wall (its own button, between Goals and More), with its line map, outputs and wins from the wrap-ups. Replay grows the map from the first station to the last, with play, pause and drag; Restore puts the project back. The wall has its own quiet palette.
- Lessons from a finished project. On a plaque, Draw lessons asks the local claude for 3–8 lessons from the project's decisions and wrap-ups; only the ones you tick are kept, in Theatrum. A new line's first sessions are handed up to three that fit it, and Autopilot looks there, and at archived projects' decisions, before it asks you. Rules a retro already kept are not drawn again.
- Done lines fold, with a wrap-up. Marking a line done opens a wrap-up drafted from the line, saved as its last station; the line folds like a parked one, in the done colour with a check.
- Records that read well. A record's details read as Markdown (headings, lists, tables, code); Edit turns them back into text, and the box grows with it. Read opens long details, or a
.mdreport a record links, in a wide reader. Long titles wrap; titles in the line panel get two lines, and a card's rows show the full title on hover. - Go to its terminal, for more sessions. GNOME Terminal and Konsole tabs on Linux, selected over D-Bus (on X11 the window is raised with
wmctrl); Codex sessions in a terminal, found from theircodex resumeprocess. - Open on claude.ai. A session with Remote Control on gets Open on claude.ai beside Go to its terminal: the same session, also from the phone. A background session copies
claude attach, not--resume.
Changed
- Arrange lays a group out as a tree. A fork sits right of its line and later forks below, so fork links never cross.
Fixed
- A stray keystroke is not a to-do. Input typed into a session rather than asked of it (
:q,login,ok, a lone command word) is no longer logged. - Pasted prompts are recognised. A message that is one paste, or a paste with a few words of your own, counts as the Autopilot or hand-off prompt it carries.
- Long agent commands reach macOS terminals whole. Past the terminal's 1024-byte line limit, a self-deleting script holds the command.
- Goals keep their place. A redraw keeps the list where it was, and adding a to-do no longer scrolls it.
中文说明
这一版的重点:Autopilot 跑起来看得见;做完的项目进历史墙,并能提炼经验;记录更好读。
新功能
- Autopilot(beta)。 在线程面板「状态」下的滑块,或用
trace-canvas autopilot <线>,让这条线的 agent 按你的决策画像把开着的待办做一轮。- 每个决定都记下依据的规则;不发邮件、不替你发消息、不推送、不发布、不改权限;拿不准或有风险的地方停下来问你。
- 滑块分三档:关 · 已请求 · 运行中。只有 agent 的 hook 真正接到提示后才显示「运行中」,提示没送到时不会看起来像在干活。
- 运行时卡片和线程面板四周有一圈流光,跑马灯显示手上正在做的待办,滑块里有像素流动;系统设置了减少动态效果时都会关掉。
- 一轮结束时写一条总结记录。
- 历史墙。 做完的项目在分组面板里归档,它的线离开工作区,在历史墙上得到一块磨砂玻璃牌子。历史墙的入口在「目标」和「更多」之间。
- 牌子上有线路图、产出和收尾总结里的成果。
- 「回放」把线路图从第一站长到最后一站,可以播放、暂停、拖动。
- 「恢复」把项目放回工作区。
- 历史墙有一套自己的淡雅配色。
- 从做完的项目提炼经验。 在牌子上点「提炼经验」,本机的 claude 从项目的决定和收尾总结里起草 3–8 条经验。
- 只有你勾选的才写进 Theatrum。
- 新线开工时,会话开头会带上最多 3 条相关经验。
- Autopilot 拿不准时,先查这些经验和归档项目的决定,再来问你。
- 复盘已经存下的规则不会重复提炼。
- 完成的线折叠起来,并写收尾总结。 把线标为完成时,会打开一份从这条线起草的收尾总结,存为最后一站;这条线和搁置的线一样折叠起来,用完成色加一个对勾标出。
- 记录更好读。
- 详情按 Markdown 显示(标题、列表、表格、代码块),点「编辑」才变回输入框,输入框会随内容变高。
- 「放大阅读」用宽版阅读器打开长详情;记录链接的本地
.md报告,点「阅读」也在这里打开。 - 长标题自动换行;线程面板里的记录标题显示两行;卡片上的记录行悬停显示完整标题。
- 「跳到终端」支持更多会话。
- Linux 上的 GNOME Terminal 和 Konsole:通过 D-Bus 切到对应标签页,X11 下用
wmctrl把窗口提到前面。 - 在终端里跑的 Codex 会话:按它的
codex resume进程找到所在终端。
- Linux 上的 GNOME Terminal 和 Konsole:通过 D-Bus 切到对应标签页,X11 下用
- 在 claude.ai 打开。 开了 Remote Control 的会话,在「跳到终端」旁多了「在 claude.ai 打开」,进的是同一个会话,手机上也能接着用。后台会话复制的是
claude attach,不是--resume。
改动
- 「整理」按树来排一个分组。 分叉出来的线放在原线右边,之后的分叉往下排,分叉连线不再交叉。
修复
- 误敲的按键不再记成待办。
:q、login、ok这类敲进会话里的输入,或者单独一个命令词,不再被当成待办记下来。 - 能认出粘贴进来的提示。 整条消息就是一段粘贴,或者粘贴后再加了几句自己的话,都会被认出是 Autopilot 或交接提示。
- 很长的 agent 命令能完整送进 macOS 终端。 超过终端单行 1024 字节的限制时,改用一个用完自删的脚本来跑这条命令。
- 目标页不再乱跳。 页面重绘时列表停在原来的位置,添加待办后也不会滚动。
0.3.3
中文说明见下方 ↓ 中文说明
See what is wrong at a glance: trace-canvas doctor and Common questions, a dot when sync fails, commits from other machines that open, parked lines that fold away, and agents that open in a tab.
New
trace-canvas doctor, and Common questions. One command (also More → Check setup) checks Node, the hooks, MCP server and skill, the page server and whether it starts with the computer, the version, sync and other machines, and phone access, with one line on how to fix each problem; it also notices hooks that start a Node which has since been removed. docs/faq.md answers the questions people actually ran into, including how to start the page with the computer.- A commit made on another machine shows its changes here. This machine's clone of the same repository is used, in whatever folder; without one, the changes are read on the machine the commit was made on, over ssh. More → Other machines' changes turns the ssh reading off; then the panel says which computer the repository is on.
- Fold a group from the canvas. Each group's label has a switch: ▾ folds the group into a small chip, ▸ on the chip unfolds it.
- Agents open in a tab, not a pile of windows. On macOS, dispatch and Start open agents in a new iTerm2 tab when iTerm2 is installed, and in a new Terminal window otherwise;
trace-canvas terminal iterm|terminalpicks one. On Linux, konsole, gnome-terminal and xfce4-terminal open a new tab.
Changed
- Parked means folded. A parked line shows as its head only on the canvas and leaves the branch view and the timeline, like a folded group; ▸ on it makes it active again, and so does any new record on it.
- Each goal card shows its finished to-dos on its own. On the Goals page, a card's progress (✓ 14/24 ▸) opens and closes that card's done to-dos. The page-wide Show done switch is gone.
- Shortcuts and help reads cleanly. Each key sits in its own column.
Fixed
- A failed sync shows, quietly. When the last sync failed, or another machine has not updated in over a day, More and its sync item get a small dot; opening the item says what is wrong and offers Sync now.
trace-canvas syncno longer reports a sync whose commits did not reach the remote as fine. - Update works with a systemd service.
trace-canvas updaterestarts a systemd page server withsystemctlinstead of starting a second server that took the port from it;serveexits when its port is taken. - A hand-off prompt is not a new to-do. The prompts that dispatch,
handand the page write to start an agent on a line are no longer logged as another to-do that stays open after the real one is ticked.
中文说明
这一版的重点是出了问题一眼就能看到:新增 trace-canvas doctor 和常见问题,同步失败时会有小点提示,别的电脑上的提交也能打开看改动,搁置的线会自动折叠,agent 开在标签页里。
新功能
trace-canvas doctor和常见问题。 用一条命令检查设置,页面上对应「更多 → 检查设置」。- 检查的项目:Node;钩子、MCP 和 skill;页面服务在不在、是否开机自启;版本;同步和其他电脑;手机访问。
- 每个有问题的项都附一句怎么修。
- 钩子里写死的 Node 如果已经被删掉,也能查出来。
- 常见问题整理了真实遇到过的问题,包括怎么让页面开机自启。
- 别的电脑上的提交也能看改动。
- 本机有同一个仓库的克隆,就从克隆里读,放在哪个文件夹都行。
- 没有克隆,就通过 ssh 到那台电脑上读。「更多 → 其他电脑的提交改动」可以关掉这一项,关掉后面板会写明仓库在哪台电脑上。
- 在画布上折叠分组。 分组标签上有一个开关:▾ 把这一组折成一个小条,点小条上的 ▸ 展开。
- agent 开在标签页里,不再堆一堆窗口。
- macOS:分派和开始时,装了 iTerm2 就开在 iTerm2 的新标签页里,没装就开「终端」新窗口。用
trace-canvas terminal iterm或terminal可以手动选。 - Linux:konsole、gnome-terminal、xfce4-terminal 会开新标签页。
- macOS:分派和开始时,装了 iTerm2 就开在 iTerm2 的新标签页里,没装就开「终端」新窗口。用
改动
- 搁置就是折叠。 搁置的线在画布上只剩标题那一小条,分支和时间线里也不显示,和折叠的分组一样。点 ▸ 会恢复为进行中;这条线上有新记录时,也会自动恢复。
- 目标页每张卡片自己切换已完成的待办。 点卡片上的进度(✓ 14/24 ▸),只展开或收起这张卡片已完成的待办。页顶那个全局的「显示已完成」开关去掉了。
- 快捷键与用法排版更清楚。 按键单独占一栏。
修复
- 同步失败看得到,但不打扰。
- 上次同步失败,或者别的电脑超过一天没有更新时,「更多」按钮和其中的同步项上会出现一个小点。
- 点开同步项,能看到原因,还有「立即同步」按钮。
trace-canvas sync遇到提交没推上去时,不会再报告成功。
- update 和 systemd 不再冲突。 页面服务由 systemd 管理时,
trace-canvas update用systemctl重启它,不会再另起一个服务抢占端口;serve发现端口被占会直接退出。 - 交接提示不再记成待办。 分派、
hand和页面在交接时发给 agent 的那句提示,不会再被记成一条新的待办,也就不会在真正的待办勾掉后还一直开着。
Trace Canvas 0.3.2
中文说明见下方 ↓ 中文说明
Open sessions stay on the map, dispatch says what it did, a fork can become its own line, and AI tidy-up suggests instead of acting.
New
- Make a fork its own line. A forked line that turned into separate work can stand alone: Make it its own line in its panel,
trace-canvas detach <line> [--take <record>], or the MCP tooltrace_detach. The fork record goes and nothing on the line points back at the one it came from;--takemoves the request that started it over as its first record, and the old line closes the gap. - AI tidy-up suggests, you click. It reads every line with its recent records and open to-dos and suggests three things: two lines that are the same work (Merge), lines ready to wrap up (Mark done, or Park when work is left over; never a line a session is running on), and open to-dos that later records show are done (Tick off). Each suggestion quotes its evidence and has its own button and Undo; nothing is applied in bulk.
Changed
- A quieter header. AI tidy-up and the language moved into More. The language item reads "Language · 语言" in both languages, with the current one in bold, so it can be found from either.
- The page starts in your language. Until a language is chosen (on the page, in the config, or
?lang=), the page follows the browser: Chinese if the browser lists Chinese before English, otherwise English. The first visit saves it, so the records the hooks write use the same language.
Fixed
- An open terminal stays on the map. A session counts as running while its Claude Code or Codex process runs, however long it sits quiet (a lid closed overnight used to drop it after 12 hours), and it leaves as soon as the window is closed. Sessions whose process can't be found keep the 12-hour rule.
- Sessions that sat quiet are found again. The canvas also reads Claude Code's own register of running sessions, so a session open in the desktop app or with
claude --bgcounts as running even when it has been quiet for days, and dispatch prints the name to message it by. - Dispatch says plainly what happened. A Terminal window that did not open (a macOS Automation prompt denied or left unanswered) is reported, with the command to run yourself, instead of being taken for a started agent. A line nobody is on any more goes to the session that last worked on it, which may still be open. When that session is busy, dispatch prints both choices: paste the message into it when it stops, or start a new session with the command shown.
中文说明
这一版有四件事:开着的会话一直留在画布上;分派会如实说明做了什么;分叉出来的线可以独立成线;AI 梳理改成只给建议、由你来点。
新功能
- 分叉的线可以独立成线。 从别的线分出来、后来成了单独一件事的线,可以独立出来:在线的面板里点「独立成线」,或者用
trace-canvas detach <线> [--take <记录>],或者 MCP 工具trace_detach。分叉那一站会去掉,这条线上也不再有记录指回原来那条线;--take会把当初开这条线的那条请求挪过来,当作它的第一条记录,原线上空出来的位置会自动接上。 - AI 梳理只给建议,你来点。 它会读每条线最近的记录和没做完的待办,给出三类建议:两条线其实是同一件事(合并);可以收尾的线(标记完成,还有剩下的活就搁置;有会话正在跑的线不会被建议收尾);后来的记录表明已经做完的待办(勾掉)。每条建议都附上依据,各有自己的按钮和撤销,不会一次全部执行。
改动
- 页头更清爽。 AI 梳理和语言切换移进了「更多」。语言那一项两种语言都写成 "Language · 语言",当前语言加粗,不管页面现在是哪种语言都找得到。
- 页面默认用你的语言。 还没选过语言时(页面上、配置里,或者
?lang=),页面跟随浏览器:浏览器里中文排在英文前面就用中文,否则用英文。第一次打开时会把它存下来,这样钩子写的记录和页面用同一种语言。
修复
- 开着的终端一直留在画布上。 只要 Claude Code 或 Codex 的进程还在,会话就算在运行,不管安静了多久(以前合盖一夜超过 12 小时就会从画布上消失);窗口一关,它马上离开。找不到进程的会话仍按 12 小时的规则。
- 安静了很久的会话也能认出来。 画布还会读 Claude Code 自己的运行会话登记表,所以在桌面 app 里开着的、或者用
claude --bg开的会话,就算好几天没动静也算在运行;分派时会打印给它发消息用的名字。 - 分派如实说明发生了什么。 终端窗口没打开时(macOS 的自动化授权被拒绝或没人点),分派会如实报告,并给出可以自己运行的命令,不再当成 agent 已经启动。一条线上已经没人时,交给最后在这条线上干过活的会话,它可能还开着。那个会话正在忙时,分派会把两个选择都打印出来:等它停下后把消息粘贴进去,或者用给出的命令新开一个会话。
Trace Canvas 0.3.1
中文说明见下方 ↓ 中文说明
Two fixes: dispatch respects who a to-do is for, and quiet commits get their station and diff.
Fixed
- Dispatch respects the assignee. A to-do assigned to Claude Code, Codex or Gemini CLI goes only to that agent's sessions on its line (a running one first, as before), or to a new session of that agent; before, it went to whichever session had worked on the line last, and its assignee was then rewritten to that session's agent. An assignee someone set is never changed. Automated sessions whose prompt is a tag such as Codex's
<heartbeat>no longer count as the line's agent. dispatch --printchanges nothing. It used to assign the to-dos it printed and save them.- Quiet commits are recorded.
git commit -q, or a commit whose output is cut off, printed no sha, so no commit station was made and the commit had no diff on the canvas (0.3.0's own commit was one). The hook now reads HEAD instead, when the commit did not fail, HEAD was made in the last two minutes and carries the command's message, and it is not on the canvas yet.
中文说明
这一版修了两个问题:分派会尊重待办指定给了谁;安静模式的提交也能在画布上留下站点和 diff。
修复
- 分派尊重指定人。 指定给 Claude Code、Codex 或 Gemini CLI 的待办,只交给这条线上那个 agent 的会话(和以前一样,正在运行的优先),没有就新开一个那个 agent 的会话。以前它会交给最后在这条线上干过活的会话,还会把待办的指定人改成那个会话的 agent。现在别人设好的指定人永远不会被改掉。提示词是一个标签的自动会话(比如 Codex 的
<heartbeat>)不再算这条线上干活的人。 dispatch --print什么都不改。 以前它会把打印出来的待办真的指定出去并保存。- 安静的提交也会被记下。
git commit -q,或者输出被截掉的提交,不会打印提交号,所以画布上没有提交站点,也看不到 diff(0.3.0 自己那次提交就是这样)。现在 hook 会改为读取 HEAD:前提是这次提交没有失败、HEAD 是两分钟内提交的、提交说明和命令里的一致,并且它还不在画布上。
Trace Canvas 0.3.0
中文说明见下方 ↓ 中文说明
Trace Canvas now spans machines and hands work out: several machines share one canvas, to-dos are dispatched to the agent working on each line, Retro shows where the back-and-forth went, and the map itself got easier to read: filter the Branches view by kind, click a line to bring it forward, merged lines fold into the line they went into, and lines that have gone quiet say so without getting in the way.
Upgrading from 0.2.0: run trace-canvas update (or git pull), then node bin/trace-canvas.mjs setup --user once so the hooks, MCP tools and skill are refreshed. To share the canvas between machines, see the note on syncing further down.
Reading the map
- Show only some kinds (Branches). Next to the lines' legend, Show picks idea, to-do, agent output, decision or note (several at once; kept in this browser). Branches drops the other records but keeps forks and merges and draws each line over its whole time span, so lines stay whole; the matching stations get a halo in the line's colour. The canvas and the timeline dim the rest the way search does.
- A legend that fits. The lines' chips sit in one row that scrolls sideways; All N wraps them and Collapse folds them back (remembered). Show stays on the same row. On a phone the kinds are icons (named on long-press and for screen readers), the chips are taller to tap, and the row still fits.
- Click a line (Branches). Clicking a line, or its chip, brings it forward: it thickens, the other lines, stations, links and live tips fade, the other rows dim, and the line's panel opens; clicking it again lets go. Hovering a line thickens it and names it. Each line's click area is no wider than the gap to its neighbour, stations stay on top and open their own record, and on a phone a tap between stations picks the nearest line within a fingertip (12 px).
- Columns are reused, like
git log --graph. A line holds a column only from its first record to its last (plus its fork and merge curves and, for an open line, the stub above it); after that a later line takes the column. A fork takes the free column nearest the line it came from, and a merged line the one nearest its target, so the curves between them stay short. Columns are wider (28 px on a computer) for a calmer graph. On real data 23 lines needed 15 columns instead of 23. - Merged lines fold into their target. A merged line no longer has a card or a legend chip of its own: the target's card says N merged in, its panel links each merged line, and Branches still draws the merged history. Nothing is moved or deleted; More → Show merged threads lays them out again.
- Merge, not combine. The canvas's merge bar offers only Merge (it keeps every line and can be undone). Combine, which deletes the source lines, stays on the command line (
--combine) and intrace_merge, and agents are told to use it only when you ask for it by name. - Lines that have gone quiet. A line still for three times its usual gap between active days (at least three days), with no session on it, puts a small dot on Goals and a chip under Gone quiet at the top of the list; nothing pops up. A chip opens one sentence and three answers: with no open to-dos it asks whether the line is finished (Done first), with open to-dos whether to park it (Parked first); Still on it counts as activity, so it asks again only after another quiet spell. It never changes a line by itself.
Working across agents and machines
- Dispatch:
/trace-canvas dispatch(ortrace-canvas dispatch [line…]) hands each line's new to-dos to the agent working on that line (the session that last did work there; one that only ended there, only logged to-dos for it from another line, or was bound to another line since does not count; a session on another line that logged a result there counts only when the line's own sessions have not worked there) and wakes it: a running Claude Code session gets a message from the agent you asked, a stopped session is resumed with its to-dos, and a line nobody works on gets a new session, each in a new Terminal window on macOS. New means nobody has it and that agent does not know it yet: you logged it, or another session did; a to-do named instead of a line goes out on its own. A record an agent logs now keeps the session it was logged in (Logged in in its panel,fromintrace_read_thread), so the conversation behind a to-do can be found again. - Retro: Retro in a line's panel (also
trace-canvas retroand/trace-canvas retro) ranks the line's work by back-and-forth with the agents: rounds, time, tokens, corrections and sessions per piece of work, read from this machine's Claude Code and Codex transcripts and grouped by your localclaudeorcodex. For the worst ones it names what was missing, the sentence that made it clear and a rule; a rule is written only when you press Write, to the project's CLAUDE.md and AGENTS.md, the line, or long-term memory. - Fewer tokens:
trace_tasksanswers for the session's own line unless asked for another (thread) or all (all: true), open to-dos leave out empty fields, and tool results are sent as compact JSON.trace-canvas tokensshows how much of recent Claude Code sessions' tokens went to Trace Canvas (about 1%). - Open the chat. From the live panel, the Agent view (↗) and the line's session list: a session the Claude desktop app runs opens its chat there (macOS, Linux and Windows), a Codex session opens in the Codex app, and a session running in Terminal or iTerm2 (macOS) brings its tab to the front (Go to its terminal).
- The
trace-canvascommand:setup --userputs a small script in~/.local/binor~/binwhen one is on the PATH (it runs the CLI with the node that ran setup, as the hooks do), or prints the alias line with the clone's own path.--helpand-hprint the help wherever they are. - Across machines: the live bar can show other machines' running sessions (More → Other machines' sessions, off by default; read over ssh every 15 s while a page is open), marked with their machine and resumed over ssh; dispatch wakes a stopped session on another machine over ssh.
setupcan also put the command next to the user's own node, for machines without~/.local/binon the PATH. - Another machine's session resumes over ssh in the login shell there, which has
claudeandcodexon its PATH; the README says which macOS switch lets ssh sessions into Desktop and Documents. - History from before: a repository's new line takes in the repository's history in the background: the default branch's commits (first parent, the newest 500, older ones as one record where the line starts) and, one record each, the Claude Code and Codex sessions that ran there (Codex's own reviewer sessions and one-prompt sessions that changed nothing are left out). Commits already on the canvas are recognised by sha, or by subject and author time after a rebase; ids are the same on every machine.
trace-canvas historylists and--allimports it for the lines from before;--offleaves a line out. - Started over ssh: the CLI adds the user's own bin folders (~/.local/bin and the like) to a bare PATH, so a page server started over ssh or as a service still finds claude and codex for Retro and AI tidy-up; without either, Retro says so instead of "spawn claude ENOENT".
- Updating:
trace-canvas updatefast-forwards the clone, refreshes copied skill files and restarts the page server on its port; the page checks for a newer version at start and twice a day and offers it under More (one click on the computer itself; on the phone it names the command). - Machines stay in step: the page server syncs in the background every 2 minutes (once the machine has synced by hand), not only when a session ends, so a long session's records reach the other machine within minutes.
- Retro picks up where it stopped: by default it reads the messages since the line's last retro, up to now; Retro opens a form with that range to narrow it or take everything (
--since,--until,--allon the command line), and the note keeps the range. - Retro, wherever the conversations are: a line without sessions of its own uses the sessions that logged on it from their own line, and a session on another machine is read there over ssh (
trace-canvas prompts) and analysed with the rest. When nothing can be read, it says why instead of "No conversations". - Dispatch across machines: a running session comes first (this machine's before another's), then this machine's latest, then the latest anywhere. A to-do can name the machine to do it on (
onintrace_log,log --on, ordispatch --on <machine>): it goes to that machine's latest session on the line, or a new session started there over ssh. - Which machine, in Branches and the line panel: in Branches each station from another machine has its name next to the agent; a line's panel marks each machine's latest session when the line was worked on from more than one.
- One repository, several lines:
trace-canvas folder <line> <folder>gives a folder of a repository to a line; sessions working in it go there, the rest stay on the repository's line. - History, filled in:
trace-canvas history <line> --repo <folder>puts a line made by hand on a repository (it takes the repository's name as its key, an old key stays as an alias) and takes in its history. Sessions from the repository's worktrees (.claude/worktrees) and subfolders come in too; a folder line without git brings the sessions that ran in that folder. - Terminals on Linux: Open in Terminal, ▶ Start and dispatch open a new terminal window on a Linux desktop too (
$TERMINAL, else x-terminal-emulator, Konsole, GNOME Terminal, kitty and the like), on the desktop's display even when the server was started over ssh. Going to an existing tab s...
Trace Canvas 0.2.0
Trace Canvas now follows your agents while they work, not only after: live sessions, several agents on one machine, goals and to-dos they share with you, and sessions that stay on their line.
Upgrading from 0.1.0: run node bin/trace-canvas.mjs setup --user again (add --agents codex for Codex), then start new sessions. Setup changes two hooks to run synchronously and adds the new MCP tools and the skill's new actions.
Added
- One-step install. The README opens with a prompt you paste into Claude Code to install it, and the first thing to type afterwards:
/trace-canvas put all my sessions on the canvas(the skill's newallaction). - Live sessions. Running sessions show on the canvas with their status (working, needs you, idle) and what they are doing; put one on a line from the page, with
trace-canvas bindortrace_bind.trace_liveandtrace-canvas livelist them. - Agent view. A live tree of who started whom: sessions, the sessions they started and their subagents, with the one that needs you on top.
- Who did what. Stations you wrote are drawn dark with a person mark, agents' stations in the line's colour with a star; running sessions sit as live tips on top of their lines in the Branches view.
- Goals and to-dos. Each line has a goal and a to-do list that you and your agents share (
trace_tasks,trace_task_done,trace-canvas tasks,trace-canvas done). New goals and next steps you mention become to-dos as you say them: with every message the hook tells the agent its line and open to-dos, and the same open to-do twice stays one. - Several agents on one machine. Codex and Gemini CLI get the same hooks and MCP tools (
setup --user --agents codex,gemini). A to-do can be assigned to Claude Code, Codex or Gemini CLI and handed over withtrace-canvas handor the Hand to it button, which copies a command that starts that agent on the line. A new session is told its line, goal, its own to-dos and where things are on this machine. Checked against real Codex 0.164 sessions. - Forking from agents.
trace_forkandtrace-canvas forkbranch a new line off a record or a line's tip. - Sessions stay on their line. A session's line is kept in the canvas data, so a session that ends and is resumed under the same id goes on where it was. Each thread panel lists Sessions on this line with a button that copies the command that resumes each;
trace-canvas resume <thread>andtrace_read_threadreturn the same list. - Videos and GIFs. A tutorial, a promo, an Agents view and a Goals video in English and Chinese, a 20-second short in a vertical format,
make.mjs replayto replay one of your own sessions from your canvas, and silent GIFs for each feature.
Changed
- A line's goal has its own field; the note keeps paths and "combined from" lines, which no longer show as the goal.
- MCP tools act on the session that calls them (
CLAUDE_CODE_SESSION_ID) instead of the newest transcript in the folder. - Combining lines hands the folded lines' repository key and ids to the line you keep, so sessions in that folder land on it.
- The live bar names MCP tools by their short name (
navigate, notmcp__Claude_Browser__navigate).
Fixed
- A resumed session fell back to its folder's line and logged its first instruction again.
- Codex hooks could not write
~/.trace-canvasfrom inside Codex's sandbox; setup now adds it towritable_roots. - With two sessions in one folder, capture and bind could pick the other session.
- The goals list stopped refreshing once a checkbox or menu in it had focus.
Trace Canvas 0.1.0
First public release of Trace Canvas, a transit map of parallel work with AI agents.
What it does
- Threads (lines) and records (stations) in three views: a canvas, a git-style branch graph and a timeline. English and Chinese interface.
- Claude Code integration: hooks that log the key moments of every session, an MCP server with eight tools (
trace_capture_session,trace_list_threads,trace_read_thread,trace_merge, …) and the/trace-canvasskill.node bin/trace-canvas.mjs setup --userinstalls all three. - Agents can read the map through MCP, so a new session catches up on all your projects without rereading old chats.
- No dependencies: Node.js 18.17 or newer. Data stays in
~/.trace-canvas/data.jsonon your computer.
Videos
trace-canvas-tutorial.en.mp4: English, about 2 minutes.trace-canvas-tutorial.zh.mp4: Chinese, about 2 minutes.trace-canvas-promo.en.mp4andtrace-canvas-promo.zh.mp4: under a minute each, Trace Canvas as the entry point for agents.
All four use made-up example data. They are built by docs/video/make.mjs (headless Chrome, local neural voices and Remotion).