Skip to content

feat(gui): add opt-in Codex Desktop sign-in toggle - #3860

Closed
RobinBially wants to merge 1 commit into
lidge-jun:devfrom
RobinBially:codex/desktop-authless-opt-in
Closed

feat(gui): add opt-in Codex Desktop sign-in toggle#3860
RobinBially wants to merge 1 commit into
lidge-jun:devfrom
RobinBially:codex/desktop-authless-opt-in

Conversation

@RobinBially

@RobinBially RobinBially commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Add Open Codex without signing in to Dashboard → Overview as an explicit opt-in, default OFF. An absent or false codexDesktopAuthless keeps the existing sign-in requirement; an existing explicit true stays enabled. This replaces #3689 with the scope requested by the maintainer.

The toggle uses the existing settings API, saves the preference and runs full sync. Sync errors remain visible without undoing the saved preference. All nine interface languages explain the off default, required upstream credentials, Codex restart and potentially unavailable account-gated Desktop features.

No runtime routing, catalog, authentication-default or provider-label changes. Existing local eligibility, remote admission authentication and user-owned gateway settings are preserved.

Verification

  • Focused GUI tests: 17 passed, including absent/false/true preferences, save-before-sync, sync-error persistence and pending-refresh preservation.
  • Existing injector regression extended to explicitly cover false alongside absent; existing true and remote-admission cases retained.
  • Typecheck, privacy scan and documentation frozen install/build passed.
  • Full runtime: bun run test --parallel=8 — 21,129 pass / 16 skip / 0 fail.
  • Full GUI: 1,741 tests passed; lint, i18n checks and production build passed.
  • CodeRabbit completed review of this exact head with no actionable findings. Its generic docstring-coverage warning is non-blocking; no runtime source changes are included.
  • In-app browser inspection of the actual dashboard component in an isolated fixture, including off/on interaction and the dashboard stack spacing. Screenshot shows the default-off state; no live proxy settings were changed.

Default-off Codex Desktop switch

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults. (Existing runtime boundaries unchanged; explicit maintainer security review requested for this UI control.)

Review readiness checklist

This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:

  • All CI tests are green on my local testing.

  • I pushed my PR to the latest dev commit.

  • I resolved all correct Codex and CodeRabbit findings.

  • My PR is ready for review.

Summary by CodeRabbit

  • New Features

    • Added an opt-in Dashboard setting to open Codex Desktop without a separate sign-in for eligible local connections.
    • The preference is saved before synchronization, persists if sync fails, and requires restarting Codex Desktop after changes.
    • Account-based Desktop features may remain unavailable, and provider credentials are still required.
  • Documentation

    • Added setup guidance, sync behavior, requirements, and troubleshooting details.
  • Localization

    • Added translated labels and help text across supported languages.

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: e32d51d7-0ace-4036-a555-6326edb92854

📥 Commits

Reviewing files that changed from the base of the PR and between ece556a and 0f21769.

⛔ Files ignored due to path filters (1)
  • docs/pr-assets/codex-desktop-opt-in.jpg is excluded by !**/*.jpg
📒 Files selected for processing (15)
  • docs-site/src/content/docs/guides/codex-integration.md
  • gui/src/i18n/de.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/fr.ts
  • gui/src/i18n/ja.ts
  • gui/src/i18n/ko.ts
  • gui/src/i18n/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/pages/dashboard-overview-sections.tsx
  • gui/src/pages/dashboard-shared.ts
  • gui/src/pages/use-dashboard-data.ts
  • gui/tests/vision-sidecar-dashboard.test.tsx
  • tests/codex-integration/codex-inject.test.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The dashboard adds an opt-in Codex Desktop authless setting. It persists the preference, runs synchronization, exposes localized controls, documents requirements, and tests default behavior and sync failures.

Changes

Codex Desktop authless setting

Layer / File(s) Summary
Persist and synchronize the setting
gui/src/pages/dashboard-shared.ts:51-52, gui/src/pages/use-dashboard-data.ts:610-637, gui/src/pages/use-dashboard-data.ts:656, gui/src/pages/use-dashboard-data.ts:797
The settings contract adds codexDesktopAuthless and catalogRefreshPending. The dashboard hook saves the preference, runs synchronization, preserves the preference after sync failure, and clears the pending status after successful synchronization.
Expose the dashboard control
gui/src/pages/dashboard-overview-sections.tsx:166, gui/src/pages/dashboard-overview-sections.tsx:214, gui/src/pages/dashboard-overview-sections.tsx:441, gui/src/pages/dashboard-overview-sections.tsx:499, gui/src/pages/dashboard-overview-sections.tsx:508-527, gui/src/i18n/*.ts
The Overview page adds the authless switch, pending refresh status, and save/sync disabled states. English, German, French, Japanese, Korean, Russian, Turkish, Simplified Chinese, and Traditional Chinese catalogs add the label and hint.
Validate behavior and document requirements
gui/tests/vision-sidecar-dashboard.test.tsx:15, gui/tests/vision-sidecar-dashboard.test.tsx:410-460, tests/codex-integration/codex-inject.test.ts:34-35, docs-site/src/content/docs/guides/codex-integration.md:218-226
Tests cover undefined, false, and true initial values, preference persistence before synchronization, failed synchronization, and unchanged default routing. Documentation describes restart, credential, eligibility, authentication, and sync-failure behavior.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 0f217

The current implementation and regression tests show no actionable merge-blocking issue.

Sequence Diagram(s)

sequenceDiagram
  participant Dashboard
  participant useDashboardData
  participant SettingsAPI
  participant SyncAPI
  Dashboard->>useDashboardData: Toggle authless setting
  useDashboardData->>SettingsAPI: Save codexDesktopAuthless
  SettingsAPI-->>useDashboardData: Return catalogRefreshPending
  useDashboardData->>SyncAPI: Run full sync
  SyncAPI-->>useDashboardData: Return success or sync error
  useDashboardData-->>Dashboard: Update preference and refresh status
Loading

Suggested reviewers: lidge-jun, wibias

🚥 Pre-merge checks | ✅ 4 | ❌ 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%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 14 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding an opt-in Codex Desktop sign-in toggle in the GUI. It is concise, specific, and consistent with the Dashboard → Overview implementation and related…
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 14 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the enhancement New feature or request label Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed; the review readiness checklist is complete.

Review readiness checklist

  • ✅ All CI tests are green on my local testing.
  • ✅ I pushed my PR to the latest dev commit.
  • ✅ I resolved all correct Codex and CodeRabbit findings.
  • ✅ My PR is ready for review.

4/4 boxes ticked.

This pull request has been marked Ready for Review.
The review-ready label marks this PR as ready; review automation runs independently.
Maintainers notified: @lidge-jun @Ingwannu

Hygiene

Deterministic PR hygiene checks passed.

@RobinBially

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@lidge-jun

Copy link
Copy Markdown
Owner

리뷰 · 우선순위 56 / 80

이 PR은 RobinBially의 원본입니다. Dashboard에 Codex Desktop 로그인 생략 토글을 default-OFF opt-in으로 넣습니다. #3689(default-on 강제)를 대체하는 범위이고, 메인테이너 방향과 맞습니다. 검증도 원본 쪽에서 GUI·주입·전체 스위트를 돌려 두었습니다.

다만 지금은 릴리스 트레인 캐리 #3876이 같은 기능을 codex/260907-c3-startup-health 위에 다시 심었습니다. 캐리 쪽이 settings poll에서 catalogRefreshPending을 보존하고, sync는 ok && status === "applied"일 때만 pending을 지웁니다. 이 원본은 sync 성공 응답이면 status와 무관하게 pending을 지워서 skipped/catalog-only에서도 pending이 사라질 수 있습니다. 파일 목록은 GUI/i18n/문서/테스트로 거의 같고, dev 직base 원본을 트레인 중간에 끼우면 Lane C 순서(3873→…→3876)와 충돌합니다. types/config 분할로 무효화되는 PR은 아니지만, 캐리 중복입니다.

권장 처리는 close-don't-rebase가 아니라 carry supersede입니다. #3876이 랜딩되면 Landed via #3876 at <commit> + landed-via-maintainer로 이 PR을 닫으면 됩니다. #3876이 아직 열려 있으면 지금은 리뷰만 남기고 원본 머지를 보류하거나, 메인테이너가 즉시 superseded로 닫아도 됩니다. 기여자 작업은 캐리가 보존합니다.

use-dashboard-data.ts pending clear - sync 성공 시 무조건 clear. #3876은 applied만 clear
dashboard-overview-sections.tsx 토글 - default-off 계약 자체는 올바름(#3689 아님)
트레인 #3876 - 동일 기능 캐리. 원본 직머지 비권장
기여 검증(17 GUI + full suite) - 캐리 쪽 remote-only 정책과 역할이 다름. 증거는 참고 가능

메인테이너의 판단이 필요한 지점

너의 추천
원본을 dev에 직접 머지하지 마세요. Lane C 캐리 #3876을 기다리고, 머지되면 Landed via #3876 at <commit>로 이 PR을 닫으세요. 당장 큐를 줄이려면 superseded 코멘트와 함께 닫아도 됩니다. 기여자 방향(default-off opt-in)은 유지하는 것이 맞습니다.

이 댓글은 grok-bot이 작성했습니다

lidge-jun added a commit that referenced this pull request Sep 7, 2026
…e (carry #3860) [skip ci]

feat(gui): add default-off Codex Desktop sign-in preference
@lidge-jun

Copy link
Copy Markdown
Owner

Landed on dev via #3876 (merge 2eec04fe1; chain-top Cross-platform CI run 34116228181, aggregate ci green incl. Windows 6/6). carried (cherry-pick -x) as an explicit default-OFF opt-in; save precedes sync and pending state survives failed/skipped/catalog-only sync. Your authorship is preserved with a Co-authored-by: RobinBially trailer on the landed commit. Closing this PR as superseded — thank you @RobinBially!

@lidge-jun lidge-jun closed this Sep 7, 2026
@lidge-jun lidge-jun added the landed-via-maintainer Original PR closed after landing via a maintainer merge train label Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request landed-via-maintainer Original PR closed after landing via a maintainer merge train review-ready

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants