Skip to content

feat(settings): productize stable and advanced controls#108

Open
ndycode wants to merge 26 commits intodevfrom
fresh/05-settings-productization
Open

feat(settings): productize stable and advanced controls#108
ndycode wants to merge 26 commits intodevfrom
fresh/05-settings-productization

Conversation

@ndycode
Copy link
Owner

@ndycode ndycode commented Mar 16, 2026

Summary

  • Reopens the preserved settings-productization slice from archived PR #79
  • Stacked PR on fresh/04-sync-center

What Changed

  • Splits settings into clearer everyday and advanced/operator sections, updates hints and ordering, and keeps the recovery behavior aligned with the earlier recovery branches.
  • Keeps the branch limited to settings productization instead of dragging later restore cleanup into the diff.

Validation

  • npm run lint
  • npm run typecheck
  • npm test
  • npm test -- test/documentation.test.ts
  • npm run build

Docs and Governance Checklist

  • README updated (if user-visible behavior changed)
  • docs/getting-started.md updated (if onboarding flow changed)
  • docs/features.md updated (if capability surface changed)
  • relevant docs/reference/* pages updated (if commands/settings/paths changed)
  • docs/upgrade.md updated (if migration behavior changed)
  • SECURITY.md and CONTRIBUTING.md reviewed for alignment

Risk and Rollback

  • Risk level: medium
  • Rollback plan: revert d0a80b5 and 310325d

Additional Notes

  • Preserved branch validation from the fresh-restack run passed lint, typecheck, build, and full tests.

note: greptile review for oc-chatgpt-multi-auth. cite files like lib/foo.ts:123. confirm regression tests + windows concurrency/token redaction coverage.

Greptile Summary

this pr productizes the settings hub by splitting it into a clear two-tier layout: an Everyday Settings section (list appearance, details line, results & refresh, colors) and an Advanced & Operator section (codex cli sync, experimental, advanced backend controls). it also adds contextual hint strings to every menu item so users see a one-line description before entering a panel.

key changes:

  • sync-center moved from everyday → advanced section; color changed from green → yellow to signal operator-level scope.
  • backend color changed from green → yellow for the same reason.
  • hint strings added for all 7 actionable menu items in lib/ui/copy.ts.
  • docs restructured from flat ## to a nested ## / ### / #### hierarchy matching the new menu layout.
  • sync-center added to BASELINE_SETTINGS_HUB_PANELS, which automatically generates 3 new cancel-matrix test cases (windows-ebusy, concurrent-save-ordering, token-refresh-race) — a positive concurrency coverage gain.
  • experimentalHint and experimentalSubtitle carry nearly identical text with only a trailing period difference; they are locked separately in tests so future drift is possible.

Confidence Score: 4/5

  • safe to merge — purely cosmetic/structural ui copy and menu ordering changes with solid test coverage and no schema modifications.
  • all five changed files are label/copy/menu-order changes with no filesystem writes, no token handling, and no schema changes. the sync-center addition to the cancel matrix improves windows/concurrency coverage. the only gap is a near-duplicate string between experimentalHint and experimentalSubtitle that could silently drift in future edits.
  • lib/ui/copy.ts — experimentalHint / experimentalSubtitle near-duplication

Important Files Changed

Filename Overview
lib/ui/copy.ts renames all settings labels, adds hint strings for each menu item, and reorders syncCenter into the advanced group. one minor maintenance risk: experimentalHint and experimentalSubtitle carry nearly identical text with only a trailing period difference.
lib/codex-manager/settings-hub.ts moves syncCenter from the everyday section to the advanced section, changes its color from green to yellow, and wires in hint strings for all menu items. structurally clean; no logic or concurrency changes.
test/codex-manager-cli.test.ts reorders SETTINGS_HUB_MENU_ORDER to match the new menu layout and adds sync-center to BASELINE_SETTINGS_HUB_PANELS, which automatically adds 3 new cancel-matrix cases (windows-ebusy, concurrent-save-ordering, token-refresh-race) for the sync-center panel — a positive coverage gain.
test/documentation.test.ts locks the updated label and hint strings and promotes heading assertions from ## to ### / #### to match the new two-level doc structure. alignment with the reference doc is tight and well-tested.
docs/reference/settings.md restructures settings into Everyday / Advanced sections and promotes backend sub-sections from ### to #### to match the new hierarchy. clean and consistent with the menu changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Settings Hub] --> B["**Everyday Settings** (sectionTitle heading)"]
    A --> C["**Advanced & Operator** (advancedTitle heading)"]

    B --> B1["List Appearance\n(account-list) 🟢"]
    B --> B2["Details Line\n(summary-fields) 🟢"]
    B --> B3["Results & Refresh\n(behavior) 🟢"]
    B --> B4["Colors\n(theme) 🟢"]

    C --> C1["Codex CLI Sync\n(sync-center) 🟡\n— moved from Everyday —"]
    C --> C2["Experimental\n(experimental) 🟡"]
    C --> C3["Advanced Backend Controls\n(backend) 🟡\n— was green, now yellow —"]

    C1 --> D1["Preview one-way sync\nbefore applying"]
    C3 --> E1["Session & Sync"]
    C3 --> E2["Rotation & Quota"]
    C3 --> E3["Refresh & Recovery"]
    C3 --> E4["Performance & Timeouts"]
Loading

Comments Outside Diff (1)

  1. test/codex-manager-cli.test.ts, line 416-422 (link)

    P2 sync-center missing from cancellation matrix

    BASELINE_SETTINGS_HUB_PANELS (used by SETTINGS_CANCEL_MATRIX to exercise windows-ebusy / concurrent-save-ordering / token-refresh-race scenarios) was not updated to include "sync-center" even though sync-center is now promoted to a first-class entry in SETTINGS_HUB_MENU_ORDER. sync-center applies writes too — the windows EBUSY and token-refresh-race cancel paths are untested for that panel. on windows, antivirus file locks during sync apply are a real risk.

    Rule Used: What: Every code change must explain how it defend... (source)

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: test/codex-manager-cli.test.ts
    Line: 416-422
    
    Comment:
    **`sync-center` missing from cancellation matrix**
    
    `BASELINE_SETTINGS_HUB_PANELS` (used by `SETTINGS_CANCEL_MATRIX` to exercise windows-ebusy / concurrent-save-ordering / token-refresh-race scenarios) was not updated to include `"sync-center"` even though sync-center is now promoted to a first-class entry in `SETTINGS_HUB_MENU_ORDER`. sync-center applies writes too — the windows EBUSY and token-refresh-race cancel paths are untested for that panel. on windows, antivirus file locks during sync apply are a real risk.
    
    
    
    **Rule Used:** What: Every code change must explain how it defend... ([source](https://app.greptile.com/review/custom-context?memory=637a42e6-7a78-40d6-9ef8-6a45e02e73b6))
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

Fix All in Codex

Prompt To Fix All With AI
This is a comment left during a code review.
Path: lib/ui/copy.ts
Line: 85-88

Comment:
**Near-duplicate string between `experimentalHint` and `experimentalSubtitle`**

`experimentalHint` (line 86) and `experimentalSubtitle` (line 88) carry essentially identical text but differ only by a trailing period. both are now locked separately in `documentation.test.ts`, so if one drifts in a future edit the other will silently diverge.

consider extracting a shared constant, or at minimum leaving a comment noting the intentional near-duplication:

```suggestion
		experimentalHint:
			"Preview sync and backup actions before they become stable.",
		experimentalTitle: "Experimental",
		// NOTE: experimentalSubtitle mirrors experimentalHint minus the trailing period — keep in sync
		experimentalSubtitle: "Preview sync and backup actions before they become stable",
```

How can I resolve this? If you propose a fix, please make it concise.

Last reviewed commit: f2f8427

Copilot AI review requested due to automatic review settings March 16, 2026 08:51
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 16, 2026

📝 Walkthrough

Walkthrough

this pr restructures the settings surface and docs into “everyday settings” and “advanced & operator” groups, renames multiple labels (e.g., summary line → details line, menu behavior → results & refresh), adds hint copy for several items, and moves sync-center under advanced controls. see lib/codex-manager/settings-hub.ts:30-40, lib/ui/copy.ts:120-150, docs/reference/settings.md:1-200.

Changes

Cohort / File(s) Summary
Documentation restructuring
docs/reference/settings.md
rewrote top-level layout to split everyday settings and advanced/operator controls; added list appearance, details line, results & refresh, colors; introduced advanced backend controls and backend categories; inserted experimental separator and validation/related blocks.
Settings hub configuration
lib/codex-manager/settings-hub.ts
moved sync-center entry into advanced section and changed its display color to yellow; added hint fields to account-list, summary-fields, behavior, theme, and sync-center entries. see lib/codex-manager/settings-hub.ts:30-40.
ui copy and hints
lib/ui/copy.ts
updated UI_COPY.settings labels: accountList→list appearance, summaryFields→details line, behavior→results & refresh, theme→colors, backend→advanced backend controls; added multiple hint strings (accountListHint, syncCenterHint, summaryFieldsHint, behaviorHint, themeHint, backendHint, experimentalHint). see lib/ui/copy.ts:120-150.
tests and expectations
test/codex-manager-cli.test.ts, test/documentation.test.ts
updated tests to reflect reordered SETTINGS_HUB_MENU_ORDER (sync-center moved after theme) and to assert new section titles, labels, and hint text. changed test descriptions to reflect productized everyday/advanced grouping. see test/codex-manager-cli.test.ts:1-120, test/documentation.test.ts:1-220.

Sequence Diagram(s)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

notes and flags:

  • missing regression tests: add focused regression tests verifying that existing settings persistence and load paths are unaffected after sync-center reordering (check lib/codex-manager/settings-hub.ts:30-40 and test/codex-manager-cli.test.ts:1-120).
  • windows edge cases: no windows-specific handling seen; verify docs rendering and tests on windows CI if any path/case-sensitive comparisons exist (docs/reference/settings.md:1-200, test/documentation.test.ts:1-220).
  • concurrency risks: none identified in these UI/text-only and menu-order changes, but confirm there are no runtime assumptions about menu indices elsewhere in code that could race with dynamic menu generation.
🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title follows the conventional commits format with type 'feat', scope 'settings', and a concise lowercase imperative summary (55 chars, well under 72-char limit).
Description check ✅ Passed PR description is complete and well-structured, covering summary, changes, validation, docs checklist, risk assessment, and rollback plan; all required sections are present.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fresh/05-settings-productization
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch fresh/05-settings-productization
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
test/documentation.test.ts (1)

339-362: ⚠️ Potential issue | 🟡 Minor

test locks the heading level anomaly.

test/documentation.test.ts:351 asserts expect(settingsRef).toContain("## Backend Categories") which will pass but locks the incorrect heading level into the test. if docs/reference/settings.md:121 is fixed to ### Backend Categories, this assertion must also be updated.

📝 proposed fix if heading is corrected
-		expect(settingsRef).toContain("## Backend Categories");
+		expect(settingsRef).toContain("### Backend Categories");
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/documentation.test.ts` around lines 339 - 362, The test "keeps settings
reference sections aligned with current menu labels and backend categories"
asserts that settingsRef contains "## Backend Categories" which hard-codes the
wrong heading level; update the expectation that checks settingsRef (variable
settingsRef in that it block) to assert "### Backend Categories" (or otherwise
make the check heading-level-agnostic) so the test matches the corrected
docs/reference/settings.md heading.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/reference/settings.md`:
- Around line 117-123: The heading "Backend Categories" is one level too high
relative to "Advanced Backend Controls" — change the "## Backend Categories"
heading to "### Backend Categories" so it nests under "### Advanced Backend
Controls", and then demote the subsequent section headings such as "Session &
Sync" (and other nested subsections like "Rotation & Quota") one level (e.g.,
from "###" to "####") to maintain consistent hierarchy across the document.

In `@lib/ui/copy.ts`:
- Around line 85-88: The strings experimentalHint and experimentalSubtitle are
duplicated which causes redundant UI copy when promptExperimentalSettings
renders both; decide whether to remove one or make them distinct and update the
values accordingly (e.g., keep experimentalSubtitle as the concise label and
change experimentalHint to a more actionable/helpful sentence, or remove
experimentalHint and have promptExperimentalSettings only use
experimentalSubtitle). Edit the constants experimentalHint and/or
experimentalSubtitle and, if needed, adjust promptExperimentalSettings to
reference the single intended field so the UI no longer displays duplicated
text.

In `@test/codex-manager-cli.test.ts`:
- Around line 4174-4185: The test is missing assertions for three hint strings
wired into the settings hub; update the test that checks menuText (variable
menuText in the spec) to also assert it contains summaryFieldsHint,
behaviorHint, and themeHint (or their literal values: "Choose which details
appear under each account row.", "Control auto-return timing and background
limit refresh behavior.", and "Pick the base palette and accent color.") so the
spec verifies the full hint matrix rendered by the settings hub (the same menu
that currently asserts accountListHint, syncCenterHint, experimentalHint, and
backendHint).

---

Outside diff comments:
In `@test/documentation.test.ts`:
- Around line 339-362: The test "keeps settings reference sections aligned with
current menu labels and backend categories" asserts that settingsRef contains
"## Backend Categories" which hard-codes the wrong heading level; update the
expectation that checks settingsRef (variable settingsRef in that it block) to
assert "### Backend Categories" (or otherwise make the check
heading-level-agnostic) so the test matches the corrected
docs/reference/settings.md heading.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e150dcf9-cd3d-42b1-a629-52c311eb3603

📥 Commits

Reviewing files that changed from the base of the PR and between 5e174c8 and c31c9ed.

📒 Files selected for processing (5)
  • docs/reference/settings.md
  • lib/codex-manager/settings-hub.ts
  • lib/ui/copy.ts
  • test/codex-manager-cli.test.ts
  • test/documentation.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Greptile Review
🧰 Additional context used
📓 Path-based instructions (3)
docs/**

⚙️ CodeRabbit configuration file

keep README, SECURITY, and docs consistent with actual CLI flags and workflows. whenever behavior changes, require updated upgrade notes and mention new npm scripts.

Files:

  • docs/reference/settings.md
lib/**

⚙️ CodeRabbit configuration file

focus on auth rotation, windows filesystem IO, and concurrency. verify every change cites affected tests (vitest) and that new queues handle EBUSY/429 scenarios. check for logging that leaks tokens or emails.

Files:

  • lib/codex-manager/settings-hub.ts
  • lib/ui/copy.ts
test/**

⚙️ CodeRabbit configuration file

tests must stay deterministic and use vitest. demand regression cases that reproduce concurrency bugs, token refresh races, and windows filesystem behavior. reject changes that mock real secrets or skip assertions.

Files:

  • test/codex-manager-cli.test.ts
  • test/documentation.test.ts
🔇 Additional comments (7)
lib/ui/copy.ts (1)

65-130: label and hint updates look good.

the renamed labels (List Appearance, Details Line, Results & Refresh, Colors, Advanced Backend Controls, Codex CLI Sync) and new hint strings are consistent with the everyday/advanced split described in pr objectives. no auth rotation, filesystem io, or concurrency concerns in this pure ui copy file.

lib/codex-manager/settings-hub.ts (1)

3307-3368: hint wiring and menu reordering look correct.

the hint properties are correctly wired to UI_COPY.settings.*Hint constants and the MenuItem interface supports the optional hint field per lib/ui/select.ts:4-14. sync-center moved under advanced heading with yellow color aligns with pr objectives.

no auth rotation, filesystem io, or concurrency changes here - purely presentational. existing retry logic at lib/codex-manager/settings-hub.ts:712-736 already handles EBUSY/429 scenarios and remains unchanged.

docs/reference/settings.md (1)

22-94: documentation structure aligns with new ui grouping.

the section renames (Everyday Settings, List Appearance, Details Line, Results & Refresh, Colors, Advanced and Operator Controls, Codex CLI Sync) match the updated UI_COPY.settings.* labels. the validation block at lines 89-94 is a good addition for consistency.

test/documentation.test.ts (1)

288-337: test assertions correctly lock the new ui copy values.

all 7 hint strings are asserted: accountListHint, syncCenterHint, summaryFieldsHint, behaviorHint, themeHint, experimentalHint, backendHint. the renamed labels are also validated. tests remain deterministic using vitest.

test/codex-manager-cli.test.ts (3)

406-414: sync-center position in menu order looks correct.

the addition of "sync-center" at test/codex-manager-cli.test.ts:411 aligns with the productization move described in the ai summary—sync-center relocated under advanced section. the expected order now matches lib/codex-manager/settings-hub.ts changes.


4138-4147: test rename and structure assertions look solid.

the test name change from experimental-focused to productized everyday/advanced is appropriate for the feature. the setup with setupInteractiveSettingsLogin and queueSettingsSelectSequence keeps the test deterministic and avoids real i/o.


4148-4173: section label assertions are comprehensive.

assertions for section labels (Everyday Settings, List Appearance, Details Line, Results & Refresh, Colors, Advanced & Operator, Codex CLI Sync, Experimental, Advanced Backend Controls) at test/codex-manager-cli.test.ts:4165-4173 cover the ui restructuring described in the pr objectives.

Comment on lines 117 to 123
### Advanced Backend Controls

Expert backend controls stay available without changing the saved settings schema. They are grouped into categories so the default path can stay simpler for day-to-day use.

### Backend Categories

### Session & Sync
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

heading level anomaly at line 121.

docs/reference/settings.md:121 uses ## Backend Categories which breaks the document hierarchy. it should be ### Backend Categories to nest under ### Advanced Backend Controls at line 117. pr objectives already flag this as a known reviewer finding.

📝 proposed fix for heading level
 ### Advanced Backend Controls
 
 Expert backend controls stay available without changing the saved settings schema. They are grouped into categories so the default path can stay simpler for day-to-day use.
 
-## Backend Categories
+### Backend Categories
 
 ### Session & Sync

note: if this fix is applied, the nested subsections (Session & Sync, Rotation & Quota, etc.) should also be demoted to #### for consistency.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Advanced Backend Controls
Expert backend controls stay available without changing the saved settings schema. They are grouped into categories so the default path can stay simpler for day-to-day use.
### Backend Categories
### Session & Sync
### Advanced Backend Controls
Expert backend controls stay available without changing the saved settings schema. They are grouped into categories so the default path can stay simpler for day-to-day use.
### Backend Categories
### Session & Sync
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/settings.md` around lines 117 - 123, The heading "Backend
Categories" is one level too high relative to "Advanced Backend Controls" —
change the "## Backend Categories" heading to "### Backend Categories" so it
nests under "### Advanced Backend Controls", and then demote the subsequent
section headings such as "Session & Sync" (and other nested subsections like
"Rotation & Quota") one level (e.g., from "###" to "####") to maintain
consistent hierarchy across the document.

Comment on lines +85 to 88
experimentalHint:
"Preview sync and backup actions before they become stable.",
experimentalTitle: "Experimental",
experimentalSubtitle: "Preview sync and backup actions before they become stable",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

duplicate copy between experimentalHint and experimentalSubtitle.

lib/ui/copy.ts:85-86 sets experimentalHint to "Preview sync and backup actions before they become stable." while lib/ui/copy.ts:88 sets experimentalSubtitle to the same text (minus trailing period). the pr objectives already flag this as a reviewer finding from greptile.

consider whether both are needed or if one should be differentiated to avoid redundant display when both hint and subtitle render together in promptExperimentalSettings.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/ui/copy.ts` around lines 85 - 88, The strings experimentalHint and
experimentalSubtitle are duplicated which causes redundant UI copy when
promptExperimentalSettings renders both; decide whether to remove one or make
them distinct and update the values accordingly (e.g., keep experimentalSubtitle
as the concise label and change experimentalHint to a more actionable/helpful
sentence, or remove experimentalHint and have promptExperimentalSettings only
use experimentalSubtitle). Edit the constants experimentalHint and/or
experimentalSubtitle and, if needed, adjust promptExperimentalSettings to
reference the single intended field so the UI no longer displays duplicated
text.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
test/codex-manager-cli.test.ts (1)

416-423: ⚠️ Potential issue | 🟠 Major

add a sync-center-specific cancel sequence to keep windows/concurrency coverage real.

line 421 adds "sync-center" into BASELINE_SETTINGS_HUB_PANELS, but createSettingsCancelSequence has no sync-center branch and falls into backend-only actions at test/codex-manager-cli.test.ts:532-539. this means the windows-ebusy and token-refresh-race matrix paths (test/codex-manager-cli.test.ts:425-433) are not exercising sync-center behavior directly.

proposed fix
 function createSettingsCancelSequence(
 	panel: SettingsPanel,
 ): readonly SettingsSelectSequenceStep[] {
@@
 	if (panel === "theme") {
 		return [
 			{ type: panel },
 			{ type: "set-palette", palette: "blue" },
 			triggerSettingsHotkey("q"),
 			{ type: "back" },
 		];
 	}
+	if (panel === "sync-center") {
+		return [
+			{ type: panel },
+			{ type: "refresh" },
+			triggerSettingsHotkey("q"),
+			{ type: "back" },
+		];
+	}
+	if (panel === "backend") {
+		return [
+			{ type: panel },
+			{ type: "open-category", key: "rotation-quota" },
+			{ type: "toggle", key: "preemptiveQuotaEnabled" },
+			{ type: "back" },
+			triggerSettingsHotkey("q"),
+			{ type: "back" },
+		];
+	}
+	const _exhaustive: never = panel;
+	return [_exhaustive];
-	return [
-		{ type: panel },
-		{ type: "open-category", key: "rotation-quota" },
-		{ type: "toggle", key: "preemptiveQuotaEnabled" },
-		{ type: "back" },
-		triggerSettingsHotkey("q"),
-		{ type: "back" },
-	];
 }

as per coding guidelines "tests must stay deterministic and use vitest. demand regression cases that reproduce concurrency bugs, token refresh races, and windows filesystem behavior."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/codex-manager-cli.test.ts` around lines 416 - 423,
BASELINE_SETTINGS_HUB_PANELS now includes "sync-center" but
createSettingsCancelSequence lacks a sync-center branch so tests exercising the
windows-ebusy and token-refresh-race matrix aren't triggering sync-center
behavior; update createSettingsCancelSequence to add a sync-center-specific
cancel sequence (mirroring the expected UI/API cancel flow for sync-center) so
the "sync-center" panel path performs its own cancel actions instead of falling
through to backend-only actions, ensuring the windows-ebusy and
token-refresh-race test paths exercise sync-center concurrency/token-refresh
behavior (referencing BASELINE_SETTINGS_HUB_PANELS and
createSettingsCancelSequence and the windows-ebusy / token-refresh-race test
matrix).
docs/reference/settings.md (1)

26-116: ⚠️ Potential issue | 🟠 Major

settings reference is missing the new menu hint copy.

line 26 through line 116 in docs/reference/settings.md renames panels but does not document the hint text now shown in the settings hub (accountListHint, summaryFieldsHint, behaviorHint, themeHint, syncCenterHint, experimentalHint, backendHint) from lib/ui/copy.ts:72-95. this leaves user docs behind the shipped workflow in lib/codex-manager/settings-hub.ts:3310-3362.

as per coding guidelines "Add hints: include hints for menu items (accountListHint, syncCenterHint, summaryFieldsHint, behaviorHint, themeHint, backendHint, experimentalHint)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/settings.md` around lines 26 - 116, The docs update removed
the user-visible hint text for several settings panels; add the missing hint
copy entries (accountListHint, summaryFieldsHint, behaviorHint, themeHint,
syncCenterHint, experimentalHint, backendHint) into docs/reference/settings.md
so the documentation matches the shipped UI; pull the exact hint strings from
lib/ui/copy.ts (around lines 72-95) and ensure their placement corresponds to
the panels renamed in settings.md (List Appearance/account list, Details
Line/summary fields, Results & Refresh/behavior, Colors/theme, Codex CLI
Sync/syncCenter, Experimental/experimental, Advanced Backend Controls/backend),
matching the ordering and brief phrasing used by
lib/codex-manager/settings-hub.ts (3310-3362).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/reference/settings.md`:
- Around line 73-78: Update the docs wording in the settings page to exactly
match the shipped UI copy: replace the header text "Advanced and Operator
Controls" with "advanced & operator" and change the phrase "sync center" (or
"sync center for Codex CLI account sync") to "codex cli sync" so the docs mirror
the strings used by the UI; search for those legacy phrases in the settings
documentation and update them to the exact UI strings ("advanced & operator" and
"codex cli sync") used by the UI copy and settings renderer.

---

Outside diff comments:
In `@docs/reference/settings.md`:
- Around line 26-116: The docs update removed the user-visible hint text for
several settings panels; add the missing hint copy entries (accountListHint,
summaryFieldsHint, behaviorHint, themeHint, syncCenterHint, experimentalHint,
backendHint) into docs/reference/settings.md so the documentation matches the
shipped UI; pull the exact hint strings from lib/ui/copy.ts (around lines 72-95)
and ensure their placement corresponds to the panels renamed in settings.md
(List Appearance/account list, Details Line/summary fields, Results &
Refresh/behavior, Colors/theme, Codex CLI Sync/syncCenter,
Experimental/experimental, Advanced Backend Controls/backend), matching the
ordering and brief phrasing used by lib/codex-manager/settings-hub.ts
(3310-3362).

In `@test/codex-manager-cli.test.ts`:
- Around line 416-423: BASELINE_SETTINGS_HUB_PANELS now includes "sync-center"
but createSettingsCancelSequence lacks a sync-center branch so tests exercising
the windows-ebusy and token-refresh-race matrix aren't triggering sync-center
behavior; update createSettingsCancelSequence to add a sync-center-specific
cancel sequence (mirroring the expected UI/API cancel flow for sync-center) so
the "sync-center" panel path performs its own cancel actions instead of falling
through to backend-only actions, ensuring the windows-ebusy and
token-refresh-race test paths exercise sync-center concurrency/token-refresh
behavior (referencing BASELINE_SETTINGS_HUB_PANELS and
createSettingsCancelSequence and the windows-ebusy / token-refresh-race test
matrix).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: f40ef692-cef0-443c-b29c-4bee42eaa634

📥 Commits

Reviewing files that changed from the base of the PR and between c31c9ed and f2f8427.

📒 Files selected for processing (3)
  • docs/reference/settings.md
  • test/codex-manager-cli.test.ts
  • test/documentation.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Greptile Review
🧰 Additional context used
📓 Path-based instructions (2)
docs/**

⚙️ CodeRabbit configuration file

keep README, SECURITY, and docs consistent with actual CLI flags and workflows. whenever behavior changes, require updated upgrade notes and mention new npm scripts.

Files:

  • docs/reference/settings.md
test/**

⚙️ CodeRabbit configuration file

tests must stay deterministic and use vitest. demand regression cases that reproduce concurrency bugs, token refresh races, and windows filesystem behavior. reject changes that mock real secrets or skip assertions.

Files:

  • test/codex-manager-cli.test.ts
  • test/documentation.test.ts
🔇 Additional comments (2)
test/codex-manager-cli.test.ts (1)

4139-4193: good coverage update for the productized settings menu copy.

this block now locks the full first-menu label/hint matrix, including the previously missing hints, and matches the rendered menu contract in lib/codex-manager/settings-hub.ts:3310-3362.

test/documentation.test.ts (1)

291-321: solid lock coverage for renamed settings copy and docs structure.

these assertions are tight and deterministic, and they track the shipped copy surface from lib/ui/copy.ts:63-130 well.

Also applies to: 342-357

Comment on lines +73 to 78
## Advanced and Operator Controls

### Codex CLI Sync

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

align advanced section wording with shipped ui copy.

line 73 and line 77 in docs/reference/settings.md still use legacy wording ("advanced and operator controls", "sync center"), while the menu ships "advanced & operator" and "codex cli sync" in lib/ui/copy.ts:69-79 and renders them in lib/codex-manager/settings-hub.ts:3335-3356.

as per coding guidelines "UI text consistency: ensure synonyms and titles match the updated copy (e.g., Details Line for Summary Line, Colors for Color Theme, Codex CLI Sync for Sync Center)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/settings.md` around lines 73 - 78, Update the docs wording in
the settings page to exactly match the shipped UI copy: replace the header text
"Advanced and Operator Controls" with "advanced & operator" and change the
phrase "sync center" (or "sync center for Codex CLI account sync") to "codex cli
sync" so the docs mirror the strings used by the UI; search for those legacy
phrases in the settings documentation and update them to the exact UI strings
("advanced & operator" and "codex cli sync") used by the UI copy and settings
renderer.

@ndycode ndycode changed the base branch from fresh/04-sync-center to dev March 18, 2026 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants