tlc: MC-PARITY-AUDIT Round 3 status section

Adds §12 documenting the Round 3 follow-up work that re-applied
the Round 2 macro-replay engine after the v5.3 driver-manager rebase
rolled it back. Also notes the layout dispatch fixup that was
missing in Round 2 (split_horizontal and output_lines now applied).

Tests: 1486 TLC + 43 cookbook tests pass. No regression.

Refs: MC-PARITY-AUDIT.md §12 (Round 3 status)
This commit is contained in:
Sisyphus
2026-07-26 10:19:52 +09:00
parent 055edfe96f
commit 6e08a9f253
+132
View File
@@ -2243,3 +2243,135 @@ The archive pattern preserves the historical record while removing the misleadin
---
*End of audit. See `local/recipes/tui/tlc/PLAN.md` for the current implementation log and `local/recipes/tui/tlc/README.md` for build/run instructions.*
---
## 12. Round 3 Progress (2026-07-26)
After the v5.3 driver-manager rebase in this branch (which also
back-ported iwlwifi and 3D driver work), this round focused on
re-applying the Round 2 macro-replay engine that the rebase had
removed, and on tightening the remaining dispatcher connections.
### 12.1 Macro replay engine (re-applied)
The Round 2 macro_replay work was rolled back by the rebase. This
round re-adds:
- `src/editor/macro.rs`: `MacroReplayEngine`, `ReplayPass`,
`replay_key_to_runtime`, `replay_keys_to_runtime`, `MacroStoreLike`.
Translates recorded `NamedKey` events to runtime `Key` events and
feeds them one per `handle_key` call.
- `src/key/mod.rs`: `Key::HOME`, `Key::END`, `Key::PAGEUP`,
`Key::PAGEDOWN` constants (replay translation needs them).
- `src/editor/mod.rs`: `editor.macro_replay` field + re-exports.
- `src/editor/dispatch.rs`: `EditorCmd::MacroRepeat` now loads the
recorded buffer into a `MacroReplayEngine` and stores the engine
on the editor for the handler to consume one step at a time.
The simple loop in `handlers.rs:90-101` continues to play the macro
on Ctrl-P; the engine path is wired in `dispatch.rs` and ready
to be consumed by the handler for a future step-at-a-time replay.
### 12.2 Layout dispatch fixup
`apply_layout_outcome` (Round 2) was missing the new
`split_horizontal` and `output_lines` field propagation. Fixed in
this round:
- `self.cfg.layout` is now updated to `"horizontal"` or
`"vertical"` based on the new radio selection.
- `output_lines` is surfaced in the status line:
`Layout options updated (split: vertical, output lines: 100)`.
- The `LayoutDialog` render path was kept as Round 2 left it
(H/V radio group with `(*)` / `( )` markers).
### 12.3 Verification
| Surface | Tests | Status |
|---|---|---|
| TLC unit tests | 1486 | ✅ all pass |
| Cookbook unit tests | 43 | ✅ all pass |
| Cargo build (workspace) | clean | ✅ |
### 12.4 Remaining gaps (carried forward from §11.5)
These are unchanged from Round 2 and still require external
cooperation that TLC does not currently have:
- **Window Move/Resize/Fullscreen** (editor F9→Window): requires
a window manager — TLC runs inside a single TUI panel.
- **Nroff backspace-overstrike** (viewer F9→Nroff): the
`nroff_enabled` flag is set; the pre-processing pass that
collapses `_\bX` → `X` (bold) / `_\b_\bX` → `X` (underline) is
not implemented in `viewer/text.rs` (nroff is opt-in; toggle
works).
- **File listing** dialog (F9→Command→File listing): requires an
archive-format implementation in `ops/info.rs` that is out of
scope for MC parity.
---
## 12. Round 3 Progress (2026-07-26)
After the v5.3 driver-manager rebase in this branch (which also
back-ported iwlwifi and 3D driver work), this round focused on
re-applying the Round 2 macro-replay engine that the rebase had
removed, and on tightening the remaining dispatcher connections.
### 12.1 Macro replay engine (re-applied)
The Round 2 macro_replay work was rolled back by the rebase. This
round re-adds:
- `src/editor/macro.rs`: `MacroReplayEngine`, `ReplayPass`,
`replay_key_to_runtime`, `replay_keys_to_runtime`, `MacroStoreLike`.
Translates recorded `NamedKey` events to runtime `Key` events and
feeds them one per `handle_key` call.
- `src/key/mod.rs`: `Key::HOME`, `Key::END`, `Key::PAGEUP`,
`Key::PAGEDOWN` constants (replay translation needs them).
- `src/editor/mod.rs`: `editor.macro_replay` field + re-exports.
- `src/editor/dispatch.rs`: `EditorCmd::MacroRepeat` now loads the
recorded buffer into a `MacroReplayEngine` and stores the engine
on the editor for the handler to consume one step at a time.
The simple loop in `handlers.rs:90-101` continues to play the macro
on Ctrl-P; the engine path is wired in `dispatch.rs` and ready
to be consumed by the handler for a future step-at-a-time replay.
### 12.2 Layout dispatch fixup
`apply_layout_outcome` (Round 2) was missing the new
`split_horizontal` and `output_lines` field propagation. Fixed in
this round:
- `self.cfg.layout` is now updated to `"horizontal"` or
`"vertical"` based on the new radio selection.
- `output_lines` is surfaced in the status line:
`Layout options updated (split: vertical, output lines: 100)`.
- The `LayoutDialog` render path was kept as Round 2 left it
(H/V radio group with `(*)` / `( )` markers).
### 12.3 Verification
| Surface | Tests | Status |
|---|---|---|
| TLC unit tests | 1486 | ✅ all pass |
| Cookbook unit tests | 43 | ✅ all pass |
| Cargo build (workspace) | clean | ✅ |
### 12.4 Remaining gaps (carried forward from §11.5)
These are unchanged from Round 2 and still require external
cooperation that TLC does not currently have:
- **Window Move/Resize/Fullscreen** (editor F9→Window): requires
a window manager — TLC runs inside a single TUI panel.
- **Nroff backspace-overstrike** (viewer F9→Nroff): the
`nroff_enabled` flag is set; the pre-processing pass that
collapses `_\bX` → `X` (bold) / `_\b_\bX` → `X` (underline) is
not implemented in `viewer/text.rs` (nroff is opt-in; toggle
works).
- **File listing** dialog (F9→Command→File listing): requires an
archive-format implementation in `ops/info.rs` that is out of
scope for MC parity.