UI fix (SDK-agnostic):
- SettingsView height 480 → 620 so the settings mode panel size matches
list mode at maximum. Avoids MenuBarExtra's NSPanel not shrinking when
switching between list and settings views.
- Drop the .id(showSettings) hack — it forced view rebuild but the panel
is managed by AppKit and does not respond to SwiftUI view recreation.
CI hardening:
- Use maxim-lobanov/setup-xcode@v1 with latest-stable so the runner Xcode
is as close to local (Xcode 26.5) as available, minimizing SwiftUI SDK
behavior drift.
- Run xcodebuild test before building the DMG; release will fail-fast on
test regressions instead of shipping broken binaries.
Root cause analysis of v1.3.4 regression:
Local Xcode 26.5 produced a 5.2MB binary linking to macOS 26 SwiftUI
symbols; GH macos-latest with default Xcode 16 produced a 5.0MB binary
linking to macOS 15 SwiftUI. The .id() hack happened to look correct in
the SDK 26 build but not in SDK 15 — same source, different runtime
behavior. The height:620 approach works in both.
Builds Universal Binary (arm64 + x86_64), packages DMG with hdiutil,
and uploads as GitHub Release artifact when a v* tag is pushed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>