Every release.
We ship every two weeks. Sometimes a Tuesday hotfix. Always read-before-you-update notes. Sorted newest first.
-
A point-release for one nasty bug a customer reported.
Fixed
- Copying lots of files from an external drive no longer freezes the app. Hitting F5 on a folder with tens of thousands of files used to lock Captain’s Deck up for several minutes before the copy actually started — long enough on Macs with less RAM that the whole machine would slow to a crawl and look like the app was leaking memory. Now F5 brings up the copy dialog right away with “Calculating copy size…” while it counts, and the rest of the app stays interactive throughout.
-
The embedded terminal learns about SFTP, and tabs in the same pane can finally point at different places.
Added
- Embedded terminal follows your SFTP tab. Open a tab on an SFTP server, hit backtick, and the terminal opens an ssh session to that host instead of a local shell. Click into a folder in the pane and the remote shell
cds with you. Password prompts and key passphrases work inline — type them as you would in any ssh client. - Two tabs in one pane can now live on different backends. A local tab next to an SFTP tab next to an S3 tab is a supported configuration: switching tabs swaps the pane (and the embedded terminal) to that tab’s actual destination. Previously the pane had a single shared connection, so a “local” tab opened while connected to SFTP would silently fail to list anything.
- Embedded terminal follows your SFTP tab. Open a tab on an SFTP server, hit backtick, and the terminal opens an ssh session to that host instead of a local shell. Click into a folder in the pane and the remote shell
-
A point-release for two terminal-focus shortcuts a customer flagged.
Fixed
- Toggle Terminal works in both directions when you’ve remapped it. Re-binding Toggle Terminal to something other than the backtick (for example ⌥` or ⌘⇧`) used to open the terminal but never close it again — the keystroke vanished into the shell. The shortcut now intercepts before the embedded terminal sees it, and the View > Toggle Terminal menu reflects whatever you’ve assigned.
- F10 quits the app even when the terminal has focus. Used to type an escape sequence into the shell instead of terminating.
-
A point-release for one bug a customer reported: the Visual Diff viewer.
Fixed
- Compare Files (Edit menu / F9) refreshes instead of vanishing. Triggering Compare with the diff panel already open used to silently close it — looked like the feature was broken. The panel now stays open and re-runs against your current selection.
- No more diffing a file against itself. When nothing was selected and both panes happened to point at the same path, the cross-pane fallback would compare the cursor file to itself and show a “0 added, 0 removed” panel. The fallback now only fires when the two files are actually different.
- Clearer prompts when there’s nothing to compare. “Only one file is selected” and “Folders can’t be compared visually” replace the generic “select two files” alert.
-
Closes out the three half-shipped features from 1.4.4.3, plus four orthodox-file-manager fixes from a Total Commander veteran.
Finished from 1.4.4.3
- Pause / Resume / Cancel actually pause now. The buttons used to flip the row’s state but the copy kept going underneath. Pause an SFTP or S3 transfer and bytes really stop moving; Resume picks back up.
- Bandwidth throttle covers S3. The Throttle popup in the F5/F6 dialog now caps S3 uploads and downloads too — not just local copies. Change the cap mid-transfer and it applies on the next chunk. SFTP is next.
- AWS SSO and role-chained profiles work. Pick one in the S3 dialog and connect — Captain’s Deck fetches short-term credentials in the background.
credential_processprofiles work the same way. Static-key profiles still work as before.
Fixed
[..]puts the cursor on the directory you came from. Hit Enter twice from a child folder and you’re back where you started. Used to leave the cursor on[..]itself, which meant Enter took you up another level.- Shift+Down marks exactly one file. It was marking the current row plus the next one. One press, one mark now.
- Shift+Down un-marks marked rows. Pressing it over a row that’s already marked clears the mark instead of being a no-op.
- F3 file viewer:
- Image and PDF preview renders inside the viewer window. Used to launch Preview.app as a separate window.
- ESC closes the viewer reliably.
- Inactive tabs are readable under the Paper theme. They were rendering dark-on-dark.
-
The big sweep. Everything the website promised but the app didn’t yet do is now in.
Looks
- Paper theme. Light, off-white. Stays light even when macOS goes dark.
- Custom themes via JSON. Drop a
.jsonin the new Themes folder, click Reload, you’re in. Settings → Appearance has the buttons. - Active-pane border colour. Pick your own.
- Orange border in admin mode. So you can’t miss it when admin’s on.
- Protocol glyph next to remote paths. ⎁ SFTP, ↕ FTP, ◯ S3, ⊕ WebDAV, ⌘ SMB/AFP/NFS, ☁ cloud, ▣ archive.
- Norton sound effects. Tink / Pop / Funk / Basso on copy, move, delete. Only when the Norton theme is on. Toggle in Retro Effects.
- FPS / memory / I/O overlay. For when you want to see what the app’s doing.
Search & navigation
- Saved searches in the sidebar. Name a search you run often, click it later to re-run.
- Cmd+Enter on results sends them to the other pane as a virtual folder you can copy or move out of.
- Cmd+E for regex, Cmd+/ for case-sensitive in the Find dialog. Tooltips show the shortcut.
- Tab to autocomplete in the quick filter. Like bash. Extends to the longest common prefix.
- .cdignore alongside .gitignore. Same syntax, separate file.
Connections
- S3 share links. Right-click an object, pick a duration (1h / 6h / 24h / 7d), URL goes on your clipboard.
- AWS profile picker. Reads
~/.aws/credentialsand~/.aws/config, lists every profile in the S3 dialog. Pick one and your access key, secret, and region fill in. - FTP filename encoding. Pick a charset per host (UTF-8 default, also Latin-1, MacRoman, Windows-1252, Shift_JIS, GB18030, Big5, EUC-KR) for legacy servers that don’t speak Unicode.
- Strict SSH host-key checking. Toggle in General. On = unknown hosts fail outright. Off (default) = trust on first use.
- Plain-FTP credential upload guard. Refuses to send
.pem,.key,id_*, or anything in.ssh/.aws/.kube/.dockerover an unencrypted FTP connection.
Admin
- Tamper-evident audit log. Every admin operation goes to
~/Library/Logs/CaptainsDeck/admin.log, chained with an HMAC so edits are detectable. Reveal and Verify buttons in Settings → Admin Mode. - Master switch. “Allow admin operations on this Mac.” Off = nobody installs the helper, nothing runs as root.
- Auto-exit timer. Admin session turns itself off after ten minutes of inactivity.
File operations & UX
- Folder size calculation. Off / On hover / Always. On hover is the sweet spot.
- Per-extension editor overrides. F4 sends
.mdto one editor,.swiftto another. Configure in External Tools. - Open at login. For people who use it as their finder.
- Restore tabs on relaunch. Your local-pane tabs come back exactly where you left them.
- Three keyboard layouts. Orthodox (Vim hjkl + F-keys), macOS (arrows only, Cmd+C/V/X/N/Delete throughout), Vim (everything Orthodox plus single-key y/p/dd verbs). Pick one in Keyboard Shortcuts; customise on top.
- Per-tab terminals. Every tab has its own shell. Switch tabs, the terminal switches with you. Close a tab, its shell goes too.
- Merge keys in F9 diff.
>takes the right hunk,<takes the left,xskips. Save Merged writes both files at once. - Drag to reorder the Activity queue.
- Right-click activity rows for Pause / Resume / Cancel.
- Throttle local copies. Pick a cap (1 MB/s up to 250 MB/s) for slow USB drives or busy network shares.
Plugins
- Permissions actually mean something now. Every API a plugin tries to use has to be declared in its manifest. Otherwise the call fails. Shell still requires the global toggle in Settings → Plugins.
Fixed
- Sidebar and Preview pane were blank under the Paper theme. Layout bug, fixed.
- SFTP directory listings occasionally dropped entries on first open. Race condition between two readers on the same pipe, fixed.
Half-shipped
- The Pause / Resume / Cancel menu shows up; the underlying transfers don’t actually pause yet. Provider-level wiring is the next milestone.
- The bandwidth throttle covers local copies; SFTP and S3 are still uncapped.
- SSO and role-chained AWS profiles show up in the picker but are disabled — you can’t (yet) auto-fetch short-term credentials, only static ones.
-
- Fixed — Workspaces now restore the SSH connection, not just the path. Saving a workspace while both panes were on the same SFTP server, then re-opening it later, used to leave you with two empty local panes — the workspace remembered only the path strings (e.g.
/home/user) and tried to navigate to them on whichever provider the pane happened to be on. Each pane in a workspace now snapshots the Keychain credential metadata it was connected through; restoring rebuilds the right provider (SFTP / FTP / S3 / WebDAV / SMB / AFP / NFS / Drive / OneDrive / Dropbox / Rackspace), reconnects, and then navigates to the saved path. Passwords stay in Keychain — they're never written into the workspace blob. Old workspaces with the v1 (path-only) layout still load and are treated as local. - Fixed — Sidebar Home / Desktop / devices now hop back to local on a remote pane. Clicking a local sidebar entry while a pane was on SFTP/FTP/S3 was sending the path (
/Users/jupe/Desktop) to the remote provider, which then tried to resolve it on the VPS. Sidebar paths now switch the pane back to the local filesystem first. - Fixed — Settings → General no longer clips the Function Keys section. The General tab's content lived in a plain
NSViewwith no scroll view and no bottom constraint, so the FN keys description and "Open Keyboard Settings…" button fell off the bottom of the panel. The tab now scrolls.
- Fixed — Workspaces now restore the SSH connection, not just the path. Saving a workspace while both panes were on the same SFTP server, then re-opening it later, used to leave you with two empty local panes — the workspace remembered only the path strings (e.g.
-
- Added — Nickname field for SSH connections. Optional "Nickname:" in Cmd+K gives a saved connection a friendly label ("prod-db", "staging") that shows in the pane-header pill, tab title, and saved-connections list in place of
user@host. Leave it empty and the old auto-generateduser@hostname is used. Existing saved connections decode without the field (nickname = nil) and keep their old behaviour. - Added — ⌘1..⌘9 pick saved SFTP connection. The Cmd+K dialog's "Saved:" popup is an
NSPopUpButtonwhich is awkward to drive from the keyboard. ⌘N now selects the Nth saved connection and populates the fields — menu items display the ⌘N hint so it's discoverable. - Changed — Pane-header pill no longer repeats the protocol. The badge used to read
SFTP: host, which duplicated the information already carried by the badge colour. The prefix is stripped for display; hover tooltip still shows the fullPROTOCOL: hostfor unambiguity. - Changed — SFTP upload / download progress is now accurate. The 1.4.4 progress dialog kept the bar animating during slow uploads, but the bytes-transferred counter stayed at zero for the entire transfer. Root cause: scp's percentage output doesn't flow reliably through expect's pty on modern OpenSSH. For key-auth connections we now bypass scp entirely and stream the file through
ssh host "cat > path"with our own byte counter, so progress reflects actual bytes moved. Password-auth connections still use scp + indeterminate animation — piping binary through expect's pty isn't practical. - Fixed — Remote directory entries no longer drop on first entry. Navigating into some SFTP directories would show an incomplete listing until the user refreshed. The 1.4.2.5 fix cleared the pipe
readabilityHandlerand drained remaining bytes manually viareadDataToEndOfFile, but an already-in-flight handler callback kept running and raced the drain against the same fd — scrambling byte boundaries and occasionally dropping entries. The handler now consumes bytes all the way to EOF (emptyavailableData) and signals a semaphore the main thread waits on afterwaitUntilExit, so there's a single reader on the fd and no race. Applied to bothrunDirect(key auth) andrunViaExpect(password auth).
- Added — Nickname field for SSH connections. Optional "Nickname:" in Cmd+K gives a saved connection a friendly label ("prod-db", "staging") that shows in the pane-header pill, tab title, and saved-connections list in place of
-
- Added — Copy / Move to Other Pane in the right-click menu. F5 and F6 have always worked, but mouse-only users had no equivalent. Right-clicking a file (or selection) now shows "Copy to Other Pane (F5)" and "Move to Other Pane (F6)" above Move to Trash. Right-clicking on the inactive pane also activates it first, so the direction is always from the clicked pane to the other one - which also fixes a long-standing quirk where the existing right-click Copy / Cut operated on whichever pane was active before the click, not the one you right-clicked on.
- Added — Provider badge in the pane header. Non-local panes now show a colored pill next to the breadcrumbs with the connection name (
SFTP user@host,FTP ftp.example.com,S3: bucket, etc.), coloured per protocol. Makes it obvious at a glance which pane is local and which is remote - previously indistinguishable from the pane chrome alone. - Changed — File-operation progress dialog no longer looks frozen on slow SFTP uploads. Large uploads through scp can take a long time to emit the first percent line (and on narrow ptys the percent was sometimes mis-parsed entirely). The progress bar now starts in indeterminate (animated) mode so motion is visible immediately, flips to determinate when real byte progress arrives, and falls back to indeterminate if bytes stop moving for 2 seconds. The status line also shows elapsed time and live transfer speed (bytes/sec). Broadened the scp percent regex so truncated-filename-against-percent formats parse too.
- Fixed — Cancel in the copy dialog actually cancels the upload. Previously Cancel just dismissed the dialog while the scp subprocess kept running in the background, and the file would reappear on the destination a few minutes later when the pane refreshed. A
TransferCancellationTokennow threads throughSFTPProvider.upload / download → runSCP → runSSHExecutable, registers the running Process, andprocess.terminate()s it on cancel. The flow then throwsoperationCancelled, the outer loop breaks silently, and (only for fresh destinations) any partial remote file is removed on the way out. - Fixed — Cancel in the file-exists conflict dialog actually cancels the copy. Picking "Cancel" when asked about overwriting used to fall through and copy the file anyway. Root cause:
case .cancel: breakinside a Swiftswitchonly breaks the switch, not the enclosingforloop. The copy loop is now labeled (copyLoop:) and all exits usebreak copyLoop. - Fixed — Cancelling mid-overwrite no longer deletes the original. The post-cancel partial cleanup was removing the destination file unconditionally. If the user was overwriting a pre-existing file and cancelled mid-transfer, that deleted what was left of the file they already had on disk. Cleanup now only runs when the destination was created by the transfer (didn't exist beforehand).
-
- Changed — Progressive directory listing on SFTP. Remote folder listings now stream into the pane as the server's
ls -laoutput arrives, instead of sitting blank until the whole listing is buffered and parsed at once. On directories with tens of thousands of files, rows start appearing within a second or two and the pane stays responsive while the rest loads, rather than spinning for 30+ seconds. Small directories behave as before. - Fixed — SFTP directory listings were dropping entries (build 68). The streaming ls above introduced a race:
Process.waitUntilExit()could return while the pipe's dispatch source still had buffered bytes queued, and clearing the readability handler cancelled those pending events. Refreshing a remote folder could show a different item count each time. Now drains any remaining bytes synchronously before returning, so every line is accounted for. - Fixed — Silent overwrite when copying to SFTP with password auth (build 68). Copying a file from local to an SFTP destination where the same name already existed skipped the conflict dialog and overwrote the remote file without asking. Root cause:
SFTPProvider.stat()was fed the raw output of anexpect-wrapped ssh command, which includes aspawn /usr/bin/ssh …preamble line; the parser choked on it and returnednotFound, which the caller silently swallowed.statnow picks the first line that parses as an ls entry, ignoring preamble. Same fix applies on move. The conflict check also now synthesizes a minimal placeholder and shows the dialog if stat fails for any reason, rather than falling through to an overwrite.
- Changed — Progressive directory listing on SFTP. Remote folder listings now stream into the pane as the server's
-
- Fixed — Terminal no longer errors when you navigate a remote pane. The embedded terminal is a local shell, but previously it was receiving
cdcommands for every path the active pane visited — including remote SFTP/FTP/S3 paths, which produced spurious "no such file or directory" errors in the terminal because those paths don't exist locally. Terminal sync (both pane → terminal and terminal → pane) is now gated on the active pane being on the local filesystem.
- Fixed — Terminal no longer errors when you navigate a remote pane. The embedded terminal is a local shell, but previously it was receiving
-
- Added — Server-side archive extraction over SFTP. Right-click an archive (
.gz,.bz2,.tar,.tar.gz,.tar.bz2,.zip,.7z) in an SFTP pane and choose Extract Here, and the decompression runs entirely on the remote host instead of round-tripping bytes through your Mac. For batches of.gz/.bz2files the script uses parallelxargs -P 8so 40,000 files finish in minutes, not hours. Live N-of-M progress shows up in the Activity panel (Cmd+Option+A) with the current archive name. - Added — Same-host detection for cross-pane copy/move. Two panes pointing at the same SSH host (whether one connection or two separate ones) now dispatch copy and move via server-side
cp/mv, even across distinct connection instances. Previously this only worked when both panes shared the same provider object. - Fixed — Cross-host copy no longer writes to the wrong server. Two SFTP/FTP/S3/WebDAV panes pointing at different remote hosts used to silently call
cp()on the source host with the destination's path, which ran the copy on the wrong machine. Different-backend copies now download to a temp file and upload to the destination as expected. - Fixed — Cross-host / cross-provider move. Move (F6) used to call
source.provider.mv()regardless of where the destination pane was, which corrupted destinations on different remote hosts and silently dropped files when moving between providers. Cross-backend moves now do a copy + delete fallback, with the source preserved if anything goes wrong. - Fixed — Compress / Extract Here available on SFTP panes. The right-click menu was incorrectly hiding Compress and Extract Here on remote panes (and showing the archive-internal "Extract to Other Pane" instead). The detection now correctly recognizes only ZIP/RAR archive browsers as "inside an archive."
- Added — Server-side archive extraction over SFTP. Right-click an archive (
-
- Fixed — Terminal no longer injects
cdinto running commands. When the pane path changed (e.g. from mouse-clicking into a subfolder) while the embedded terminal had a foreground command running, the app used to writecd '/path'into the PTY mid-stream, clobbering whatever was using stdin. The terminal is now only re-synced when the shell is back at its prompt. - Fixed — SSH keys with a passphrase now connect. Previously, providing a private key with a passphrase failed silently because
BatchMode=yeskilled the passphrase prompt. The Password field now doubles as a key passphrase when both a key path and a password are entered (placeholder reads "password or key passphrase"). Connection errors now surface the real ssh message (e.g. "Permission denied (publickey)") instead of a generic "SSH connection failed".
- Fixed — Terminal no longer injects
-
- Fixed — Price label in upgrade copy. Trial-expired banner and the upgrade-prompt alert now display the correct price (€19.99) instead of the hardcoded $19.99.
-
- Added — Trial-expired banner. Orange banner at the top of the window when the 14-day trial has expired, with Upgrade and "I Have a License" buttons. Previously the expired state was only surfaced when the user tripped over a Pro-gated feature.
- Fixed — Extract Here on right-click. Right-clicking an archive in the inactive pane no longer shows "Not an Archive"; extraction now uses the item you actually clicked instead of the active pane's cursor.
- Fixed — Extract Here with multi-select. Selecting multiple archives and right-clicking now shows "Extract N Archives Here" and extracts them all, instead of the menu item disappearing entirely.
- Fixed — Enter / double-click on tar / gz / bz2 / tgz / 7z. Now extracts in-place via Captain's Deck instead of handing off to macOS Archive Utility. ZIP and RAR still open for browsing as before.
- Changed — Git integration is now Pro. Git status column, file coloring, branch display, context-menu Git actions, and the Git Status Panel are gated behind the Pro license, matching the pricing page.
- Changed — Workspaces are now Pro. Save/restore paired pane configurations now requires Pro.
- Changed — Sidebar saved connections gated. Clicking a saved SFTP/FTP/S3/WebDAV/SMB/AFP/NFS/Google Drive/OneDrive/Dropbox/Rackspace connection now honors the Pro license check, closing a gap where the gate was only applied to the Go menu / connection dialogs.
-
- Added — Standalone gzip/bzip2 extraction. Plain
.gzand.bz2files (not just.tar.gz/.tar.bz2) can now be extracted. Output is written next to the archive with the compression suffix stripped, and collides are auto-renamed (file 2.txt) so nothing is clobbered. - Added — Extract Here context menu. Right-click any archive (ZIP, RAR, 7z, tar, gz, bz2, tgz, tar.gz, tar.bz2) to extract it in place. Shortcut is Cmd+Shift+E.
- Added — Standalone gzip/bzip2 extraction. Plain
-
- Fixed — Sync Browsing. Now uses relative path deltas instead of absolute paths, so it works correctly when one pane is local and the other is on an SSH/SFTP server (or any combination of different filesystems). Navigating into
foo/baron one side entersfoo/baron the other side, regardless of each pane's starting directory.
- Fixed — Sync Browsing. Now uses relative path deltas instead of absolute paths, so it works correctly when one pane is local and the other is on an SSH/SFTP server (or any combination of different filesystems). Navigating into
-
- Fixed — License validation. Fixed offline grace period not working due to Keychain storage issue; licensed users can now use the app offline for up to 7 days between validations
- Fixed — Feature gating. Visual diff, plugin system, and archive create/extract now correctly require a Pro license
- Fixed — Archive browsing. ZIP/JAR/WAR/IPA/APK browsing is now free as intended; only RAR and 7z browsing require Pro
- Fixed — Security. Strengthened machine binding and license validation to prevent license copying between machines
-
- Added — SMB guest access. Added "Connect as Guest" checkbox to the SMB connection dialog, allowing connection to shares with guest access enabled without requiring a username or password
-
- Fixed — Remote path resolution. Fixed navigating to
/homeon remote SFTP/FTP servers incorrectly redirecting to/System/Volumes/Data/homedue to local macOS firmlink resolution being applied to remote paths
- Fixed — Remote path resolution. Fixed navigating to
-
- Added — Custom mount options. SMB and NFS connection dialogs now include an "Additional options" text field for passing raw mount flags (e.g.,
actimeo=0,resvport,nolocksfor NFS ornobrowse,nostreamsfor SMB). Saved with connections.
- Added — Custom mount options. SMB and NFS connection dialogs now include an "Additional options" text field for passing raw mount flags (e.g.,
-
- Added — SMB advanced mount options. Connection dialog now has a collapsible "Advanced Options" section with soft mount (prevents hangs), disable caching (fixes stale listings), and encryption level (None/Session/Share)
- Added — NFS advanced mount options. Connection dialog now has a collapsible "Advanced Options" section with soft mount, interruptible operations, protocol (TCP/UDP), timeout, and dead timeout settings
-
- Added — Test Connection button. SFTP connection dialog now has a "Test" button to verify connectivity without opening a session
- Fixed — Cmd+V paste in dialogs. Fixed Cmd+V, Cmd+C, and Cmd+X not working in text fields within dialogs and sheets (e.g., SFTP connection, Go To Path)
-
- Added — SSH Tunnel / Jump Host support. SFTP connection dialog (Cmd+K) now has a collapsible "SSH Tunnel / Jump Host" section with fields for jump host, port, username, and key. Uses ProxyJump for simple setups or ProxyCommand when a separate jump key is needed. Jump host settings are saved with connections in Keychain.
-
- Added — Active pane border. The focused pane now shows a highlighted border for all themes, making it clear which pane is active
- Added — Extract archive alert. Attempting to extract a non-archive file now shows a helpful alert instead of silently failing
- Added — RAR extract support. RAR archives can now be extracted alongside ZIP, TAR, GZ, 7z
- Changed — Extract to current directory. Archive extraction now places files directly in the current directory instead of creating a subdirectory
- Fixed — Cmd+Shift+A (Create Archive). Fixed Cmd+Shift+A being swallowed by Select All instead of triggering Create Archive
- Fixed — R key removed from rename. The R key no longer triggers rename; use F2 instead, preventing accidental renames
-
- Added — Set Permissions dialog. Right-click > Set Permissions or Cmd+Option+P to change file/folder permissions with checkboxes for owner/group/others read/write/execute, octal input, and recursive option
- Added — SFTP chmod support. Set Permissions dialog works on remote SFTP connections, running chmod via SSH
- Added — Configurable permissions shortcut. Set Permissions action available in Settings > Keyboard Shortcuts under File Operations
- Changed — Cursor vs selection distinction. The cursor row now shows a border/frame instead of a full highlight, clearly distinguishing it from selected items. Selected items keep the full background highlight
- Fixed — Custom shortcut matching. Invert Selection (and other reassignable shortcuts) now properly use the configurable shortcut settings, fixing Shift+8 (*) and other character-based shortcuts not working when reassigned
-
- Added — Custom themes. Create your own color themes via Settings > Appearance. Click + to create a new theme based on the current one, then Edit to customize all 16 color properties with live preview. Great for accessibility and personal preference
- Added — Keyboard shortcuts search. Search field in Settings > Keyboard Shortcuts to filter by action name, category, or shortcut key
- Added — Bookmarks keyboard navigation. In the bookmarks panel, press number keys to jump directly to numbered bookmarks, or press a letter to cycle through bookmarks starting with that letter
- Added — Quick filter auto-selects first match. Pressing
/and typing now automatically moves the cursor to the first matching file, so you can type and hit Enter immediately - Added — Space advances to next file. Toggling selection with Space now moves the cursor to the next file, matching orthodox file manager conventions
- Added — Single-keystroke shortcut recording. Settings > Keyboard Shortcuts now correctly captures single key presses (e.g.,
B) without requiring modifier keys - Fixed — Arrow keys in quick filter. Up/down arrow keys now navigate filtered results while the filter field is focused
- Fixed — Filter persists into subfolders. Quick filter now auto-clears when navigating into a directory, fixing empty subfolder issue
- Fixed — Filter text lingers. Backspacing filter to empty now dismisses the filter bar and restores focus. Enter dismisses the bar and clears the text field for next use
-
- Added — Space to toggle selection. Space now toggles file selection (like Insert), matching orthodox file manager conventions. Quick Look moved to Cmd+Y only. Users can revert via Settings > Keyboard Shortcuts
- Added — Type-ahead search setting. New checkbox in Settings > General to disable type-ahead search (jump to file by typing a letter). When disabled, single letter keys are reserved for commands. Use / to filter files
- Added — Vim H/M/L motions. Shift+H jumps to top of visible screen, M to middle, Shift+L to bottom
- Added — Vim zz/zt/zb scroll. zz scrolls cursor to center, zt to top, zb to bottom of screen
- Added — Vim Ctrl+E/Ctrl+Y. Scroll the view up/down one line without moving the cursor
- Added — Filter match navigation. n/N (Shift+N) jump to next/previous match when quick filter is active
- Added — New tips of the day. Tips for all new vim motions, type-ahead setting, and keyboard customization
- Changed — Selection persists during navigation. Arrow keys and other cursor movements no longer clear the selection. Press Escape to clear selection explicitly
- Changed — Keyboard shortcuts table. Updated CLAUDE.md and Settings > Keyboard Shortcuts with all new actions
-
- Added — Set as Default File Manager. New option in Settings > General to make Captain's Deck the default handler for folders (replaces Finder for double-click and
opencommands) - Fixed — Cancel file operations. Progress window now closes immediately when cancelling a copy, move, or delete instead of getting stuck on "Cancelling..."
- Added — Set as Default File Manager. New option in Settings > General to make Captain's Deck the default handler for folders (replaces Finder for double-click and
-
- Added — Hide/Show Devices in Sidebar. Right-click a device to remove it from the sidebar. Right-click the Devices header to show all hidden devices.
- Added — Remove Bookmarks from Sidebar. Right-click a bookmark in the sidebar to remove it directly.
- Added — Remember Terminal on Launch. Terminal panel visibility is now remembered across app launches.
- Fixed — Symlink Navigation. Fixed symlinks to directories opening in Finder instead of navigating within Captain's Deck. Symlinks to folders now navigate correctly, and the path bar shows the resolved target path.
- Fixed — Cmd+Click / Shift+Click Selection. Fixed Cmd+click to toggle multiple file selection and Shift+click to select a range of files, matching standard Finder behavior.
- Fixed — Compare Files. File > Compare Files now works for trial users, properly detects two selected files in the same pane, and falls back to built-in visual diff when FileMerge is not installed.
- Fixed — Toggle Hidden Files. Cmd+. now toggles hidden files in both panes instead of only the active pane.
-
- Fixed — Various bug fixes and stability improvements
-
- Added — Sidebar Connections. Saved connections (SFTP, FTP, S3, WebDAV, SMB, AFP, NFS, Google Drive, OneDrive, Dropbox, Rackspace) now appear in the sidebar Connections section with type-specific icons. Click to connect, right-click to remove.
- Fixed — Disk Usage Analyzer. Fixed undercounting disk usage by ~150GB
-
- Added — Quick Look follows cursor. Space to open Quick Look, then navigate with arrows/hjkl and the preview updates to follow the cursor, just like Finder
- Changed — Exact file sizes in conflict dialog. Overwrite confirmation now shows exact byte counts (e.g., "21,233,664 bytes (20.2 MB)") so you can distinguish files with very similar sizes
-
- Fixed — Empty Pane After Idle/Sleep. Fixed file panes showing empty content after leaving the app idle or after system sleep. The withObservationTracking chain could break when macOS suspended background Tasks, preventing the table view from updating.
- Added — Refresh in Context Menu. Added a "Refresh" option to the right-click context menu to manually reload the current directory
-
- Added — Terminal Font Setting. New terminal font picker in Settings > Appearance with popular Nerd Fonts presets (JetBrainsMono, Hack, FiraCode, MesloLGS) and custom font support via font panel. Terminal font size slider (8-24pt) also added.
- Fixed — Font Persistence. Fixed font setting in Settings > Appearance resetting to "System" after app relaunch when a custom font was selected via the font panel
- Fixed — Tip of the Day Dialog. Fixed text overlap issue in the Tip of the Day dialog
- Fixed — Security-Scoped Bookmarks. Added security-scoped bookmarks for improved sandbox compliance
- Fixed — License Validation. Fixed license validation reliability issues
- Fixed — Disk Usage Analyzer. Fixed volume selector choosing the wrong disk when multiple volumes are mounted
-
- Added — Disk Usage Analyzer. New visual disk space analyzer (Tools > Disk Usage Analyzer). Shows folder sizes with visual bars sorted by size, volume selector dropdown to analyze any mounted disk or Home folder, and double-click to drill down into subfolders.
- Added — Mount Manager. Sidebar now shows eject buttons for removable and external volumes. Click the eject icon to safely unmount drives. (Direct Download only - not available in Mac App Store due to sandbox restrictions)
- Added — fd/ripgrep Integration. Deep Search and Content Search now use fast Rust-based tools (fd and ripgrep) when installed via Homebrew. Falls back to standard search if not installed. (Direct Download only - not available in Mac App Store due to sandbox restrictions)
- Added — Visual Selection Mode. Vim-style visual selection with Shift+V. Enter visual mode to select files by navigating with hjkl/arrows. Press Shift+V again or Escape to exit. Works with all file operations (copy, move, delete).
-
- Fixed — Delete on Network Shares. Fixed delete failing on SMB, NFS, and AFP mounted volumes. Network volumes don't have a Trash folder, so files are now permanently deleted with a warning dialog.
- Changed — Clickable Website Link. The website link in the About panel is now clickable
-
- Fixed — License Validation. Improved reliability of license activation and validation
-
- Fixed — Cross-Provider Directory Copy. Fixed copying directories from local to SMB/AFP/NFS shares (was failing with "file not found")
- Fixed — Directory Copy for Cloud Providers. Added recursive directory copy support for S3, WebDAV, Google Drive, OneDrive, Dropbox, and Rackspace
- Fixed — Overwrite Confirmation. Fixed "Overwrite" button not working in conflict dialog (only "Overwrite All" was working)
- Fixed — Copy Progress for Directories. Progress panel now shows accurate file count and bytes when copying directories
- Changed — Rename Shortcut. Removed R key shortcut for rename, now only F2 triggers rename (avoids accidental renames when typing)
-
- Fixed — SMB/AFP/NFS Connection. Fixed mount-based providers showing wrong directory contents after connecting. Navigating into subdirectories now works correctly.
- Fixed — SMB Connection Dialog. Server field now accepts full URLs (e.g.,
smb://server.local) and automatically strips the protocol prefix. - Fixed — Copy Progress on Network Shares. Fixed copy dialog showing no progress and being non-cancellable when copying to mounted SMB/AFP/NFS shares.
-
- Fixed — Norton Commander Selection Highlight. Fixed missing selection/cursor background highlight in Norton Commander theme list view
- Fixed — Window Size Persistence. Window size and position now persist across app launches
-
- Added — Norton Commander Style [..] Entry. Directory listings now show a [..] parent directory entry at the top, just like classic Norton Commander. Cursor automatically starts on [..] when entering a folder.
- Added — Click to Switch Panes. New optional setting (Settings > General) to activate panes by clicking in them, in addition to Tab key.
- Added — View Mode Menu. New View > View Mode submenu with List (Ctrl+Cmd+1), Icon (Ctrl+Cmd+2), and Column (Ctrl+Cmd+3) options. Provides a way to change view modes when toolbar is hidden (e.g., in Norton Commander theme).
- Fixed — Icon/Text Vertical Alignment. Fixed misalignment of file names and folder icons when using smaller font sizes. Icons and text are now properly centered vertically at all font sizes.
- Fixed — SFTP/FTP Transfer Progress. Progress bar now updates correctly during file uploads and downloads for both SFTP and FTP connections.
- Fixed — SFTP/FTP File Dates. Files on remote servers now display the correct year (was showing year 2000 for recent files).
- Fixed — RAR Archive Navigation. Fixed inability to exit RAR archives when pressing backspace at archive root.
- Fixed — Preview Panel Full Screen. Preview panel is now embedded in the main window instead of floating, so it works correctly in full screen mode.
- Fixed — Preview Panel Layout. Fixed header (file icon and name) appearing at bottom instead of top.
-
- Changed — Vibrancy Effects. Sidebar and Preview Panel now use native macOS vibrancy for a more polished look in the modern theme
- Changed — Transparent Titlebar. Window titlebar is now transparent for better visual integration
- Changed — Rounded Selection. File selection in modern theme now uses rounded rectangles (4px radius)
- Changed — Improved Tab Styling. Inactive tabs now properly adapt to light/dark mode in modern theme
- Fixed — Theme Switching. Vibrancy is correctly disabled for retro themes (Norton Commander, Midnight Commander) which use solid backgrounds
-
- Added — Hex/Binary Preview. Preview Panel now shows hex dump view for binary files (.exe, .dll, .dylib, .bin, etc.) with colorized offset, hex bytes, and ASCII columns. Toggle between Hex and Info views with the new "Hex" button.
- Added — Process Viewer. New built-in task manager (Tools > Process Viewer) showing all running processes with CPU%, memory, threads, and user. Includes search/filter, sortable columns, and Force Quit capability.
- Added — Cloud Link Sharing. Create shareable links for files stored in Dropbox, Google Drive, or OneDrive. Right-click any file and select "Create Share Link" to copy a public link to your clipboard.
-
- Added — Terminal Font Size Control. Adjust terminal font size with Cmd+Option++ (increase) and Cmd+Option+- (decrease). Size persists between sessions.
- Fixed — Settings Window Layout. General tab content is no longer cropped; all controls including Function Keys section are now visible
- Fixed — Column Resizing. All columns including the Name column can now be resized by dragging column borders
-
- Added — Flat View. View > Flat View shows all files from subdirectories recursively in a single list. "Mixed (No Folders)" shows only files, "Mixed" includes folders too. A new "Location" column shows each file's relative path. Skips inside .app bundles and other packages.
- Added — 3-Finger Swipe Navigation. Swipe right with 3 fingers to go back, swipe left to go forward (requires "Swipe between pages" enabled in System Settings > Trackpad > More Gestures)
- Fixed — Flat View Cancellation. Turning off flat view instantly cancels the recursive scan
-
- Added — Vim-Style "gg" Navigation. Press 'g' twice quickly (within 500ms) to jump to the first item
- Added — Home/End Key Support. Home key jumps to top, End key jumps to bottom
- Added — Archive Loading Indicator. Shows a spinner overlay when opening large ZIP/RAR archives
- Changed — Updated Keyboard Shortcuts Display. Settings and Help panel now show "gg" and all key alternatives
- Changed — Key Sequence Support. Keyboard shortcuts system now supports multi-key sequences like "gg"
-
- Fixed — Paste in Go to Path Dialog. Cmd+V paste now reliably works in the Go to Path dialog (Cmd+G) using local event monitor to bypass NSAlert key handling
-
- Fixed — Column View Scrolling. View now follows cursor when navigating to off-screen columns in Norton Commander style column view
- Fixed — Column View Performance. Snappier cursor movement in column view with reduced animation delays
-
- Fixed — Light/Dark Mode Auto-Switch. App now properly updates appearance when macOS automatically switches between light and dark mode (e.g., at sunset)
- Fixed — Paste in Go to Path Dialog. Cmd+V now works in the Go to Path dialog (Cmd+G). Also automatically strips single quotes from paths copied from Finder's path bar
- Fixed — F9 and F10 Keyboard Shortcuts. F9 (Diff) and F10 (Quit) now work as keyboard shortcuts, not just as clickable buttons
-
- Added — Image Thumbnails. Image files now show thumbnail previews instead of generic icons (supports jpg, png, gif, heic, webp, and more)
- Added — Font Size & Row Height. New sliders in Settings > Appearance to customize file list font size (10-18pt) and row height (18-32px)
- Added — Column Reordering. Drag columns to reorder them; order persists across restarts
- Added — Open Bookmarks in Other Pane. Hold Option when opening a bookmark to open it in the non-active pane
- Added — Cloud Storage in Sidebar. Sidebar now shows iCloud Drive, Dropbox, Google Drive, OneDrive, Box, and Network locations
- Added — Submit Feedback. New Help menu items: "Submit a Bug..." and "Request a Feature..." link to GitHub
- Fixed — Terminal Now Works Properly. Replaced terminal with SwiftTerm; now supports colors, vim, htop, nano, and all ANSI escape codes
- Fixed — App Bundles Launch Correctly. Double-clicking .app files now launches them instead of navigating inside
- Fixed — Context Menu in All Views. Right-click menu now works in Icon and Column views, not just List view
- Fixed — Preview Panel Updates. Clicking files in Icon/Column view now updates the preview panel
- Fixed — SFTP Password Auth. Fixed copying files to/from SFTP servers using password authentication
- Fixed — Split Orientation Setting. Changing split orientation in Preferences now applies immediately
- Fixed — Space Bar Preview for Folders. Quick Look now works on folders, not just files
- Fixed — Package Icons. .app, .pages, .numbers, .key bundles now show their proper icons instead of folder icons
- Fixed — Monospace Columns. Size, Date, and Permissions columns now use monospace font for better alignment
- Fixed — Natural Date Format. Date column shows "Today", "Yesterday", day names, etc.
- Fixed — Quick Look Animation. Removed distracting zoom animation; preview now appears instantly
- Fixed — Performance Improvements. Eliminated flicker when navigating between folders; smoother loading
- Fixed — Preview Toolbar Icon. Changed from confusing sidebar icon to universal eye icon
-
- Added — Dual-Pane Interface. Side-by-side file browsing for efficient file management
- Added — Vim-Style Navigation. Navigate with hjkl keys, gg/G to jump, / to filter
- Added — Arrow Key Navigation. Full support for arrow keys alongside Vim bindings
- Added — Built-in Terminal. Toggle with backtick, bidirectional path sync via OSC 7
- Added — Git Integration. Status badges, stage/unstage, visual diff viewer
- Added — Remote Connections. SFTP, FTP, S3, WebDAV, SMB, AFP, NFS support
- Added — Cloud Storage. Google Drive, OneDrive, Dropbox, Rackspace integration
- Added — Archive Browsing. Browse ZIP, RAR, 7z archives like folders
- Added — Retro Themes. Norton Commander and Midnight Commander themes with CRT effects
- Added — Batch Operations. Rename multiple files with patterns
- Added — Folder Sync. Compare and synchronize directories
- Added — Bookmarks. Save and quick-access favorite locations (Cmd+1-9)
- Added — Quick Look. Space bar preview for files and folders
- Added — Drag and Drop. Between panes and external apps
- Added — Tabs. Multiple tabs per pane
- Added — Search. Quick filter (/), Quick search (Cmd+F), Full search (Cmd+Shift+F)
- Added — File Operations. Copy (F5), Move (F6), Delete (F8), Mkdir (F7), Rename (F2)
- Added — Privileged Helper. Admin operations via SMJobBless
- Added — Auto-Updates. Sparkle integration for seamless updates
Want the play-by-play?
Subscribe to the release notes RSS at captains-deck.com/changelog.xml, or follow updates from inside the app — Help → What’s new.