Skip to content

Fix terminal exit bugs, add help search, implement copy dialog options#14

Merged
bluestreak01 merged 2 commits intomasterfrom
vi_bugfix
Apr 6, 2026
Merged

Fix terminal exit bugs, add help search, implement copy dialog options#14
bluestreak01 merged 2 commits intomasterfrom
vi_bugfix

Conversation

@bluestreak01
Copy link
Copy Markdown
Member

@bluestreak01 bluestreak01 commented Apr 6, 2026

Summary

  • Fix terminal exit requiring extra Enter — shell/claude panels now set dirty = true on process exit, so the UI redraws immediately instead of waiting for user input
  • Fix terminal exit landing in editor — consequence of the above; the extra Enter was being processed by the file panel, accidentally opening files
  • Add search to help dialog (F1) — type to filter entries with match highlighting, backspace to edit, all navigation still works
  • Implement overwrite confirmation dialog — "Ask" mode now shows a red-themed per-file dialog with Overwrite/Skip/Skip All/Cancel options, works correctly for files inside directories
  • Implement all copy dialog options:
    • Overwrite modes: Ask, Overwrite, Skip, Rename, Append
    • Sparse file copy (SEEK_HOLE/SEEK_DATA on Linux, zero-block detection on macOS)
    • Copy-on-write (clonefile() on macOS/APFS, FICLONE ioctl on Linux/btrfs)
    • Symlink modes: Smart (follow top-level, preserve inside dirs), Follow, Preserve
    • Permission and extended attribute preservation
    • Write cache bypass (F_NOCACHE on macOS)
    • Multiple destinations (semicolon-separated paths)
    • Produce sparse enabled by default
  • Cursor positioning after mkdir (F7) — cursor jumps to the newly created directory

Test plan

  • Open terminal (Ctrl+O), type exit, verify it closes immediately without extra Enter
  • Verify focus returns to file panel after terminal exit
  • Open help (F1), type a search term, verify filtering and highlighting
  • Copy files with Ask overwrite mode, verify per-file dialog appears for conflicts
  • Test Skip, Skip All, Cancel in overwrite dialog
  • Copy with Rename mode to existing destination, verify auto-numbering
  • Test symlink copy modes (create symlinks, copy with Smart/Follow/Preserve)
  • Create directory (F7), verify cursor lands on new entry
  • Copy to multiple destinations using semicolons

🤖 Generated with Claude Code

- Fix shell/claude panels not redrawing on exit (missing dirty flag)
- Fix terminal exit landing in editor instead of file panel
- Add search/filter to help dialog (F1) with match highlighting
- Implement copy dialog overwrite modes (Ask/Overwrite/Skip/Rename/Append)
- Add per-file overwrite confirmation dialog with red themed UI
- Implement sparse file copy (SEEK_HOLE/SEEK_DATA on Linux, zero-block detection elsewhere)
- Implement copy-on-write (clonefile on macOS, FICLONE on Linux)
- Implement symlink modes (Smart/Follow/Preserve)
- Implement permission and extended attribute preservation
- Implement write cache bypass (F_NOCACHE on macOS)
- Implement multiple destination support (semicolon-separated)
- Position cursor on newly created directory after F7
- Default produce_sparse to true

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 50 tests for fs_ops: copy, conflict policies, sparse, CoW, symlinks,
  permissions, xattrs, plan_copy, exec_copy_item, unique_name, move_entry
- 14 tests for help dialog: filtered lines, highlight_spans, caching
- 3 tests for panel select_by_name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bluestreak01 bluestreak01 merged commit 2affec0 into master Apr 6, 2026
4 checks passed
@bluestreak01 bluestreak01 deleted the vi_bugfix branch April 6, 2026 06:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant