Commit graph

23 commits

Author SHA1 Message Date
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
df4df6b8f6 fix: file type handling on Enter - extensions checked before executable bit
- Reorder Category() to check known extensions (text, config, image,
  pdf, audio, video, archive) before the executable bit check.
  Fixes video/audio/image files with executable bit being opened in
  editor instead of system default application.
- Remove 'executable' from isEditableEntry() - executables are now
  launched via handleExecute() instead of opened in Neovim.
- Add handleExecute() method that runs executable files in the
  terminal via tea.ExecProcess.
- Update handleOpenSelected() to route: text/config -> editor,
  executable -> launch, everything else -> system default (xdg-open).
- Bump version to v0.2.1
2026-04-27 23:18:48 +03:00
vrubelroman
a483267bd9 feat: extended preview for PDF, audio, video via external utilities
Add rich preview support for three new file categories by leveraging
external CLI tools with graceful fallback when tools are missing.

- PDF: text extraction via pdftotext, page count via pdfinfo
- Audio: metadata via ffprobe (duration, bitrate, codec, sample rate, channels)
- Video: metadata via ffprobe (duration, bitrate, video/audio codec, resolution)
- New PreviewKind constants: PDF, Audio, Video
- New Metadata fields for extended preview data
- New extension maps and Category() entries for pdf/audio/video
- Icons: PDF (󰷉), audio (󰋋), video (󰋲) in preview header

Closes #5
2026-04-27 19:25:03 +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
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
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
3e34944f99 feat: add 11 new color themes (ayu-dark, breeze, catppuccin-lavender, cyberpunk, dracula, eldritch, kanagawa, kanagawa-paper, rose-pine, solarized-dark, vesper) 2026-04-27 14:40:44 +03:00
vrubelroman
d8bb247e4f add .nix to textExtensions 2026-04-27 14:25:19 +03:00
vrubelroman
22af43acd7 fix: open more text file types in editor (nvim)
Expand textExtensions with many missing common text file extensions
(.lua, .rb, .vue, .svelte, .dart, .tex, .scala, .lisp, and many more).

Add textFilenames list for well-known text files without a meaningful
extension (Makefile, Dockerfile, README, LICENSE, .gitignore, etc.)
so they open in the editor via handleEdit() instead of falling back
to xdg-open via handleOpenExternal().
2026-04-27 14:23:29 +03:00
vrubelroman
912de45e19 Refine image preview integration 2026-04-24 22:09:54 +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
e7b31a8d5c Add F2 rename flow and improve modal key hints 2026-04-24 13:15:04 +03:00
vrubelroman
5a27141298 Fix info pane Esc close and preview background rendering 2026-04-24 11:05:31 +03:00
vrubelroman
e0117650de Fix preview highlight background artifacts 2026-04-24 10:31:22 +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
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
bd67696fb0 Add syntax highlighting to text previews 2026-04-22 23:35:42 +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