Repository navigation
fix(macos): add account actions and isolate native keyboard input - #4499
Merged
Merged
Conversation
Co-authored-by: Tyler Dane <tyler-dane@users.noreply.github.com>
Co-authored-by: Tyler Dane <tyler-dane@users.noreply.github.com>
Co-authored-by: Tyler Dane <tyler-dane@users.noreply.github.com>
Co-authored-by: Tyler Dane <tyler-dane@users.noreply.github.com>
Co-authored-by: Tyler Dane <tyler-dane@users.noreply.github.com>
tyler-dane
marked this pull request as ready for review
October 16, 2026 23:28
tyler-dane
enabled auto-merge
October 16, 2026 23:28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #4498
What and why
Settings and the command palette now offer Export data and confirmed Log out. Export saves user-created events stored on this Mac as JSON through the native save panel, excludes sample events and synced caches, uses a local-date filename, and supports quiet cancellation and retry. Logout preserves drafts on cancel and discards unsaved event changes after explicit confirmation. It waits for event mutations to finish before ending the session.
Keep signed-out behavior consistent with the existing repository policy: remembered accounts remain remote and show login; profiles without remembered authentication return to local mode. Clear refetchable account caches, undo history, searches, and account-specific settings on session changes while preserving local event records. Persist cache ownership using the stable session UID, so a different or unknown account cannot reuse an earlier account's cache after restart. The existing profile request refreshes identity, and a failed offline profile lookup retains the front-token UID. Late event, calendar, profile, billing, booking, and search responses cannot restore prior-session UI data.
Native panels and editable text own typing, navigation, copy/paste, undo and redo. Settings and overlays stop calendar shortcuts from creating events behind them. E exports and O logs out from Accounts; digits 1/2/3 navigate available sections, including Command+digits from text fields. Account actions stay visible in a footer, and Settings fits small windows instead of clipping its controls.
Verify
All CompassData tests pass. Regression coverage includes export filtering/cancellation/retry/local date, confirmed and cancelled logout, cache ownership, local-data retention, stale event/profile/billing/booking responses, and offline session identity. The focused native Settings isolation and export save-panel interaction tests pass. Type-check, lint, knip, Swift contracts and desktop export checks pass.
VERDICT: PASS
Full
bun run verify --strictpasses on the reconciled head 2e84fcb: Swift package tests (including CompassUI), Xcode native tests (34 interactions), type-check, lint, and knip. Swift contracts and desktop export checks also passed. The main merge resolves real keyboard-router and anonymous-calendar bootstrap conflicts while preserving both features.Self-review and simplify pass keep platform save-panel UI separate from storage, and keep request revisions with the stores that own their responses. Remote cache clearing does not remove locally stored event records.