Skip to content

Lower minimum macOS to 14 (Sonoma)#86

Merged
thdxg merged 2 commits into
mainfrom
claude/focused-wiles-d9914f
Jun 13, 2026
Merged

Lower minimum macOS to 14 (Sonoma)#86
thdxg merged 2 commits into
mainfrom
claude/focused-wiles-d9914f

Conversation

@thdxg

@thdxg thdxg commented Jun 13, 2026

Copy link
Copy Markdown
Owner

What

Drops Macterm's minimum macOS from 26 (Tahoe) to 14 (Sonoma) by gating the few Tahoe-only APIs that were used ungated. The deployment target, LSMinimumSystemVersion, Sparkle appcast floor, and docs all move to 14.

Why

The app required macOS 26 only incidentally — a handful of Tahoe APIs were called without availability guards. The core (terminal surface, splits, persistence, hotkeys) has no real 26 dependency. macOS 14 is the practical floor: @Observable, which the entire state layer uses, needs 14, and below that the build fails with ~87 errors. (GhosttyKit's prebuilt binary itself allows 13.)

Changes

  • .glassEffect on the command palette → falls back to .regularMaterial below macOS 26.
  • NSToolbar.allowsDisplayModeCustomization (macOS 15+) → gated behind #available.
  • Liquid Glass settings (toggle + style picker) → hidden below macOS 26 via the newly-exposed WindowAppearance.glassSupported. Hidden rather than disabled, since the feature doesn't exist on older systems rather than being temporarily off. Blur footnote adjusted to match.
  • Deployment target 26 → 14 (project.yml, Info.plist).
  • Metadata: Sparkle appcast minimumSystemVersion → 14 (so 14 users get updates), README badge, CLAUDE.md.

Verification

  • Built and run on a real macOS 14 VM — launches, terminal works, command palette / split-pane drag / quick terminal / tabs all render natively. The dangling Liquid Glass setting was caught here and fixed.
  • format, lint, test all pass at the 14.0 target.

Reviewer notes

  • CI runners stay on macos-26 — that's the build host, which needs the 26 SDK to compile the gated glass paths. The deployment target is independent and back-deploys to 14. Downgrading the runner would break the build.
  • macOS 14-only caveat: the toolbar-lock fix from fix: lock the toolbar to icon-only so the sidebar toggle can't fold into the overflow menu #85 uses a macOS 15 API, so on 14 a user picking "Icon and Text" from the toolbar context menu can re-trigger that bug. Harmless and self-inflicted; the lock is active on 15+. Flagged and accepted when choosing the 14 floor.
  • The Tahoe titlebar-tree walk in WindowAppearance is gated to 26, so it's a no-op on 14/15 and already works on Tahoe — untested on those VMs only because it doesn't run there.

thdxg added 2 commits June 13, 2026 15:07
The app required macOS 26 only because a handful of Tahoe APIs were used
ungated; nothing in the core depends on 26. Drop the deployment target to
14 (the floor imposed by @observable, which GhosttyKit's macOS 13 binary
otherwise allows) and guard each Tahoe-only path:

- .glassEffect on the command palette falls back to .regularMaterial.
- NSToolbar.allowsDisplayModeCustomization (macOS 15+) is gated.
- The Liquid Glass settings (toggle + style picker) are hidden below
  macOS 26 via the now-exposed WindowAppearance.glassSupported, since the
  feature doesn't exist there rather than being temporarily unavailable.

Verified on a macOS 14 VM: launches and renders natively; build, lint,
and tests pass at the 14.0 target.
Reflect the lowered floor: README badge, CLAUDE.md requirements/UI notes,
and the Sparkle appcast minimumSystemVersion (so macOS 14 users are
offered updates instead of being filtered out).
@github-actions github-actions Bot added area:ui Views, Settings UI area:ci CI workflows, dev tooling area:docs Documentation area:release Release workflow, Info.plist labels Jun 13, 2026
@thdxg thdxg merged commit 8b7caf9 into main Jun 13, 2026
5 checks passed
@thdxg thdxg deleted the claude/focused-wiles-d9914f branch June 13, 2026 06:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:ci CI workflows, dev tooling area:docs Documentation area:release Release workflow, Info.plist area:ui Views, Settings UI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant