Repository navigation
feat(gui,docs): Claude Desktop connection-mode selector and first-party docs - #5303
devin-ai-integration[bot] wants to merge 8 commits into
Conversation
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Repository: lidge-jun/opencodex/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
|
✅ Deterministic PR hygiene checks passed. |
5537766 to
d701417
Compare
리뷰 · 우선순위 61 / 80이 PR은 Claude Desktop “연결 모드” 스택의 맨 위(3/3)입니다. 앞 PR에서 만든 first-party / gateway 모드를 대시보드에 보여주고, 문서로 설명합니다. 대시보드 Claude → Desktop 탭에 라디오로 First-party(기본)와 Gateway를 고릅니다. “저장 & 적용”을 누르면 라인 - base가 라인 - 라인 - 같은 파일 라인 - 모드만 바꾸고 메인테이너의 판단이 필요한 지점 first-party일 때 gateway 프로필 레인을 숨길지/접을지/그대로 둘지. 스택 tip을 너의 추천 스택 순서(#5301→#5302→#5303)로 초록 확인 후 합류하세요. 머지 전에 (1) first-party에서 프로필 레인 UX를 한 줄이라도 정리할지 정하고, (2) status 로딩 중 first-party 기본 깜빡임을 줄이면 더 좋습니다. 테스트·i18n·문서 범위는 이 레이어에 잘 맞습니다. types/config 분할·프리뷰 배포 이야기는 이 PR과 무관합니다. 이 댓글은 grok-bot이 작성했습니다 |
⏳ DRAFT
What to do
Review readiness checklist
0/4 boxes ticked. This PR stays in draft until every box above is ticked. |
551f323 to
97603e1
Compare
97603e1 to
77c40d0
Compare
|
Addressed the first-party flicker in 77c40d0: the mode picker now has a Two items I left as-is on purpose, open to a call either way:
Stack is rebased on current |
추가 리뷰 · 우선순위 64 / 80지난 리뷰(우선순위 61) 이후 tip이 라인 - 라인 - first-party여도 Opus/Fable/Sonnet/Haiku gateway 프로필 레인은 그대로 보입니다. Devin 설명(Save가 라인 - 모드만 바꾸고 Save만 누르면 프로필만 저장되고 모드 전환은 Apply뿐입니다. switch note는 있지만, modeDirty일 때 Save 옆 문구를 한 단계 더 세게 할지 말지는 여전히 선택입니다. 라인 - base는 여전히 메인테이너의 판단이 필요한 지점 first-party에서 gateway 레인·Save/Apply 분리를 “의도적 유지”로 받아들일지, 아니면 접기/문구만 손볼지. 너의 추천 깜빡임 수정과 회귀 테스트는 머지해도 될 수준으로 잘 맞습니다. 남은 것은 제품 UX 선택과 스택 의존입니다. CI 초록과 이 댓글은 grok-bot이 작성했습니다 |
|
bf78f2e: Gateway lanes / Save-vs-Apply wording left as a product call (follow-up is fine either way). Stack order unchanged: this PR only lands after #5302. |
bf78f2e to
cb387ce
Compare
추가 리뷰 · 우선순위 69 / 80지난 추가 리뷰(우선순위 64, tip 라인 - 라인 - first-party여도 Opus/Fable/Sonnet/Haiku gateway 프로필 레인은 그대로입니다. Save가 라인 - 모드만 바꾸고 Save만 누르면 프로필만 저장됩니다. switch note는 있고, 문구를 더 세게 할지는 제품 선택입니다. 라인 - base는 여전히 메인테이너의 판단이 필요한 지점 gateway 레인·Save/Apply를 “의도적 유지”로 확정할지. 스택 tip을 너의 추천 픽커 로딩·실패 경로와 테스트는 머지해도 될 수준입니다. CI 초록과 이 댓글은 grok-bot이 작성했습니다 |
…ty docs Dashboard Desktop tab gains a Connection mode picker (first-party default, gateway opt-in) that sends the chosen mode with /api/claude-desktop/apply and shows the intercept proxy state in first-party mode. Strings added to every locale. Docs describe both modes, the settings.json env the first-party apply writes, intercepted routes, the local CA trust boundary, update behavior for existing gateway installs, and Claude Code CLI compatibility/limitations. Translated guides get a summary section pointing at the canonical English text. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
gui/src/styles.css sits at its file-size cap; the picker rules move byte-for-byte into gui/src/styles/claude-desktop-mode-picker.css, imported from main.tsx. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
The picker no longer pre-checks the first-party default while the status request is in flight, so a gateway install does not see the wrong radio and badge flash. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ilure A failed /status with no cached status left the picker disabled forever. It now unlocks on the first-party default once the error is shown, while the current-mode badge and switch note stay hidden because the real mode is still unknown. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
cb387ce to
7a0dda0
Compare
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…ction mode Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 61fe075b8d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // be attempted, but no "current" badge is claimed. | ||
| const modeKnown = status !== null; | ||
| const modePickable = modeKnown || statusFailed; | ||
| const effectiveMode: DesktopMode = status?.mode ?? "first-party"; |
There was a problem hiding this comment.
Treat legacy status payloads as gateway mode
When the dashboard is opened after an upgrade while session storage still contains a status response from the gateway-only implementation, isDesktopStatus accepts that payload without a mode, making modeKnown true, but this fallback selects first-party. The picker and “current” badge therefore misreport the existing gateway installation, and clicking apply before revalidation completes posts {"mode":"first-party"} and replaces it. Treat an absent mode on an accepted legacy payload as gateway, or reject that cached payload until a live status response arrives.
AGENTS.md reference: gui/AGENTS.md:L10-L10
Useful? React with 👍 / 👎.
| : status.stale | ||
| ? "stale" |
There was a problem hiding this comment.
Mark a stopped first-party proxy as unavailable
When the proxy environment remains installed but the intercept listener has stopped, the API reports applied: true together with firstParty.interceptRunning: false; this branch still paints the status bar green and states that the Code tab is routed through the proxy even though requests cannot reach it. The smaller secondary text says the proxy is stopped, but the primary state contradicts it. Include interceptEnabled and interceptRunning when classifying and wording the first-party status.
AGENTS.md reference: gui/AGENTS.md:L10-L10
Useful? React with 👍 / 👎.
| `ocx claude desktop` and `apply` apply the selected mode: first-party writes the Claude Code proxy | ||
| env, gateway writes the current profile to Claude Desktop. `show` gives a | ||
| readable summary; `status` reports the effective mode, the applied profile or proxy env, drift, |
There was a problem hiding this comment.
Synchronize every translated Claude Desktop guide
The canonical guide now correctly explains that apply writes either the first-party proxy environment or the gateway profile, but the directly affected Turkish and Traditional Chinese pages still state that ocx claude desktop apply always writes the current profile into Claude Desktop (tr/.../claude-code.md:176 and zh-tw/.../claude-code.md:128). That is false for the new default first-party mode and will send those readers through the obsolete workflow, so update the remaining translations alongside the English behavior change.
AGENTS.md reference: docs-site/AGENTS.md:L7-L10
Useful? React with 👍 / 👎.
|
Superseded by #5319, merged to The chain was carried as a GitHub native stack, which stops accepting ordinary merges once its bottom lands by squash. Its tip already contained both ancestors and branched cleanly from Closing as superseded rather than stale. |
Summary
Stack 3/3. Surfaces the mode from PR 2 in the dashboard and documents it.
gui/src/pages/ClaudeDesktop.tsx): a "Connection mode" radio group — First-party (marked Default) vs Gateway — sends{ mode }withPOST /api/claude-desktop/apply, shows a switch note when the selection differs from the effective mode, and in first-party mode shows the intercept proxy state (running / stopped / disabled) and port instead of the gateway-only profile status. All copy goes through the locale catalogs; keys added to every locale module. Picker CSS lives ingui/src/styles/claude-desktop-mode-picker.css(imported frommain.tsx) becausestyles.csssits at its file-size cap.docs-site/.../guides/claude-code.md, canonical): "Claude Desktop modes: first-party (default) and gateway" — what each mode touches, the exactsettings.json.envwritten, intercepted vs relayed routes, local CA trust boundary (never in the OS store), how existing gateway installs are preserved across the update, foreign-env protection,ocx ensure, connected-client behavior. New "Claude Code CLI compatibility" section: the standalone CLI and subagents pick up the same env, so they work through the proxy unchanged; limitations are model discovery (CLI fixes its model list before the request, so use the picker aliases /ANTHROPIC_MODEL-style env) and subagent model env vars. fr/ja/ko guides get a matching summary that defers to the English text.Verification
cd gui && bun test tests && bun run lint && bun run lint:i18n && bun run buildcd docs-site && bun install --frozen-lockfile && bun run buildbun run privacy:scan,bun run structure:check,bun run typecheck,bun scripts/file-size-ratchet.tsocx claude desktop apply --first-partywhile gateway is active, keyboard navigation, Korean locale, foreign-proxy protection (details in the comment on PR 2).Checklist
Link to Devin session: https://app.devin.ai/sessions/4ec9c3528d424ced9e4a4da906168ad1
Open in Devin Desktop: https://app.devin.ai/desktop/session/4ec9c3528d424ced9e4a4da906168ad1?variant=devin
Requested by: @lidge-jun
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.