v0.7.1
Fixed
-
The Log tab no longer renders whole CLI sessions underlined. Modern CLIs emit an XTMODKEYS
sequence (CSI > 4 ; 2 m, "modifyOtherKeys") at startup that the pane emulator (pyte) misread as
SGR 4 / underline-on — with no matching off present in a live capture — so every line came out
underlined and hard to read. The log view now strips private-marker CSI sequences before emulation;
genuine color, bold, and properly-closed underline styling is preserved. -
Resolving a CRITICAL escalation no longer loops on a manual-rollback prompt when the resolve
edited the spec. 0.7.0 fixed the loop only for an already-clean tree, but the resolve workflow's
whole job is to correct the frozen spec under the BMAD artifact folder (_bmad-output/..., which is
tracked). So on resume the orchestrator saw a dirty tree and — with the default
scm.rollback_on_failure = false— paused for a manual reset; because the dirty check diffs against
the frozenbaseline_commit, even committing the spec re-paused on the next resume, an endless loop.
A resolved re-drive is human-initiated, so it now always auto-recovers regardless of the flag: the
BMAD artifact folders are treated as orchestrator-owned — excluded from the dirty check and preserved
through every reset of the re-drive (not just the resume-time cleanup) — so the spec correction
survives while the failed attempt's source changes revert to baseline. This closes a latent sibling
bug: withrollback_on_failure = truea later mid-re-drive retry/defer reset previously ran with no
preserve set and reverted the just-corrected spec silently, looping the re-drive.
scm.rollback_on_failurestill defaults OFF and now governs only unattended/stopped attempts; the
manual-recovery notice (reached by stopped attempts only now) drops its resolved-cause wording. -
A failed artifact restore during rollback now surfaces instead of silently dropping the
correction. Whensafe_rollbackrestores the preserved BMAD folders from its pre-reset snapshot, a
genuinegit checkoutfailure (corrupt snapshot, lock, IO) was swallowed alongside the benign
empty-dir "pathspec did not match" case — so a corrected spec could vanish with no error and loop the
re-drive. Real failures now raise; the empty-dir case stays tolerated.