Skip to content

Converge keyboard dispatch slice 7: delete the two entry points' remains and the 13 stale 'mirrors mod.rs' comments #762

Description

@JDonaghy

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_accelerator 80 · handle_key_pressed (src/tui_main/shell_app.rs)
604 · handle_sidebar_focused_key 442 · dispatch_panel_accelerator_sizeless 120
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:

shell_app.rs:1333  // ── Per-frame nerd-font sync (mirrors mod.rs:1131) ──
shell_app.rs:2345  // ── Bracketed paste (mirrors mod.rs:3032-:3035) ──
shell_app.rs:2354  // ── Resize → PTY resize (mirrors mod.rs:3036-:3045) ──
shell_app.rs:2805  // ── Terminal chrome the runner doesn't own (mirrors mod.rs:1268-:1286)
shell_app.rs:3693  // ── Folder picker modal (mirrors mod.rs:1653-:1708) ──
shell_app.rs:3753  // ── Activity bar (toolbar) focused (mirrors mod.rs:1805-:1854) ──
shell_app.rs:3805  // ── Sidebar focused (mirrors mod.rs:1886-:2415) ──
shell_app.rs:3835  // ── Ctrl+L: force a full screen redraw (mirrors mod.rs:2429-:2435) ──
shell_app.rs:3850  // ── Terminal (PTY) key routing (#351, mirrors mod.rs:2439-:2513) ──
shell_app.rs:3929  // ── Alt-modifier block (mirrors mod.rs:2526-:2601) ──
shell_app.rs:4035  // ── Shift+F5 → stop, Shift+F11 → stepout (mirrors mod.rs:2662-:2679) ─
shell_app.rs:4051  // (mirrors mod.rs:2651-:2701) ──
shell_app.rs:4155  // ── Post-key epilogue (mirrors mod.rs:2863-:2915) ──

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

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 backendsTuiDriver 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).
  • Combined production line count of the entry points above strictly decreases; the PR states
    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 --check EXIT=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.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.

Milestone

#7 Platform-Neutral

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    coordTracked by coord-tui pipelineenhancementNew feature or requeststatus:readyRefined and ready to enter the work pipelinesub-taskSub-task of a parent issuetier:largeMulti-module / algorithm-heavy work. Routes to opus via models.labels.uiUI/rendering

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions