Repository navigation
v1.9.0
v1.9.0 — Subprocesses, tabs that sleep, and a file tree that keeps up
Agents now run their dev servers, watchers and builds through Control Code, where you can see them, read their logs and stop them. Tabs you aren't looking at stop using resources. The file tree updates by itself and no longer freezes the window. Codex and Gemini get Control Code's tools too, and touch emulation in the browser finally works on Linux.
⚙️ Subprocesses
A new Subprocesses section in the left rail lists the long-running commands agents started: dev servers, watchers, builds.
| You see | What it means |
|---|---|
| Owner | The agent that started it, in its tab's color, a fleet task, or you |
| CPU and memory | Its whole process tree, refreshed while the section is open |
| Live terminal | Its output, and you can type into it |
| State | Running, stopped, or exited with its code |
- Stop sends Ctrl-C first and kills the whole tree if it doesn't go. Force quit kills right away. Restart runs it again with the same command.
- Start one yourself with New.
- By default the section shows the current workspace's subprocesses; Show all groups every workspace's.
- The rail button and the status bar show how many are running.
For agents: new process_* tools in Control Code's MCP, and ccode proc in the CLI.
process_startruns a command and can wait until its output says it's ready.process_outputreturns only what's new since the agent last read, the last lines, a grep, or just the errors with context. An agent can tell how the server is doing without filling its context.- Reading logs runs without asking; starting, typing into and stopping a subprocess asks you first.
Subprocesses end when the app closes, like terminals.
🔋 Tabs you aren't looking at stop consuming
- A hidden terminal stops drawing. It still reads its output and answers the agent, so nothing stalls; it repaints when you come back.
- After 10 minutes hidden, a terminal hibernates. Its terminal is freed from memory, the agent keeps working, and coming back rebuilds it with everything it printed. Change the time, or turn it off, in Settings → Terminal.
- A hidden browser tab stops painting and polling. The page keeps its state and doesn't reload.
- Terminal output reaches the window in fewer, larger batches. Accents, emoji and box-drawing characters no longer break when they land on a chunk boundary.
- The autosave only copies terminals that printed something new, and skips the database when nothing changed.
- Changes checks git less often while the window is in the background.
🗂️ File tree
- It updates by itself. A file an agent creates, deletes or renames shows up almost immediately. A
git addor a commit updates the marks. - It no longer freezes the window. Reading folders, git status and file operations run off the main thread, and reading the repo takes 2 git processes instead of 5.
- Coming back from Search or Changes leaves the tree as it was.
- Large folders scroll smoothly: only the visible rows are drawn.
- No more "no repo" flashes. While an agent was working, a workspace kept flipping between its branch and "no repo" for a moment. Refreshing a repo now keeps what it knew until the new answer arrives, and a slow
gitis no longer read as "not a repository".
📑 Tabs
- Files open in a preview tab, like VS Code. A single click in the tree, a search result, Changes or a commit opens it in an italic tab that the next file replaces in place. Double-click, or edit the file, to keep it open. Your tab bar no longer fills up with everything you glanced at.
- The mouse wheel scrolls the tab bar sideways, no Shift needed.
- The workspaces panel no longer says every tab has been open for "20712d".
🔌 Codex and Gemini get Control Code's tools
Codex and Gemini CLI tabs now receive Control Code's MCP: the project browser, subprocesses, your git account, the fleet and asking you a question. Each receives it in its own format, and your own configuration is left untouched. Kimi Code can't receive an MCP server per launch, so it keeps using the CLI.
🧩 Skills
- Install a loose
.mdfile.create-invoice.mdbecomes the skillcreate-invoice, in its own folder; nothing next to the file is copied. - Install a folder whose markdown isn't called
SKILL.md. The folder names the skill, and its support files come with it. - Local repositories recognise both forms.
- The Control Code skill now documents every MCP tool and every
ccodecommand. It is linked automatically in every agent so they know how to use the app. Delete it from Skills if you don't want it.
🌐 Touch emulation
Touch mode in the browser did nothing on Linux: WebKitGTK rejects the standard way of creating a touch, so no touch event ever reached the page.
- Touches are now built the way each engine accepts them, both yours and the agents'.
- Dragging with the mouse scrolls the page or the container under it, like a finger, unless the page handles the gesture itself.
- While it's on, the cursor is a circle and dragging doesn't select text.
🔧 Fixes
- Background fleet tasks are killed when the app closes. On Linux and macOS they kept running.
- On macOS, closing a tab finishes off processes that ignore the polite signal.
- Process groups no longer collide on Linux, so every tab's processes stay contained.