Skip to content

Releases: vdavid/cmdr

Cmdr v0.32.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 05:25
b2cd030

Design tweaks: colors, icons, dropdown design, and text alignment. Detect and display file systems, disallow copying
4GB+ files to FAT32 volumes.

Added

  • Block copying or moving a file too large for the destination drive
    (f177b604,
    e0450ca8)
  • Show each real volume's filesystem (APFS, exFAT, FAT32, ext4, etc.) in the volume picker
    (c34d10de)

Changed

  • Redesign every modal dialog to the macOS layout: left-aligned titles and text, right-aligned buttons, labeled Action
    and Route rows, folder and file icons, and tooltips on the scan status icons
    (95191e2e,
    b19ccb45)
  • Make the Copy/Move destination box forgiving: accept ~ and ~/…, show the home folder in full, and create a missing
    destination folder on confirm on every drive (b19ccb45)
  • Replace UI emoji with themeable Lucide icons across dialogs, menus, settings, and the network browser for sharper
    contrast in light and dark (ffd03c90,
    5baba851,
    48f3561f)
  • Redesign the Select dropdown as a native macOS pop-up button with a frosted-glass menu that opens over the trigger
    (643f4200)
  • Brighten dark-mode secondary text and the selection red for clearer readability
    (bbe29581)

Fixed

  • Fix the Homebrew install silently failing for new users on Homebrew 6 (now runs the required tap-trust step), and stop
    onboarding text showing literal > and & (dbceea71)

Non-app

  • Enforce an APCA Lc-45 contrast floor alongside WCAG 2.2 AA, clearing the last low-contrast spots so every text pair
    passes both (f6ccc188,
    e28b9a0e,
    cf33ac82)
  • Add the full Tailwind v4 OKLCH color scale as reusable design tokens
    (3a2809b2)
  • Upgrade the Node toolchain to 26 and relax the dependency cooldown to 3 days
    (4c5ef483,
    714caeae)

Cmdr v0.31.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 00:27
e6e49fc

See/set macOS Finder colored tags. Nicer Drive indexing UI, live folder sizes during scans, plus network and phone scans
finish several times faster than before.

Added

Changed

  • Show folder sizes growing live during a network drive or phone scan, not only on the local disk
    (5a86abaf,
    ee9ee757)
  • Speed up network and phone drive scans by listing directories concurrently, dropping long scans from minutes to
    seconds (a003f004,
    6518b565)

Fixed

  • Fix the indexing progress counter freezing mid-scan, making a healthy scan look stuck
    (7568931c)
  • Fix one drive's scan lighting the size-updating hourglass on folders of every drive
    (d4105d98)
  • Fix a failed local scan sticking on a spinner instead of offering a rescan
    (61c66a0c)
  • Fix a network first scan stalling for hours on NAS snapshot folders
    (bb64ad38)
  • Fix a reindex wedging on a large set of changes (12e98e52,
    e4e13ed9)
  • Fix folder size totals double-counting hardlinked files during a rescan
    (ca4151e6)
  • Fix search, Go to path, and AI navigation sometimes opening a path on the wrong drive
    (3024839e,
    b029c435,
    ab44a722,
    f6e93c23)
  • Stop the file index wasting disk space after a version upgrade
    (1536d307)
  • Fix the file viewer failing to load lines when a file's line count is still unknown
    (83ad3ceb)

Non-app

Cmdr v0.30.0

Choose a tag to compare

@github-actions github-actions released this 28 Jun 17:11
9c7a7af

See folder sizes while indexing is going, browse your phone while a copy/move/delete is going, and get better
mouse-driven navigation. Network drive rescans are also faster now.

Added

  • MTP: Browse a phone while a transfer runs (06d1874d,
    4a01ad7f,
    f002606d,
    edc89aa2)
  • Navigate pane history with mouse's back/forward side buttons
    (fcf34143)
  • Click breadcrumb segments to jump to any ancestor folder, double-click empty pane spce to go to parent
    (dcc5b2e7)
  • Explain why a phone's folders add up to less than its used space
    (caedb655)

Changed

  • Show folder sizes while indexing: ≥lower-bound when partially scanned, also unknown and stale
    (494849a9,
    d9dbf076,
    c4b20c96,
    fdadfc8f,
    9f318e74)
  • Speed up SMB and MTP rescans: update in place and keep last-known sizes visible while scanning
    (a6a2f586)
  • Stop showing indexing notif and free space for DMGs, and show the read-only lock for read-only mounts
    (889859c4,
    1ea48634)

