Skip to content

release: v3.11.2 — dream progress feedback (spinner + valid measures) - #75

Closed
jagoff wants to merge 4 commits into
masterfrom
release/v3.11.2
Closed

release: v3.11.2 — dream progress feedback (spinner + valid measures)#75
jagoff wants to merge 4 commits into
masterfrom
release/v3.11.2

Conversation

@jagoff

@jagoff jagoff commented Jul 22, 2026

Copy link
Copy Markdown
Owner

What

Patch release v3.11.2. Supersedes #74 — bundles both memo dream run progress fixes into one PR onto master.

Contains, on top of #73:

  1. 6287ce53 fix(dream): restore progress spinner in real terminals (v3.11.1)
  2. 8b16fc70 fix(dream): blank bar + counter for the indeterminate status line (v3.11.2)

Why

memo dream run gave no usable progress feedback:

  • No spinner: the shared Rich Console used force_terminal=False, which Rich 15 short-circuits in is_terminal before the isatty() check → zero ANSI, the spinner/bar never rendered. The run looked frozen after the pre-dream inventory panel.
  • Bogus measure: the rolling step status line (total=None) rendered a full/pulsing bar and a meaningless 0/? counter (e.g. recall self-tuner... 0/?).

Fixes

  • cli_common.py: Console() auto-detects the terminal (TTY → colour + spinner; pipes/tests/launchd → plain).
  • dream_utils._make_progress: gate disable on console.is_terminal; add _DeterminateBarColumn / _DeterminateMofNColumn that blank out for total is None, so the status line is spinner + description + elapsed and only the overall task shows the real N/14 bar.
  • tests/test_dream_progress_tty.py: 5 regression tests (TTY gating + indeterminate-column blanking).

Test plan

  • ruff + mypy clean on changed files
  • dream/console suites green (41)
  • verified end-to-end under a pty: ANSI + spinner + real bar emit; status line shows no 0/?; non-TTY stays plain
  • CI 10/10 checks

Tags v3.11.1 and v3.11.2 already pushed; both become ancestors of master when this merges.

jagoff added 4 commits July 22, 2026 10:25
Console(force_terminal=False) short-circuits Rich 15's is_terminal to
False before isatty(), so memo emitted no ANSI and the dream pipeline's
spinner/progress bar never rendered — the run looked frozen after the
pre-dream inventory panel with zero feedback. Let the shared console
auto-detect (Console()), and gate _make_progress on console.is_terminal
(the stream it renders to) instead of sys.stderr.isatty().
The dream pipeline runs two tasks in one Progress: a determinate 'overall'
task (the N/14 pipeline bar) and a rolling 'step' status line with total=None.
The stock BarColumn + MofNCompleteColumn rendered a full/pulsing bar and a
meaningless '0/?' for the indeterminate step (e.g. 'recall self-tuner... 0/?').
Blank both columns when task.total is None so the step shows just spinner +
description + elapsed; the overall bar keeps its real N/14 measure.
@jagoff

jagoff commented Jul 27, 2026

Copy link
Copy Markdown
Owner Author

Closing as stale/superseded. This is a v3.11.2 release PR; master is now at v4.4.3 (released today). The dream progress-feedback work it carried is long superseded. Reopen if any specific commit here is still wanted.

@jagoff jagoff closed this Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant