From ed77278066ee95061714175a651f1eecb5227338 Mon Sep 17 00:00:00 2001 From: vasilito Date: Fri, 19 Jun 2026 08:56:45 +0300 Subject: [PATCH] =?UTF-8?q?tlc:=20update=20PLAN.md=20+=20README=20?= =?UTF-8?q?=E2=80=94=20VFS=20integration=20done,=20clippy=20clean,=20964?= =?UTF-8?q?=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PLAN.md §3.A item 6 (VFS): resolved — panel now browses archives in-place PLAN.md §3.A item 8 (clippy): resolved — all lints clean PLAN.md §3.B item 18 (clippy): resolved PLAN.md §14.1 summary: 67/77 bindings (87%), remaining MEDIUM in progress README: 964 tests, phase 15h file highlighting --- local/recipes/tui/tlc/PLAN.md | 10 +++++----- local/recipes/tui/tlc/README.md | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/local/recipes/tui/tlc/PLAN.md b/local/recipes/tui/tlc/PLAN.md index 7fa10920a6..820ee7a6cc 100644 --- a/local/recipes/tui/tlc/PLAN.md +++ b/local/recipes/tui/tlc/PLAN.md @@ -142,9 +142,9 @@ below) are reconciled with the 23-row findings table in §3.B. | 3 | HIGH | Cargo.toml `tar = ["dep:tar"]` and `zip = ["dep:zip"]` tautological | ❌ **NOT FIXED** — still in Cargo.toml:101-102 | | 4 | HIGH | `redox` feature uses `redox-scheme 0.4` which doesn't compile on Linux | ✅ **RESOLVED** — bumped to 0.11 (current version) | | 5 | HIGH | `editor::Buffer::to_string` shadows `std::string::ToString::to_string` | ✅ **RESOLVED** — renamed to `as_string`, all callers updated | -| 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** | +| 6 | MEDIUM | VFS backends defined but `for_scheme()` only returns `local` | ✅ **RESOLVED** — Panel now enters archives (.tar, .tar.gz, .tar.bz2, .tar.xz, .zip, .cpio) when pressing Enter, browsing contents via VFS backend; exits back to local filesystem on '..' at archive root | | 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) | +| 8 | MEDIUM | 40+ clippy warnings (unused imports, dead code) | ✅ **RESOLVED** — all clippy lints clean (1 pre-existing warning in mc_ext.rs); 20 warnings fixed across 9 files (manual clamp, io::Error::other, Box::default, from_ref, boolean simplification, collapsible_match false positives suppressed with rationale) | | 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 | @@ -172,13 +172,13 @@ below) are reconciled with the 23-row findings table in §3.B. | 15 | HIGH | Duplicate `bzip2` and `compression` features (both just `["dep:bzip2"]`) | `Cargo.toml:108-109` | | 16 | HIGH | Recipe's `--no-default-features` fallback silently disables tar/zip/syntect/i18n | `local/recipes/tui/tlc/recipe.toml:33-34` | | 17 | HIGH | `editor/buffer.rs::undo` does not re-validate gap/cursor alignment (untested) | `src/editor/buffer.rs:455-468` | -| 18 | MEDIUM | 65 clippy warnings (32 unused imports, 14 missing variant docs) | various | +| 18 | MEDIUM | ~~65 clippy warnings~~ | ✅ **RESOLVED** — All clippy lints clean (1 pre-existing warning in mc_ext.rs). 20 warnings fixed: manual clamp, io::Error::other, Box::default, from_ref, boolean simplification, collapsible_match false positives suppressed with rationale. | | 19 | MEDIUM | 0 tests in `editor/prompt.rs` (UTF-8 char boundary handling untested) | `src/editor/prompt.rs` | | 20 | MEDIUM | 0 tests in `editor/mode.rs` (`PromptKind` 6 variants) | `src/editor/mode.rs` | | 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` (3119), `editor/mod.rs` (2606) | both files | +| 24 | MEDIUM | Files > 1000 lines: `filemanager/mod.rs` (3117), `editor/mod.rs` (2606) | both files — deferred (stable, well-tested) | | 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 | @@ -711,7 +711,7 @@ produce a prioritized implementation roadmap for full MC parity. | VfsList | Ctrl-X a | ✅ Done | — | `Cmd::VfsList` — active VFS connections list | | ChangeAttributes | Ctrl-X e | ❌ Missing | LOW | ext2 chattr | -**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. +**Summary:** ~67 of 77 filemanager bindings done (~87%). All CRITICAL/HIGH gaps closed. VFS archive panel integration done. File highlighting done. Clippy clean. Remaining MEDIUM items: PanelInfo (C-x i), PanelQuickView (C-x q) — in progress. Remaining LOW items: Compare files (Ctrl-d), Change Attributes (C-x e), listing format dialog, QuitQuiet (Shift-F10). ### 14.2 F9 Menu System — Complete Inventory and Gap diff --git a/local/recipes/tui/tlc/README.md b/local/recipes/tui/tlc/README.md index 07a182bb48..75b5828895 100644 --- a/local/recipes/tui/tlc/README.md +++ b/local/recipes/tui/tlc/README.md @@ -28,7 +28,7 @@ double reading: **T**wilight **L**ist-and-**C**opy (the function) and local/recipes/tui/tlc/ ├── PLAN.md ← canonical plan, phase status, quality assessment ├── recipe.toml ← cookbook recipe (custom template, cargo build) -└── source/ ← PURE RUST — 109 .rs files, 43k+ lines +└── source/ ← PURE RUST — 113 .rs files, 46k+ lines ├── Cargo.toml ← [package] name = "tlc" ├── config/default.toml ├── locales/*.yml ← rust-i18n catalogues @@ -86,7 +86,7 @@ cargo build --release --target x86_64-unknown-redox ```bash cd local/recipes/tui/tlc/source cargo test --lib -# → 959 passed; 0 failed (verified 2026-06-19) +# → 964 passed; 0 failed (verified 2026-06-19) ``` ## Linux Portability