Skip to content

fix: run the TUI on Textual 8 and drop Python 3.9 - #115

Merged
DLANSAMA merged 3 commits into
mainfrom
refactor/aaa-pr6-textual-py310
Aug 13, 2026
Merged

fix: run the TUI on Textual 8 and drop Python 3.9#115
DLANSAMA merged 3 commits into
mainfrom
refactor/aaa-pr6-textual-py310

Conversation

@DLANSAMA

Copy link
Copy Markdown
Owner

AAA stack 6/9. Stacked on #114.

Two commits:

  1. Textual 8 (textual>=8.0,<9.0) — Static.content instead of renderable, Select.NULL instead of BLANK/False, screen.query instead of app.query. Tests go through tests/tui_text.py.
  2. Python floor is 3.10 — CI is 3.10 / 3.12 / 3.14, ruff target py310, single zeroconf>=0.149.16. Drops the 3.9 residual in SECURITY.md.

Supersedes #109 (Dependabot only widened the pin and left TUI tests broken).

Stack: #110#111#112#113#114this → test stubs → sole error path → honesty

The <2.0 cap was hiding two 8.x API changes: Static.renderable is gone
(tests read content) and Select.BLANK/False is no longer a legal empty
value (use Select.NULL). The extra and the test extra pin textual>=8.0,<9.0.
Every install now resolves patched zeroconf. CI's oldest Linux leg is
3.10, ruff targets py310, and the 3.9-only SECURITY residual is gone.
Textual 8 / Rich tables emit bold SGR codes when the runner has a
color-capable TERM. The prepare-preview test then saw '\\x1b[1m' as
the first token instead of 'Model'.
Base automatically changed from refactor/aaa-pr5-session-reuse to main August 13, 2026 03:49
@DLANSAMA
DLANSAMA force-pushed the refactor/aaa-pr6-textual-py310 branch from 9a3ba4b to 0feec78 Compare August 13, 2026 03:49
@DLANSAMA
DLANSAMA merged commit 53538d4 into main Aug 13, 2026
6 of 12 checks passed
@DLANSAMA
DLANSAMA deleted the refactor/aaa-pr6-textual-py310 branch August 13, 2026 04:03
DLANSAMA added a commit that referenced this pull request Aug 14, 2026
Re-verified the 2026-07-31 post-audit residual table against current main
rather than trusting the audit snapshot. Four residuals it lists as open are
closed, and one the follow-up notes recorded as closed is not:

- S5 closed: utils.py:63-67 is now a shim delegating to jsonio; both spellings
  redact the audit's own repro identically. No weaker second implementation.
- A4 closed: mqtt_port is wired end to end (context -> printer -> mqtt_tls
  _mqtt_port -> client.connect). Doctor no longer reports a port it ignores.
- T1 closed: textual is pinned >=8.0,<9.0 (#115), not <2.0.
- A3/Q1/S1/B1/R1/R3 closed by #119, the camera opt-in work, and the TUI merge.
- Q4 NOT closed: #116 removed 81 setdefault stubs across 33 files but
  tests/bambu_test_base.py:26-29 still assigns MagicMock to sys.modules for
  paho at import time and never restores it, which is also order-dependent.
- P1, Q5, Q6, A1, A2, S3, R2, T2/WS4, W3.4 re-confirmed open with current
  file:line evidence; A1's target moved to bambu_cli.cliparse.

Plan headers carried numbers from before #119/#120 and read as live state.
Both gameplans now lead with measured current values (1499 non-live, 90.99%
Linux / 90.68% Windows over 8368 statements, floor 86, Python 3.10/3.12/3.14)
and keep the old figures marked as historical, including the a-plus W1 sizing
that was derived from the 89.4% baseline.

mutation-baseline.md claimed its per-module table reconciles to the 50.7%
headline. It does not: the seven rows are the whole only_mutate scope yet sum
to 2010 mutants against a headline 2091, leaving 81 unattributed (37 survived,
41 killed, 3 timeout). Also corrected the "residual survivors should be
cosmetic" prediction, which the same file already disproves at 21.8% with 269
survivors, and the stale "re-run mutmut on slicer/output.py" note, which was
already done on 2026-08-04.

tui-plan.md kept imperative branch instructions after its own "implemented"
banner; folded into the historical framing.

Also drops AI-vendor attribution from these two plan docs: the audience and
source lines, the "pasteable brief for a new <vendor> session" heading, and
the trailer rule, which now reads "AI/session attribution trailers" instead of
naming a product. References to the local-only agent notes filename are left
intact where removing the name would void the rule.

Docs only, no code changes. Gates: 1499 passed / 1 deselected, 91.0% total;
test_docs_consistency + test_docs_links 25 passed.
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