From bd51083a4eebb64868bbe7b72d007ef9579d7ad6 Mon Sep 17 00:00:00 2001 From: vasilito Date: Sat, 20 Jun 2026 18:01:45 +0300 Subject: [PATCH] =?UTF-8?q?tlc:=20PLAN.md=20=E2=80=94=20log=20Phase=2018?= =?UTF-8?q?=20completion=20(all=2016=20dialogs=20migrated)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 18 dialog popup shell migration is now complete. All 16 dialogs from the Phase 17 follow-up list have been migrated to terminal::popup::render_popup, giving them all the MC-matching rounded borders + drop shadow chrome. Commits in the Phase 18 series: e4987256f7 — Phase 18a: filter, encoding, pattern, confirm, overwrite, layout, panel_options, chattr 2b2b5803ba — Phase 18c: permission, owner, connection, config, compare, sort, progress c032c9a787 — menubar dropdown (via user commit) Tree (full-screen directory tree) intentionally skipped — uses the entire frame area, not a centered popup, so it does not benefit from the popup shell or drop shadow. Remaining Clear uses in the codebase are all legitimate: - menubar top F9 bar (not a popup) - tree.rs (full-screen dialog) - popup.rs (render_popup itself) - dialog.rs (Dialog widget body clear) Tests: 1112 passed; release binaries build clean. --- local/recipes/tui/tlc/PLAN.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/local/recipes/tui/tlc/PLAN.md b/local/recipes/tui/tlc/PLAN.md index f38cb8f907..c08a1a2a8d 100644 --- a/local/recipes/tui/tlc/PLAN.md +++ b/local/recipes/tui/tlc/PLAN.md @@ -1,9 +1,9 @@ # Twilight Commander (TLC) — Pure Rust Reimplementation Plan **Status:** Architecture chosen. Implementation in progress. Phases 0–8 substantially complete. -Phases 14a, 14b, 15a, 15b (partial), 15c (partial), 15d (partial), 15e, 16, 17 substantially complete. -**Last updated:** 2026-06-20 — Phase 17 skin_dialog popup shell; 16/30+ dialogs still bypass render_popup (follow-up work). -**Date:** 2026-06-12 (initial) · 2026-06-13 (rename + comprehensive review + audit fixes) · 2026-06-19 (bug fixes, standalone binaries, syntax highlighter, parity audit reconciliation) · 2026-06-20 (Phase 16, Phase 17) +Phases 14a, 14b, 15a, 15b (partial), 15c (partial), 15d (partial), 15e, 16, 17, 18 substantially complete. +**Last updated:** 2026-06-20 — Phase 18 complete (all 16 listed dialogs migrated to render_popup); 4 remaining Clear uses are legitimate (top bar, full-screen tree, render_popup impl, Dialog widget inner). +**Date:** 2026-06-12 (initial) · 2026-06-13 (rename + comprehensive review + audit fixes) · 2026-06-19 (bug fixes, standalone binaries, syntax highlighter, parity audit reconciliation) · 2026-06-20 (Phase 16, Phase 17, Phase 18) **Branch:** `0.2.4` **Decision authority:** User selected Option A (Pure Rust TLC) on 2026-06-12. **Scope:** Reimplement ALL of Midnight Commander (MC 4.8.33) in pure Rust. @@ -1413,6 +1413,8 @@ All 1108 existing tests pass unchanged. ## Changelog +- **2026-06-20** — **Phase 18 dialog popup shell migration (complete)**: All 16 listed dialogs from the Phase 17 follow-up list migrated from bespoke `Clear`+`Block` to `terminal::popup::render_popup`, inheriting MC-matching rounded borders + drop shadow + title styling. Commits: `e4987256f7` (Phase 18a: filter_dialog, encoding_dialog, pattern_dialog, confirm_dialog, overwrite_dialog, layout_dialog, panel_options, chattr_dialog), `2b2b5803ba` (Phase 18c: permission, owner, connection_dialog, config_dialog, compare, sort_dialog, progress), `c032c9a787` (menubar dropdown via user commit). Tree (full-screen) intentionally skipped — uses the entire frame, no popup shell. Each migrated dialog lost 8-15 lines of inline geometry+Clear+Block+title styling; title now derives from `[dialog] dtitle` via the unified shell. + - **2026-06-20** — **Phase 17 skin_dialog popup shell**: `src/filemanager/skin_dialog.rs::render()` migrated from bespoke `Clear`+`Block` (no shadow, square borders) to `terminal::popup::render_popup` (rounded borders + MC-matching drop shadow + centered layout). Skin dialog now matches the premium chrome of all 13 other TLC dialogs. Duplicate `centered_rect` helper deleted. New `render_drops_shadow_outside_popup` test asserts the bottom-right cell outside the popup carries `theme.shadow` background — validates MC's `tty_draw_box_shadow` at the dialog level. 1112 tests pass. **Follow-up work**: 16 dialogs still use `Clear`+`Block` directly (sort, compare, overwrite, filter, tree, encoding, connection, layout, owner, panel_options, pattern, confirm, config, permission, chattr, progress) and need the same migration. - **2026-06-20** — **Phase 16 unified button rendering**: Three separate button rendering paths collapsed into one. New `widget::button::render_button` (normal `[ X ]`) + `render_default_button` (`[< X >]`) + `render_button_row` (variable count, auto-sized, centered). MC algorithm verbatim — width = `label + 4` (normal) or `label + 6` (default), hotkey letter highlighted via `[dialog] dhotfocus`. All 5 ops dialogs + the Dialog widget now route through this single function. Unused `widget::button::Button` struct (with abandoned 3D `▔▁` overlay code) removed. Section §16 added with full MC algorithm reference. 1108 tests pass.