Skip to content

Commit 6decea7

Browse files
committed
fix(ui): harden dashboard health summary
1 parent 1264cc1 commit 6decea7

2 files changed

Lines changed: 10 additions & 74 deletions

File tree

lib/codex-manager.ts

Lines changed: 7 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -27,38 +27,6 @@ import {
2727
sanitizeEmail,
2828
selectBestAccountCandidate,
2929
} from "./accounts.js";
30-
<<<<<<< HEAD
31-
=======
32-
import {
33-
createAuthorizationFlow,
34-
exchangeAuthorizationCode,
35-
parseAuthorizationInput,
36-
REDIRECT_URI,
37-
} from "./auth/auth.js";
38-
import { copyTextToClipboard, openBrowserUrl } from "./auth/browser.js";
39-
import { startLocalOAuthServer } from "./auth/server.js";
40-
import {
41-
type ExistingAccountInfo,
42-
isInteractiveLoginMenuAvailable,
43-
promptAddAnotherAccount,
44-
promptLoginMode,
45-
} from "./cli.js";
46-
import {
47-
getCodexCliAuthPath,
48-
getCodexCliConfigPath,
49-
loadCodexCliState,
50-
} from "./codex-cli/state.js";
51-
import {
52-
getLastCodexCliSyncRun,
53-
getLatestCodexCliSyncRollbackPlan,
54-
} from "./codex-cli/sync.js";
55-
import { setCodexCliActiveSelection } from "./codex-cli/writer.js";
56-
import {
57-
applyUiThemeFromDashboardSettings,
58-
configureUnifiedSettings,
59-
resolveMenuLayoutMode,
60-
} from "./codex-manager/settings-hub.js";
61-
>>>>>>> b09a947 (feat(ui): add health summary dashboard)
6230
import { ACCOUNT_LIMITS } from "./constants.js";
6331
import {
6432
loadDashboardDisplaySettings,
@@ -122,7 +90,10 @@ import {
12290
getCodexCliConfigPath,
12391
loadCodexCliState,
12492
} from "./codex-cli/state.js";
125-
import { getLatestCodexCliSyncRollbackPlan } from "./codex-cli/sync.js";
93+
import {
94+
getLastCodexCliSyncRun,
95+
getLatestCodexCliSyncRollbackPlan,
96+
} from "./codex-cli/sync.js";
12697
import { setCodexCliActiveSelection } from "./codex-cli/writer.js";
12798
import { ANSI } from "./ui/ansi.js";
12899
import { confirm } from "./ui/confirm.js";
@@ -4109,6 +4080,7 @@ async function buildLoginMenuHealthSummary(
41094080
ReturnType<typeof getActionableNamedBackupRestores>
41104081
> = {
41114082
assessments: [],
4083+
allAssessments: [],
41124084
totalBackups: 0,
41134085
};
41144086
let rollbackPlan: Awaited<
@@ -4289,31 +4261,17 @@ async function runAuthLogin(): Promise<number> {
42894261
});
42904262
}
42914263
}
4292-
<<<<<<< HEAD
42934264
const flaggedStorage = await loadFlaggedAccounts();
4265+
const healthSummary = await buildLoginMenuHealthSummary(currentStorage);
42944266

42954267
const menuResult = await promptLoginMode(
42964268
toExistingAccountInfo(currentStorage, quotaCache, displaySettings),
42974269
{
42984270
flaggedCount: flaggedStorage.accounts.length,
4271+
healthSummary,
42994272
statusMessage: showFetchStatus ? () => menuQuotaRefreshStatus : undefined,
43004273
},
43014274
);
4302-
=======
4303-
const flaggedStorage = await loadFlaggedAccounts();
4304-
const healthSummary = await buildLoginMenuHealthSummary(currentStorage);
4305-
4306-
const menuResult = await promptLoginMode(
4307-
toExistingAccountInfo(currentStorage, quotaCache, displaySettings),
4308-
{
4309-
flaggedCount: flaggedStorage.accounts.length,
4310-
healthSummary,
4311-
statusMessage: showFetchStatus
4312-
? () => menuQuotaRefreshStatus
4313-
: undefined,
4314-
},
4315-
);
4316-
>>>>>>> b09a947 (feat(ui): add health summary dashboard)
43174275

43184276
if (menuResult.mode === "cancel") {
43194277
console.log("Cancelled.");

test/codex-manager-cli.test.ts

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,9 @@ const clearQuotaCacheMock = vi.fn();
3030
const loadPluginConfigMock = vi.fn();
3131
const savePluginConfigMock = vi.fn();
3232
const previewCodexCliSyncMock = vi.fn();
33-
<<<<<<< HEAD
3433
const applyCodexCliSyncToStorageMock = vi.fn();
3534
const commitPendingCodexCliSyncRunMock = vi.fn();
3635
const commitCodexCliSyncRunFailureMock = vi.fn();
37-
=======
38-
const syncAccountStorageFromCodexCliMock = vi.fn();
39-
const getLastCodexCliSyncRunMock = vi.fn();
40-
>>>>>>> b09a947 (feat(ui): add health summary dashboard)
4136
const getLatestCodexCliSyncRollbackPlanMock = vi.fn();
4237
const rollbackLatestCodexCliSyncMock = vi.fn();
4338
const formatRollbackPathsMock = vi.fn((targetPath: string) => [
@@ -162,16 +157,10 @@ vi.mock("../lib/codex-cli/writer.js", () => ({
162157
}));
163158

164159
vi.mock("../lib/codex-cli/sync.js", () => ({
165-
<<<<<<< HEAD
166160
applyCodexCliSyncToStorage: applyCodexCliSyncToStorageMock,
167161
commitCodexCliSyncRunFailure: commitCodexCliSyncRunFailureMock,
168162
commitPendingCodexCliSyncRun: commitPendingCodexCliSyncRunMock,
169163
formatRollbackPaths: formatRollbackPathsMock,
170-
=======
171-
previewCodexCliSync: previewCodexCliSyncMock,
172-
syncAccountStorageFromCodexCli: syncAccountStorageFromCodexCliMock,
173-
getLastCodexCliSyncRun: getLastCodexCliSyncRunMock,
174-
>>>>>>> b09a947 (feat(ui): add health summary dashboard)
175164
getLatestCodexCliSyncRollbackPlan: getLatestCodexCliSyncRollbackPlanMock,
176165
getLastCodexCliSyncRun: getLastCodexCliSyncRunMock,
177166
previewCodexCliSync: previewCodexCliSyncMock,
@@ -586,14 +575,9 @@ describe("codex manager cli commands", () => {
586575
loadPluginConfigMock.mockReset();
587576
savePluginConfigMock.mockReset();
588577
previewCodexCliSyncMock.mockReset();
589-
<<<<<<< HEAD
590578
applyCodexCliSyncToStorageMock.mockReset();
591579
commitPendingCodexCliSyncRunMock.mockReset();
592580
commitCodexCliSyncRunFailureMock.mockReset();
593-
=======
594-
syncAccountStorageFromCodexCliMock.mockReset();
595-
getLastCodexCliSyncRunMock.mockReset();
596-
>>>>>>> b09a947 (feat(ui): add health summary dashboard)
597581
getLatestCodexCliSyncRollbackPlanMock.mockReset();
598582
rollbackLatestCodexCliSyncMock.mockReset();
599583
formatRollbackPathsMock.mockReset();
@@ -1146,7 +1130,6 @@ describe("codex manager cli commands", () => {
11461130
const exitCode = await runCodexMultiAuthCli(["auth", "restore-backup"]);
11471131

11481132
expect(exitCode).toBe(0);
1149-
<<<<<<< HEAD
11501133
expect(listNamedBackupsMock).toHaveBeenCalledTimes(1);
11511134
expect(selectMock).toHaveBeenCalledTimes(2);
11521135
expect(selectMock.mock.calls[0]?.[1]).toMatchObject({
@@ -1178,11 +1161,6 @@ describe("codex manager cli commands", () => {
11781161
"Restore named-backup? Import 0 new accounts for 1 total. Replacing 1 current account.",
11791162
);
11801163
expect(restoreNamedBackupMock).toHaveBeenCalledWith("named-backup");
1181-
=======
1182-
expect(action).toHaveBeenCalledTimes(1);
1183-
expect(getActionableNamedBackupRestoresMock).toHaveBeenCalledTimes(1);
1184-
expect(createAuthorizationFlowMock).toHaveBeenCalledTimes(1);
1185-
>>>>>>> b09a947 (feat(ui): add health summary dashboard)
11861164
});
11871165

11881166
it("restores healthy flagged accounts into active storage", async () => {
@@ -2342,7 +2320,7 @@ describe("codex manager cli commands", () => {
23422320
const exitCode = await runCodexMultiAuthCli(["auth", "login"]);
23432321

23442322
expect(exitCode).toBe(0);
2345-
expect(getActionableNamedBackupRestoresMock).toHaveBeenCalledTimes(1);
2323+
expect(getActionableNamedBackupRestoresMock).toHaveBeenCalledTimes(2);
23462324
expect(promptLoginModeMock).toHaveBeenCalledTimes(1);
23472325
expect(promptLoginModeMock.mock.calls[0]?.[0]).toEqual([]);
23482326
expect(confirmMock).not.toHaveBeenCalled();
@@ -2687,7 +2665,7 @@ describe("codex manager cli commands", () => {
26872665
const exitCode = await runCodexMultiAuthCli(["auth", "login"]);
26882666

26892667
expect(exitCode).toBe(0);
2690-
expect(getActionableNamedBackupRestoresMock).not.toHaveBeenCalled();
2668+
expect(getActionableNamedBackupRestoresMock).toHaveBeenCalledTimes(1);
26912669
expect(confirmMock).not.toHaveBeenCalled();
26922670
expect(createAuthorizationFlowMock).toHaveBeenCalledTimes(1);
26932671
expect(restoreNamedBackupMock).not.toHaveBeenCalled();
@@ -2981,7 +2959,7 @@ describe("codex manager cli commands", () => {
29812959

29822960
expect(exitCode).toBe(0);
29832961
expect(action).toHaveBeenCalledTimes(1);
2984-
expect(getActionableNamedBackupRestoresMock).not.toHaveBeenCalled();
2962+
expect(getActionableNamedBackupRestoresMock).toHaveBeenCalledTimes(1);
29852963
expect(createAuthorizationFlowMock).toHaveBeenCalledTimes(1);
29862964
},
29872965
);

0 commit comments

Comments
 (0)