Skip to content

sysm 1.26.4.0 — Q4 2026 macOS 26 and Swift 6 Release

Choose a tag to compare

@github-actions github-actions released this 16 Sep 19:26
· 5 commits to main since this release
74efa0b

The first release that requires macOS 26. It moves the package to the Swift 6 language mode and carries three batches of correctness fixes from the macOS 27 framework-parity review, plus the bugs that verifying those fixes against the real apps turned up.

Breaking changes

  • Requires macOS 26 (Tahoe) or later. 1.26.3.2 remains the last release that runs on macOS 13 through 15. The Homebrew formula now declares the requirement, so brew upgrade leaves older systems on 1.26.3.2.
  • reminders complete no longer completes whichever reminder it found first when several incomplete reminders share a title. It reports the candidates and their IDs, and the new --id option picks one.
  • photos export replaces an existing destination file instead of failing, matching how photo export already behaved.
  • For anyone using SysmCore as a library: importFromICS returns an ICSImportSummary of imported and skipped counts, completeReminder(_:) takes a ReminderSelector and returns the reminder it completed, and exported ICS UIDs now come from calendarItemExternalIdentifier.

Platform

  • Builds in the Swift 6 language mode with strict concurrency. Public value models are Sendable, and shared formatters, child-process pipes, and Photos result assembly no longer share mutable state across tasks.
  • Deployment target raised to macOS 26, which removes every availability guard and the Foundation Models fallback service.
  • SysmCore API documentation is published on GitHub Pages.

Fixes

Calendar

  • Reads ICS events that carry a TZID or a floating time. Such events were previously dropped without a word, which silently lost most of any file Outlook or Google Calendar produced.
  • Exports a repeating event once with its RRULE, rather than one identical VEVENT per occurrence, and writes an edited occurrence as a RECURRENCE-ID exception.
  • Imports a repeating event as a series, so an exported calendar round-trips.
  • Skips events the calendar already holds on import, and reports how many it skipped.
  • Keeps all-day events on the right day in both directions, instead of shifting them by the local UTC offset.
  • validate no longer reports contact birthdays. Google and Exchange deliver them into ordinary calendars as endless yearly series begun at the year of birth, or at the placeholder 1604, and judging a series by its first occurrence flagged every one of them.
  • delete and edit name the occurrence they will act on, and take --id and --future.

Reminders

  • A due date given without a time creates an all-day reminder, and --alarm sets a reminder alarm.
  • create-list works on a Mac whose iCloud account appears twice, one holding calendars and the other reminder lists. It used to fail with "That account does not support reminders".

Mail

  • --to, --cc, and --bcc accept several addresses separated by commas or semicolons. A list previously reached Mail as a single recipient whose address was the whole string.
  • Search dates are built from date components rather than English date "..." literals, which failed or pointed at the wrong day under other locales and under 24-hour time.
  • reply --all addresses everyone on the original message.

Photos

  • Exports slow-motion and edited videos, which previously failed with "Unable to access video data".
  • Reads metadata from the original photo or video resource, and checks that a private size key exists before reading it, so a future macOS release cannot crash the command there.
  • Hidden-asset lookups and the Faces-based people command work as documented.

Notes

  • notes create, and every other command run without --folder, work on a Mac with more than one Notes account. Notes rejects a bare "default folder" there, so those commands failed with error -1728.

Weather

  • Reads Open-Meteo times in the location's own time zone. Every hourly, daily, and sunrise time was previously shifted by that location's UTC offset.
  • The hourly forecast starts at the current hour, and alerts reports that the Open-Meteo backend carries no alerts instead of returning an empty list.

Other services

  • Tags: tagging a symbolic link tags the link rather than whatever it points at, as Finder does.
  • Music: status no longer starts Music when it is closed.
  • Network: a Wi-Fi query without Location permission returns the rest of the information with no SSID, rather than failing.
  • Clipboard, Messages, Spotlight, Focus, System, and schedule carry further correctness fixes; see the commit list below.

Known limitations

  • ICS import does not read EXDATE or per-occurrence overrides, because EventKit cannot express a deleted occurrence on a series being created. A deleted occurrence returns when a file is imported.
  • A Windows time zone name, as Outlook writes it, is read as floating time in the Mac's own zone.

Validation

  • 839 unit tests pass. CI builds and tests on macOS 26 with Xcode 26.6 and on the Xcode 27 preview runner, and validates the DocC documentation.
  • Every fix in this release was also checked against the real Calendar, Reminders, Mail, Notes, Photos, and Music apps on macOS 26.

Changes since the previous release

  • WZ-948: Release 1.26.4.0 (#18) (74efa0b)
  • WZ-944: Fix bugs found in Phase 1 manual checks (#17) (770de95)
  • WZ-930: Fix Phase 1 correctness bugs, third batch (#16) (2341fd4)
  • WZ-929: Fix Phase 1 correctness bugs, second batch (#15) (478016f)
  • WZ-928: Fix Phase 1 correctness bugs, first batch (#14) (4718807)
  • WZ-916: Switch to Swift 6 language mode (6e3fd53)
  • WZ-916: Fix Swift 6 warnings in test helpers (9c7a48d)
  • WZ-916: Handle notSupported availability in ICS (1ef3ddc)
  • WZ-916: Fetch the latest restore image with async (cb4cb13)
  • WZ-916: Build Photos results with index maps (c5cbf06)
  • WZ-916: Read child pipes without shared vars (de6a100)
  • WZ-916: Make shared formatters and keys race-free (c806029)
  • WZ-916: Mark public value models Sendable (83dbcd8)
  • WZ-912: Document the macOS 26 requirement (121f71f)
  • WZ-912: Raise the deployment target to macOS 26 (6c89b89)
  • WZ-913: Publish SysmCore API docs on GitHub Pages (#11) (270c63c)

Installation

Homebrew

brew tap brndnsvr/tap
brew install sysm

Direct Download

curl -L -o sysm.tar.gz https://github.com/brndnsvr/sysm/releases/download/v1.26.4.0/sysm-1.26.4.0-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 193897233f1d1d4822d562bc4f7cf030b0af2879da0131cded8b4297fef03e07