Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
829a3ea
feat(sync): add sync center and status surface
ndycode Mar 12, 2026
ada724f
fix(sync): harden sync center apply state
ndycode Mar 13, 2026
e12966a
Merge remote-tracking branch 'microck/main' into git-plan/04-sync-center
ndycode Mar 13, 2026
c83f95f
fix(sync): harden sync center apply flow
ndycode Mar 13, 2026
5515a9c
test(sync): cover preview-to-apply refresh race
ndycode Mar 13, 2026
692781c
Merge remote-tracking branch 'origin/git-plan/01-reset-safety' into g…
ndycode Mar 13, 2026
96f2aa0
fix(sync): preserve safe local selection during sync
ndycode Mar 13, 2026
a01d015
fix(sync): close final review nits
ndycode Mar 13, 2026
19b098b
fix(sync): close remaining sync center review gaps
ndycode Mar 13, 2026
3c70c6b
fix(sync): finish remaining PR audit follow-ups
ndycode Mar 13, 2026
d7d5ffd
fix(sync): harden remaining sync center retries
ndycode Mar 13, 2026
384f058
fix(sync): close remaining review regressions
ndycode Mar 13, 2026
69948e9
Fix sync-center state and apply regressions
ndycode Mar 14, 2026
4d77fd3
Add loadFromDisk pending-run regressions
ndycode Mar 14, 2026
d9efb22
fix(sync): harden reload and pending sync state
ndycode Mar 14, 2026
81c9e29
fix(sync): close remaining review gaps
ndycode Mar 14, 2026
0d8dcfa
fix(sync): close remaining review gaps
ndycode Mar 14, 2026
fdd76cb
fix(sync): preserve newer local selection on mtime fallback
ndycode Mar 15, 2026
d578191
fix(sync): avoid publishing aborted live-sync paths
ndycode Mar 15, 2026
952e6a2
test(sync): reset modules after each codex sync test
ndycode Mar 15, 2026
4a1cbfa
test(storage): keep import export suite on one module
ndycode Mar 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions docs/reference/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,26 @@ Controls display style:
- `uiAccentColor`
- `menuFocusStyle`

## Sync Center

The settings hub includes a preview-first sync center for Codex CLI account sync.
See [upgrade notes](../upgrade.md) for sync workflow changes.

Before applying sync, it shows:

- target path
- current source path when available
- last sync result for this session
- preview summary (adds, updates, destination-only preserved accounts)
- destination-only preservation behavior
- backup and rollback context (`.bak`, `.bak.1`, `.bak.2`, `.wal`)

Validation:

- `npm run typecheck`
- `npm run build`
- `npm test`

---

## Experimental
Expand Down
8 changes: 7 additions & 1 deletion lib/accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@ import {
loadCodexCliState,
type CodexCliTokenCacheEntry,
} from "./codex-cli/state.js";
import { syncAccountStorageFromCodexCli } from "./codex-cli/sync.js";
import {
commitCodexCliSyncRunFailure,
commitPendingCodexCliSyncRun,
syncAccountStorageFromCodexCli,
} from "./codex-cli/sync.js";
import { setCodexCliActiveSelection } from "./codex-cli/writer.js";

export {
Expand Down Expand Up @@ -116,7 +120,9 @@ export class AccountManager {
if (synced.changed && sourceOfTruthStorage) {
try {
await saveAccounts(sourceOfTruthStorage);
commitPendingCodexCliSyncRun(synced.pendingRun);
} catch (error) {
commitCodexCliSyncRunFailure(synced.pendingRun, error);
log.debug("Failed to persist Codex CLI source-of-truth sync", {
error: String(error),
});
Expand Down
Loading