Fixed

  • Fix progress bars for cross-volume folder copy and move (38c405ec)
  • Fix a UI freeze when starting a manual rescan (880688c9)
  • Fix enabling or rescanning an SMB share or MTP device indexing nothing
    (d4527575,
    a8007894)
  • Show the indexing indicator for SMB and MTP drives, not just the local disk
    (ef6005d4)
  • Keep an honest stale index when a drive disconnects mid-scan instead of marking it complete
    (4d66beb0)
  • Rebuild falsely-complete network indexes from earlier builds on upgrade, no manual action
    (3109ab69)
  • Detect and explain Linux MTP permission denials from missing udev rules
    (51eee35d)

Security

  • Patch quinn-proto (remote memory exhaustion) and memmap2 advisories
    (584aa27f)

Non-app

Cmdr v0.29.0

Choose a tag to compare

@github-actions github-actions released this 21 Jun 23:12
8a21050

Four big features: 1. Operations (copy, move, and delete) got pause/resume. 2. Operations can be queued. 3. Drive
indexing extended to all volume types incl. SMB shares and MTP devices. 4. Cmdr is now localized into nine languages.

Added

  • Translate Cmdr into nine languages: German, Spanish, French, Hungarian, Dutch, Brazilian Portuguese, Swedish,
    Vietnamese, and Simplified Chinese (5af98fea,
    43b7f4c2,
    042c7b01,
    a34ef72f)
  • Pause/resume any operation (eeef1e2f)
  • Add a Queue window for ops, with pause/resume/cancel plus multi-select
    (c06b485d,
    e279945b,
    49c7b126)
  • Add Pause/Resume and Queue (F2) controls to transfer progress dialog
    (07dd837c)
  • Index SMB shares and MTP devices so folder sizes and search work, with scanning/fresh/stale statuses
    (384bffe2,
    7b084cdf,
    049e9f49,
    e4cdbb8f,
    386e9c13,
    fbacdbd0)
  • Add a per-drive index status badge and menu in the volume switcher
    (a36e7033,
    eaa2eea0)
  • Add drive-indexing controls in Settings, a "index this drive?" prompt, and a one-time "drive stale" notice
    (bcd433ae,
    0dddb45c)
  • Show a live file count while a drive index scans, instead of a frozen label
    (eca50e21)
  • Add ⌘↓ to open the item under the cursor, ⌘⌫ to move it to the trash, and ⇧- to deselect files
    (54e8bdeb)

Changed

  • Keep MTP devices responsive during a background index scan: navigation, copy, and delete no longer stall behind it
    (0fa3faf9)
  • Refresh only the affected folder on MTP changes, instead of every open pane on the device
    (7a08831a)
  • Honor macOS Reduce transparency app-wide: every translucent surface goes opaque when the setting is on
    (298bdede)
  • Go back to the SMB host list with ⌘↑ in the share list, matching Backspace
    (1115440a)

Fixed

  • Fix the error reporter crashing on log lines with accented characters or emoji
    (72a800ee)

Non-app

  • Speed up releases by reusing a persistent cargo build dirs and mise cache across architectures and releases
    (bc2b3779)
  • Build the translation methodology: per-lang style guides, glossaries, and a reference-pile across 139 languages
    (45b6a7dd,
    0759d720,
    ece168ea,
    fbddd165)

Cmdr v0.28.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 23:49
455723a

The file viewer now renders images and PDFs inline, local and custom AI endpoints like Ollama and LM Studio work, and
counts and file sizes follow your Mac's region. The volume selector also gets a frosted-glass look.

Added

  • Show images and PDFs inline in the file viewer, with a Text/Image/PDF mode switch and a view-as-text fallback
    (ccfb536c,
    c03c0715,
    e46cc1be)
  • Give the file viewer its own working menu bar on macOS: File, Edit, and View (with Word wrap) when it's focused
    (60b7b568)

Changed

  • Give the volume selector a frosted-glass material and honor macOS Reduce transparency across the app
    (a10d7def)
  • Keep the volume selector open while ejecting, and make its row menu native
    (84fe8c66)
  • Major Settings revamp: Group Settings pages into cards and make Advanced settings findable from the main search
    (3f9168ce,
    43fb5ad1,
    027a89ed)
  • Format counts and file sizes by your Mac's region instead of always US formatting
    (0324047b,
    83906c5a)
  • Show real macOS default icons while the icon cache loads, replacing the emoji placeholders
    (8ea3a54a,
    7272df9d,
    9b41bcc3)

