Commit graph

43 commits

Author SHA1 Message Date
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
bba8783f10 Fix directory preview layout to exactly match browser pane columns
Root cause: renderPreviewPane() was stuffing directory entries into the
viewport model via SetContent(), then rendering through
renderPreviewContent() which wraps the viewport in an additional
border+padding box. This reduced the effective content width by 4
characters compared to the browser pane's innerWidth (width-2), causing
column misalignment where the date column would wrap to the next line.

Fix: For directory previews, directly render entries using the same
renderPaneRows() and renderColumnsHeader() functions as the browser
pane, at the same innerWidth. A temporary BrowserPane is created with
the directory entries, and renderPaneRows() is called with active=false,
producing pixel-identical output to the main file browser.

Removed renderDirectoryPreviewBody() which is no longer needed.
2026-04-27 16:52:44 +03:00
vrubelroman
db5eaba409 feat: show program version in F1 help dialog footer 2026-04-27 16:26:01 +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
ce2f488c89 fix: preserve panel background in cursor mode (renderTextCursorContent)
Replace full ANSI reset sequences (\x1b[0m) added by lipgloss.Render() for
gutter markers, cursor highlights, and selection highlights with
background-preserving resets (\x1b[39;22;23;24;59;48;2;R;G;Bm) that restore
the panel background color.

Without this fix, every \x1b[0m from lipgloss-styled elements in
renderTextCursorContent resets the panel background (set by the outer
renderPreviewContent wrapper), causing some letters to have incorrect or
missing background color in caret mode.
2026-04-27 14:15:20 +03:00
vrubelroman
e890e1871b feat: add copy path button in info panel 2026-04-27 13:49:45 +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
f3e3a9b779 Cool down preview header accent 2026-04-24 22:15:54 +03:00
vrubelroman
912de45e19 Refine image preview integration 2026-04-24 22:09:54 +03:00
vrubelroman
9dcef02e0d Improve image preview rendering with kitty overlay 2026-04-24 21:51:56 +03:00
vrubelroman
6b23717572 Add terminal image preview via chafa and release v0.1.3 updates 2026-04-24 15:35:11 +03:00
vrubelroman
6a518896b8 Add archive-as-folder navigation and extraction copy flow 2026-04-24 15:14:05 +03:00
vrubelroman
780150500d Add auto icon mode fallback and Nerd Font docs 2026-04-24 14:44:49 +03:00
vrubelroman
fe2034bb90 Simplify modal hints and remove action buttons 2026-04-24 13:24:57 +03:00
vrubelroman
e7b31a8d5c Add F2 rename flow and improve modal key hints 2026-04-24 13:15:04 +03:00
vrubelroman
124e7ef972 Adjust footer spacing background rendering 2026-04-24 11:47:05 +03:00
vrubelroman
7925a33568 Fix footer background fill rendering 2026-04-24 11:19:02 +03:00
vrubelroman
715cbd6e37 Fix metadata panel background fill alignment 2026-04-24 11:11:03 +03:00
vrubelroman
5a27141298 Fix info pane Esc close and preview background rendering 2026-04-24 11:05:31 +03:00
vrubelroman
a163cc9a2d Fix view mode body height without footer gap 2026-04-24 10:23:16 +03:00
vrubelroman
d22a40e987 Adjust view/info keybindings and improve read-only view mode 2026-04-24 10:08:33 +03:00
vrubelroman
3c2016eaf0 Align progress action layout with confirm dialog logic 2026-04-24 09:45:27 +03:00
vrubelroman
6787a7a363 Refine transfer progress and cancellation flow 2026-04-23 22:46:08 +03:00
vrubelroman
95847ad231 Polish transfer progress dialog controls 2026-04-23 21:46:55 +03:00
vrubelroman
ce84789edb Deepen theme semantic color coverage 2026-04-23 21:18:15 +03:00
vrubelroman
60e3a9c0f8 Tighten confirmation dialog button alignment 2026-04-23 21:10:15 +03:00
vrubelroman
b5cdb77415 Refine confirmation dialog actions 2026-04-23 20:37:54 +03:00
vrubelroman
3d1c572e16 Add keyboard multi-select workflow and project description doc 2026-04-23 19:57:06 +03:00
vrubelroman
deeb261b89 Polish panel headers and preview pane chrome 2026-04-23 14:41:17 +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
5a5923099b Add transfer progress workflow for move and polish labels 2026-04-23 12:38:19 +03:00
vrubelroman
a196a16c6f Add copy confirmation and background progress modal 2026-04-23 12:30:10 +03:00
vrubelroman
2a3b58c44e Stabilize panel layout and background fill 2026-04-23 00:10:41 +03:00
vrubelroman
bd67696fb0 Add syntax highlighting to text previews 2026-04-22 23:35:42 +03:00
vrubelroman
35a14b09ee Improve text selection preview mode 2026-04-22 23:26:45 +03:00
vrubelroman
1d5704d5b3 Fix info pane height stability 2026-04-22 23:16:29 +03:00
vrubelroman
941708970b Polish panel layout and preview interaction 2026-04-22 23:03:33 +03:00
vrubelroman
ef63a2479b Refine mouse interactions and info pane UX 2026-04-22 22:50:30 +03:00
vrubelroman
059f925e00 Initial vcom TUI prototype 2026-04-22 22:10:50 +03:00