Skip to content

feat(mac): About window — changelog link + update discovery (+ website /changelog)#105

Merged
oratis merged 1 commit into
mainfrom
feat/mac-about-updater
Jun 18, 2026
Merged

feat(mac): About window — changelog link + update discovery (+ website /changelog)#105
oratis merged 1 commit into
mainfrom
feat/mac-about-updater

Conversation

@oratis

@oratis oratis commented Jun 18, 2026

Copy link
Copy Markdown
Owner

What

A version-upgrade mechanism on the Mac app's About screen: jump to the meetlisa.ai changelog, and discover + download new versions. Plus the branded changelog page the link points to.

Mac app (packaging/mac-client)

  • Updater.swift — dependency-free discovery: GET the latest GitHub release, semver-compare to the bundle version, surface the notarized DMG asset (or release page). Launch discovery is throttled to once/day and once per version (never nags).
    • Deliberately not Sparkle: it discovers + opens the download (Gatekeeper verifies the notarized DMG) rather than hand-rolling an in-place binary swap — the RCE surface we don't want to own. (Sparkle = a clean future upgrade if one-click in-place is wanted.)
  • AboutWindow.swift — custom About window (replaces the standard panel): icon / name / version / MIT link, a "Changelog" button → meetlisa.ai/changelog, and an in-place "Check for Updates" → "Download vX" flow with status text.
  • AppDelegate — About menu opens the custom window; new "Check for Updates…" menu item; quiet launch discovery shows a gentle Download / Changelog / Later prompt only when a newer release exists. Info.plist fallback → 0.10.0 (the build still stamps the real version from package.json).

Website (so the link resolves)

  • /changelog (+ /zh-CN/changelog) — built from the GitHub Releases API at build time (fail-safe → GitHub fallback), rendered as terminal cards matching the site's CRT aesthetic. lib/releases.ts is the shared fetch. Nav gains "changelog" in both languages.

Verification

  • swift build — clean (Swift 6.3.2)
  • npm run build (website) — /changelog + /zh-CN/changelog render 10 real release cards (v0.10.0 → v0.2.0), no fallback
  • Behavior choices noted inline: open-download (not in-place auto-update); daily/once-per-version discovery

Note: the live meetlisa.ai/changelog page appears on the next website deploy; the app link is correct immediately.

🤖 Generated with Claude Code

…te /changelog

Adds a version-upgrade mechanism to the Mac app's About screen and the branded
changelog it links to.

Mac app (packaging/mac-client):
- Updater.swift — dependency-free update discovery: GET the latest GitHub
  release, semver-compare to the bundle version, surface the notarized DMG asset
  (or release page). Launch-time discovery is throttled to once/day and once per
  version (never nags). Deliberately not Sparkle: it discovers + opens the
  download (Gatekeeper verifies the notarized DMG) rather than hand-rolling an
  in-place binary swap (the RCE surface we don't want).
- AboutWindow.swift — custom About window (replaces the standard panel): icon /
  name / version / MIT link, a "Changelog" button → meetlisa.ai/changelog, and
  an in-place "Check for Updates" → "Download vX" flow with status.
- AppDelegate — About menu opens the custom window; new "Check for Updates…"
  menu item; quiet launch discovery shows a gentle Download/Changelog/Later
  prompt only when a newer release exists. Info.plist fallback → 0.10.0 (the
  build still stamps the real version from package.json).

Website (so the link resolves):
- /changelog (+ /zh-CN/changelog) — builds the changelog from the GitHub
  Releases API at build time (fail-safe → GitHub fallback), rendered as terminal
  cards matching the site. lib/releases.ts is the shared fetch. Nav gains
  "changelog" in both languages.

Verified: `swift build` clean; `npm run build` (website) renders 10 real release
cards (v0.10.0 → v0.2.0), no fallback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@oratis oratis merged commit abe2f33 into main Jun 18, 2026
@oratis oratis deleted the feat/mac-about-updater branch June 18, 2026 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant