You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Continuation of #734, slice 7 of 7.#734 declared a 7-slice plan and was
closed when slice 1's PR merged — the remaining slices were never filed. This issue is
one of them. Measured on develop @ 44882e9 (2026-09-02):
handle_key_press (src/gtk/mod.rs) 274 · dispatch_gtk_panel_accelerator80 · handle_key_pressed (src/tui_main/shell_app.rs) 604 · handle_sidebar_focused_key442 · dispatch_panel_accelerator_sizeless120
— 1,520 lines total, against the 1,622 #734 was filed on. 13 of the 19 mirrors mod.rs:NNNN comments survive, and every surviving reference is still wrong.
Locate everything below by symbol, not by line number — #734's own body warns that
its numbers drift, and they already have.
The closing slice
Slices 2–6 move every rung into src/render.rs. This one deletes the remains:
handle_key_pressed (src/tui_main/shell_app.rs, 604 lines — it grew during slice
and handle_key_press (src/gtk/mod.rs, 274) reduced to translate-and-delegate.
The five entry points total under 400 lines, from 1,520 at the time of filing.
A test asserting both backends resolve the same key + engine state to the same route,
RED-verified by reordering one rung on one backend.
Acceptance criteria
Inherited verbatim from #734 — these are the rules that make a slice done:
The rung is implemented once, in shared code (src/render.rs), and called from both
backends.
Both backends' bespoke arms for that rung are deleted in the same PR. A migration that
leaves both paths is not done (GOALS.md, "How to use this doc").
Black-box coverage on both backends — TuiDriver via driver_with_shell(TuiShellApp, …)
in src/tui_main/shell_app.rs, and GtkDriver in src/gtk/testing.rs. Assert on rendered
output, never on state being populated (CLAUDE.md rule 1).
The PR states the new tests were verified RED against unfixed develop (CLAUDE.md rule 2).
This is one slice. Do not attempt the rungs belonging to the sibling issues listed in
Sequencing — they conflict in the same files and are queued behind this one on purpose.
Files
src/render.rs (the shared router)
src/tui_main/shell_app.rs
src/gtk/mod.rs
src/gtk/testing.rs (GtkDriver coverage)
Sequencing
Last of the #734 chain — after slices 2, 3, 4, 5 and 6.
The closing slice
Slices 2–6 move every rung into
src/render.rs. This one deletes the remains:handle_key_pressed(src/tui_main/shell_app.rs, 604 lines — it grew during slicehandle_key_press(src/gtk/mod.rs, 274) reduced to translate-and-delegate.mirrors mod.rs:NNNNcomment removed. There are 13 at44882e9, all insrc/tui_main/, and every one of them points at something that is nolonger there — Retire GTK's private enum Msg bus — 124 variants, 301 sites, a translation layer that only talks to itself #732 deleted the
dispatchthey referenced:Two of them — the nerd-font sync and the post-key epilogue — name rungs no earlier slice
claims. Converge or delete them here, and say which.
Acceptance, in addition to the inherited block
grep -rn 'mirrors mod\.rs' src/tui_main/returns nothing. This is Converge keyboard dispatch — ~2,000 lines, and the TUI half's 19 'mirrors mod.rs:NNNN' pointers are all stale #734's own statedfinal-slice acceptance criterion.
RED-verified by reordering one rung on one backend.
Acceptance criteria
Inherited verbatim from #734 — these are the rules that make a slice done:
src/render.rs), and called from bothbackends.
leaves both paths is not done (
GOALS.md, "How to use this doc").TuiDriverviadriver_with_shell(TuiShellApp, …)in
src/tui_main/shell_app.rs, andGtkDriverinsrc/gtk/testing.rs. Assert on renderedoutput, never on state being populated (
CLAUDE.mdrule 1).develop(CLAUDE.mdrule 2).before/after. (Converge the two mouse routers — ~4,800 lines implementing the same precedence ladder twice #733 slice 1 met this only barely — 4,994 → 4,861 — and Converge frame composition — ~4,500 lines laying down the same surfaces in two hand-kept orders #735 slice 1 did not
meet it at all. State the numbers.)
cargo build && cargo test && cargo clippy -- -D warnings && cargo fmt --checkEXIT=0.Scope discipline
This is one slice. Do not attempt the rungs belonging to the sibling issues listed in
Sequencing — they conflict in the same files and are queued behind this one on purpose.
Files
src/render.rs(the shared router)src/tui_main/shell_app.rssrc/gtk/mod.rssrc/gtk/testing.rs(GtkDriver coverage)Sequencing
Last of the #734 chain — after slices 2, 3, 4, 5 and 6.
Milestone
#7 Platform-Neutral