From a8e10e731a4ecc3447a0fabc3c3340aef47f6fb5 Mon Sep 17 00:00:00 2001 From: vasilito Date: Fri, 19 Jun 2026 08:32:00 +0300 Subject: [PATCH] =?UTF-8?q?tlc:=20update=20PLAN.md=20parity=20tables=20?= =?UTF-8?q?=E2=80=94=2065/77=20bindings=20done=20(84%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- local/recipes/tui/tlc/PLAN.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/local/recipes/tui/tlc/PLAN.md b/local/recipes/tui/tlc/PLAN.md index 4dfb326863..7fa10920a6 100644 --- a/local/recipes/tui/tlc/PLAN.md +++ b/local/recipes/tui/tlc/PLAN.md @@ -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>) | +| 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 | — |