Skip to content

Releases: lcsmas/orchestra

v0.5.187

Choose a tag to compare

@lcsmas lcsmas released this 31 Jul 13:05

What's new — the Orca-parity batch

Seven features adopted from studying Orca (the closest competitor), plus a chrome refresh in its visual language. Every feature was verified by an independent verifier agent before merging.

See what every agent is doing

  • Status notes — agents narrate themselves: orchestra status "<one-liner>" renders a muted line under the sidebar row and a note column in orchestra peers. --clear is the only CLI clear path (whitespace is rejected, deliberately).
  • Needs-You inbox — a header tray with a badge counting workspaces that need you (waiting/error + bookmarks); the popover triages them and clicking a row jumps + clears.
  • Jump PaletteCtrl+J fuzzy-jumps across workspaces (recents-first, branch + repo matching). Ctrl+Shift+J works from inside a terminal.
  • CI badge — failing GitHub Actions show a red CI ✗ pill (repo-wide REST polling, rate-limit-safe by construction); clicking hands the failing run's logs to that workspace's agent to fix.

Review agent work without leaving the app

  • Diff review pane — a new Diff tab (lightweight DOM, no Monaco): unified diffs in two scopes (uncommitted / vs base, three-dot), per-hunk selective staging (visual git add -p, proven against git-on-disk state), line-pinned annotations batched into one "Send to agent" revision prompt, and correct Unstage gating on the actually-staged subset.

Point at UI, get context

  • Design Mode — a crosshair in the browser pane: hover highlights elements, click captures outer HTML + a 12-property computed-style subset + a cropped screenshot, bundled straight into the agent composer. Escape cancels. Selector paths drop hashed framework classes.

Reclaim memory from idle agents

  • Session hibernation — idle, unfocused, done agents get their process stopped after 30 min (env-tunable: ORCHESTRA_HIBERNATE_AFTER_MS, ORCHESTRA_HIBERNATE_SWEEP_MS); a quiet zZ chip marks them and they restore on click. Waiting/error/active/sandbox workspaces are never touched; the killed pid is logged.

Chrome

  • Orca-inspired polish — a deeper, neutral near-black surface ladder and the signature inverted active-tab pill (light fill, dark ink). Verified boot-to-paint with the pill inversion measured, not eyeballed.

Fixes along the way

  • Two literal-NUL bugs fixed (one made a source file binary-to-git and un-reviewable, one made it binary-to-grep and silently truncated searches).
  • The CLI now fails loudly instead of printing a false Delivered (ok). on unknown message targets.
  • The events-spool test flake was root-caused (flock timeout under multi-agent machine load — not a product bug) and documented.

Full Changelog: v0.5.186...v0.5.187

v0.5.186

Choose a tag to compare

@lcsmas lcsmas released this 31 Jul 12:29

What's new

  • Disabled browser nav buttons no longer light up on hover. Back/Forward
    showed a hover highlight even when there was nowhere to go, making a dead
    control look clickable. They now stay inert; enabled buttons still highlight
    as before.

Full Changelog: v0.5.185...v0.5.186

v0.5.185

Choose a tag to compare

@lcsmas lcsmas released this 31 Jul 12:17

What's new

  • Bigger, clearer browser pane toolbar. The embedded browser's back/forward/reload
    buttons were noticeably smaller than the rest of the app's chrome. They're now 34×34
    with 18px icons, and the URL bar matches at 34px tall with slightly larger text.
  • Fixed squashed nav icons. The toolbar glyphs were being horizontally compressed
    (rendering 10px wide instead of their intended size) because they inherited flex
    shrinking from the button. They now keep their proper square shape.

Full Changelog: v0.5.184...v0.5.185

v0.5.184

Choose a tag to compare

@lcsmas lcsmas released this 31 Jul 11:59

What's new

  • orchestra linear add --spawn now nests the new workspace under the calling agent.
    It previously hardcoded detached: true, so a ticket spawned by an agent always
    landed top-level in the sidebar with no way to override it — even from a promoted
    orchestrator, where nesting is the entire point. The caller's workspace id was
    already being sent and used to inherit the repo, then discarded before the spawn.
    It's now threaded through, matching orchestra spawn's behaviour.

    The Tickets sidebar's "spawn from ticket" button is deliberately unchanged and
    still creates a top-level workspace: a user clicked it, so there is no calling
    agent to nest under.

Full Changelog: v0.5.183...v0.5.184

v0.5.183

Choose a tag to compare

@lcsmas lcsmas released this 30 Jul 16:30

What's new

  • Fixed: the skills dropdown never appeared. Typing / in the agent
    composer silently did nothing. The skills were being found and the popover
    was being rendered correctly — a CSS rule on the composer card was clipping
    it out of existence and anchoring it to the wrong element. / now shows
    your project and user skills again, plus the built-in commands.

  • Skills and bash prefixes are now highlighted as you type, matching the
    Claude Code desktop app: a leading /skill renders in blue and a leading
    ! bash prefix in purple, so you can see at a glance how your message will
    be dispatched. Ordinary text — and things that only look like commands, such
    as /etc/hosts or and/or — stay unstyled.

Full Changelog: v0.5.182...v0.5.183

v0.5.182

Choose a tag to compare

@lcsmas lcsmas released this 27 Jul 16:47

