Skip to content

Releases: YuvalSarel1/cones

cones 0.4.5

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 24 Oct 17:03

Dashboard

  • ctrl+e unfolds a session's details under its row; left no longer does, so a stray press stays harmless. On a job, ctrl+e still edits it.
  • The title column fits the rows listed now, so short titles no longer end in an ellipsis beside empty space after a long one leaves.
  • Control shortcuts work on a Hebrew keyboard layout, read as the Latin keys under them.

Sessions

  • Removing a Codex thread that runs in a cones terminal forgets it, from the dashboard and from cones rm. Before, its row came back after a restart and stayed hidden after the thread was resumed.
  • A session launched by another agent and listed beneath it no longer leaves its own folder behind as an empty row once it ends.

cones 0.4.4

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 22 Oct 06:57

Session list

  • A session an agent starts with cones launch is listed beneath that agent, marked ↳ ⚙, even when it works in another folder. A launch in another folder shows that folder, dimmed, after its title (· in reports). Set launched_under_parent: false to keep each launch in its own folder.
  • The unread mark on a fork or launch row sits in its indentation, so the row stays aligned under its parent.

Messages between agents

  • A note from a Codex thread names that thread. It used to arrive as "another agent, not the owner".
  • A Claude session receiving a note shows the real sender, such as "Message from @codex-01a1621a", in place of a generic Claude heading.

State

  • Forks and launches share STATE_DIR/relations.json. An existing forks.json is read until cones first writes the new file.

cones 0.4.3

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 20 Oct 09:31

Composer

  • A backslash before enter inserts a line break instead of starting the prompt, as in Claude Code. Useful where the terminal never reports shift+enter.

cones 0.4.2

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 19 Oct 15:20

cones skill

  • An agent asked about "your forked agent" now looks in cones: the skill triggers on forks, says native agent lists such as ListAgents show only Claude peers, and gives the commands that find a fork on any harness, finished ones included, and print what the owner asked it.
  • A self-contained task the owner reviews is launched and left alone: no report request and no cones wait. Waiting and report-back are for work the launcher integrates.

cones 0.4.1

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 19 Oct 10:26

Session list

  • Runs that are still going, still supervised or not yet read sit in their folder among the sessions, titled ◆ JOB, and + add folder ends the list. The jobs view keeps the full run table.
  • ctrl+x on a run, and cones rm RUN, remove its session the way a session row is removed, so claude agents drops it too.
  • A Claude turn that ends with a background shell still running shows as its own shell state: a blue ❯ row, a shell count in the summary and a group between working and idle. It is marked unread like any finished turn.
  • The header summary counts only agents.

Titles

  • Claude titles a session from its first message, then names a background job a second time and writes that short lowercase label over the title. cones now keeps the generated title. The new original_titles setting, on by default, turns this off. A name given with /rename or cones rename shows either way.

History search

  • Meaning search embeds the query as typed and keeps matches down to 0.4 similarity, and word search matches passages holding two of the query's words, so far more right answers show up.
  • search --when recent|month|old ranks hits from that window higher without dropping others.
  • show --at OFFSET opens the messages around a hit. MCP takes the same parameters.

Codex

  • A plain codex connected to a daemon no longer gets a row of its own; it stays visible until its thread has a rollout.
  • A running Codex client costs one ps for the dashboard's lifetime instead of one per refresh.

Fixes

  • Quitting in Ghostty 1.3 leaves the shell prompt at column 0 instead of a % partial-line mark.

cones 0.4.0

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 18 Oct 07:13

cones is now a control plane. The dashboard, your agents and scheduled jobs all reach every session on the Mac through the same verbs, and each verb acts through the harness's own commands. Which verb reaches which harness is in the capability matrix.

Control commands

Command What it does
cones resume ID Reopen a conversation from history in a cones terminal
cones fork ID Fork a conversation and record its parent
cones send ID TEXT Deliver one note to a live session in any folder
cones wait ID... Block until a named session's turn ends, it asks for input or it stops
cones rename ID NAME Rename a session the way its harness's own rename does
cones btw ID QUESTION Ask a side question in a read-only fork that keeps nothing
cones compact ID Compact a session through its harness's own compaction
cones stop ID / cones rm ID Stop a session, or stop it and take it off the harness's list
  • cones mcp serves every one of them as a tool beside search and show, so an agent that speaks MCP gets the same control.
  • rm stops first and removes nothing when the stop fails. A harness with no list of its own is only stopped, and the output says so.
  • ls --json shows a job's session as a session row carrying its run.

Harnesses

  • Jobs can run on Codex as daemon threads. They need codex_full_access: true, since Codex runs unattended only with the flag that also lifts its sandbox.
  • Copilot and Cursor Agent conversations resume by their native id.
  • Codex forks work from the CLI as well as the dashboard. The daemon makes the fork and names it.
  • Codex resume and fork from history no longer exit at once when skip-permissions is on, which is the default. A remote Codex client refuses the skip flag, so a resumed thread keeps the settings it was started with, and a fork gets the setting through the daemon.

