Skip to content

Releases: brndnsvr/sysm

sysm 1.26.4.2 — Q4 2026 Structured Notes Fix Release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 18:05
31fc603

This revision makes notes create --from-markdown finish reliably. A live canary on macOS 27.0 found two states in which it created the note but could not format it, leaving a half-formatted note behind.

Fixes

  • Structured notes no longer stall on Notes' first-run checklist prompt. The first time anything marks a checklist item as checked on a Mac, Notes asks "Would you like to enable automatic sorting of checked items?". The prompt took focus, so the command failed with "Notes lost keyboard focus before formatting completed". sysm now answers it with Not Now, which leaves the Notes setting unchanged. If Notes shows any other dialog, the command stops and reports the dialog's text.
  • Structured notes work when Notes is closed or its main window is not open. After Notes relaunched and restored only separate note windows, it reported no selected note, and the command could not confirm its target. sysm now reopens the main Notes window through the Window menu and waits longer for Notes to launch. If the selection still cannot be confirmed, the command stops before it changes the note.

Compatibility

  • No command, option, or output format changes.
  • The minimum macOS version remains 26.
  • Two new error messages can appear: one quotes a Notes dialog that sysm did not answer, and one asks you to open the main Notes window.

Validation

The changes passed debug and release builds and 822 unit tests on macOS 27. Four new unit tests cover the new error messages and the partial-note report. On macOS 27.0, a live canary created structured notes with correct title, heading, and subheading styles, native checklists, and checked items. It passed when Notes was not running, when Notes was already running, when no main window was open, and when the first-run prompt appeared.

