Summary
Drifty 1.9.0 brings drift alerts into Companion, adds privacy-preserving community focus milestones, improves classification and settings clarity, and hardens Cloud AI and device sync behavior.
Diff basis
- Exact release source:
a1f607441908dd4e71b6689a34c5c3bc0d68be83. - Compared the 1.8.1 frozen source
530b81009ee9c5e098a977588362833bbc822a42through the exact release source. - Reviewed the merged release-range work through PRs #930 and #932–#952, plus the previously excluded app-version observability commits now present in the binary.
Changes
Security / Privacy
- Device sync now isolates cursors, deletions, and purge generations by account, validates the signed-in account server-side, and prevents stale clients from recreating activity after an account-wide purge.
- Production analytics accepts only the documented allowlisted event contract, and the production build rejects invalid public ingestion settings.
Added
- Companion can celebrate days estimated in the top 10% using anonymous aggregate opt-in leaderboard totals; participant-level focus records are not returned.
Changed
- Drift alerts now arrive through Companion, keeping the existing intervention actions on one consistent surface.
- Classification rules have a clearer hierarchy, AI classification controls live under Privacy & Data, and Companion visibility is consolidated.
- Dashboard sharing, Flow density controls, settings navigation icons, Projects alignment, leaderboard profile actions, and Pro plan copy are more consistent.
- Trial Cloud AI capacity is increased to four classifications per minute, and unavailable Cloud AI requests back off before retrying.
Fixed
- Onboarding completion is single-flight and remains retryable after tracker startup or local persistence failures.
- Leaderboard joins use the account name or a private fallback instead of a generic display name.
- Developer prerelease update checks remain available before required account sign-in and during onboarding; stable update prompting is unchanged.
Packaging / Updates
- Release metadata is synchronized at 1.9.0 across the app, workspaces, tracker, Rust, Tauri, lockfiles, and version assertions.
Downloads
- Manual install:
drifty_1.9.0_aarch64.dmg - DMG SHA-256:
c1abd05807de5ccc746fb40b598081a67964fb8b50ca6a263b21423b4b337665 - Updater metadata and archives are for in-app updates and are not manual downloads.
Verification
- Typecheck and the full 3,005-test web suite passed.
- Python: 624 passed, 1 skipped. Rust: 415 passed, 9 ignored.
- The exact production app, nested tracker/helper, updater archive, and DMG passed signing, package inventory, notarization, stapling, and Gatekeeper checks.
- Finder presentation passed at 660×400, 128 px icons, 16 pt labels, and the intended app/Applications positions; the captured installer window matches the approved surface.
- Clean macOS 14.8.7 VM install passed without Command Line Tools or executable Homebrew Python. Poisoned
PATHandDRIFTY_PYTHON_BINdid not invoke an external runtime, and bundled tracker daemon recovery passed. - Google OAuth, the
drifty://callback, onboarding recovery, and the main authenticated production surfaces passed on the exact 1.9.0 app. - A lower-version QA client detected, installed, and relaunched into the signed 1.9.0 candidate. Its installed executable was byte-identical to the candidate (
a82f43defcd823a612a53df26e6d3ea542507a7e3dd57107f3f6e1f2a8398703). - The clean VM permission-denied path and the host's existing System Events permission-allowed path both passed without copying raw activity into evidence.
Notes
- Release class: general.
- Apple Silicon Macs running macOS 13 or later.
- No Windows installer is attached to this release.