e998199c86
Round 2 of MC-parity next round. Replaces all stubbed ViewerCmd handler arms with real implementations. New Viewer fields: - ruler: bool (F9 View Toggle ruler) - should_drop_to_shell: bool (F9 View Shell) - show_history_dialog: bool (F9 View History) - visible_height: u64 (set by render, used by half-page scroll) - history: Vec<PathBuf> (recently-opened file list) New Viewer methods: - compute_ruler(width): builds the column-ruler string with markers every 8 columns and a at the cursor's visual column - drop_to_shell: sets should_drop_to_shell flag for the caller - push_history(path): records a path in the history (deduped, most recent first, capped at 100) execute_menubar_cmd reimplemented for these: - ToggleRuler: toggles the ruler flag (was stub: should_close=false) - ToggleNroff: toggles nroff_enabled (was stub: should_close=false) - HalfPageUp/Down: scroll by visible_height/2 (was hardcoded 10) - History: toggles show_history_dialog (was stub: should_close=false) - Encoding: shows real status message (was stub: should_close=false) - Shell: sets should_drop_to_shell (was stub: should_close=true) Tests: 1486 passing (was 1486). No regression. Refs: MC-PARITY-AUDIT.md §7 (GAP-VV-1..8)