Changes since the previous release

  • WZ-989: Release 1.26.4.2 (#22) (31fc603)
  • WZ-873: Fix structured Notes canary blockers (ff766ae)

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.2/sysm-1.26.4.2-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 76621a5f6fcd78c45efea2386f4ee223e3e8ecb8a122ca17f005b43c473810db

sysm 1.26.4.1 — Q4 2026 Notes and Skill Fix Release

Choose a tag to compare

@github-actions github-actions released this 18 Sep 21:29
574b16d

This revision fixes notes show on macOS 27, which reported every note as not found. It also ships a Claude skill bundle that matches this release. The bundle in 1.26.4.0 still described v1.12.0.

Fixes

  • notes show works on macOS 27. On macOS 27.0, it printed "Note '' not found" for every note, including notes that notes list returned with that ID. Notes rejects the chained AppleScript expression name of container of n with error -1728 or -1700, and notes show reported that error as a missing note. It now reads the note's folder first, then the folder's name.
  • The sysm.skill release asset describes this release. The skill is now built from a reviewable source tree. If the committed bundle differs from that source or names the wrong version, CI fails. The bundle now documents the appstore, focus, and language commands, and it corrects the tag color table, which listed 1 as red. 1 is gray. It also documents the newer options for calendar, reminders, notes, mail, and photos.

Compatibility

  • No command, option, or output format changes.
  • The minimum macOS version remains 26.

Validation

The notes show fix includes a unit test that fails on the old script. The changes passed debug and release builds, 818 unit tests, the skill bundle check, and DocC validation on macOS 26 with Xcode 26.6. The same 818 tests passed on the Xcode 27 preview runner. On macOS 27.0 (26A428), notes show returned notes that 1.26.4.0 reported as not found.

Changes since the previous release

  • WZ-967: Release 1.26.4.1 (#21) (574b16d)
  • WZ-967: Fix notes show failing on macOS 27 (#20) (952df98)
  • WZ-955: Regenerate the bundled Claude skill (#19) (a598a1a)

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.1/sysm-1.26.4.1-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: fe9dbe93b5ae8a69fd56b9a44b540ad9284dea1b11af5317e07acaf370122b1e

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
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

sysm 1.26.3.2 — Q3 2026 Apple Intelligence and Hardening Release

Choose a tag to compare

@github-actions github-actions released this 11 Sep 12:50
b49ac19

This revision restores sysm ai in release builds and fixes two input-handling vulnerabilities. It also fixes the API documentation build and the Intel source build.

Fixes

  • Restores sysm ai in release builds. Releases 1.26.3.0 and 1.26.3.1 were built with Xcode 16.2, which compiled out the Foundation Models integration. Every sysm ai command in those releases reported "Apple Intelligence not available: FoundationModels framework requires macOS 26+", even on macOS 26. Releases are now built with Xcode 26.6 on macOS 26, and the release build fails if the binary does not link Foundation Models.
  • Fixes the Intel (x86_64) source build. VM save and restore exist only on Apple silicon, so the build now excludes them on Intel. On Intel, sysm vm save and sysm vm restore report that save and restore require macOS 14 or later on Apple silicon.
  • Fixes the API documentation build. The documentation workflow could not find the SysmCore scheme and failed before it compiled anything.

Security fixes

  • Escapes the Focus mode name before it reaches AppleScript. A name that contained a quotation mark could end the script's string and run its own AppleScript, including shell commands, through sysm focus activate.
  • Validates scheduled job names. sysm schedule commands accept names of 1 to 128 ASCII letters, digits, dots, underscores, and hyphens that start with a letter or digit, and check the name before they touch the file system or launchctl. A name with path separators could previously read log files, or direct job output, outside ~/.sysm/logs.
  • Generates launchd property lists with Foundation instead of string templates. A working directory or environment variable that contained XML characters previously produced an invalid job without an error.
  • Restricts self-update downloads to HTTPS for the request and every redirect, stops on HTTP errors from the GitHub API, and stages downloads in the per-user temporary directory. Self-update already verified each archive against the release SHA-256 digest.

Compatibility

  • sysm schedule now rejects job names that contain spaces, slashes, or other characters outside the allowed set, or that start with a dot, underscore, or hyphen. Existing jobs with such names still run and still appear in sysm schedule list, but other schedule commands reject them. To remove one, run launchctl unload on its plist in ~/Library/LaunchAgents, then delete the file.
  • The minimum macOS version remains 13. An upcoming release raises it to macOS 26.

Validation

The Focus and schedule fixes include exploit regressions and legitimate-behavior coverage. The changes passed debug and release builds, 721 unit tests, and DocC validation on macOS 26 with Xcode 26.6, and the same build and tests on the Xcode 27 preview runner.

Changes since the previous release

  • WZ-911: Release 1.26.3.2 (#10) (b49ac19)
  • WZ-911: Guard VM save and restore to Apple silicon (fc16c90)
  • WZ-911: Harden self-update downloads (2b37df7)
  • WZ-911: Declare package products (9882466)
  • WZ-911: Validate launchd job names and plists (d8d9ab8)
  • WZ-911: Escape Focus mode names in AppleScript (072dd74)
  • WZ-911: Build CI and releases on Xcode 26.6 (c41ab5e)
  • Point task tracking at Linear (1a7874a)
  • Add structured Markdown note creation (44550e2)

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.3.2/sysm-1.26.3.2-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 5fceffa9ad71417f67e8ac78de746801c1915914d2240c9c7fa586333bf1ece2

sysm 1.26.3.1 — Q3 2026 Security Completion Release

Choose a tag to compare

@github-actions github-actions released this 13 Jul 03:55
346c683

This revision completes the remaining P3 remediations from the repository security review. Together with the P2 hardening shipped in v1.13.3 and consolidated in v1.26.3.0, every reportable P2 and P3 item from that review now has a merged source fix.

Security fixes

  • Prevents destructive Apple Notes export collisions. Export filenames now retain a readable title prefix plus a stable note-identity suffix, the complete batch is checked before writing, and notes import --delete independently requires one-to-one source and destination identities before deleting anything.
  • Prevents Photos export from following a symbolic link at the destination. The final path component is opened with no-follow semantics, verified as a regular file before truncation, and written through the validated descriptor.

Compatibility

  • Notes export filenames now include a stable identity suffix. Automation that predicts filenames from note titles alone should consume the returned export path instead.
  • Photos export still creates new files and replaces existing regular files. Symbolic links, directories, FIFOs, and other special files at the final destination are now rejected.

Validation

Both fixes include exploit regressions and legitimate-behavior coverage. Their pull requests passed debug and release builds, test coverage, formatting and lint checks, and DocC validation before merge.

Changes since the previous release

  • SYSM-82: release 1.26.3.1 (#8) (346c683)
  • SYSM-81: prevent Photos export symlink writes (#7) (24843da)
  • SYSM-80: prevent destructive Notes export collisions (#6) (1b61781)

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.3.1/sysm-1.26.3.1-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 33924839dec077acf8c32f34ee51a07b215ca9f866e1b1835c4250c42d2d4d21

sysm 1.26.3.0 — Q3 2026 Security & Release-Cycle Milestone

Choose a tag to compare

@github-actions github-actions released this 13 Jul 00:10
ba8ffe9

This release establishes sysm's quarterly release-cycle numbering and consolidates the security hardening delivered in v1.13.3 with the follow-on secure secret-input work now on main.

Highlights

  • Introduces GENERATION.YY.QUARTER.REVISION versioning, beginning with the Q3 2026 base release at revision 0.
  • Includes the P2 security remediation batch first shipped in v1.13.3, covering updater integrity and stronger plugin, workflow, and process-execution trust boundaries.
  • Removes six remaining secret-bearing command-line argument paths for Slack, CalDAV, Keychain, and PDF operations.
  • Includes the repaired Podcasts command and playback behavior delivered during the same hardening cycle.

Breaking security changes

Secrets are no longer accepted directly in process arguments. Affected commands now use a protected terminal prompt, non-TTY standard input, or an explicitly inherited file descriptor. Existing automation that passes Slack tokens, CalDAV app passwords, Keychain values, or PDF passwords as flag values must migrate to the secure input forms documented in the secure secret-input guide.

This intentional compatibility break prevents secrets from being exposed through process listings and shell history.

Release-cycle policy

1.26.3.0 means product/UI generation 1, year 2026, quarter 3, base revision 0. Later Q3 releases increment only the final field; the Q4 base becomes 1.26.4.0.

Changes since the previous release

  • SYSM-79: adopt release-cycle versioning for 1.26.3.0 (#5) (ba8ffe9)
  • SYSM-78: replace secret argv with protected input (#4) (930a095)
  • Sunday slow roll, nudging a little something out the door (d5411c5)

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.3.0/sysm-1.26.3.0-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 73b4124c75b79a56ccbe744f2fe411e8edffc1245b930c0c48ca8136944d2e12

v1.13.3

Choose a tag to compare

@github-actions github-actions released this 12 Jul 15:36
3cf24f5

Changes in this release

  • SYSM-77: complete P2 security remediation and release v1.13.3 (#3) (3cf24f5)
  • Align task tracking guidance with Plane (22f2b9d)
  • SYSM-76: repair Podcasts commands (#2) (a53170c)
  • Retire local .task-tracking; tasks tracked in Plane (plane-goa) (8e8ded2)

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.13.3/sysm-1.13.3-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: a65ecf6e78399e0f6b4f0261f7440c9eb242280c7e36a9c0fbf5c264a4ea95a9

sysm 1.13.2

Choose a tag to compare

@brndnsvr brndnsvr released this 11 May 17:29

Changes in this release

  • fix(outlook): legacy AppleScript bugs in calendar, tasks, and sender extraction (6d0230f)
  • chore: bump task-tracking submodule (489f0bd)
  • adding updated Version.swift file (9f36165)
  • Update formula checksums for v1.13.1 (bbd44b1)

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.13.2/sysm-1.13.2-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 252302e64c619d17b9438ed18490eafcc5c97109e020c82142c0045a9be190cb

sysm 1.13.1

Choose a tag to compare

@brndnsvr brndnsvr released this 30 Mar 14:13

Changes in this release

  • Alphabetize subcommands in help output, fix Homebrew tap update workflow (9d271fb)
  • Refactor CacheService: in-memory caching, atomic writes, injectable path (7a414ff)

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.13.1/sysm-1.13.1-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 2e00e34be3b72dd9ecda2935b94d301af0aae85e0a96ffe940f7dd68b563ddcf

sysm 1.13.0

Choose a tag to compare

@brndnsvr brndnsvr released this 16 Mar 14:22

Changes in this release

  • feat: add CalDAV-based attendee invitations for calendar events (64b5cf7)
  • fix Formula: correct skill sha256 and resource install DSL (3b2dc18)
  • sync Formula/sysm.rb with homebrew-tap (binary install, skill resource) (5b0fc15)

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.13.0/sysm-1.13.0-macos-arm64.tar.gz
tar -xzf sysm.tar.gz
sudo mv sysm /usr/local/bin/

SHA256: 219e49eef2dad951a3fa237d6e1869583ed63921312d8b94117f50dcb87f4a74