Skip to content

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 02 Sep 09:31
· 169 commits to main since this release

Before you double-click

This build is not signed or notarized, so macOS blocks the first launch. Allow it once:

  • macOS 15 Sequoia and later β€” double-click, dismiss the warning, then open
    System Settings β–Έ Privacy & Security and click Open Anyway. Apple removed the
    Control-click shortcut for unsigned apps in macOS 15, so right-clicking does not help.
  • macOS 13–14 β€” right-click the app β–Έ Open, then confirm.

Only the first launch asks.

A file inside an archive can be previewed and opened β€” and, because working out why it could not led
straight into it, the app stopped reading things nobody asked it to read.

The first half is what was reported: in a ZIP the quick preview showed nothing and a double-click on a
spreadsheet did nothing at all. The second half is what that turned up on the way. Three parts of the
window read a file simply because the cursor landed on it, and none of them had ever asked what that
costs β€” only whether the path existed. That is the wrong question on a network share (which looks
exactly like an ordinary folder), on a file the cloud has not downloaded yet (which sits on your own
disk with none of its contents), and inside an archive. Switching a panel on a network share to gallery
view read every file in the folder over the wire, one thumbnail at a time. It asks first now, and
answers in seconds rather than megabytes: after a few reads it knows how fast that connection actually
is.

Underneath both, reading a file out of an archive no longer needs it to fit in memory. A 400 MB file
opened from a ZIP cost 588 MB before and costs 151 MB now.

Added

  • A file inside an archive can be previewed and opened. Space and Cmd+Y showed nothing there, and a
    double-click on a spreadsheet inside a zip did nothing at all: the panel's paths are not files inside a
    mount, so Quick Look refused outright, the info page and Quick View fell back to the file's icon, and
    Enter handed /xl/sheet.xlsx to macOS, which has no such file. All of them now go through one place
    that unpacks the member to a temporary copy and hands that over β€” the same for FTP, SFTP, S3 and
    plugin mounts, where the same gestures were equally dead. "Open With" lists the applications for the
    file's kind now, so the submenu is there for a member too. The copy an application is given is
    read-only and Peach Commander says so once, with a "don't show this again" box: it is a copy, and
    saving into it does not change the archive. Copies are shared between the previews rather than made
    again per surface, are thrown away when the panel leaves the archive, and any left behind by a crash
    are recognised by the process that made them and cleared at the next launch rather than a day later.
  • A budget for everything the cursor reads by itself. The side panel, Quick View and the gallery's
    thumbnails follow the cursor, and none of them had ever asked what a file costs β€” only whether its path
    existed. That is the wrong question three times over: a mounted network share looks like an ordinary
    local folder, a file iCloud has evicted sits on the startup disk with none of its contents on this
    machine, and a member of an archive costs a decompression. Switching a panel on a network share to
    gallery view read every file in the folder over the wire, one thumbnail at a time, and in iCloud it
    downloaded what had been evicted. Now each of them asks first, and the answer is in seconds rather than
    megabytes: after a few reads Peach Commander knows how fast that mount actually is, and allows whatever
    fits in about a second and a half β€” so a fast share shows large files and a slow one declines small
    ones. Until it has measured, network files are previewed up to 4 MB and archive members up to 32 MB;
    local disks are unrestricted, exactly as before. A file that is declined is not a blank panel: it shows
    its icon, its name, size and date from the listing, and one line saying why β€” and Cmd+Y always previews
    it whatever the limits say. All of it is under Configuration β–Έ Edit/View, and there is a new help
    topic β€” "Previews of files that are not on this Mac" β€” in all nineteen languages.
  • The measurement behind that now actually runs on a mounted share. A share looks like an ordinary
    local folder, so nothing Peach Commander does on one was ever timed, and the promise above β€” "after
    that it allows whatever fits in about a second and a half" β€” could never come true there: only the
    cautious 4 MB fallback ever applied. One bounded read per folder measures the connection now (never
    for a file the cloud has not downloaded, since reading one is what downloads it), and a read too
    fast to time counts as fast instead of being thrown away.

Changed

  • A file inside an archive no longer has to fit in memory. Reading one β€” to view it, to preview
    it, to search it or to unpack it β€” used to decompress the whole thing first and then hold it two or
    three times over, so a 4 GB file inside a ZIP needed several gigabytes of memory before a single
    byte reached the disk. It is now read and written in pieces from end to end. Measured on a 400 MB
    file opened with Cmd+Y from inside a ZIP: 588 MB of memory before, 151 MB after, with identical
    contents. Encrypted archive members are the deliberate exception and are unchanged. An unpack of
    more than 20 MB announces itself above the file list while it runs.

Fixed

  • Opening or previewing a file larger than 256 MB from inside an archive said "nothing here could
    be unpacked".
    It had been unpacked; the housekeeping that keeps temporary copies within a memory
    budget then deleted it again, because one file that size is the whole budget by itself.

  • A double-click on an .xlsx opened the spreadsheet's zip instead of the spreadsheet. An Office or
    OpenDocument file is a zip, which is why its extension is deliberately absent from what the built-in
    reader claims β€” a text search that descends into one drowns in word/document.xml, and anyone who
    wants it can add the extension under Settings β–Έ Extra archive extensions. Enter and a double-click
    undid that decision by a side door. When a content-detecting packer plugin is enabled β€” the
    "Linux Filesystem Images" reader is one β€” a file whose name matched nothing was offered to the
    whole archive registry rather than to the plugins that had asked for the look, and the built-in
    reader does not re-check the name before trying to parse: it simply opened the zip. So the panel
    descended into xl/ and [Content_Types].xml, and the same held for .docx, .pptx and every
    OpenDocument file. The speculative Enter now asks only the content-detecting plugins, which is what
    it was written to do. Ctrl+PageDown is unchanged and is still the gesture that means "open this as an
    archive whatever it is", so the zip inside a spreadsheet is one keystroke away rather than in the way.
    Proved in both directions with the defect put back: the same file, the same configuration, mounted
    without the fix and stayed put with it.

  • A new folder left the cursor where it was. F7 reloaded the listing the way a refresh does, which
    preserves the old cursor β€” right for a refresh and wrong here, since somebody who has just named a
    folder is about to enter it or drop something into it and had to find it in the listing first. The
    cursor now lands on it. A nested name (a/b/c) and several at once (x|y|z) both focus the part the
    panel is actually showing, and on a server or plugin mount it is the first folder that was really
    created rather than the first one asked for.

Changed

  • The editor's "Save changes?" prompt now puts its buttons where macOS puts them. They were Save,
    Discard, Cancel, which NSAlert lays out right to left β€” so Cancel sat at the far left, where every
    other Mac document window has "Don't Save", and Discard sat next to Save, where the hand goes for
    Cancel. Reaching for either by habit did the opposite of what was intended, and one of those two
    throws away work. It is now Save, Cancel, Don't Save, with Escape on Cancel and ⌘D on Don't Save set
    explicitly rather than left to AppKit's match on the localised button title, which cannot be relied
    on across nineteen languages. Same prompt in the hex editor.

  • An unsaved document marks itself the way macOS marks one. The dot now appears in the window's
    close button (isDocumentEdited), instead of a bullet glued to the front of the title β€” where it
    also showed up in the Window menu, in Mission Control and in every screenshot, reading as part of
    the file's name. Text and hex editor both.