Skip to content

v0.6.0 — diagnostics + persistent workspaces

Choose a tag to compare

@ChiFungHillmanChan ChiFungHillmanChan released this 25 Apr 22:27
· 11 commits to main since this release

Scene V0.6.0 ships two major features: a privacy-first diagnostics subsystem so bug reports take 30 seconds, and persistent workspaces so each context (Coding / Reading / Streaming) gets its own pinned apps + assigned macOS Desktop with optional auto-hide / auto-quit enforcement.

What's new

  • Diagnostics. New "Diagnostics" section in Settings → About. When enabled (default ON), Scene records orchestration events to ~/Library/Application Support/Scene/diagnostics/events-YYYY-MM-DD.jsonl — layout fires, workspace step timing, AX permission changes, screen arrangement diffs, animation outcomes (including silent AX setFrame failures previously swallowed by os.Logger). 2 MB hard cap, gzip rotation on day boundary, 7-day retention. Toggling off drains the writer + deletes everything; toggling back on regenerates the salt for forward secrecy.
  • Export Diagnostics for Bug Report packages a sanitized zip — workspace names, app bundle IDs, monitor names, calendar keywords, and Focus shortcut names are all replaced with 11-character SHA hashes. The salt itself never leaves your Mac (only hashID does, so within one bundle hashes are correlatable but not reversible). Reveals the zip in Finder + opens a pre-filled GitHub issue with environment info. Reporting a bug now takes 30 seconds.
  • Persistent Workspaces. Workspaces gain three new fields: Pinned Apps (always launched on activation), Assign to Desktop 1-9 (Scene posts Mission Control's "Switch to Desktop N" shortcut to land on a specific Space), and Enforcement Mode (Off / Arrange only / Hide inactive pinned apps / Quit inactive pinned apps). Enforcement runs continuously in the background — switching workspaces auto-hides or terminates the previous workspace's pinned apps so each context stays visually clean. Requires "Switch to Desktop N" enabled in System Settings → Keyboard → Keyboard Shortcuts → Mission Control.
  • Workspace editor Save UX. Save button is now disabled when there are no unsaved edits, shows a grey "Unsaved changes" badge while you have a dirty draft, and flashes a green "Saved ✓" indicator for 2 seconds after a successful commit.

Why this matters

The bugs that hurt on a multi-display, multi-Workspace, AX-heavy menu-bar app rarely come from geometry math — they come from environment changes the app doesn't control: display arrangement reshuffling across sleep, Sidecar disconnecting, Focus filters firing mid-flip, OS state drift. Crash logs see none of this. V0.6 surfaces it all locally with a privacy-first opt-in design — no telemetry server, no data leaves your Mac unless you explicitly export and review the bundle in your browser.

Under the hood

  • 317 unit tests (was 244): DiagnosticEvent Codable + byte-cap, EnvironmentSnapshot signature stability + sensitivity to resolution / scale / main-flag / active changes, EventLog ring buffer, DiagnosticWriter actor (race-safe drain — single AsyncStream + sole consumer; no detached Task {}), DiagnosticBudget (newline-aware truncation, eviction, 7-day retention), GzipWriter (round-trip via /usr/bin/gunzip), SaltStore (mode 0600, regeneration), ExportSanitizer (PII-drop property check), SettingsStore v2→v3 migration.
  • Universal binary (arm64 + x86_64), macOS 14+, Apple notarized.

Install

Download Scene-0.6.0.dmg below or via brew install --cask chifunghillmanchan/tap/scene. Drag Scene.app to /Applications, follow docs/INSTALL.md for the one-time Accessibility-permission step.

Upgrade notes

Existing v0.5.x users: AX permission survives the upgrade automatically (TCC's default designated requirement matches by team ID, not specific cert). The Developer ID Application certificate was reissued for v0.6.0 due to a keychain reset, but team ID 22K6G3HH9G is unchanged, so existing TCC entries continue to validate. If you hit the rare edge case where AX appears revoked, the V0.4 onboarding window auto-prompts with toggle OFF/ON guidance.