What's new

  • Spawned agents now default to Opus 5. The orchestrator brief and the
    orchestra-spawn skill previously told agents to "leave implementation on a
    cheaper tier" to conserve swarm tokens, so spawning agents routinely pinned
    workers to Sonnet on their own initiative. Both now direct spawns to pass
    --model opus unless you explicitly ask for a cheaper tier — the
    cost/capability trade is yours to make, not the spawning agent's.

    (No code ever hardcoded Sonnet: an unset model inherits your login default.
    It was the guidance that steered agents to override it.)

Full Changelog: v0.5.181...v0.5.182

v0.5.181

Choose a tag to compare

@lcsmas lcsmas released this 27 Jul 14:51

What's new

Fixed: archiving the workspace you were viewing turned the app black.

The whole window went black and only restarting Orchestra brought it back. The
diagnostic logging added in 0.5.179 finally captured the cause: React error
#185 — "Maximum update depth exceeded"
, an infinite render loop in the
structured agent view. Not a graphics/GPU fault, which is what it looked like.

The transcript measures each row after it renders to size its virtualized list.
That measurement re-triggers a render, which terminates only once heights stop
changing — but a pane resize can make a row's height oscillate between two
values, so it never settles and the loop runs until React gives up and the UI
dies.

Archiving the active workspace is the reliable trigger: it switches to a
freshly-mounted transcript whose rows all measure for the first time, exactly
while the pane is being resized by the sidebar row disappearing. (Archiving a
background workspace never did it — the view doesn't change.)

The measure loop is now bounded: after a dozen back-to-back passes without a
frame being painted, it falls back to the coalesced path that yields to the
browser and cannot recurse. Normal streaming is unaffected, and if the guard
ever trips it now says so in the log instead of failing silently.

Full Changelog: v0.5.180...v0.5.181

v0.5.180

Choose a tag to compare

@lcsmas lcsmas released this 27 Jul 14:48

What's new

The send button no longer looks broken when the composer is empty. The
disabled state applied both opacity: 0.3 and a saturate(0.4) filter —
carried over from the old wide "Send" pill, which could afford to grey out hard
because it had a text label. On the new bare icon circle the arrow is the only
thing there, so the double treatment washed it into grey mush that read as a
dead control rather than one waiting for input.

It now dims to opacity: 0.45 with no desaturation, so the empty state keeps
the accent blue and crisp edges. Measured on the rendered pixels: disc
saturation up from 0.30 to 0.53, arrow contrast up from 46 to 71.

The arrow's shape is unchanged — it was always identical to the design.

Full Changelog: v0.5.179...v0.5.180

v0.5.179

Choose a tag to compare

@lcsmas lcsmas released this 27 Jul 14:30

What's new

Richer diagnostic logging — catch bugs that previously left no trace.

Orchestra had ~163 log lines across 39k LOC, no persistent renderer logging at
all, and 53 silent catch {} sites. The hardest bugs to diagnose were exactly
the ones leaving zero evidence behind. This release instruments them.

Turn it up when you need it

ORCHESTRA_LOG_LEVEL=trace   # or debug — no rebuild needed

Five levels (trace|debug|info|warn|error), default info, so normal runs stay
quiet. The startup banner names the active level — an absent line now means
"not recorded at this level" rather than "it never happened".

Greppable by subsystem

Every line carries a scope tag — [pty] [spool] [store] [git] [sdk] [ipc] [activity], plus [renderer] for UI-side lines:

grep '\[spool\]' orchestra.log     # one subsystem's story
grep 'SLOW' orchestra.log          # IPC calls over 250ms

The renderer now logs at all

Previously nothing in the UI reached the log file — React errors and failed IPC
calls died with the window. Now renderer lines land in the same file as
main-process lines, interleaved in causal order. Unhandled errors and promise
rejections are captured automatically, and a new error boundary records the
React component stack and shows a readable message instead of the blank
window a render throw used to produce.

Silent failures that now speak up

  • A corrupt store.json used to silently reset all workspaces, repos and
    accounts to defaults. It now logs an error and preserves the file as
    store.json.corrupt-<timestamp> so the data is recoverable.
  • Terminal output dropped when the renderer can't receive it (the cause of
    "scattered word" garble) — previously invisible.
  • Spool read/parse failures and unhandled agent events, both of which surface as
    a stuck status dot with no other clue.
  • The events-dir startup wipe, whose file count is the fingerprint of the
    multi-instance stuck-dot bug.
  • Git fallbacks that manufacture confident-looking neutral answers (no merge
    pill, empty branch list) out of real failures.
  • Startup fetches in the UI that render a failed backend call as a
    legitimately-empty section.

Errors now also carry the detail that .stack omits: errno fields
(code/syscall/path) and cause chains.

Full Changelog: v0.5.178...v0.5.179

v0.5.178

Choose a tag to compare

@lcsmas lcsmas released this 27 Jul 14:28

What's new

Composer chips are properly flat. The unified composer card shipped in
0.5.176 still had two chips wearing the old raised-button look — a border and
fill on Interrupt, and a drop shadow on every dropdown (Opus 5, High, Bypass
permissions, Remote control). The shadow came from the app's global button
element rule leaking through, since the chip style zeroed border and background
but never reset box-shadow.

Both are fixed: the whole control row now reads as one flat language, matching
the rest of the card. Interrupt keeps its red — just the colour, not the box.

Full Changelog: v0.5.177...v0.5.178