3.0 KiB
Obsolete panel-focus cleanup — 2026-09-12
Owner: delegated focus_pending_regression worker; integration and runtime evaluation: root.
Delivered commit: 07681f6694964843b81543c00cd007f252ea0558 (Remove obsolete canvas panel focus mode). Tracked worktree clean after commit.
Branch: codex/remove-obsolete-panel-focus-956atf-20260912, based on e2c027e54c6be0d051820374f669c52278d90f97. Worktree: .local/always-active-canvas-20260912. The previous issue 25 contribution and branch remain preserved. This follow-up supersedes the earlier handoff's decision to retain independent panel mode plumbing: the strict root gate established that its production entry points were gone.
Finding and change
After the Canvas and Focus canvas buttons were removed, process and scenario CanvasEvent::Focus had no production constructors. Their focused flags only selected a layout that hid the explorer and inspector; they never enabled canvas editing. Keeping test-only constructors hid the obsolete paths from ordinary tests while failing the strict non-test gate.
Removed both presentation flags, panel-focus events and context arms, App dispatch/whitelist cases, and conditional panel layout. Removed the toolbar's now-unused one-way canvas_workspace::Event::Focus route. Existing F6 ToggleFocus, Tab Traverse, ControlFocus, and Leave remain intact, as do actual canvas focus ownership, text-field protection, and stale context guards. The normal canvas layout always includes its explorer and applicable inspector. Current guide instructions now describe clicking/F6 keyboard entry and the continuously available panels.
Migrated pending invalid-draft preservation tests to surviving Zoom events and Details disclosure changes while retaining accepted-snapshot, raw-draft, and epoch assertions. Mounted stale-drag tests now click the real ZoomIn control instead of constructing the removed panel event. Scenario caller/back coverage now establishes distinct real tool and camera state, retaining caller tool/shelf/camera/scroll/source/history restoration assertions. Existing mounted keyboard ownership regressions were retained.
Verification and handoff
Root reviewed the complete 12-file source diff and found no source blocker. Source-only rustfmt completed for changed Rust files with edition 2024 and skip_children=true. git diff --check passed. Production-source searches found no remaining obsolete Focus constructors, panel focused flags, toggle_focus methods, or removed-button instructions.
No Cargo, compiler, native application, or Gitea operation was performed by this worker. Runtime acceptance and integration remain pending with root. Useful targeted test filters include process_zoom_retains_rejected_draft_and_guards_selection, process_zoom_and_disclosures_preserve_rejected_raw_draft_and_accepted_source, behavior::topology::view::layout_tests, and behavior::scenario::workspace::tests; the strict non-test gate must also rerun because it caught the original defect.