PLAN: P5 deferred with rationale + Linux packaging + QEMU boot verification
§17.4 row 5 (P5 SaveBeforeClose Y/N/Esc legend) verified: the prompt
already routes through the same '[dialog] _default_' / 'dhotnormal'
colour palette that render_button_row consumes for text and hotkey
styling. Visual difference (inline sentence vs button bar) is
intentional MC parity. Migrating to render_button_row would split
the prompt into two lines and break MC behaviour for no functional
gain. No code change required.
Linux packaging verification (recorded in changelog):
- tlc-1.0.0-linux-x86_64.tar.gz INSTALL.sh --user tested end-to-end
into a temp $HOME after fixing duplicate mkdir + missing subdir
creation for --user mode (commit 20ed0246b3).
- tlc version / tlcedit --version / tlcview <FILE> all respond.
- .deb extracted cleanly via dpkg-deb -x; structure correct.
QEMU boot verification (recorded in changelog):
- build/x86_64/redbear-mini.iso (512 MB) boots to userspace via OVMF.
- Kernel loaded, initfs switchroot to /usr succeeded, init services
attempted. strings confirms usr/bin/{tlc,tlcedit,tlcview,
tlc-pty-login} are bundled.
- Pre-existing tokio panic in redbear-sessiond is unrelated to tlc.
Header status line + date bumped. Changelog gains a 2026-06-21 entry
documenting all three verifications.
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
Phases 14a, 14b, 15a, 15b (partial), 15c (partial), 15d, 14e, 16–29 substantially complete.
|
||||
Dialog unification: §17.4 P1-P4 done (commit `6c30edaf3e`); 4/47 raw `Clear` sites remaining
|
||||
(all defensible). P5-P7 deferred.
|
||||
**Last updated:** 2026-06-21 — §17.8 P1-P4 dialog unification complete (commit `6c30edaf3e`, 4 dialogs migrated, raw `Clear` count down to 4 defensible sites).
|
||||
**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, Phase 19, Phase 20, Phase 21, Phase 22, Phase 23, Phase 24, Phase 25, Phase 26) · 2026-06-21 (Phase 27, Phase 28, Phase 29, §17 dialog audit + §17.8 P1-P4 completion)
|
||||
**Last updated:** 2026-06-21 — P5 verification (no change needed) + Linux packaging end-to-end smoke test + QEMU ISO boot verification. INSTALL.sh bugs fixed (commit `20ed0246b3`).
|
||||
**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, Phase 19, Phase 20, Phase 21, Phase 22, Phase 23, Phase 24, Phase 25, Phase 26) · 2026-06-21 (Phase 27, Phase 28, Phase 29, §17 dialog audit + §17.8 P1-P4 completion + Linux dist/ packaging + QEMU boot verification + P5 deferred-with-reason)
|
||||
**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.
|
||||
@@ -1517,11 +1517,16 @@ These are key hints (Tab/Enter/Esc), not clickable buttons. Optional: migrate to
|
||||
two F9 menus diverge in chrome. Estimated 5-10 LOC, no test needed (the dropdown
|
||||
behavior is unchanged).
|
||||
|
||||
5. **P5 — `editor/render.rs:469-519` SaveBeforeClose Y/N/Esc legend (LOW–MEDIUM)** —
|
||||
replace hand-rolled Spans with `render_button_row` for consistency with the migrated
|
||||
file-manager dialogs. Estimated 20-30 LOC + 1 test. Defensible to leave as-is because
|
||||
the prompt label and Y/N/Esc are tightly coupled (the prompt text mentions
|
||||
"Save before close?" then "Y/N/Esc" — they're a single sentence, not a button bar).
|
||||
5. **P5 — `editor/render.rs:469-519` SaveBeforeClose Y/N/Esc legend (RESOLVED 2026-06-21,
|
||||
no change needed)** — verified that the Y/N/Esc prompt already uses the unified
|
||||
`[dialog] _default_` and `[dialog] dhotnormal` colour keys (`render_button_row`
|
||||
consumes the same keys for text and hotkey colours). The visual is **inline letters
|
||||
within a sentence** ("Press Y to save, N to discard, Esc to cancel"), which
|
||||
matches MC's save-before-close prompt exactly. Migrating to `render_button_row`
|
||||
would split this into two lines (message + button bar) and break MC parity for
|
||||
no functional gain. **No code change required**; the prompt is already palette-
|
||||
consistent with the unified button system. Future migration only warranted if
|
||||
a user explicitly reports confusion — defer to user-feedback-driven polish.
|
||||
|
||||
6. **P6 — viewer/editor SaveBeforeClose unification (LOW)** — viewer uses inline
|
||||
header-bar text; editor uses popup. **These are two different render strategies for
|
||||
@@ -1600,14 +1605,45 @@ exactly 4 sites, all defensible:
|
||||
Tests: 1184 passing, 0 failing (was 1180; +4 from P1-P4). Both release builds clean
|
||||
(default + `--features sftp`).
|
||||
|
||||
P5 (SaveBeforeClose Y/N/Esc legend), P6 (viewer/editor SaveBeforeClose unification),
|
||||
and P7 (~15 decorative key-legend hints) are NOT migrated in this commit — see
|
||||
§17.4 for rationale and deferral reasoning.
|
||||
P5 (SaveBeforeClose Y/N/Esc legend) was resolved 2026-06-21 without code
|
||||
change — verified the prompt already routes through the same `[dialog] _default_` /
|
||||
`dhotnormal` colour palette that `render_button_row` uses; layout difference
|
||||
(inline sentence vs button bar) is intentional MC parity. See §17.4 row 5.
|
||||
|
||||
P6 (viewer/editor SaveBeforeClose unification) and P7 (~15 decorative key-legend
|
||||
hints) remain deferred — see §17.4 rows 6-7 for rationale.
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
- **2026-06-21** — **P5 deferred with rationale + Linux packaging verification**: §17.4 row 5
|
||||
verified that editor SaveBeforeClose Y/N/Esc prompt already routes through the same
|
||||
`[dialog] _default_` / `dhotnormal` colour palette that `render_button_row` consumes
|
||||
for text and hotkey colours. The visual difference (inline sentence "Press Y to save,
|
||||
N to discard, Esc to cancel" vs button bar layout) is intentional MC parity. No
|
||||
code change required. **Linux package smoke test**: `tlc-1.0.0-linux-x86_64.tar.gz`
|
||||
`INSTALL.sh --user` runs cleanly into a temp $HOME after fixing duplicate `mkdir -p`
|
||||
+ missing subdir creation for `--user` mode (commit `20ed0246b3`). `tlc version`
|
||||
/ `tlcedit --version` / `tlcview <FILE>` all respond. `.deb` extracted cleanly
|
||||
via `dpkg-deb -x` and binaries verified. **QEMU ISO boot**: `build/x86_64/redbear-mini.iso`
|
||||
(512 MB) boots to userspace via OVMF — kernel loaded, initfs switchroot to /usr
|
||||
succeeded, all init services attempted. `strings` confirms `usr/bin/{tlc,tlcedit,
|
||||
tlcview,tlc-pty-login}` are bundled in the ISO. Pre-existing tokio panic in
|
||||
redbear-sessiond (D-Bus daemon) is unrelated to tlc.
|
||||
|
||||
- **2026-06-21** — **PLAN §17.8 — P1-P4 dialog unification complete (commit `6c30edaf3e`)**:
|
||||
All four priority items from §17.4 executed. P1 widget/dialog.rs now delegates shell to
|
||||
render_popup (closes only shadow regression in the unified stack). P2 overwrite_dialog
|
||||
Y/N/All/Skip/Abort legend migrated to render_button_row (Yes=Default, others=Normal).
|
||||
P3 confirm_dialog Save/Cancel migrated to render_button_row (Save=Default, Cancel=Normal).
|
||||
P4 editor/menubar.rs F9 dropdown migrated to render_popup, matching the
|
||||
already-migrated filemanager/menubar.rs dropdown. Acceptance criterion from §17.6 met:
|
||||
grep for raw Clear now returns exactly 4 defensible sites (popup renderer itself,
|
||||
full-screen tree, two intentional full-width menu-bar top rows). widget/dialog.rs no
|
||||
longer appears. 1184 tests passing (+4 from P1-P4). PLAN §17.8 added with full
|
||||
per-P commit refs and acceptance-criterion audit.
|
||||
|
||||
- **2026-06-20** — **Phase 19 column (rectangular) block operations**: TLC editor gains MC's column-block mode. New `SelectionMode::{Stream, Column}` enum on `Cursor`; column anchor stored in parallel `column_anchor: Option<usize>`; `column_selection_rect()` returns normalized `ColumnRect {start_line, start_col, end_line, end_col}` (start_line ≤ end_line, start_col ≤ end_col); `selected_text()` for column mode joins rows with `\n`; `delete_selection()` strips rectangle columns from each line, leaves rest intact; `start_selection()`/`start_column_selection()` are mutually exclusive (switching clears the other anchor). Alt+Arrow / Alt+PgUp / Alt+PgDn start/extend column selection (MC `MarkColumn*` bindings). F5/F6/F8 work transparently in column mode via unified `selected_text()` / `delete_selection()`. Renderer uses new `line_selection_range()` helper to compute per-line byte ranges from either stream or column source; column cells get `marked_bg` highlight. PLAN.md §15d row 21 marked ✅ Done. 1119 tests pass.
|
||||
|
||||
- **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.
|
||||
|
||||
Reference in New Issue
Block a user