Architecture Overhaul
- Decomposed monolithic god-files into focused modules
- EventLoopCtx — 24 handler methods extracted from main.rs (1,476 → 421 lines, -71%)
- file_mouse.rs — 647-line mouse handler extracted from file_manager.rs (-43%)
- file_actions.rs — keyboard action handlers
- nav_helpers.rs — navigation history module
- clipboard.rs — clipboard utilities with OSC 52 fallback
- refresh.rs — async file refresh loop
- UI split into 14 modules (5,060 → 386 lines, -92%)
- App: 120 flat fields → 13 sub-structs; FileState → 4 sub-structs
Performance
- Fixed unconditional redraw on every 250ms Tick (4 redraws/sec → on-demand)
- Short-circuit path_colors HashMap lookups when empty
- Zero-allocation DIVIDER check
New Features
- Marquee drag selection — transparent border rect, Ctrl+drag toggles, Escape cancels
- Cross-pane drop on empty space — DropTarget::CurrentDir(pane_idx)
- Undo close tab (Ctrl+Shift+T) — max 10 closed tabs restored
- 14 theme presets — Legacy Red (default), Cyberpunk, Ocean Deep, Solarized, Gruvbox, Dracula, Tokyo Night, Nord, Catppuccin, Rose Pine, One Dark, Monokai, Paper, Terminal
Quality
- Tests: 78 → 129 (+65%)
- Zero production unwraps
- Zero TODO/FIXME/HACK markers
- All clippy clean, all doc warnings fixed
- Criterion benchmarks for hot paths
- Dead code cleanup: removed tile_queue, duplicate path_colors, layout.rs, dead parameter chains