Extract handle_artists_click and handle_playlists_click into mouse_artists.rs and mouse_playlists.rs respectively, reducing mouse.rs from ~530 to ~247 lines. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Collapse else { if } blocks into else if (6 instances) - Replace map_or(false, ...) with is_some_and(...) (6 instances) - Replace iter().cloned().collect() with .to_vec() (2 instances) - Replace manual char comparison with array pattern (1 instance) - Replace useless vec! with array literal (1 instance) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Split the 2495-line mod.rs into 10 files by concern: - playback.rs: playback controls and track management - cava.rs: cava process management and VT100 parsing - input.rs: event dispatch and global keybindings - input_artists.rs: artists page keyboard handling - input_queue.rs: queue page keyboard handling - input_playlists.rs: playlists page keyboard handling - input_server.rs: server page keyboard handling - input_settings.rs: settings page keyboard handling - mouse.rs: all mouse click and scroll handling - mod.rs: App struct, new(), run(), event_loop(), load_initial_data() Pure code reorganization — no behavioral changes. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>