Bugs and Defects Requiring Fixes
September 1, 2026 · View on GitHub
This file tracks fix-required bugs, architectural violations, and naming inconsistencies that require remediation.
Buglist is forward-looking (planned/in-progress). Completed items will be removed after fixed.
Ordering policy (for all editors, including AI editors):
- Put bugs that are high-impact first after that order remaining bugs by ease of implementation.
- Insert new approved bugs at the correct priority position (do not append by default).
- Bug numbering is top-to-bottom ascending (
BUG-1= highest priority). - Bug IDs are unstable labels and are likely to change often due to reprioritization/renumbering.
Current Runtime Defects (Highest Priority First)
BUG-1: Cycle-Volumes (</>, ,/.) Leaks Dir/File View State Across Volumes
- Description: Cycling logged volumes can cause dir/file window mode/state changes in one volume to appear in the other, instead of each volume retaining its own last-used state.
- Impact: Breaks per-volume navigation predictability and increases wrong-target risk during fast volume switching workflows.
- Remediation: Preserve and restore per-volume dir/file window state independently when cycling volumes. Add regression coverage for repeated
</>transitions across volumes with different view states. - Regression notes (manual, 2026-05-21):
F10can fail withCan't edit "/home/rob/.ytnova"after volume-cycle transitions, then succeeds again after cycling back.- With
SMALLWINDOWSKIP=0, cycling away and back from a zoomed file window can return the same location in small-window non-zoom state.
- Status: Fixed.
BUG-2: - Collapses a Directory Before Releasing Its Files
- Description: In directory mode,
-currently collapses the selected branch before releasing its files. This prevents a user from keeping the visible directory tree for navigation while removing the selected directory’s files from Showall and the statistics. - Expected: The first
-releases the selected directory’s files while keeping its visible subdirectories. The next-collapses those subdirectories. - Reproduction: Read a directory with subdirectories and files, then press
-. The branch collapses immediately instead of leaving its subdirectories visible while the selected directory’s files disappear from Showall and the statistics. - Impact: Users cannot narrow a logged tree to a wanted branch without also losing the visible path used to reach it.
BUG-3: Split-Panel State Isolation and Restore Authority Family
- Description: BUG-3 is the root split-panel family. BUG-3.1 through BUG-3.5 are all visible effects of the same underlying F8 split-state architecture problem.
- Family contract: each panel must keep its own state record; restore must use stable identity and deterministic fallback; redraw must never become authority; split transitions must not import or guess state from the other panel.
- Related:
ROADMAPTask 31 (split selection semantics/regression coverage). - Status: Fixed.
BUG-3.1: Split Tab Transition Can Trigger Obvious Wrong-Surface Refresh
- Description: During
F8split copy-destination preparation,Tabcan trigger a visibly incorrect/ugly window refresh where redraw surface ownership appears unstable even though source selection/tag state remains intact. - Repro (manual, 2026-05-22):
- Source flow: enter
/home/rob/ytreenova/src/cmd, tag first files, startc,Enterinto destination prompt, then cancel/return. - Split flow:
F8,Tab,Enterto leave file window, cycle destination tree,Home,M 00, select00. - Press
Tabback.
- Source flow: enter
- Expected: Stable panel redraw across
Tabtransitions with no obvious wrong-surface flash/churn. - Actual: Very obvious ugly refresh happens at
Tabtransition. - Notes:
- In this flow, source selection/tag identity stayed unchanged (render/refresh defect, not BUG-3 selection-loss itself).
- Impact: Degrades trust and usability in high-frequency split copy/move workflows.
- Remediation: Audit split redraw ownership/order around
Tabtransition and destination-prep mode switches; enforce deterministic repaint sequencing for active/inactive surfaces. - Status: Fixed.
BUG-3.2: Volume Switch Can Lose Per-Volume File Context (SMALLWINDOWSKIP=1)
- Description: With
SMALLWINDOWSKIP=1, switching between logged volumes can lose previously selected deep file context and return to parent tree location instead. - Repro (manual, 2026-05-22):
yt ~log /home/rob/xtreefanpage- Enter
/home/rob/xtreefanpage/download, selectnoans.zip log /home/rob/ytreenova- Enter
/home/rob/ytreenova/src/cmd, selectrename.c - On
~select end dir,k release ~ - Switch to
/home/rob/ytreenova
- Expected: Return to prior file context (
/home/rob/ytreenova/src/cmd, selectedrename.c) for that volume. - Actual: Selection returns in tree context with
/home/rob/ytreenova/src/cmdmoved to a different directory-row position (reported as second-from-bottom), not preserved file-context state. - Additional observation:
- After moving
/home/rob/ytreenova/src/cmdto/home/rob/ytreenovaand switching back to/home/rob/xtreefanpage, view no longer returns to/home/rob/xtreefanpage/download; lands at/home/rob/xtreefanpagedir view. SMALLWINDOWSKIP=0not yet tried for this defect family.
- After moving
- Impact: Breaks per-volume resume guarantees and creates wrong-target risk during cross-volume workflows.
- Remediation:
- Persist a per-volume file-context anchor by stable identity (
dir path+selected file path/name+focus/view mode), not by transient row position. - Do not persist raw
DirEntry*/FileEntry*pointers across rebuild/rescan/volume-switch boundaries; re-resolve from stable keys after list rebuild. - Restore with deterministic fallback order: exact file match -> same directory anchor -> first visible entry.
- Guard post-switch dereferences when lists are empty/missing (
vol,dir_entry_list,total_dirs) so restore paths fail closed instead of reading invalid state.
- Persist a per-volume file-context anchor by stable identity (
- Status: Fixed.
BUG-3.3: Tree Viewport Reanchors Unexpectedly During Navigation and Panel Reactivation
- Description: Tree viewport origin must remain panel-local and stable whenever the active selection is still valid and visible. In practice,
Entertransitions,Tabreactivation, and hidden-dotfile restore paths can still reanchor the tree and make it shift upward or downward even though no scroll is required. - Repro (manual, 2026-05-29 / 2026-05-31):
yt ~/ytreenova- Move selection to
src/cmd - Press
Enter, thenEnteragain HIDEDOTFILES=0 yt ~/ytreenova /mnt/c/Users/Henry/Desktop/- Move to
/home/rob/ytreenova/src/cmd F8,Tab,/, select/mnt/c/Users/Henry/Desktop/Wiki & electronics/Music studies, thenTab
- Expected: The tree viewport remains stable unless scroll is required to keep the active selection visible (for example when selection moves beyond the visible viewport). Reactivating a panel must restore the same frozen tree state the panel had before losing focus, regardless of hidden-dotfile settings.
- Actual: Tree content shifts unexpectedly while selection/context remains within what should be a stable viewport, and the reactivated panel can jump to a different origin when
HIDEDOTFILES=0. - Spec Violations:
docs/SPECIFICATION.md§3.1 Navigation Stabilitydocs/SPECIFICATION.md§3.4 Tree Up/Down Edge-Scroll Ruledocs/SPECIFICATION.md§3.4 Tree Home/End Visibility Ruledocs/SPECIFICATION.md§5.2 Window/Mode Context persistencedocs/SPECIFICATION.md§5.1 Freeze/Resume Ruledocs/SPECIFICATION.md§5.3 Render Is Not Authority Ruledocs/SPECIFICATION.md§5.3 Hidden-Prefix Selection Accounting Rule
- Impact: Breaks navigation predictability and panel-reactivation trust by causing unexpected visual movement during routine navigation and split-state restore flows.
- Remediation:
- Enforce explicit viewport-anchor rules for tree rendering during all panel restore and mode-transition paths.
- Disallow non-required viewport origin changes when selection remains visible/valid.
- Use deterministic viewport adjustment only for visibility preservation, not as a side-effect of redraw/rebind paths.
- Status: Fixed.
BUG-3.4: Mkdir Triggers Unnecessary Relog and Resets Tree State
- Description: Creating a directory with
Mcan force a relog-style tree rebuild that reanchors selection and resets the visible tree state, even though the parent tree is already valid and only an incremental redraw/update is needed. - Repro (manual, 2026-05-30):
yt ~/ytreenova /mnt/c/Users/Henry/Desktop/- Navigate to a tree location with a logged parent and stable viewport
- Press
M 00
- Expected: Directory creation updates the current tree in place, preserving the existing expansion/logging state and viewport origin when the current selection remains valid; no implicit relog or depth reset.
- Actual: The tree is relogged/reset one level and prior tree state is lost.
- Spec Violations:
docs/SPECIFICATION.md§3.3 Directory Memory Commands (Structural Controls)docs/SPECIFICATION.md§5.2 State Persistence
- Impact: Breaks tree-state predictability and can silently discard user navigation context during ordinary directory creation.
- Remediation: Treat mkdir as an incremental tree mutation and restrict any repair to minimal bounds/selection clamping only when the current cursor or viewport offset would otherwise become invalid.
- Status: Fixed.
BUG-3.5: Split-Panel Filter State Leaks Across Panels on Shared Volumes and Volume Cycle
- Description: In split mode, a filespec filter set in one panel can appear in the other panel when both panels share the same volume, and it can also leak after the target panel cycles back to the same logged volume, instead of preserving panel-local filter state.
- Repro (manual, 2026-05-22):
- In left panel on volume 1, set a filter.
Tabto right panel on volume 2 (no filter change observed there).- In right panel, cycle to volume 1.
- Extension (manual, 2026-07-24):
- Enter split mode with
F8so both panels are on the same drive. - Set a filter in one panel.
- Press
Tabto the other panel without cycling volumes.
- Enter split mode with
- Expected: The target panel restores its own saved filter state for that panel/volume context (panel-local isolation), not the other panel’s filter.
- Actual: The target panel shows the other panel’s filter even without a volume cycle.
- Spec Violations:
docs/SPECIFICATION.md§5.1 Active-Only Mutation Ruledocs/SPECIFICATION.md§5.2 Filter (Filespec): Independent search/filter strings
- Impact: Cross-panel state leakage can silently narrow file lists and increase wrong-target risk.
- Remediation:
- Make filter ownership panel-local for split state (panel + volume context), not volume-global.
- On
F8,Tab, and volume-cycle transitions, restore filter from the target panel snapshot only; do not import from the opposite panel. - Remove shared-buffer/aliasing paths that let both panels read/write one filter instance.
- Enforce active-only mutation and inactive freeze semantics for filter state.
- Status: Confirmed.
BUG-3.6: Hidden UI Entries Still Influence Visible-Tree State
- Description: Entries that are hidden from the UI are not being fully excluded from navigation/state resolution. Hidden-dotfile and hidden-prefix paths can still influence visible-tree behavior, so the app can resolve or restore against a hidden ancestor or sibling path instead of treating the visible tree as authoritative.
- Repro (manual, 2026-06-04):
- Open a tree that contains both a visible target such as
srcand hidden-prefix content such as./tmp/session.castor~/.local/src. - Perform a normal jump/search flow that must land on the visible target.
- Open a tree that contains both a visible target such as
- Expected: Items hidden from the UI must not participate in ordinary visible-tree jumps, selection, or restore decisions.
- Actual: The jump resolves to a hidden-prefix path such as
/home/rob/.local/srcinstead of the visible~/ytreenova/src. - Impact: Demonstrates a broader architectural defect in hidden-item accounting and visible-tree authority, not just a one-off wrong row. It can misdirect routine navigation and make hidden entries behave as if they were still visible.
- Remediation: Make hidden-from-UI entries non-participants in the normal visible-tree resolver paths unless explicitly requested, and keep the visible-tree contract authoritative for jump, selection, and restore logic. Add regression coverage that distinguishes visible-tree targets from hidden-prefix matches.
- Status: Fixed.
BUG-4: F8 Dotfiles Toggle Leaks Across Panels
- Description: In
F8split mode, toggling dotfiles visibility (`do/undo) in the active panel can apply the same visibility change to the inactive panel. - Repro (manual):
- Enter split mode with
F8. - Keep the inactive panel parked on a different directory/view context.
- Toggle dotfiles in the active panel with
`.
- Enter split mode with
- Expected: Dotfiles visibility is panel-local in split mode; only the active panel changes.
- Actual: Inactive panel visibility changes too.
- Spec Violations:
docs/SPECIFICATION.md§5.1 Active-Only Mutation Ruledocs/SPECIFICATION.md§5.2 Freeze/Resume Rule (inactive panel must resume unchanged)
- Impact: Breaks panel isolation and can silently alter the source/destination working view.
- Remediation: Move dotfile-visibility ownership to panel-local split state and keep shared-tree updates limited to topology-only mirroring. Add split regression coverage for active-side dotfile toggles with inactive-panel state snapshots.
- Tests/Gates: Must have deterministic panel-isolation regression coverage under
tests/test_panel_isolation.py; gate viapytestsplit-isolation subset and PR full-QA CI. - Regression notes (manual, 2026-05-21):
- In split mode, active-panel dotfile toggles still influence inactive-panel behavior after
Tabtransitions. - Toggling in active file window can still perturb inactive tree presentation.
- In split mode, active-panel dotfile toggles still influence inactive-panel behavior after
- Status: Fixed.
BUG-5: F8 Dotfiles Toggle Causes Inactive Selection Jitter
- Description: In split mode, toggling dotfiles in one panel can make the inactive panel’s selected directory move away and then return (transient cursor/selection drift).
- Repro (manual):
- Enter split mode with
F8. - Park inactive panel on a stable directory selection.
- Toggle dotfiles in active panel (do/undo).
- Enter split mode with
- Expected: Inactive selection stays on the same directory identity when still visible/valid.
- Actual: Inactive panel selection briefly moves and then snaps back.
- Spec Violations:
docs/SPECIFICATION.md§5.3 Selection Retention Ruledocs/SPECIFICATION.md§5.3 Non-Invalidating Changes Ruledocs/SPECIFICATION.md§5.3 Render Is Not Authority Rule
- Impact: Indicates unstable cross-panel state restoration and increases risk of wrong-target operations after state churn.
- Remediation: Re-anchor inactive selection strictly by stable directory identity/path during mirror updates; never re-resolve by transient index unless deterministic fallback is required.
- Tests/Gates: Add deterministic regression asserting no inactive selection movement on non-invalidating dotfile toggles.
- Status: Fixed.
BUG-6: F8 + SMALLWINDOWSKIP=0 Tab Can Force Inactive Panel into Wrong Focus
- Description: With
SMALLWINDOWSKIP=0, when cursor is in the small file window on one panel,Tabto the other panel can show that inactive panel as file-focused/zoomed unexpectedly; tabbing back restores prior tree/small state. - Extension (manual, 2026-05-23): With
SMALLWINDOWSKIP=1, splitting from file view (EnterthenF8) could leave the inactive panel shown as tree/small untilTab, instead of immediately preserving file-view shape. - Repro (manual):
F10config, setSMALLWINDOWSKIP=0.- Enter split mode (
F8), enter small file window in one panel. - Press
Tabto switch active panel.
- Expected: Inactive panel remains in its frozen tree/small-window focus state; only active panel focus changes.
- Actual: Inactive panel can temporarily present the wrong file-focus/zoom state, then reverts on round-trip.
- Spec Violations:
docs/SPECIFICATION.md§5.1 Active-Only Mutation Ruledocs/SPECIFICATION.md§5.2 Window/Mode Context persistencedocs/SPECIFICATION.md§5.2 Freeze/Resume Rule
- Impact: Breaks trust in split focus separation and can trigger wrong-context commands.
- Remediation: Harden switch-time state transfer so focus/view state is restored from panel-owned snapshots only; forbid cross-panel focus inheritance during
Tabunless explicitly commanded by the active panel. - Tests/Gates:
tests/test_panel_isolation.py::test_split_tab_from_small_file_does_not_expand_inactive_paneltests/test_panel_isolation.py::test_split_from_big_file_keeps_inactive_panel_in_file_view
- Regression notes (manual):
- 2026-05-21: With
SMALLWINDOWSKIP=0,Tabcould show the inactive panel in zoomed file-window focus until tabbing back. - 2026-05-23: With
SMALLWINDOWSKIP=1, split from file view could keep inactive panel in tree/small untilTabflipped it to file view.
- 2026-05-21: With
- Status: Fixed.
BUG-7: Dir Display Mode Resets After Context Switch (^F/Future 1..4)
- Description: Setting a directory display mode while focused in dir/tree context can be lost after entering file/small-window context and returning to dir/tree context.
- Repro (manual):
- In dir/tree focus, press
^Fto cycle to a non-default dir display mode (for example Owner/Times). - Enter file/small-window focus.
- Return to dir/tree focus.
- In dir/tree focus, press
- Expected: Dir display mode remains as last set in dir context until explicitly changed.
- Actual: Dir display mode reverts/reset unexpectedly.
- Impact: Breaks context-local view-state persistence and makes display-mode controls feel unreliable.
- Remediation: Persist dir-context display mode independently across focus/context transitions, and preserve it when file-context display mode changes.
- Related:
ROADMAPTask 45 (1..9 FileInfoownership contract). - Status: No longer relevant.
BUG-8: F7 Preview Over-Restricts Command Availability
- Description:
F7mode is currently incomplete for inspect-and-act workflows. Too many common file actions are disabled, so users must leave preview to continue work. - Expected Behavior:
F7must allow a practical command subset for in-context file work (for example attributes/copy/delete/edit/filter/compare/move/new-date/open/print/rename/tag/untag/view/execute/quit paths as applicable).- Tagged/search workflow must operate in
F7:^T(tag-all),^S(search), then^V(view tagged/search results) without leaving preview. - In
F7preview, tagged search hits/results must be visibly highlighted. F8andTabmust remain disabled inF7preview mode so split/layout switching cannot mutate preview state unexpectedly.
- Impact: Makes
F7feel unfinished and adds avoidable friction in routine review workflows. - Remediation: Finish
F7as an in-place work mode: allow core actions (tag/search/view results/compare/copy/move/rename) without leaving preview, keepF8/Tabblocked for state safety, and add regression coverage for allowed actions and blocked keys. - Related: Existing regression intent for
F8-in-F7state safety must remain preserved and extended toTab. - Status: Confirmed.
BUG-9: Write Offers/Describes Actions That Are Not Context-Valid
- Description:
Writeformat/options/prompt/help are not consistently aligned with context (dir/file/archive/tagged) and can imply workflows that are unavailable or misleading in the active mode. - Impact: Reduces discoverability and trust, and creates avoidable trial-and-error in critical output/export flows.
- Remediation: Define and enforce a context-valid option matrix for
Write, expose only valid options in each mode, and keep prompt/help text explicit and non-jargon (including destination examples such as file output and printer-command output). KeepSPECIFICATION,F1help, and manpage/USAGE text synchronized with the same destination semantics. - Status: Confirmed.
BUG-10: Footer/Help/Prompt Trust Family
- Description: BUG-10 is the root footer keybinding/F1/prompt trust family. BUG-10.1 through BUG-10.4 are visible effects of the same underlying discoverability problem.
- Family contract: footer, F1 help, and prompt text must report the same available actions and context; help surfaces must not imply unavailable actions; cancel/exit paths must restore the normal context footer; archive-specific messages must report the actual attempted shortcut; archive tree rendering must stay structurally honest.
- Related:
ROADMAPTask 44 (Refine Contextual F1 Content and Footer-Parity Contract) and Task 44.1 (Add Contextual F1 Hyperlinks and Shared Explainer Pages). - Status: Fixed.
BUG-10.1: Copy/Move Cancel (Esc) Can Leave Footer Blank
- Description: In
Copy/Moveflows, canceling withEsccan leave the footer keybinding lines blank instead of restoring the normal context footer. - Findings:
- Deterministic repro under sanitizer gate (
make qa-sanitize) on 2026-05-16:tests/test_display_layout.py::test_dir_copy_to_missing_destination_prompts_create_and_no_restores_footerfails withAssertionError: Header/path row disappeared after canceling create prompt. - The failing path is directory copy to a missing destination where the create-directory prompt is canceled with
No.
- Deterministic repro under sanitizer gate (
- Impact: Hides command discoverability immediately after a canceled mutation flow and makes the UI look partially broken.
- Remediation: On all
Copy/Movecancel/exit paths (Escand equivalent cancel keys), restore footer keybinding/F1 ownership deterministically to the active view context and force a full footer redraw before accepting the next command. - Related:
BUG-32(footer restore consistency during input flows),ROADMAPTask 44 (Refine Contextual F1 Content and Footer-Parity Contract). - Status: Confirmed.
BUG-10.2: Prompt Footer/F1 Parity Can Hide Available Prompt Actions
- Description: In prompt-driven workflows, footer/F1 coverage can omit active prompt actions and semantics (for example completion/browse controls and compare/archive prompt meanings), leaving available behavior under-discoverable.
- Impact: Creates hidden-feature workflow confusion and high-friction issue reports during routine operations.
- Remediation: Enforce a prompt-context parity contract: footer shows currently available prompt actions; F1 may add concise semantics/examples for those same actions, but must not advertise unavailable actions.
- Related:
ROADMAPTask 44 (Refine Contextual F1 Content and Footer-Parity Contract),BUG-10.3(archive unavailable-action messaging),BUG-9(prompt/help context mismatch). - Status: Confirmed.
BUG-10.3: Archive Unavailable-Action Message Reports Wrong Shortcut
- Description: In archive mode, triggering
^Wcan show an error message for a different shortcut (^P is not available in archive mode). - Impact: Misleading feedback increases operator confusion and undermines trust in key/action hints.
- Remediation: Ensure unavailable-action messaging reports the actual attempted action/shortcut in archive context.
- Status: Confirmed.
BUG-10.4: Single-Empty-Directory Archive Can Collapse Tree Rendering
- Description: In archive mode, when the archive contains only one empty directory, ytnova can skip normal tree-node rendering and show that directory identity as appended archive-name/path text instead.
- Impact: Obscures archive structure and creates high-friction navigation confusion in a common edge case.
- Remediation: Keep archive tree rendering consistent in this edge case: render a proper directory node in the tree and keep archive identity separate from child directory labels.
- Related:
BUG-10.3(name-text rendering contamination),ROADMAPTask 14 (path/message formatting hygiene). - Status: Confirmed.
BUG-11: Progress Spinner Can Overwrite Footer/Prompt Help Surfaces
- Description: During long-running operations, spinner/progress rendering can overwrite footer keybinding or prompt text instead of using a non-obtrusive status area.
- Impact: Hides available actions and makes active workflows look unstable or hung.
- Remediation: Preserve footer keybinding/prompt/F1 ownership during progress updates. Render progress in a dedicated non-obtrusive status surface, and degrade to a compact indicator when space is constrained rather than overwriting user guidance text.
- Related:
ROADMAPTask 21 (Progress Indicators for Copy/Move/Delete/Archive Workflows),ROADMAPTask 44 (Refine Contextual F1 Content and Footer-Parity Contract), andROADMAPTask 44.2 (Keep Progress Indicators from Clobbering Footer/Prompt/F1 Guidance). - Status: Confirmed.
BUG-12: Copy/Move/PathCopy Rename Prompt Missing Explicit AS: Label
- Description: The first rename-target prompt in
Copy,Move, andPathCopycan appear asCOPY: <source> <edited_target>(and equivalents) without explicitAS:labeling, making source vs new-name intent ambiguous. - Impact: Increases wrong-target risk and slows high-frequency copy/move workflows because users must infer prompt semantics from field behavior.
- Remediation: Make rename intent explicit in prompt text for all three flows (for example
COPY: <source> AS: <target>), keep one-flow interaction depth, and keep destination-dir prompt behavior unchanged. Add focused regression coverage for prompt text/flow parity inCopy,Move, andPathCopy. KeepF1help, manpage/USAGE text, and specification wording synchronized with final prompt contract. - Related:
ROADMAPTask 43 (prompt/help clarity). - Status: Fixed.
BUG-13: File-View Focus Leak After Parent Jump (\\)
- Description: After entering parent-directory context from file view using
\\, navigation keys affect the directory pane before explicit mode switch. - Findings:
- Arrow keys can change adjacent directory selection while the user is still in file view.
Home/Endact on the directory window instead of the file list in this state.
- Impact: Breaks view isolation and can cause accidental navigation outside the intended file-list scope.
- Remediation: Keep navigation scope in the file list after
\\parent jump and require explicitEntertransition before directory-pane navigation is allowed. - Status: Confirmed.
BUG-14: Zoom/Split State Corruption After Parent/View Toggles
- Description: After a sequence involving show-all, repeated view-mode toggles, parent jump (
\\), and another view toggle, the UI exits the expected zoomed state and shows an empty small pane. - Findings:
- Layout unexpectedly switches back to tree + small window.
- Small window can become empty instead of preserving the current context.
- Impact: Breaks predictable navigation flow and increases risk of accidental context loss.
- Remediation: Preserve active zoom/view state across parent-jump and view-toggle transitions; prevent empty-pane state in this flow.
- Related:
BUG-13(same focus/state-transition family). - Status: Confirmed.
BUG-15: Long Lines Wrap Instead of Truncate in List Views
- Description: Long entries wrap to additional rows instead of truncating in single-row list rendering contexts (reported in
^fsmall-window flow and dir/tree list views). - Impact: Breaks scanability, corrupts row alignment, and causes ambiguous cursor context in navigation-heavy views.
- Remediation: Enforce truncate/clipping semantics for list-row rendering in these views and add regression tests that fail on wrapping behavior.
- Status: Confirmed.
BUG-16: Intermittent Showall/Global Filter Can Hide Matching Files
- Description: In intermittent edge-case
Showall/Global+ filter combinations, directories can show no files even when matching files exist. - Impact: Breaks trust in filter correctness and can make users miss valid results.
- Remediation: Capture a minimal deterministic repro and add regression coverage; verify file-list build/count/filter logic remains consistent in
Showall/Globalcontexts with active filters. - Status: Confirmed.
BUG-17: Directory Copy Prompt Does Not Clearly State Recursive Behavior
- Description: Directory copy flow prompt text is not explicit enough that directory copy is recursive, so users cannot reliably predict whether descendants are included.
- Impact: Creates avoidable trust/friction issues in backup-style workflows and increases accidental over-copy concern.
- Remediation: Make directory-copy prompts/confirmation text explicit about recursive behavior and resulting destination semantics before execution.
- Status: Confirmed.
BUG-18: Directory Copy Can Appear Successful While Producing No Effective Update
- Description: In some destination states (for example existing target or edge-case destination handling), directory-copy flow can look like it executed successfully while leaving destination contents unchanged or unclear to the user.
- Impact: High wrong-assurance risk for repeat backup workflows where users expect an update on each run.
- Remediation: Report explicit copy outcome (
updated,skipped,destination exists, or error) and never leave no-op outcomes ambiguous. Add regression coverage for existing-destination and missing-parent edge paths. - Status: Confirmed.
BUG-19: Archive Mutations Do Not Show Immediate Results in Archive View
- Description: In archive mode, mutating actions (for example
rename,mkdir, and copy-in flows) can succeed but the current archive listing does not reflect the change immediately. - Impact: Creates false-failure perception and high-friction workflow confusion because users may repeat operations that already succeeded.
- Remediation: After any successful archive mutation, update the archive view in-place so users immediately see the effect in the same archive context, with no manual refresh/re-entry/relog required. Preserve cursor/selection when possible.
- Related:
BUG-18(copy outcome clarity). - Status: Fixed.
BUG-30: Attributes Name Truncation Can Hide File Identity
- Description: In attributes/stat contexts, long file names can be truncated using a tail-only style (for example
...fy_xml_integrity.sh) that hides too much distinguishing information and makes similarly named files harder to differentiate at a glance. - Impact: Increases wrong-target risk during metadata workflows and slows navigation in dense directories with similar filenames.
- Remediation: Apply an identity-preserving truncation policy for filename-bearing attribute surfaces: keep static deterministic text (no marquee/auto-scroll), prefer
prefix…suffixfor plain filenames, and use suffix-focused clipping only where path-tail context is explicitly higher-value. - Related:
BUG-15(no-wrap/truncate contract),ROADMAPTask 19 (manual file-column width controls). - Status: Confirmed.
BUG-31: Internal Preview Down-Scroll Can Pass EOF and Repeat Last Page
- Description: In internal preview paths (
F7preview and internal^Vtagged viewer), down-scroll/page-down can continue past EOF and keep redisplaying the last page. Up-scroll behavior does not show this defect. External viewer mode stops correctly at EOF. - Impact: Produces misleading navigation state and inconsistent behavior between internal and external viewing paths.
- Remediation: Clamp downward preview offsets at the last valid page in shared internal preview rendering paths so bottom-of-file is a hard stop.
- Related:
F7preview and internal^Vtagged viewer should be treated as one defect family. - Status: Confirmed.
BUG-32: / Jump Replaces Footer Keybinding Hints with Prompt UI
- Description: Pressing
/currently switches footer content to aJump to:prompt UI instead of keeping the normal footer keybinding text visible while incremental jump runs. - Impact: Breaks the expected inline jump flow and creates avoidable UI churn during frequent navigation.
- Remediation: Keep footer keybinding text unchanged during
/incremental jump and apply immediate selection movement as characters are typed (for example/yjumps to the first matching entry) without footer prompt takeover. - Status: Confirmed.
BUG-33: Color Configuration Roles Are Misrouted Across Unrelated UI Surfaces
- Description: Legacy color-pair names and rendering usage did not map cleanly to visible UI roles. Changing one color key could affect unrelated surfaces, while some documented keys appeared unused or hard to observe.
- Historical manual findings (2026-06-25):
- Stats panel dynamic values are rendered with the same color as nearby static labels in several places, so values such as paths, filesystem names, counts, sizes, attributes, owners, and timestamps cannot be made white independently of labels.
- Stats section titles (
FILTER,VOLUME,VOLUME STATS,CURRENT DIR/CURRENT FILE,ATTRIBUTES) are inconsistently treated as border text versus ordinary text. WINDIR_COLORappears to affect the current filter value, static+dynamic text in volume stats, and current-dir totals/matches/tags text.WINFILE_COLORappears to affect autoview text.WINSTATS_COLORhas no obvious observed effect in the checked flows.BORDERS_COLORaffects line art, but also appears to affect the dynamic path part of the header, stats box titles, static+dynamic text in volume sections, current-dir/attributes path text, and all text in the attributes box.MENU_COLORaffects footer menu text and also the clock color.- Neutral interaction surfaces are inconsistent: footer prompts can turn grey wholesale, history can remain cyan-on-blue when it should be neutral dialog styling, and F2 option/help text mixes prompt, menu, and content roles.
- Expected: Color keys must map to coherent semantic roles. Borders/box lines, static labels, dynamic values, keybinding text, neutral dialog/history surfaces, prompt input fields, preview text, footer keybinding text, and F1 help text must be independently predictable enough that changing one role does not unexpectedly recolor unrelated UI surfaces.
- Impact: Makes theme tuning unreliable and confusing; users cannot produce a restrained, readable theme because color controls behave like cross-wired chimeras rather than intentional UI roles.
- Remediation:
- Audit all uses of semantic role pairs,
WbkgdSet,wattr*, andCOLOR_PAIRin the header, stats panel, footer/prompt, F2/history, autoview/preview, and dialog paths. - Split static stats labels from dynamic stats values at render call sites.
- Separate border/box-line roles from title text and content text.
- Audit all uses of semantic role pairs,
- Resolution:
- Public configuration now selects a semantic theme, while role definitions and file-type palettes live in
etc/ytnova.themesor user theme catalogs. - Stats labels/titles, dynamic values, borders, tree guides/margins, picker/help surfaces, severity dialogs, preview search hits, header paths, viewer paths, and the clock have dedicated semantic-role routing.
- Runtime color-pair vocabulary is semantic.
- Public configuration now selects a semantic theme, while role definitions and file-type palettes live in
- Related:
ROADMAPTask 61 (role-based theme system and restrained default palette). - Status: Resolved.
BUG-34: Recursive Scan Interrupt Responsiveness
- Description: Interrupting a recursive expansion (
*) viaESCis supported but requires multiple keypresses (Prompt Y/N). - Impact: Users cannot instantly halt accidental large-branch scans.
- Remediation: Evaluate if
ESCduringReadTreeshould immediately halt the scan once instead of prompting, given that partial results are preserved. - Status: Confirmed.
Correctness, Consistency, and Naming Defects (Priority Ordered)
BUG-35: Configuration Template Drift (VI_KEYS)
- Description: Discrepancy in default visibility and documentation for
VI_KEYS. - Findings:
default_profile_template.husesVI_KEYS=0.etc/ytnova.confusesVI_KEYS=0.- User scratchpad reports
ytnova.confhad1.
- Impact: Users may experience "magic" behavior changes if the disk-based config diverges from the internal template.
- Remediation: Ensure the
ytnova --initgeneration path strictly matches theetc/ytnova.confprovided in the distribution. - Status: Confirmed.
BUG-36: VI Mode Key Ambiguity and Collisions
- Description: When
VI_KEYS=1is enabled, lowercase navigation keys (h/j/k/l) collide with primary command keys without clear UI signaling. - Findings:
jmaps to bothACTION_MOVE_DOWN(viaVI_KEY_DOWN) and historically toACTION_LOG_VOLUME(though currentlyl/Lis the log volume key, older documentation/muscle memory remains confused).k/Kis used forACTION_VOL_MENU. In VI mode, lowercasekis stolen forUp, making the volume menu reachable only via uppercaseK.
- Impact: Inconsistent UI accessibility for power users.
- Remediation: Audit all
VI_KEYremappings inkey_engine.cand ensure the footer keybinding lines (display.c) dynamically update to show the uppercase variants whenVI_KEYS=1. - Status: Confirmed.
BUG-37: Incremental Search Legacy Mapping (F12)
- Description:
F12is used as an alias for/(Incremental Search/Jump), but its presence is inconsistent in help strings and documentation. - Impact: Confuses users about "hidden" keys.
- Remediation: Explicitly document
F12as a legacy alias or deprecate it in favor of standard/. - Parity Principle: Treat this as a documentation-parity defect class: no active keybinding may exist in runtime without consistent footer,
F1, and manpage/USAGE coverage. - Status: Confirmed.
BUG-38: Misleading Tree Expansion Action Names
- Description: The internal
YtreeNovaActionnames for tree expansion are swapped relative to their behavior and documentation. - Findings:
+key maps toACTION_TREE_EXPAND_ALL, but only expands one level.*key maps toACTION_ASTERISK, and expands recursively.
- Impact: Developer confusion and maintenance risk.
- Remediation:
- Rename
ACTION_TREE_EXPAND_ALL->ACTION_TREE_EXPAND(orACTION_TREE_EXPAND_LEVEL). - Rename
ACTION_ASTERISK->ACTION_TREE_EXPAND_RECURSIVE.
- Rename
- Status: Confirmed.
BUG-39: Intermittent Split-Brain Redraw Between Stats Box and Main Panes
- Description: Intermittently, the stats box redraw state can diverge from the main UI surfaces (
path,dir, andfilewindows), leaving one surface fresh while the other appears stale/corrupted. - Impact: Creates a visibly broken UI state and undermines trust in navigation context during active workflows.
- Remediation: Unify frame redraw ownership so stats and main panes are rendered from one layout snapshot in one update cycle, and force full-surface invalidation/redraw on resize/recovery/error paths.
- Related:
ROADMAPTask 22 (unified frame redraw contract). - Status: Confirmed (intermittent; no deterministic repro sequence yet).
BUG-40: Directory Copy/Move Can Blank or Partially Drop the Main Frame During In-Session Refresh
- Description: After accepting a directory copy or move target, the live view can blank or lose parts of the main frame while the tree updates. The tree content may remain or reappear, but header/path, border lines, stats, or footer can disappear temporarily, making the operation look visually broken even when the filesystem mutation succeeds.
- Repro (manual, 2026-08-11):
- Copy or move a directory in the logged tree.
- Representative recordings:
/home/rob/recordings/inbox/ytnova-20260811-154517-135295-pc3eF7.cast/home/rob/recordings/inbox/ytnova-20260811-155440-139983-Yoy25x.cast
- Expected: The existing view stays intact and the destination branch updates in-place with no blank screen, no partial frame loss, and no whole-screen redraw glitch.
- Actual: The directory tree can update while the surrounding frame drops out or goes blank long enough to look broken.
- Impact: High-trust workflow damage in copy/move paths because successful filesystem mutations still look like a rendering failure.
- Remediation: Treat directory copy/move refresh as a deterministic redraw/invalidation bug, not as prompt-flow work. Rebuild one authoritative frame update path for header/path, tree, file pane, stats, and footer so in-session directory mutations cannot leave partial surfaces behind.
- Related:
BUG-39(split-brain redraw),BUG-41(stats owner split),ROADMAPTask 22 (unified frame redraw contract). - Status: Confirmed.
BUG-41: Stats Panel Lacks a Single Coherent State/Render Owner
- Description: The stats area does not behave like one consolidated UI component with one authoritative state/render path. In broken states, one subsection (for example
ATTRIBUTES) can remain visible while the rest of the stats surface is blank or stale, which makes the panel look like multiple historical fragments glued together instead of one coherent unit. - Example symptom: During prompt-driven flows such as
Write, the right-side panel can show only the lowerATTRIBUTESsubsection while upper stats sections disappear, even though the outer frame and surrounding panes remain on screen. - Expected: Stats must be one complete component in the appstate architecture: one explicit owner for its projection, one layout contract, one redraw/invalidation path, and deterministic all-or-nothing rendering of its subsections.
- Impact: Breaks trust in the appstate architecture, makes redraw bugs harder to reason about, and creates a visibly kludged UI impression because users can see that different stats subsections are not being treated as one unit.
- Remediation: Define stats as a first-class appstate/render component with one authoritative projection boundary. Consolidate subsection visibility, titles, values, and borders under one render contract so prompt/modal flows cannot partially orphan or preserve only one subsection. Regression coverage should verify that stats either renders as one complete valid unit or is intentionally hidden as one unit.
- Related:
BUG-39(split-brain redraw),BUG-40(directory copy/move frame drop),docs/ARCHITECTURE.md§4.2.3 (AppStatetransition contract),ROADMAPTask 22.1 (unified stats + main-pane redraw contract). - Status: Confirmed.
BUG-42: File-Type Themes Exhaust Terminal Color Pairs Per Selector
- Description: File-type palette rules currently consume a terminal
COLOR_PAIRSentry for every extension selector, even when selectors use the same foreground/background style. - Impact: Long palettes can silently leave later selectors, including
LINKandEXEC, without their requested style. - Expected: YtreeNova must share one color pair for every identical foreground/background style, preserve selector precedence, and use the finite terminal pair table only for distinct styles.
- Status: Fixed.