v0.5.179
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 neededFive 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 250msThe 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.jsonused 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