Repository navigation
UX: guide local dashboard pairing with hub identity and an origin-specific next action #4208
Description
Area
Dashboard
What are you trying to accomplish?
After connecting a Windows machine to a hub, open its local dashboard and inspect this machine's usage or shared settings without having to reconstruct the authentication procedure from source code.
What prevents this today?
The CLI connection can succeed while the local browser still needs a separate hub session. In the observed relay-mode UI, the pairing form contains a one-time code input and a technical sentence about a fixed relay destination, but does not identify where to obtain the code or provide an origin-specific command.
The direct-mode help says to paste a code created on the hub; relay mode replaces that help with a relay implementation detail. A user can reasonably try the data-plane key or administrator token because the relationship between those credentials and a browser pairing code is not explained at this decision point.
This is distinct from #4055, which asks for persistent login/session lifetime. No authentication lifetime change is requested here.
What should OpenCodex do?
Make the first meaningful action discoverable:
- Name the already-configured hub and state that the model/client connection is established while this browser still needs authorization.
- Provide one primary action, such as “Get pairing instructions,” with a safe copyable command generated for the exact current browser origin. State clearly that it runs on the hub.
- Explain that the one-time browser code is different from the model API credential and administrator token.
- Keep the fixed-relay implementation explanation under optional connection details instead of making it the only help.
- For expired/refused codes, offer a clear way to obtain a new code and retry; do not persist the secret or relax origin binding.
- After success, reveal the existing usage view with its source and “This machine / Entire hub” scope control.
Example usage or interface
Suggested copy, not a request for these exact words:
This computer is connected to Hub A.
Authorize this browser to view hub data.
[Get pairing instructions]
Run on Hub A:
ocx gui pair --origin http://127.0.0.1:10100
Paste the returned one-time code here.
The origin must come from the active page, not a hardcoded localhost spelling. If the hub cannot be administered by this user, show the request-to-operator path instead of implying they have permission.
Alternatives or workarounds
SSH to the hub and look up ocx gui --help; separately open the remote administrator console. Both work for experts but require knowledge the pairing form could supply.
Additional context
Observed on client 2.50.0 with hub dev 2.51.0. Source: gui/src/connect-pairing.ts:33, especially the mutually exclusive explanatory text at line 35. Existing machine-scoped usage controls are at gui/src/pages/Usage.tsx:968; this proposal is about reaching them, not rebuilding their aggregation.
Design rationale: reduce decisions and repeated lookup work; expose the next safe action; retain authentication boundaries; use progressive disclosure for transport details. Acceptance should cover first visit, already paired, expired/refused code, hub unreachable, and keyboard-only completion.
Checks
- I searched existing issues and documentation.
- This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
- I removed secrets and personal data.
Activity
lidge-jun commentedon Sep 10, 2026
리뷰 · 우선순위 55 / 80
로컬 대시보드 페어링 UI 가 “다음에 뭘 하면 되는지”를 origin 단위로 안내하지 않습니다. CLI 연결은 됐는데 브라우저는 별도 허브 세션이 필요하고, relay 모드에서는 고정 릴레이 설명만 있고 코드를 어디서 받는지·어떤 명령으로 받을지가 비어 있습니다. direct 모드는 “허브에서 만든 코드 붙여넣기” 정도만 있습니다. 사용자는 데이터 플레인 키나 관리자 토큰을 페어링 코드로 오해하기 쉽습니다. #4055(세션 수명)와는 다른, 지금 이 순간의 next-action UX 문제입니다.
현재
devHEAD6101140ff(2.51.0) 의gui/src/connect-pairing.ts는target.transport === "relay"이면connection.pairing.relayWarning, 아니면connection.pairing.body만 보여 줍니다. origin 특정ocx gui pair --origin …같은 복사 가능한 다음 행동이 없습니다. #4206(페어링 중 ocx start 오안내)과 같은 화면이라 UX 배치가 자연스럽습니다. 우선순위는 #4206 보다 조금 낮지만, 같이 고치면 한 번에 “잘못된 재시작”과 “코드 어디서?”를 줄일 수 있습니다.라인 - gui/src/connect-pairing.ts ~:35 — relayWarning vs body 분기만; origin·발급 경로·CLI 다음 행동 없음
경로/심볼 - connection.pairing.* i18n 키 — 코드 입력 UI 중심; hub identity / origin-specific command 부재
경로/심볼 - #4206 Dashboard error — 같은 connected-dashboard 표면에서 충돌하는 안내
메인테이너의 판단이 필요한 지점
ocx gui pair --origin <url>로 고정할지, 허브 UI 딥링크만 줄지너의 추천
페어링 패널에 hub identity 와 origin 특정 다음 행동(예:
ocx gui pair --origin …또는 허브에서 코드 발급하는 위치)을 넣으세요. #4206 과 UX 배치를 권장합니다. 데이터 플레인 키/관리자 토큰과 페어링 코드를 구분하는 한 줄도 넣으세요.이 댓글은 grok-bot이 작성했습니다
lidge-jun commentedon Sep 13, 2026
Resolved on
devby #4378, landed today as part of a 36-pull-request batch.gui/src/connect-pairing.tsxnames the hub, builds an origin-specific command (ocx gui pair --origin "<origin>") for copying, and warns against pasting API or admin credentials into the pairing field.Verified against
origin/devat72601a173after the batch landed, rather than from the pull request description. Closing on that evidence; reopen if the behavior does not match on your setup.RHODIZSECURITY commentedon Sep 26, 2026
Additional live case from a non-loopback HTTPS hub dashboard:
In this state the Remote Link page could render the dead-end local-session warning even though the hub itself was healthy and reachable. A focused UI patch makes the existing
ConnectPairingFormthe primary surface for this exact condition and derives the pairing command from the active browser origin, e.g.ocx gui pair --origin "https://<hub-origin>".The change does not relax origin binding, does not persist the one-time code, and keeps ordinary admin-token behavior on the other pages unchanged.
Live validation on the affected hub: one-time grant -> browser GUI session ->
/api/link/statusHTTP 200 through the published management origin.I am preparing this as a narrow patch against current
devrather than duplicating the issue.