Dashboard

  • A session started outside the dashboard no longer takes the cursor.

Install

brew tap YuvalSarel1/cones https://github.com/YuvalSarel1/cones
brew trust YuvalSarel1/cones
brew install cones

or cargo install --git https://github.com/YuvalSarel1/cones --tag v0.4.0.

v0.3.21

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 16 Oct 19:30

Launching workers

  • cones launch --wait keeps running after it prints the id, until the worker's turn ends, it asks for input, fails, stops or leaves, then prints the id and state. Run it as a background task and its exit wakes the launcher. --timeout exits 2 and leaves the session running.
  • cones comms send reaches any live session by exact id, so a worker can report straight into its launcher's conversation. A note from a session cones can place tells the recipient to answer the same way.
  • The cones skill now covers running your own workers, including how they report back. The separate dispatch skill is gone.
  • A first launch into a new folder no longer stops at Claude's or Codex's trust question: cones records the folder as trusted the way accepting the dialog does. If it can't, the pane still asks.

Dashboard

  • Stop, delete, viewer and install failures show on the composer rule instead of the dim hint row, so a refusal like claude rm keeping a worktree with unpushed commits is seen.
  • A wheel report split across two reads no longer leaks into a pane or the input when the dashboard is busy.

Cost

  • Claude replies that Claude Code 2.1.278 wrote with zeroed counters and the real counts under usage.iterations are priced, so those sessions read complete (#5).

Install

brew tap YuvalSarel1/cones https://github.com/YuvalSarel1/cones
brew trust YuvalSarel1/cones
brew install cones

or cargo install --git https://github.com/YuvalSarel1/cones --tag v0.3.21.

v0.3.20

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 16 Oct 11:36

Dashboard

  • File paths in a pane open. Claude Code prints paths as plain text; a word that names an existing file or folder is now drawn as a link, :line suffix included, so cmd+click (or your terminal's link click) opens it.
  • cones reports the selected row's folder to the terminal (OSC 7), so a terminal that opens relative paths from its working directory, like Ghostty, opens them from the session's folder. Ghostty needs shift added to the link click while cones reads the mouse.
  • Unfolded session details are grouped under headings (agent, usage, time, process, source, reply), line up across groups and pick the width that prints the fewest lines.
  • Any movement key folds the details first; ← still toggles them.
  • The list moves one row per wheel report.

CLI

  • cones rename ID NAME does what the dashboard's ctrl+n does, on every harness that keeps a name: Claude, Codex, pi and OpenCode. Terminal-only harnesses are refused. ctrl+n now also renames pi and OpenCode sessions.
  • cones launch --name names Codex and OpenCode sessions too.
  • A name set on a running Claude session sticks instead of being replaced by the agent name on the next turn.

Install

brew tap YuvalSarel1/cones https://github.com/YuvalSarel1/cones
brew trust YuvalSarel1/cones
brew install cones

or cargo install --git https://github.com/YuvalSarel1/cones --tag v0.3.20.

v0.3.19

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 15 Oct 11:41

Dashboard

  • ← on a session row, with an empty composer, unfolds every column value plus its id, pid, start time, transcript and fork parent under the row. ← again folds them.
  • Links in a pane open. Claude Code prints URLs and file paths as OSC 8 links; cones now passes them to your terminal, so cmd+click (or your terminal's link click) opens them.
  • A trackpad flick no longer lags. A flood of wheel reports is handled in a few frames instead of one frame per report.
  • A wheel report split across reads no longer fills the new-agent input with [<65;x;yM and flickers the list footer.

CLI

  • cones rm <target> does what the dashboard's confirmed ctrl+x does. The target is a job name, an open folder's path, or a run or session id. Running runs and jobs are stopped and hidden, other sessions get the verified signal, cones terminals are stopped, and folders are closed.

Install

brew tap YuvalSarel1/cones https://github.com/YuvalSarel1/cones
brew trust YuvalSarel1/cones
brew install cones

or cargo install --git https://github.com/YuvalSarel1/cones --tag v0.3.19.

v0.3.18

Choose a tag to compare

@YuvalSarel1 YuvalSarel1 released this 14 Oct 16:55

Cost

  • Claude replies served by the Anthropic API are priced again. Claude Code writes its prompt cache with a one-hour lifetime, and cones left those replies unpriced (-, unsupported_cache_retention) because models.dev has no rate for one-hour cache writes. They are now charged at twice the model's input rate, Anthropic's published price. pi replies that report cacheWrite1h are priced the same way.

Tests

  • The split mouse wheel report test no longer fails on a loaded CI runner.

Install

brew tap YuvalSarel1/cones https://github.com/YuvalSarel1/cones
brew trust YuvalSarel1/cones
brew install cones

or cargo install --git https://github.com/YuvalSarel1/cones --tag v0.3.18.