Commit graph

22 commits

Author SHA1 Message Date
vrubelroman
92e72bc8c6 feat: theme selector dialog with live preview (t key)
Replace the simple cycleTheme() with a modal dialog that shows all
19 themes with color swatches, live preview on Up/Down navigation,
and commit/revert on Enter/Esc.

Changes:
- Add modalThemeSelect kind to modalKind enum
- Add themeSelectorState struct + field to Model
- Add openThemeSelector() replacing cycleTheme() call
- Add handleModalKey case for modalThemeSelect (Up/Down/Enter/Esc)
- Add applyThemePreview() and finalizeTheme() helper methods
- Add renderThemeSelectModal() with aligned theme names + swatches
- Update renderModal() dispatch and widen modal for theme selector
- Update help text: 't' now shows 'select theme'
2026-04-29 16:13:29 +03:00
vrubelroman
cd877ab584 feat: mirror pane (p), cursor memory, clean up help dialog
- Add Mirror pane keybinding p (for 'Pane'), SSH restored on s
- Add session-scoped cursor memory per directory
- Fix cursor memory bug: DisplayName() adds trailing / for directories
- Fix remote mirror: use active.Path instead of mount.RemotePath
- Remove F-key/Mouse/b/c entries from F1 help dialog
- Remove Mirror from ShortHelp footer (F-keys only)
- Add missing letter-key bindings to help: p, s, a, n, x
2026-04-29 16:03:34 +03:00
vrubelroman
c8d6976030 refactor: remove Edit key binding, rename ExtractArchive -> Unpack
- Remove unused Edit key binding (no keys assigned, duplicated Enter)
- Rename ExtractArchive to Unpack across KeyMap struct, DefaultKeyMap(),
  ShortHelp(), FullHelp(), and Model.Update() handler
- Rename handleExtractArchive() -> handleUnpack()
- Update help text, status messages, and dialog titles to 'unpack'
2026-04-29 15:20:53 +03:00
vrubelroman
3229d9b263 feat: merge F8/x delete with F11 archive extraction
- Delete mode toggle ('d') inside existing confirm dialog instead of separate modal
- F11/e shows confirm dialog before extracting archive to opposite pane
- deleteKind field toggles between 'permanent' and 'trash'
- Active pane reloads after extraction so files appear immediately
2026-04-29 13:42:59 +03:00
vrubelroman
7cd7a24642 Show F11 (permanent delete) in footer bar between F10 and F12 2026-04-29 03:16:18 +03:00
vrubelroman
1ed2d3defb SSH connection status indicators
- Add Connected bool field to vfs.Entry and RemoteMount
- Track connection status in sshState.connectedHosts
- Show status icon (connected/disconnected) in pane header when browsing remote host
- Async SSH connection test with cancel support for Add Host dialog
- Colored labels and styled help text in SSH dialogs
- Confirmation dialog when deleting manually-added SSH hosts
2026-04-29 03:11:53 +03:00
vrubelroman
813c40a41e fix: cursor position on Enter for '..' now lands on source folder (same as Backspace); feat: permanent delete via F11/d; fix: footer F-key order (F1-F11) 2026-04-27 18:56:20 +03:00
vrubelroman
7a55fb289e feat: directory history (Alt+Left/Alt+Right), filter fixes (sticky per-pane, navigation, Shift+select, offset, Esc clear) 2026-04-27 18:11:19 +03:00
vrubelroman
08c095e74f feat: add interactive file search/filter (feature #1)
Pressing / opens a filter bar at the bottom of the screen. As the user
types, the active pane's entries are filtered in real-time using
case-insensitive substring matching. The .. entry is always preserved.

Key bindings:
  /       - open filter input (re-opens with previous query if active)
  Esc     - clear filter and restore full list
  Enter   - commit filter (keeps filtering active, closes input bar)
  Up/Down - navigate the filtered list while typing
  PgUp/Dn - scroll the filtered list

Filter is automatically cleared when navigating to a different directory
(Enter on a folder, Backspace to parent, opening an archive).

Modified files:
  - internal/ui/keymap.go: added Filter key binding (/)
  - internal/ui/model.go: filterMode, filterQuery, filterInput fields;
    filteredPane() helper for View rendering; filter handling in Update();
    renderFilterBar() for the bottom bar UI; clearFilter() helper;
    adjustCursorForFilter() to keep cursor in bounds

Created files:
  - plans/feature-roadmap.md
2026-04-27 17:14:48 +03:00
vrubelroman
804fa9f83b Add v as F3 alternative, add F6/move and F7/mkdir to footer
- View (F3): add 'v' as alternative key, help shows 'F3/v'
- ShortHelp footer: add Move (F6/m) and Mkdir (F7/n)
- FullHelp: remove Visual ('v visual') from help panels
- Fix: remove 'n' from Cancel keys so it doesn't conflict
  with Mkdir's 'n' binding (Cancel now only uses Esc)
2026-04-27 15:43:45 +03:00
vrubelroman
33974cdcb7 Fix archive cursor, navigation, and format cycling color
- Reset cursor to '..' (position 0) when entering an archive so it
  doesn't stay at the previous directory's cursor position
- Fix archive exit landing in /tmp when pressing Enter on '..' inside
  an archive by delegating to archive-aware goParent() in enterSelected()
- Fix goParent() to handle ALL navigation within archive mounts
  explicitly instead of falling through to filepath.Dir which may
  navigate outside the mount to /tmp
- Fix format cycling text color reset by preserving '(f to change)'
  hint in modal note, ensuring renderModalNoteLine applies proper
  key/action styling via the '(' separator match
2026-04-27 15:30:39 +03:00
vrubelroman
ea8c596ef6 Polish text caret and selection flow 2026-04-25 02:21:43 +03:00
vrubelroman
641ad17676 Improve text preview keyboard navigation 2026-04-25 00:51:51 +03:00
vrubelroman
e7b31a8d5c Add F2 rename flow and improve modal key hints 2026-04-24 13:15:04 +03:00
vrubelroman
d22a40e987 Adjust view/info keybindings and improve read-only view mode 2026-04-24 10:08:33 +03:00
vrubelroman
95847ad231 Polish transfer progress dialog controls 2026-04-23 21:46:55 +03:00
vrubelroman
3d1c572e16 Add keyboard multi-select workflow and project description doc 2026-04-23 19:57:06 +03:00
vrubelroman
544511f00e Add help modal and refine modal close behavior 2026-04-23 14:22:16 +03:00
vrubelroman
874a5ed678 Refine transfer UX and active-pane selection rendering 2026-04-23 13:45:46 +03:00
vrubelroman
a196a16c6f Add copy confirmation and background progress modal 2026-04-23 12:30:10 +03:00
vrubelroman
941708970b Polish panel layout and preview interaction 2026-04-22 23:03:33 +03:00
vrubelroman
059f925e00 Initial vcom TUI prototype 2026-04-22 22:10:50 +03:00