Skip to content

atrium 0.40.0

Choose a tag to compare

@JSBtechnologies JSBtechnologies released this 19 Oct 00:18
· 21 commits to main since this release
v0.40.0
e4483d8

Added

  • Captions. With the mod, every pane reports what it is doing in a few
    words: from each tool call, free (running cargo test, editing filter.rs), and from the model's own streamed text by one small haiku
    call at most every twenty seconds, when a fleet says captions: true.
    The overview shows the caption in place of the transcript's last action; an
    unfocused tile draws it dim after the title; the turn's end clears it.
  • The collision radar. The mod reports the real path of every edit that
    ran (report touched=<path>…); the broker keys it by the pane's worktree,
    so two worktrees' copies of one file are one file. The first time two live
    panes edit it, both wear ⚡ (tile badge and overview row), the overview
    lists the file under the agents, and one collision decision_needed goes
    to the nearest pane above both on the atrium topic. atrium ctl who <path> (and atrium_who) says which panes edited a file, with when and
    whether each is live.
  • Ask without interrupting. atrium ctl ask <target> [--timeout S] <question> queues a question that rides the target's inbox; its mod answers
    from a fork of the pane's own context ($.model.fork: no tools, the turn
    untouched, the transcript never leaving the pane) and reports the reply,
    which the waiting ask prints and atrium ctl asked <target> <id> reads
    again. Ctrl+A ? on a tile asks the focused pane what it is doing, what it
    needs and what blocks it, and opens the reply as an overlay; atrium_ask
    does the same from a pane. Subtree-scoped like send, capped, scrubbed and
    never in the audit log.
  • Fleet key captions, whoami carries it; mod version 0.2.0, with the
    ask capability.

Changed

  • Captions carry less, and the model-made one is opt-in. The caption a
    tool call makes named the whole first line of a Bash command — flags,
    KEY=value assignments, quoted text, paths — in ctl status, the overview
    and the tile title, for the whole fleet to read. It now names the program
    and its subcommand only (running cargo test, running git commit,
    running dev.py check): no flags, assignments, quotes, operators or URLs,
    no path but the program's own name, three words at most. And the six-word
    caption from the model's own streamed text — a second model call the text
    leaves the pane for — is now off unless the fleet says captions: true
    (it was on unless captions: false); the tool caption is free and always
    on.
  • ctl who is subtree-scoped. It was classed read-only like list, so
    any caller, token or none, could list every pane's edited paths. It now
    needs a pane token, and a caller sees only the panes in its own tree, as
    status and ask do; the operator sees every pane.

Fixed

  • An ask's slot comes back. A pane holds at most eight unanswered
    questions, but an answered ask counted as unanswered again once its reply
    expired (ten minutes), and a question the mod had taken but never answered
    stayed pending across a respawn: a pane asked eight times over a session
    refused every later ask for good. An expired reply now takes its ask with
    it (asked says so instead of waiting forever), and a pane's exit or
    respawn drops its in-flight questions along with the queued ones.
  • Collision keys compare paths as the filesystem does. A touch was keyed
    relative to the pane's worktree or its cwd, so two panes in unrelated
    repos both editing README.md wore ⚡ and raised a collision; and the
    prefix check was spelled-exact, so a mod's C:/wt/a/src/x.rs under a
    worktree recorded as C:\wt\a (or a \\?\ path, or another drive-letter
    case) kept its absolute key and two worktrees never collided on Windows. A
    pane with no worktree now keys by the absolute path alone, and every path is
    compared in one spelling: \ as /, \\?\ stripped, and a path Windows
    wrote lowercased; ctl who finds a Windows file by any spelling. A report
    whose ask reply is refused still records its other fields and touches.
  • Manual splits tile into a grid. Ctrl+A " / % halved only the focused
    pane, so every pane added by hand with one key joined a single 1×N strip
    (five " presses: five full-width slivers), while -n 4 and ctl spawn --here laid the same panes out 2×2. A split now re-tiles the whole window
    into the balanced near-square grid --here already uses, with the new pane
    where the key pointed: % in the next slot of the focused pane's line,
    " in its slot of the next line (not appended bottom-right, as the first
    cut of this fix and --here did). The window keeps the orientation the
    first key gave it (" columns, % rows), so a later key reflows the grid
    instead of transposing it; ctl spawn --here puts the worker beside its
    caller the same way. Two panes keep the plain split the key names, three
    make a line, four a 2×2, six a 2×3. Focus still lands on the new pane.
  • Install docs name the linker prerequisite. cargo install atrium on a
    machine with a Rust toolchain but no C toolchain ends in linker `cc` not found (link.exe / gcc on Windows) after every crate compiled; the
    README's install section now says what to install per platform, why the
    cc spelling on a Windows machine means WSL or a stray linker override, and
    that a build from a clone needs the sibling nativelite crates beside it.