Fixed

  • Fix local and custom AI endpoints (Ollama, LM Studio): the model picker now selects, and keyless endpoints register as
    configured (e8389003)
  • MTP: Heal a stale destination folder on MTP upload and retry instead of failing the copy
    (010d8b45)
  • File viewer: Scroll search matches into view, and enable cut and paste in the search box
    (0496700a)
  • Show the running app version in copied diagnostic info, not a stale hardcoded one
    (32bce781)
  • Harden the backend against silent crashes and unsafe-code mistakes, and clear out dead code
    (d1e4f76f,
    6d2acfb0,
    ab34d853)
  • Update the MTP library to 0.20.0 for transaction-ID self-heal and stale-handle recovery
    (7fedfadc)

Non-app

  • Lay the full groundwork for translating Cmdr into other languages (English-only for now): a message catalog of ~2,070
    strings, region-aware number and date formatting, tooling that finds clipped text and screenshots every screen for
    translators, and a Language picker (56acb6c1,
    17e05af8,
    2b085afc,
    375600ce,
    8af5a0bb,
    a3a9ef3c)
  • Move all error wording to the frontend so it's ready to translate, with the logic staying in Rust
    (1e918e06,
    77a851b8)
  • Cut the docs that load into every AI coding session by two-thirds, and add checks to keep them lean
    (b84ca26a,
    1ce6e7bb,
    3dad7e03)
  • Route every in-app icon and spinner through shared components, and split several oversized files into focused ones
    (94b6218a,
    751e9bc4,
    d3c50a87)
  • Keep automated test runs from disturbing the developer's real apps, data, and keychain
    (28b6bcaf,
    2476aba4,
    3a56d765)

Cmdr v0.27.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 07:46
5f8383b

You can now add/rename/reorder/remove Favorite folders in the Volume selector, hide the bottom F5/F6/F8 bar, and can set
Full mode to display filenames+extensions in one column. Also added Help > Keyboard shortcuts, a What's new popup that
shows up after Cmdr updates, and improved the Full Disk Access part of the onboarding.

Added

  • Show a What's new popup after Cmdr updates, with the changelog since the version you last saw and an opt-out in
    Settings (4e5ccbba,
    cc222919,
    04f75ddb,
    9ca6c524)
  • Curate your favorites in the volume switcher: add (command palette, Go menu, or right-click a folder), rename, reorder
    by drag or ⌥↑/⌥↓, and remove (c660d6f4,
    685fcac5,
    335331ef,
    608b8c81,
    d3db386f,
    9dc2e968,
    e3acd2a4)
  • Add a Help > Keyboard shortcuts window: a scannable reference of every command's shortcuts, live-synced to your
    customizations (3bcbc285)
  • Add a setting to show full filenames in the Name column instead of splitting off the extension
    (27060493)
  • Add a setting to hide the bottom function key bar (950a213c)

Changed

  • Onboarding now detects Full Disk Access the instant you grant it, and gets Cmdr into the macOS 13+ Full Disk Access
    list (dbf4d70b,
    19e992dc)
  • The AI cloud model picker now loads its list on open and keeps it when you reopen
    (f8aa514d)
  • In Search and Select, ⌥←/⌥→ now move by word in the query field instead of navigating folders
    (dd8573b2)
  • Search now remembers your query when you open a single result, not only "Open in pane"
    (5eae2139)

Fixed

  • Fix dragging a file from Cmdr into a browser upload field doing nothing
    (7c338b51)
  • Fix the file viewer misreading some binaries as UTF-16, which slowed the open by about a second
    (8f069f28)
  • Fix the downloads jump re-opening a folder already shown in the other pane
    (9eee5395)
  • Fix Search abbreviating paths that fit the column (3e558c7f)
  • Fix a rare drive-indexer race that could lose a folder's size
    (439d7fcb)
  • Stop local AI logging an error when you turn it off while it's still starting
    (1c8363b4)

Non-app

  • Add a KV-backed ?r= short-code system so tracking links expand to UTM params without a website deploy
    (f2b2c465,
    7a532406)
  • Fix silently-broken Umami and PostHog injection (website analytics had stopped loading), and add a check guarding the
    regression (9cb620e8,
    36d85974)
  • Add a per-day acquisition funnel with first-touch channel attribution to the analytics dashboard
    (8cae7906,
    a1dd804e,
    a011de50)
  • Split the analytics dashboard into Acquisition, Product, and Link codes pages
    (83eb55be)
  • Converge the app's dropdowns onto two reusable Ark primitives for a consistent macOS-native look
    (d282fdba,
    6ac9016e,
    a705696d,
    69130e27,
    5f355670)
  • Add a docs-reachable check keeping every doc linked from the repo root, and connect the orphaned docs
    (69e91dbe,
    185afddb,
    74ef31ee,
    36b7075b)
  • Quiet the drive indexer's UNIQUE-conflict warning to fire only when two writers are racing the database
    (ba5a538c)
  • Ban two-column tables in agent-facing docs and convert all 130 existing ones, with a check enforcing it
    (a909679b)

Cmdr v0.26.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 14:05
b98c69a

This release sharpens the Search and Select dialogs: a Files or Folders filter, folders matched by size, an AI strip
that shows what the agent did, and your last query waiting for you on reopen. File-list dates and sizes now line up into
clean columns, and you can install Cmdr from Homebrew.

Added

  • Add a Files or Folders filter to Search and Select, matching folders by their recursive size
    (600b23ca)
  • Add an AI strip to Search and Select that shows the pattern and filters the agent set, with a spinner while it
    translates (2328f469)
  • Install and upgrade Cmdr from Homebrew with brew tap vdavid/tap && brew install --cask cmdr
    (65729ee8,
    6490cb16)
  • Add a Discord community link to the About window and website footer
    (f65050b5)

Changed

  • Search and Select now remember your mode, text, and filters, and show your last results the moment you reopen
    (a5c60359,
    df819509)
  • Keep your typed text when switching filename, regex, and AI modes, and land the cursor on the first file after a
    Select (8c90428e)
  • Line up the Modified and Size columns with tabular figures, and default to ISO 8601 dates
    (b84d6877)
  • Enlarge the Search and Select dialog text a step and clear it to AA contrast
    (9effb0e5)

Fixed

  • Fix Select doing nothing when you set only a size or date filter and leave the name empty
    (89204c28)
  • Fix the size filter ignoring a 0 bound, and add a one-click = comparator
    (0071a009)
  • Fix an AI search keeping a stale size or date filter from the previous run
    (69ca52e5)
  • Fix the onboarding AI step's provider list overflowing the options below it, and two stale provider links
    (44c905c1)
  • Fix commercial purchases not issuing a license (5e053ee6)

Non-app

  • Dashboard download count now means new installs, with a new-vs-update chart
    (7ff2b6f3)
  • Add a feedback and error-report section to the private dashboard
    (e449b007)
  • Add a /feedback-and-error-digest-from-app command for agents
    (77b49d09)
  • Cap each dashboard data source at 20s so one hung upstream can't 524 the page
    (8b2909a0)
  • Capture real app screenshots and add a tracked brand/ asset home
    (1b38da54,
    8fa73633)
  • Promote the Search and Select chip and popover primitives to lib/ui
    (14abab0d)
  • Quiet noisy dev-run logs (812e0bb5)
  • Fail the website build if a sandbox Paddle token would ship to production
    (7d227942)
  • Show a Discord invite modal after a website download (46829c22)
  • Use david@getcmdr.com as the public contact address (a667f7ce)
  • Clone target/ to skip the full Rust rebuild on a fresh worktree
    (a2cbfce2)

Cmdr v0.25.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 22:50
876e440

Cmdr is now an open beta: stability badges, a Send feedback channel, and anonymous usage stats you can opt out of. SMB
sign-in got smoother, and keyboard shortcut customization got a deep round of fixes.

Added

  • Mark Cmdr as an open beta in onboarding and the About window, with a personal intro from David
    (7ce2c5e4,
    b2b27d8f)
  • Add a Send feedback dialog (Help menu, command palette); notes go straight to David
    (79c4a6c9,
    6bdb188a)
  • Add stability badges (ALPHA, BETA) in the app and a feature status page on the website
    (219549db)
  • Add anonymous beta usage analytics (daily-active count, PII-free feature events), disclosed during onboarding, opt-out
    under Settings > Updates & privacy (d1c481f0,
    c328bb13,
    b2b27d8f)
  • Group crash and error reports per install, with an optional reply-to email so David can follow up
    (71da738c)
  • Add a progress bar, percent, and ETA to drive indexing, now a calm hourglass with details on hover
    (bc824f18,
    6defbf74,
    b03387e2,
    f8694ce8)
  • Add a low-disk-space warning (in-app toast or macOS notification), configurable under Settings > Behavior
    (15ad9cf9)
  • Drag files from your phone or NAS straight to Finder or the Desktop, with a toast tracking the download
    (c97a032f,
    9e54719d)
  • Teach the go-to-latest shortcuts (⌘J in-app, ⌃⌥⌘J from anywhere) in the downloads toast, now collapsible
    (1da0b835,
    9ab2cf4f,
    15fc9395)
  • Shortcut hints across the app (F-key bar, toasts, onboarding) now follow your custom bindings live
    (123e76b7,
    e756a379,
    18acf50f)
  • Click any shortcut hint to jump to its row in Settings (b38f6cf8)
  • Offer Finder's saved SMB password on "Connect directly", so a Finder-known share connects without retyping
    (2ccb45de,
    3b07b0f2)
  • Prompt for a fresh sign-in when a NAS password changes, instead of a misleading "unreachable" banner
    (7c654e70)
  • Add drag auto-scroll near a pane's top or bottom edge (6d1ca01b)
  • Prepare brew install --cask cmdr for installing Cmdr via Homebrew
    (9348f888)

Changed

  • Reuse a saved SMB password instead of re-prompting on every connect
    (d12f8d3d,
    7c654e70)

Fixed

  • Fix connecting to a password-protected NAS dead-ending in macOS's cryptic "error code -6600"; Cmdr now shows its own
    login form right where you are (0e1bc77d)
  • Picking an already-mounted share now goes straight there, even under a different name (Bonjour vs IP)
    (0e1bc77d)
  • Fix the wrong-password message and a stale connection dot after an SMB sign-in fails
    (5846d351)
  • Fix cloud AI for Groq, OpenRouter, DeepSeek, and Mistral (they were routed to the wrong API)
    (08aa31e1)
  • AI search applies its translation again and reports failures (out of quota, bad key, timeout) instead of silently
    doing nothing (11f59ea1)
  • Move a stranded plaintext AI key from settings.json into the OS secret store
    (c9d45e09)
  • Fix copying or moving an empty folder silently doing nothing, and across drives deleting the source
    (5053ea0b)
  • Fix the file viewer cutting off the file after about 60 lines with word wrap on
    (0655dc0b)
  • Fix dialogs leaking focus into the background and locking out the keyboard after two Tabs
    (f2e04973)
  • Closing Search or Select files with Esc no longer kills pane keyboard navigation
    (040d424e)
  • Fix ⌘A doing nothing in the Settings and viewer windows (d99fafc1)
  • Fix drag-out from a phone or network pane dropping a junk .textClipping file or pasting a meaningless path
    (6e8ac5ae)
  • Fix index rename failing when the destination name is already taken
    (dea07427)
  • Harden shortcut capture: bare keys don't fire mid-typing, and macOS-owned combos (⌘Space, ⌃↑) warn instead of saving
    silently (a412e599,
    92c5ad4b,
    2b7abf3f)
  • Fix custom shortcut rebinds and removals not sticking, not reaching other windows, or missing conflict detection
    (6c21fd1b,
    da570566,
    2247dac1,
    a1dae889,
    add4db81)
  • The command palette and the Keyboard shortcuts editor now show your real bindings and list every command
    (87df2ed9,
    73766c9e,
    762b3951,
    396097ff)
  • Focus the textarea when the feedback or error report dialog opens
    (6f295fc6)
  • Show "/" instead of a raw storage id (like "65537") in the tab title at a phone or camera storage root
    (582cfbaf)

Non-app

  • Rewrite the website around one honest feature list (a bento grid by capability), in a product-first voice
    (272d177e,
    e975bd0c,
    6ccb8aeb)
  • Cut the landing page from ~2.3 MB to ~0.4 MB and remove render-blocking CSS
    (5fc6729a,
    fbacb4e9)
  • Replace stringly-typed backend event emits with a typed event bus across volumes, write ops, indexing, MTP, network,
    git, and AI (f2d3febf,
    57e9c87d,
    5f510bd2)
  • Split colocated docs into CLAUDE.md and DETAILS.md) across ~30 areas, add claude-md-length check
    (9bf1a653,
    bb26f2df)

