Releases: hkiam/PeachCommander
Release list
v0.3.0
The third beta. The headline is the editor: JSON, YAML and XML are now worked on by structure rather than by line number — an outline, one-keystroke navigation, folding, a path you can paste into jq, and a validator that puts the cursor on the problem. Plus uploading into FTP/SFTP panels with resume, panels that notice changes another program makes, and ZIP64 archives.
The editor understands JSON, YAML and XML
The symbol sidebar was empty for exactly the three formats an administrator edits most: JSON's tree-sitter grammar has no "definitions", and YAML and XML had no grammar at all. It now lists the keys of a JSON or YAML document and the elements of an XML one, nested as the document is, with elements named by their id, name or key attribute so twenty <server> entries are told apart. This covers the XML-based formats too — .plist, .svg, .csproj, .storyboard.
A file that does not parse still gets an outline down to the point where it breaks, which is when you most want one.
Navigation and selection
- Ctrl+Cmd+Up / Down — out to the enclosing block, in to the first child.
- Ctrl+Cmd+Left / Right — the previous or next entry at the same level, stepping over the whole block in between: from one server to the next without scrolling past forty lines of settings.
- Ctrl+Cmd+A — select the enclosing block. Press it again and the selection grows outwards, so you can select exactly one service without dragging.
The path, in the notation your tools take
Ctrl+Cmd+C copies the cursor's position as .services.web.ports[0] for JSON and YAML — what jq and yq expect — or //server[@id='web-1']/port as an XPath. Keys that are not plain words are quoted for you: ."content-type", not .content-type, which in jq means something else entirely.
Validation that says where
Ctrl+Cmd+V checks the file and puts the cursor on the problem, with the reason in the window title. JSON and XML go through a real parser. YAML has none on this system, so the check covers what can be decided without one — a tab used to indent, indentation that lines up with nothing, a duplicate key, an unterminated quote — and says so instead of claiming the file is valid.
It also reports two things nothing else in the toolchain will:
- a duplicate key, which every JSON parser accepts silently while discarding one of the two values;
- a trailing comma, which Apple's own parser accepts and Python, Go and
jqrefuse.
The YAML check was measured against Ruby's Psych over 400 real YAML files (0 false alarms) and, in the other direction, over 294 deliberately broken ones. JSON agrees with Python's json module on 300 of 300 files; XML agrees with xmllint on 236 of 236.
Transformations
Minify to one line, sort keys recursively, escape or unescape as a JSON string, and JSON → YAML — each one undoable in a single step, on the selection or the whole document. Minifying keeps the key order and the exact spelling of every number, because 1.0 and 1 are not the same version. There is deliberately no YAML → JSON: it needs a YAML parser this system does not have, and a wrong guess about an anchor turns a config file into a different config file.
Folding
Option+Cmd with the arrows collapses the block at the cursor, the whole top level, or restores everything. Nothing is removed from the document — the text is only not drawn, so saving, undo and Find are unaffected, and Find still finds text inside a collapsed block. The header line stays visible and is marked, the line numbers skip what is hidden, and putting the cursor inside a fold opens it.
Elsewhere
- F5 into an FTP or SFTP panel uploads, and resumes a partial remote file. Previously the remote path was handed to the local copy engine, which either failed or wrote to a same-named local path and reported success.
- Panels notice changes another program makes, through FSEvents instead of polling.
- ZIP64 archives can be read — entries and archives above 4 GB, and more than 65 535 entries.
- The window's appearance is applied before the first frame, so a dark window no longer starts light and corrects itself.
- Keyboard operation was broken in every window built in code and is now a gate: eight windows are checked for a closed Tab loop with nothing unreachable and nothing unlabelled.
Installing
This build is unsigned and un-notarized, like every build so far — the project has no Apple Developer ID. Gatekeeper blocks the first launch, and how you allow it depends on your macOS version:
- macOS 15 Sequoia and later — double-click once, dismiss the warning, then go to System Settings ▸ Privacy & Security and click Open Anyway. Apple removed the Control-click shortcut for unsigned software in macOS 15, so right-clicking does not help here.
- macOS 13–14 — right-click the app ▸ Open, then confirm.
Requires macOS 13 or later; the disk image is universal (Apple silicon and Intel).
Full notes: CHANGELOG.md
Peach Commander v0.2.0 (beta)
The second beta. Colour themes are the headline — including a Norton Commander palette in the real CGA colours — plus a formatter system you can extend, a CSV viewer, and a pile of fixes to the viewer, the Settings window and the modal dialogs.
Themes
Peach Commander can now take on a whole palette in one step, under Settings ▸ Colors ▸ Theme.
- Norton Commander — the blue-and-cyan look of the 1986 original, in its authentic CGA values. The cursor bar inverts to dark text on cyan the way the original drew it; marked files keep their yellow.
- Midnight — dark without being grey: deep indigo panels, soft blue-grey text, amber for marked files.
- Light / Dark — pin either built-in palette regardless of what macOS is doing.
- System (default) — no theme, and the default. If you never touch this menu, nothing about the app's appearance changes.
A theme brings its own light/dark base, so dialogs, sheets and scrollers match it rather than staying in the opposite appearance.
Write your own. Drop an .ini into the themes folder inside your configuration folder — the Themes Folder… button creates it and leaves a commented example listing every colour. Name the handful you care about, inherit the rest with Base = light or Base = dark, and it appears in the Theme menu without restarting. A mistake in the file costs you that one line, not the theme.
[Theme]
Name = My Midnight
Base = dark
[Colors]
ListBackground = #101020
ListText = #C8C8E0Plugins can follow along. The plugin ABI now publishes the palette, so a plugin's own views can match the host instead of standing out. The bundled Disk Map, Notes and AI chat panels already do. This is a pure addition — plugins built against the previous SDK keep working unchanged.
Also new
- A CSV/TSV viewer as a bundled plugin — column alignment, header row, large files.
- Formatting is now a real system. JSON, XML, YAML and more, extensible per file type: point an extension at any command-line formatter you already use, or ship one in a plugin.
- YAML syntax highlighting, plus a deliberately conservative YAML tidy that will not reorder your keys.
- Find in rendered Markdown and HTML in the viewer, via WebKit's own search.
- Copying into an archive now asks first, and F6 into an archive actually moves.
Fixes worth calling out
- A modal dialog closed with the red button or ⌘W no longer freezes the app — and the crash that the freeze had been hiding is fixed too.
- The Settings window is resizable, its pages scroll, and the duplicated Plugins entry is gone.
- The viewer no longer swallows ⌘ shortcuts; ⌘C copies in every representation, and rendered Markdown/HTML resizes with the window.
- The panel status bar truncates instead of wrapping — a long path used to push "Free: …" out of the bar.
- Plugins are genuinely universal now. In v0.1.0 the app ran on Intel while none of its plugins could load; the release now fails rather than shipping a single-architecture binary.
Getting it running
- Download
PeachCommander.dmgbelow, open it, and drag Peach Commander onto Applications. - The first launch is blocked by macOS — this beta is deliberately not code-signed or notarized. You allow it once:
- macOS 15 Sequoia and later: double-click once and dismiss the warning, then go to System Settings ▸ Privacy & Security and click Open Anyway. Apple removed the Control-click shortcut for unsigned software in macOS 15, so right-clicking does not help here.
- macOS 13 Ventura / 14 Sonoma: right-click the app ▸ Open, then confirm.
- Optionally grant Full Disk Access so Peach Commander can reach everywhere Finder can.
The installation guide walks through all of it with screenshots.
What's in the box
- Universal binary — native on both Apple Silicon and Intel, app and plugins.
- Requires macOS 13 or later.
- 13 plugins bundled and active: Git, Archive, WebDAV, iCloud Drive, Disk Map, System Monitor, Task Manager, Uninstaller, Log Viewer, Notes, CSV Lister, AI Assistant and AI Column.
- 19 languages, UI and in-app help — the theme settings and their documentation included.
- Passwords live in the macOS Keychain only, crash reports stay local, and the app does not phone home.
Known limitations
Still a beta. It does a lot and is genuinely useful day to day, but things are moving — the plugin SDK in particular can still change.
- Not code-signed or notarized, hence the first-launch step above.
- Auto-update (Sparkle) is planned but not wired up yet — you update by downloading a newer build.
- Themes colour the panels and the app's own windows. Checkboxes, popup buttons, the toolbar icons and system dialogs stay in macOS colours: those are drawn by AppKit, and restyling them would mean re-implementing the controls.
- Very large ZIP64 archives aren't handled by the built-in reader.
- Changing file attributes over SFTP has no effect in this version.
- Panels notice outside changes on a short (~2 s) delay; F2 / Ctrl+R refreshes immediately.
The full list is in the app under Help ▸ Known limitations.
License
Peach Commander is open source under the Apache License 2.0 — free to use, modify and redistribute, including commercially, as long as you keep the license and notice and state your changes. Third-party attributions are in THIRD_PARTY_NOTICES.md.
Feedback
Bugs and ideas: open an issue. Full changelog: v0.1.0...v0.2.0
Peach Commander v0.1.0 (beta)
The first public beta of Peach Commander — a fast, keyboard-driven, dual-panel file manager for macOS, in the Total Commander tradition.
Two folders side by side, roughly 150 named commands under your fingertips, archives you step into like folders, FTP/SFTP/WebDAV that browse like local directories, and a real plugin system. Native AppKit, not a web view in a window.
Getting it running
- Download
PeachCommander.dmgbelow, open it, and drag Peach Commander onto Applications. - The first launch is blocked by macOS — this beta is deliberately not code-signed or notarized. You allow it once:
- macOS 15 Sequoia and later: double-click once and dismiss the warning, then go to System Settings ▸ Privacy & Security and click Open Anyway. Apple removed the Control-click shortcut for unsigned software in macOS 15, so right-clicking does not help here.
- macOS 13 Ventura / 14 Sonoma: right-click the app ▸ Open, then confirm.
- Optionally grant Full Disk Access so Peach Commander can reach everywhere Finder can.
The installation guide walks through all of it with screenshots.
What's in the box
- Universal binary — native on both Apple Silicon and Intel.
- Requires macOS 13 or later.
- 12 plugins bundled and active out of the box: Git, Archive, WebDAV, iCloud Drive, Disk Map, System Monitor, Task Manager, Uninstaller, Log Viewer, Notes, AI Assistant and AI Column.
- 19 languages, UI and in-app help.
- Passwords live in the macOS Keychain only, crash reports stay local, and the app does not phone home.
Known limitations
This is a beta — it does a lot already and is genuinely useful day to day, but things are still moving. The plugin SDK in particular can still change.
- Not code-signed or notarized, hence the first-launch step above.
- Auto-update (Sparkle) is planned but not wired up yet — you update by downloading a newer build.
- Very large ZIP64 archives aren't handled by the built-in reader.
- Changing file attributes over SFTP has no effect in this version.
- Panels notice outside changes on a short (~2 s) delay; F2 / Ctrl+R refreshes immediately.
The full list is in the app under Help ▸ Known limitations.
License
Peach Commander is open source under the Apache License 2.0 — free to use, modify and redistribute, including commercially, as long as you keep the license and notice and state your changes. Third-party attributions are in THIRD_PARTY_NOTICES.md.
Feedback
Bug reports and rough edges are very welcome — please open an issue. Tell us your macOS version and whether you're on Apple Silicon or Intel.