You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
R1-P1-1: add_source now splits master-key prep (generate keychain key +
encode phrase, no account stamp) from the atomic DB write; on a DB
failure when a key was just generated it deletes the keychain master key
so the account stays unprovisioned and a retry re-reveals the phrase.
R1-P1-2: preview_exclusions no longer walks a raw webview path - the DTO
takes a dialog token (resolved via a new non-consuming
AppState::peek_dialog_token so add_source keeps its single-use TAKE) XOR
a source_id (path resolved from SQLite); neither/bad-token is rejected.
R1-P1-3: pick_drive_folder honours remote_mode via select_picker_store -
Fake builds an InMemoryRemoteStore (no real store, no keychain), Real
builds the live GoogleDriveStore.
R1-P1-4: store_client_creds is FATAL (returns CommandResult); fresh-add
rolls back the stored refresh token on creds failure, reauth persists
creds before flipping the account to ok - no account that cannot refresh.
R1-P2-1: build_account loads the persisted OrchestratorConfig at cold
start instead of ::default(), so saved settings apply without a live edit.
R1-P2-2: add_source rejects a root overlapping (ancestor/descendant/
identical to) any existing source root per DESIGN s5.2.2; siblings allowed.
Tests: peek non-consuming + TTL, overlap nested/ancestor/identical
rejected + sibling allowed, fake picker lists without creds, cold-start
config reflects persisted non-default settings.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CyiRqk2DVwmJjEu5gcD1m
0 commit comments