Cmdr v0.24.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 08:41
709c1e9

Added

  • Go to path (⌘G): jump anywhere by typing or pasting a path, with ~ expansion, recent paths on digit keys, clipboard
    prefill, and a nearest-existing-ancestor fallback when the path doesn't exist
    (2a87c01b,
    afa2fe18,
    6b3e941b,
    3a768fcc,
    07877792)
  • Block ejecting a volume while a copy, move, or delete is touching it
    (fe2a0987)

Changed

  • Folders always merge on copy and move. A folder landing on a same-named folder now blends into it instead of asking
    you to overwrite, skip, or rename the whole folder. Your conflict choice (skip, overwrite, or rename) applies to the
    clashing files inside, so dest-only files always survive the merge
    (89cd978c,
    6e305a47)
  • Same-volume moves are instant. Moving a folder within one drive, NAS share, or phone is a rename, so Cmdr skips the
    pre-move scan that used to make a big NAS folder sit on "Verifying before move…" for 30–40 seconds
    (a9743ecc,
    114e5d2d)
  • Completion toasts now report what you selected, split by type: "Moved 1 file and 3 folders"
    (ae629609,
    f977ed95)
  • Disable Rollback for same-volume moves (a rename has nothing to roll back); Cancel stays available
    (f069e37e)
  • Rename "Reveal latest download" to "Go to latest download" in the menu, palette, and settings
    (49ddaf0a)

Fixed

  • Resolve conflicts file by file inside a folder merge on network and phone drives (SMB, MTP, and cross-volume). A newer
    file deep in the tree no longer loses to an older one behind a single folder-level OK; each clashing file follows your
    conflict choice (6e305a47)
  • Fix dropping files from the Desktop, Documents, or Downloads failing with "Source volume not found"
    (c3021243)
  • Fix drags from phone and network panes reading 0 bytes / 0 files in the transfer dialog
    (c3021243)
  • Dropping onto a read-only volume now shows the "Read-only device" alert instead of a copy dialog that can't succeed
    (62bbc09a)
  • Fix the Copy→Move toggle zeroing the transfer dialog counters on local moves
    (f4a8b1cb)
  • Show the volume name instead of a raw storage id (like "65538") in the transfer dialog header
    (f4a8b1cb)
  • Fix file viewer settings (word wrap, text size, binary warning) silently resetting every session
    (51e127aa)
  • Make the title bar draggable while a dialog is open, and in the file viewer window
    (016abbdf,
    e28e8905)
  • Highlight cloud drives (iCloud, Dropbox, Google Drive) in the volume switcher instead of Macintosh HD
    (28e72ac0)
  • Fix tooltips jumping to the window corner in big folders (2b45ec08)
  • Fix a rare hang when answering a copy/move conflict prompt
    (070b8d15,
    99271478)

Non-app

  • Rebuild the explorer frontend architecture: a module state store, a typed command bus across every entry path
    (keyboard, palette, menu, F-bar, MCP), one transactional navigate(), a per-kind volume capability table, and a flat
    command handler record replacing an 89-case switch (062ebbb7,
    5709b50a,
    ef52db45,
    6270612c,
    6aaf82d0,
    c7c0f5d6)
  • Add a virtual MTP device for dev: CMDR_VIRTUAL_MTP=1 pnpm dev plugs in a fake "Virtual Pixel 9", no hardware needed
    (9b9a4cad)
  • Make the SMB test containers safe to share across concurrent agent sessions: lease-refcounted teardown, auto-restart,
    and resource caps (b4307236,
    7905a4ea,
    7ae14a75)
  • Stop E2E builds from uploading error reports to the live channel
    (293853b0)

Cmdr v0.23.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 20:24
6535cf6

Added

  • Onboarding wizard: a multi-step soft sheet (Full Disk Access, AI provider, optional setup) replacing the single
    permission modal, reopenable from the menu, command palette, and MCP (alpha version!)
    (5a21bdba,
    742ff625,
    963b4bf1,
    88ecdfaa,
    7d081d2c,
    a09631c9)
  • Downloads watcher: a toast or native notification when a download lands, and jump to the latest download with ⌘J or a
    global ⌃⌥⌘J hotkey (092203db,
    a9466e5a,
    853a28a0,
    d378f42f,
    1484c4f0,
    2c3e36c3)
  • Select or deselect files by query: a new Select menu plus a Select files… dialog with filters and AI-powered
    natural-language selection ("select all error logs from last week") (alpha version!)
    (1fd163c4,
    7ce90bb3,
    8d5bd3dc,
    dcb4b3a9,
    6d68def3,
    ac68709e)
  • File viewer tail mode (F): follow a file live as it grows (8a6671de,
    ed479d2b,
    a7eb8d87,
    29a25ffc)
  • File viewer char encoding picker: switch text encoding instantly, with strict ISO-8859-1 and UTF-16 BOM detection
    (a2270782,
    0c0b8716,
    b1277906,
    3978ed4c)
  • File viewer regex and case-sensitive search toggles (⌘⌥R, ⌘⌥C)
    (7d424d97,
    48b5de06)
  • Real folder icons in the list: system folders (Downloads, Desktop), packages (.app), and custom-icon folders, cached
    across restarts (1dd439d0,
    389829bf,
    e50004ab,
    418a86a9)
  • Per-directory "size updating" hourglass and progressive folder-size reveal as the index fills in, instead of waiting
    up to 5 minutes (0afc10b4,
    f3740152,
    66712c2d)

Changed

  • Redesign the type-mismatch conflict dialog: one consistent layout across all clash types, with a clear warning when
    overwriting a whole folder with a file (a3faa3d8,
    d2b8f153,
    79024932,
    66df6570)

Fixed

  • Make copy and move durable before reporting "complete". Ejecting a USB stick right after a copy no longer loses files
    (bdb3b61a)
  • Make cross-volume Overwrite crash-safe: stream to a temp file and swap in place, so a mid-transfer disconnect keeps
    the original (6e99640e)
  • Stop concurrent indexing from corrupting the index (fixes inflated folder size display) and keep the index WAL bounded
    (0236723d,
    eb692287,
    b849ee01)
  • Make config and secret-store writes survive power loss, protecting saved SMB servers, passwords, and AI keys
    (aea4aa0b,
    57a47b63)
  • Stream MTP uploads instead of buffering the whole file in RAM, and make Cancel stop in-flight USB writes
    (a0140150)
  • Fix cross-volume moves showing "Moving... 0 bytes / 0 files" for the whole transfer (now real scan and per-file
    progress) (067b96db)
  • Open file viewer instantly even under heavy FS activity (was up to 730 ms and could time out)
    (aa9905f1)
  • Keep live indexing alive under database lock contention (9e808914)
  • Fix a git-repo watcher leak during fast navigation (a0bac502)
  • Stop losing Full Disk Access and onboarding state on a save failure (which re-ran onboarding)
    (5c46d887)
  • Error instead of silently overwriting when creating a file that already exists
    (25ce82f4)
  • Fix Enter or Backspace on ".." from "~" landing at "/" instead of "/Users"
    (a8096a25)
  • Fix SMB share listing on servers with many shares (native enumeration handles fragmented replies)
    (fe5569cf)

Security

  • Require bearer token for destructive MCP ops (68e337ef,
    18cd4c35)
  • Redact PII from MCP logs and state (8ea092ba)
  • Close SMB password leak through process arg list in an edge case
    (a190f19c,
    0a154f21)
  • Reject plaintext-HTTP AI endpoints that carry an API key (3dd10609)
  • Fix an updater AppleScript injection via the app bundle path
    (5875fb4c)
  • Narrow down the FS capability to actually needed files, restrict Debug window's capabilities
    (6cabc94c)
  • Redact SMB credential URLs from debug logs (d7edb8a4)

Non-app

A big push on dev tooling: the check suite is roughly twice as fast overall, with some checks 30–40x.

  • Add CPU-weight-aware scheduling (46bfae99)
  • Add --graph arg to checker script to view the dep graph (46bfae99)
  • Split eslint-typecheck into TS / Svelte: 616s to ~15s (~40x speed-up!)
    (10632789)
  • Stop clippy forcing full crate rebuild every run: ~32s to ~1–2s warm, also sped up other Rust checks
    (3318f29c)
  • Switch Svelte tests to happy-dom (22% faster) (ca6b13d9)
  • Add per-instance isolation (CMDR_INSTANCE_ID). Pparallel dev sessions now get own ports, data dir, and Keychain
    (3bcd2ed4)
  • Add a lock-poison static check and pnpm install-side supply-chain guardrails (14-day cooldown, trust no-downgrade)
    (038c5ec2,
    d568789f)