Overhaul accounts & connections UX around a four-concept model#834
Conversation
Beginner-facing model is now exactly: ADE account, pairing code, QR code,
and SSH (advanced). Everything else became invisible or was removed.
- Relay: remove the kill-switch entirely (store enabled/enabledSetByUser
fields, `ade sync relay` command, sync.setCloudRelayEnabled IPC). Relay is
active whenever the machine is signed in; LAN → Tailscale → Relay priority
and same-account relay proof are unchanged. Machines that previously
disabled relay are re-enabled (see CHANGELOG).
- Pairing links: no user-facing link UI anywhere (desktop, iOS, web). The
smart pair URL remains only as the internal QR wire encoding.
- Manual address+PIN entry removed on desktop and iOS; Nearby + PIN, same
account, or SSH cover all paths.
- Web client: account sign-in only. /pair route and PIN pairing removed from
the hosted client; existing paired environments keep working; localhost dev
retains direct ws://.
- Account page: responsive rebuild with Back button, identity header (real
Clerk avatar via userinfo), Your Macs list with This-Mac pinning and
Remove-from-account, one Manage-connections button, confirmed sign-out
with honest copy.
- Connections panel: state-first header, persistent This-Mac card owning the
pairing-code manager (moved from the Mobile tab) and a QR-only phone
disclosure; Machines/Phone/Web tabs with revoke confirmations; Share card,
cloud-account badge, and relay toggle deleted; account rows self-filtered
by local machine identity.
- Backend: Clerk userinfo enrichment (imageUrl/provider) in account status,
local machine identity IPC, and account-directory machine deletion wired
("Remove from account").
- iOS: sign-in-first connect flow, QR/Nearby + PIN, link and manual entry
removed, web-client pairing feature deleted, confirmed sign-out copy parity.
- Docs + CHANGELOG updated; relay E2E encryption noted as planned security
work.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Consolidate the new account IPC channels into the shared IPC registry (identical channel strings; drops the one-off consts in types/account.ts). - Hoist relative-last-seen bucket math and endpoint labeling into remoteMachineModel so AccountPage and AccountMachineRow share one implementation while keeping their surface-specific framing. - Remove the stale sync.setCloudRelayEnabled / `ade sync relay` entries from the ade-cli README (missed by the docs sweep). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Add a named regression test: this Mac never appears in its own account machine list (matched by machineKey or stale-deviceId reinstall row). - Gate account.deleteMachine behind the CTO-only action list alongside listMachines/pairMachine (defense-in-depth; not reachable via the generic bridge today). - Fix the onboarding-and-settings source map for the restructured Connections panel (Phone/Web tabs, This-Mac card, no web pairing). - Tidy a stale iOS comment referencing the removed relay kill-switch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
@copilot review but do not make fixes |
|
Important Review skippedToo many files! This PR contains 65 files, which is 15 over the limit of 50. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (10)
📒 Files selected for processing (70)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
…c17dba # Conflicts: # apps/desktop/src/renderer/components/account/AccountPage.tsx
Summary
Reduces every account/connection surface to four beginner-facing concepts — ADE account, pairing code, QR code, and SSH (advanced) — and removes everything else.
enabled/enabledSetByUserfields,ade sync relaycommand, andsync.setCloudRelayEnabledIPC deleted; legacy store files are migrated by dropping the dead fields. Route priority (LAN → Tailscale → Relay) and same-account relay proof unchanged. Machines that previously disabled relay are re-enabled (CHANGELOG)./pairroute and PIN pairing deleted; existing paired environments keep working; localhost dev keeps direct ws://.Testing
🤖 Generated with Claude Code
Greptile Summary
This PR simplifies account and connection flows around ADE account sign-in. The main changes are:
Confidence Score: 5/5
Safe to merge with low risk.
No blocking correctness or security issues were identified in the reviewed account, relay, IPC, and connection changes.
No files require special attention.
What T-Rex did
Important Files Changed
Sequence Diagram
%%{init: {'theme': 'neutral'}}%% sequenceDiagram participant User participant DesktopUI as Desktop Account/Connections UI participant MainIPC as Electron main IPC participant AccountBridge as AccountBridge participant Auth as AccountAuthService participant Directory as Account Directory Worker participant Runtime as Remote Runtime Service participant Relay as ADE Relay User->>DesktopUI: Sign in / view Macs / connect DesktopUI->>MainIPC: account.status/listMachines/getLocalMachineIdentity MainIPC->>AccountBridge: token-free account APIs AccountBridge->>Auth: getStatus/getAccessToken (main only) AccountBridge->>Directory: GET /account/machines with bearer Directory-->>AccountBridge: machine list AccountBridge-->>DesktopUI: token-free machines/status DesktopUI->>DesktopUI: Pin/filter local machine by machineKey/deviceId User->>DesktopUI: Connect account machine DesktopUI->>MainIPC: account.pairMachine(machineKey) MainIPC->>AccountBridge: pairMachine AccountBridge->>Directory: resolve selected account machine AccountBridge->>Runtime: save paired target credentials Runtime->>Relay: Use relay route only while ADE account lease is valid Runtime-->>DesktopUI: connected target result%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% sequenceDiagram participant User participant DesktopUI as Desktop Account/Connections UI participant MainIPC as Electron main IPC participant AccountBridge as AccountBridge participant Auth as AccountAuthService participant Directory as Account Directory Worker participant Runtime as Remote Runtime Service participant Relay as ADE Relay User->>DesktopUI: Sign in / view Macs / connect DesktopUI->>MainIPC: account.status/listMachines/getLocalMachineIdentity MainIPC->>AccountBridge: token-free account APIs AccountBridge->>Auth: getStatus/getAccessToken (main only) AccountBridge->>Directory: GET /account/machines with bearer Directory-->>AccountBridge: machine list AccountBridge-->>DesktopUI: token-free machines/status DesktopUI->>DesktopUI: Pin/filter local machine by machineKey/deviceId User->>DesktopUI: Connect account machine DesktopUI->>MainIPC: account.pairMachine(machineKey) MainIPC->>AccountBridge: pairMachine AccountBridge->>Directory: resolve selected account machine AccountBridge->>Runtime: save paired target credentials Runtime->>Relay: Use relay route only while ADE account lease is valid Runtime-->>DesktopUI: connected target resultReviews (2): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile