Skip to content

Releases: xmannv/xzip

XZip 1.0.2 (build 3)

Choose a tag to compare

@xmannv xmannv released this 31 Jul 07:34

What's New in 1.0.2

Fixed

  • The Queue popover now appears anchored to the Queue toolbar button, with its arrow pointing at the icon — previously it opened at a fixed position near the top-right corner of the window regardless of where the button was.

XZip 1.0.1 (build 2)

Choose a tag to compare

@xmannv xmannv released this 31 Jul 07:20

What's New

fix: password prompting, folder drag-out, app lifecycle, and 7z Quick Look

Bump version to 1.0.1 (build 2).

Password handling:

  • Prompt proactively when opening any archive whose listing succeeds but
    contains encrypted entries (7z -p, ZIP, RAR without -hp). Previously the
    prompt only fired when listing itself failed, so data-encrypted archives
    with plaintext headers never asked for a password.
  • Stop treating a successful listing as proof a password is correct; verify
    via a new ArchiveEngine.verifyPassword that tests only the smallest
    encrypted entry (7zz t -i@), so wrong passwords are no longer saved to
    the Keychain.
  • Classify password errors on the drag-out/Share/Quick Look extraction path
    and raise the prompt instead of a generic error banner.
  • Defer the password sheet while another sheet owns the window's slot and
    resume it when the slot frees; previously SwiftUI silently dropped it and
    every later prompt queued forever.
  • Quit with the password prompt still up no longer hangs: Cmd-Q routes
    through the delegate, which lowers the prompt before terminate: runs
    (AppKit abandons termination while a sheet is attached).

Drag-out:

  • Dragging a folder out of an archive now delivers the folder with its tree
    intact. Folders were filtered out entirely; they now expand to their
    descendant file entries, and the promise advertises public.folder so
    Finder accepts the directory URL.
  • Quitting after a drag-out no longer deadlocks in
    CFPasteboardResolveAllPromisedData: the leftover pasteboard promise is
    cleared and scratch deletion moved off the main thread behind
    .terminateLater.

Lifecycle:

  • Finder "Open With" brings XZip frontmost in every state: cold launch
    (request the default window via the LaunchServices reopen path — the
    scene's external-event opt-out meant a launch caused by a file open
    created no window at all), running-in-background (activate(from:)
    transfers focus from Finder where plain activate() is denied), and
    window-closed-but-running (recreate the window on every open).
  • Fix the item-count mismatch: the extract-to row no longer shows a total
    ("N items") that disagreed with the status bar; sidebar/window-subtitle
    counts now match the status bar.

Quick Look:

  • 7z archives preview correctly. LZMA2 (7-Zip's default encoding) was
    undecodable because swift-archive gates its lzma decoder behind an
    off-by-default trait; enable it and link a vendored universal static
    liblzma (scripts/build_liblzma.sh, SHA-256-pinned XZ Utils build) since
    neither Homebrew nor the SDK provides a universal liblzma.

Tests: 282 app + 782 package tests pass, including new coverage for the
sheet-slot queue, folder drag-out, data-encrypted listing prompts, and an
LZMA2 fixture that fails if the trait regresses.

XZip 1.0.0 (build 1)

Choose a tag to compare

@xmannv xmannv released this 29 Jul 15:10

What's New

feat: initialize XZIP monorepo