tlc: update PLAN.md parity tables — 65/77 bindings done (84%)

Updated statuses for features implemented in recent batches:
- ScreenList (Alt-backtick), EditHistory (Alt-Shift-E) → Done
- SymlinkRelative (C-x s), SymlinkEdit (C-x v) → Done
- CompareDirs (C-x d) → Done
- ExternalPanelize (C-x !), Jobs (C-x j), VfsList (C-x a) → Done
- FilteredView (Alt-!) → Done
- Editor prompts (Find/Replace/GotoLine/GotoCol/SaveAs) → Done
- Updated mod.rs line count (1597→3119)
This commit is contained in:
2026-06-19 08:32:00 +03:00
parent a223e2ff67
commit a8e10e731a
+13 -13
View File
@@ -145,7 +145,7 @@ below) are reconciled with the 23-row findings table in §3.B.
| 6 | MEDIUM | VFS backends defined but `for_scheme()` only returns `local` | 🚧 **PARTIAL**`for_path(VfsPath)` dispatches on URL prefix for archive schemes, but **the filemanager only ever operates on local paths; no UI exercises the archive dispatch** |
| 7 | MEDIUM | Skin parser and `rust_i18n::i18n!` defined but not called at runtime | ✅ **RESOLVED**`Skin::to_theme()` maps all 23 palette slots; all 26 rendering files now route colors through `Theme` parameter; `Theme::by_name()` calls `Skin::load_named()` for user TOML skins |
| 8 | MEDIUM | 40+ clippy warnings (unused imports, dead code) | ⚠️ **WORSENED to 65** (cargo fix regression) |
| 9 | MEDIUM | Editor `M-f`/`M-%`/`M-l`/`M-g` prompts not wired to `handle_key` | 🚧 **HALF FIXED**keys open the prompt via `try_global_shortcut`, but `handle_key_prompt` ignores input for 5/6 kinds |
| 9 | MEDIUM | Editor `M-f`/`M-%`/`M-l`/`M-g` prompts not wired to `handle_key` | **RESOLVED**all prompt kinds (Find/Replace/GotoLine/GotoCol/SaveAs/BookmarkSet/Jump/Clear) accept text input and commit on Enter |
| 10 | MEDIUM | Tree F8 calls `std::fs::remove_file` directly | ✅ **RESOLVED** — now routes through `crate::ops::delete::delete_file` with proper `OpHandle` |
| 11 | MEDIUM | Hotlist `Ctrl-A` (AddCurrent) returns empty `PathBuf` | ✅ **RESOLVED**`set_current_path(panel.path())` at dialog open |
| 12 | LOW | `notify` feature renamed to `watcher` but old name still in `[features]` | ✅ **STALE** — current Cargo.toml:105 has only `watcher = ["notify"]`; no `notify` alias |
@@ -158,7 +158,7 @@ below) are reconciled with the 23-row findings table in §3.B.
| 1 | PASS | F-key codes unified 0xF100..0xF10B | `src/key/mod.rs:54-64`, `src/terminal/event.rs:60-80`, `src/keymap/mod.rs:101-110` |
| 2 | PASS | Cmd dispatcher exhaustive (24/24 variants) | `src/filemanager/mod.rs:267-389` |
| 3 | PASS | ENTER bound to `Cmd::EnterDir`, regression test in place | `src/keymap/mod.rs:127`, `src/filemanager/mod.rs:1290-1326` |
| 4 | **FAIL** | Editor `handle_key_prompt` is a dead stub for Find/Replace/GotoLine/GotoCol/SaveAs | `src/editor/mod.rs:449-457` |
| 4 | **FAIL** | ~~Editor `handle_key_prompt` is a dead stub~~ | ✅ **FIXED** — all prompt kinds accept input, commit on Enter, cancel on Esc |
| 5 | **FIXED** | ~~UserMenu Execute branch prints `"exec not wired"` and does nothing~~ | Fixed: now routes through `fm.start_exec(cmd, &cwd)` |
| 6 | **FAIL** | Arrow-key bindings for dialogs are reversed (Left/Right map to Up/Down) | `src/app.rs:200-201` |
| 7 | **CRITICAL** | `ops/delete.rs::delete_dir` follows symlinks → catastrophic data loss | `src/ops/delete.rs:51-56` |
@@ -178,7 +178,7 @@ below) are reconciled with the 23-row findings table in §3.B.
| 21 | MEDIUM | Sequential pipe drain in `exec.rs` can block on full stderr buffer | `src/filemanager/exec.rs:151-169` |
| 22 | MEDIUM | `Tui::default()` panics on non-tty stdout | `src/terminal/mod.rs:70-74` |
| 23 | MEDIUM | `editor/save.rs:95` silently drops non-UTF-8 data on load | `src/editor/save.rs:95` |
| 24 | MEDIUM | Files > 1000 lines: `filemanager/mod.rs` (1597), `editor/mod.rs` (1227) | both files |
| 24 | MEDIUM | Files > 1000 lines: `filemanager/mod.rs` (3119), `editor/mod.rs` (2606) | both files |
| 25 | MEDIUM | 24-variant `Cmd` enum has only 1 documented variant; 14+ `missing_docs` clippy warnings | `src/keymap/mod.rs` |
| 26 | MEDIUM | SFTP `AcceptAnyKey::check_server_key` always returns `Ok(true)` — accepts any server key | `src/vfs/sftp.rs:53` |
| 27 | LOW | ~~`main.rs:15, 67` references old `tc` name post-rename~~ | **FIXED** — all `tc`/`TC` references updated to `tlc`/`TLC` across 14 doc comments |
@@ -690,8 +690,8 @@ produce a prioritized implementation roadmap for full MC parity.
| Select (group) | KP+ / Alt-+ | ✅ Done | — | `+` key opens PatternDialog; calls `mark_pattern()` |
| Unselect (group) | KP- / Alt-- | ✅ Done | — | `\` key opens PatternDialog; calls `unmark_pattern()` |
| SelectInvert | KP* / Alt-* | ✅ Done | — | `*` reverse marks implemented |
| ScreenList | Alt-` | ❌ Missing | LOW | `Cmd::ScreenList` — currently prints "not implemented" |
| EditorViewerHistory | Alt-Shift-E | ❌ Missing | LOW | `Cmd::EditHistory` — currently prints "not implemented" |
| ScreenList | Alt-` | ✅ Done | — | `Cmd::ScreenList` — active screens/overlays dialog |
| EditorViewerHistory | Alt-Shift-E | ✅ Done | — | `Cmd::EditHistory` — panel directory history dialog |
| Search (quick) | Ctrl-S | ✅ Done | — | Panel incremental search |
| SkinSelect | Alt-S | ✅ Done | — | 8 built-in skins + user TOML skins, runtime selection dialog, config persistence |
| **Ctrl-X prefix commands** | | | | |
@@ -699,19 +699,19 @@ produce a prioritized implementation roadmap for full MC parity.
| ChangeOwn (chown) | Ctrl-X o | ✅ Done | — | Owner dialog |
| Link (hard) | Ctrl-X l | ✅ Done | — | |
| Symlink | Ctrl-X s | ✅ Done | — | |
| Relative symlink | Ctrl-X v | ❌ Missing | MEDIUM | `Cmd::SymlinkRelative` — currently prints "not implemented" |
| Edit symlink | Ctrl-X Ctrl-S | ❌ Missing | LOW | `Cmd::SymlinkEdit` — currently prints "not implemented" |
| Compare dirs | Ctrl-X d | ❌ Missing | MEDIUM | Mark files that differ between panels |
| Relative symlink | Ctrl-X s | ✅ Done | — | `Cmd::SymlinkRelative` — creates symlink with computed relative target |
| Edit symlink | Ctrl-X v | ✅ Done | — | `Cmd::SymlinkEdit` — reads existing target, opens edit dialog |
| Compare dirs | Ctrl-X d | ✅ Done | — | Size-only mode matching MC; marks files differing between panels |
| Compare files | Ctrl-d | ❌ Missing | LOW | Built-in diff viewer |
| PanelInfo | Ctrl-X i | ❌ Missing | MEDIUM | Switch other panel to Info mode |
| PanelQuickView | Ctrl-X q | ❌ Missing | MEDIUM | Switch other panel to Quick View |
| ExternalPanelize | Ctrl-X ! | ❌ Missing | LOW | `Cmd::Panelize` — currently prints "not implemented" |
| ExternalPanelize | Ctrl-X ! | ✅ Done | — | `Cmd::Panelize` — external panelize dialog |
| HotListAdd | Ctrl-X h | ✅ Done | LOW | `Ctrl-X h` triggers AddCurrent (loads hotlist, adds cwd, saves) |
| Jobs | Ctrl-X j | ❌ Missing | LOW | `Cmd::Jobs` — currently prints "not implemented in this build" (module being integrated) |
| VfsList | Ctrl-X a | ❌ Missing | LOW | `Cmd::VfsList` — currently prints "not implemented" (module being integrated) |
| Jobs | Ctrl-X j | ✅ Done | — | `Cmd::Jobs` — background jobs dialog (Arc<Mutex<JobRegistry>>) |
| VfsList | Ctrl-X a | ✅ Done | — | `Cmd::VfsList` — active VFS connections list |
| ChangeAttributes | Ctrl-X e | ❌ Missing | LOW | ext2 chattr |
**Summary:** ~52 of 77 filemanager bindings done (~68%). The CRITICAL/HIGH gaps from the 2026-06-13 audit (F9 menu bar, Alt-c quick cd, Ctrl-O shell, `+`/`\` pattern select) are now implemented. Remaining MEDIUM/LOW items are documented in §14.7 and §15.
**Summary:** ~65 of 77 filemanager bindings done (~84%). All CRITICAL/HIGH gaps closed. Remaining MEDIUM items: PanelInfo (C-x i), PanelQuickView (C-x q). Remaining LOW items: Compare files (Ctrl-d), Change Attributes (C-x e), listing format dialog.
### 14.2 F9 Menu System — Complete Inventory and Gap
@@ -743,7 +743,7 @@ MC's F9 bar has 5 entries: **Left** · **File** · **Command** · **Options** ·
|---|---|---|---|---|
| 1 | View | F3 | ✅ Done | — |
| 2 | View file... | (dialog) | ❌ Missing | LOW |
| 3 | Filtered view | Alt-! | ❌ Missing | MEDIUM | `Cmd::FilteredView` stub |
| 3 | Filtered view | Alt-! | ✅ Done | — | `Cmd::FilteredView` — command output viewer dialog |
| 4 | Edit | F4 | ✅ Done | — |
| 5 | Copy | F5 | ✅ Done | — |
| 6 | Chmod | Ctrl-X c | ✅ Done | — |