Skip to content

v0.5.5 — Quit-relaunch update detection + Workspaces delete button

Choose a tag to compare

@ChiFungHillmanChan ChiFungHillmanChan released this 23 Apr 21:26
· 20 commits to main since this release

Quit-relaunch update detection + Workspaces delete button

The "Update available" menu item now reliably appears after a quit + relaunch, and Workspaces in Settings can finally be removed via a visible toolbar button instead of a hidden swipe gesture.

What's new

  • Quit-and-relaunch refreshes the update check. UpdateChecker.startPeriodicChecks() now bypasses the 24-hour lastCheckedAt debounce on launch via the new forceCheck() helper. The previous behavior cached the check across relaunches, which silently swallowed update notifications when a new release was published inside the same 24-hour window as a prior cached check — exactly the case where a user who had Scene running before the new release would never see it until tomorrow. The hourly background timer and the wake-from-sleep trigger keep the 24-hour debounce; those fire automatically without explicit user intent and the GitHub rate-limit guard belongs there, not on user-driven relaunches.
  • Delete button in Workspaces tab toolbar. WorkspacesTab now has a trash button next to "+ New" and "Duplicate", matching LayoutsTab. The previous List.onDelete swipe affordance is preserved as a secondary entry point but is barely discoverable on macOS NavigationSplitView — multiple users believed the four seeded workspaces (Coding / Meeting / Reading / Streaming) couldn't be removed.

Why this matters

The 0.4.3 update-checker was deliberately conservative — once-per-24h GitHub polling to stay polite. But that conservatism turned into a silent UX failure when the app cached a result on version N, the user closed it, version N+1 shipped, and the user reopened within 24 hours expecting the new release in the menu. Quit + relaunch is a strong "give me fresh state" signal. Hourly + wake-from-sleep aren't — those run silently in the background and still need the rate guard. Splitting the two policies fixes the user-facing case without giving up the rate-limit safety net for unattended polling.

The Workspaces delete fix is plain-old discoverability: the swipe gesture works on macOS NavigationSplitView, but it's invisible. Adding a trash button matches the LayoutsTab pattern and removes the "I can't delete the seeded workspaces" support thread.

Under the hood

  • SceneApp/SceneApp/UpdateChecker.swiftstartPeriodicChecks() now calls forceCheck() (new helper) instead of checkIfDue(). forceCheck() skips the UserDefaults-backed 24-hour debounce and fires performCheck() directly. checkIfDue() is unchanged, still used by the hourly timer and the wake-from-sleep observer.
  • SceneApp/SceneApp/Settings/WorkspacesTab.swift — added a trash toolbar button + deleteSelected() private helper, mirroring the LayoutsTab pattern.
  • No SceneCore changes. 177/177 unit tests still pass.
  • Hardened runtime, Developer ID signed, Apple notarized, stapled.

Install

Homebrew (recommended):

brew upgrade --cask scene                         # existing users
brew install --cask chifunghillmanchan/tap/scene  # new users

DMG: download Scene-0.5.5.dmg below, double-click, drag into Applications. Universal binary — works on Apple Silicon and Intel.

Upgrade notes

  • Existing v0.5.x users: Accessibility grant survives this upgrade automatically. The in-app "Update available" menu item should appear within seconds of relaunching v0.5.4 (the new debounce-bypass logic is in v0.5.5 but v0.5.4's hourly timer + wake-from-sleep will still pick this release up within an hour).
  • Stuck on v0.5.3 or earlier and not seeing the update notification? Run defaults delete com.hillman.SceneApp com.scene.UpdateChecker.lastCheckedAt in Terminal, then quit + relaunch Scene. The 24h debounce in those releases is the bug v0.5.5 fixes — once you're on v0.5.5, this manual step is no longer needed for any future release.
  • Upgrading from v0.4.3 or earlier: the v0.5.0 cdhash transition still applies — re-grant Accessibility once in System Settings → Privacy & Security → Accessibility. The always-visible tccutil reset rescue command inside the onboarding window (V0.5.4+) has the exact recovery if your previous grant gets stuck.