Summary
Four stacked PRs add regression coverage for the non-TUI tui: false path,
fix the defects it exposed, and document it as linear terminal mode.
Changes
Rationale
The offline harness exercises the real async path without provider or network
variability. The transcript invariant makes tui: false safe for logs, pipes,
scripts, and terminals that cannot support cursor movement; spinners are
disabled because they redraw existing cells.
Bare asyncio.create_task calls left memorizer work unowned at shutdown.
Using the existing fire_and_forget helper retains each task, captures its
failure, and registers it for cancellation. Sub-agent tasks and service state
have separate owners, so exit also cancels and clears them explicitly. The
documentation records these tested guarantees instead of leaving tui: false
as an accidental fallback.
Summary
Four stacked PRs add regression coverage for the non-TUI
tui: falsepath,fix the defects it exposed, and document it as linear terminal mode.
Changes
_run_linear,echoes queued input, and handles empty non-streaming responses.
disables both spinner renderers in linear mode.
compaction, commands, and clean exit; tracks memorizer tasks with
fire_and_forget, cancels background and sub-agent work at exit, and clearsstale agent state.
dumb-terminal fallback.
Rationale
The offline harness exercises the real async path without provider or network
variability. The transcript invariant makes
tui: falsesafe for logs, pipes,scripts, and terminals that cannot support cursor movement; spinners are
disabled because they redraw existing cells.
Bare
asyncio.create_taskcalls left memorizer work unowned at shutdown.Using the existing
fire_and_forgethelper retains each task, captures itsfailure, and registers it for cancellation. Sub-agent tasks and service state
have separate owners, so exit also cancels and clears them explicitly. The
documentation records these tested guarantees instead of leaving
tui: falseas an accidental fallback.