AGENTS.md@packages/client/src/components/connectivity · git:20261014.f5abaf8 · 2026-10-14 · sha256 d99ce8b8ef5cfd68

AGENTS.md@packages/client/src/components/connectivity git:20261014.f5abaf8A

Immutable. This exact content never changes and is served at /api/v1/blob/d99ce8b8ef5cfd68.

# DOX — packages/client/src/components/connectivity

Files in this directory. One row per source file. See change: fold-oversized-agents-directories.

| File | Purpose |
|------|---------|
| `__tests__/PasskeyImpactNote.test.tsx` | Impact note: cleared override still asks, partial draft skipped, url query + silent on zero. See change: add-passkey-user-auth. |
| `__tests__/UsersSection.test.tsx` | Users section: list/orphaned, add, invite QR, re-tier + two-click revoke, unstable disabled-with-reason, disabled note, bootstrap; status pill texts, testids kept, copy-failed colour, load Retry. See change: add-passkey-user-auth; retro-ux-identity-connectivity. |
| `__tests__/secure-context-scan.test.ts` | Scans the pairing/landing surfaces for bare `crypto.randomUUID` / `navigator.clipboard` calls — non-secure LAN origins must go through `randomUuid()` / `copyText`. See change: add-lan-knock-pairing. |
| `__tests__/connectivity-token-scan.test.ts` | Scans the 5 in-scope components + `connectivity-ui.ts` for palette classes / hex / `rgba(` (comments stripped); only `bg-white` allowed is the invite QR quiet zone. See change: retro-ux-identity-connectivity. |
| `connectivity-ui.ts` | Shared class recipes (tokens only): `severityPill`, `identityPill` (Local/Remote), `callout`, `BTN_*` (primary 44/36 px, row actions 32 px), `LABEL`/`HELP`/`META`/`INPUT`/`ROW`/`INSET`. Used by Users, selector, known servers, discovery. See change: retro-ux-identity-connectivity. |
| `ConnectionStatusBanner.tsx` | Disconnection banner: appears only after active WebSocket has been non-`OPEN` for >3s continuously; hidden… → see `ConnectionStatusBanner.tsx.AGENTS.md` |
| `KnownServersSection.tsx` | Settings section managing persisted known remote servers. → see `KnownServersSection.tsx.AGENTS.md` |
| `NetworkDiscoverySection.tsx` | Settings section for mDNS server discovery. Exports `NetworkDiscoverySection`. → see `NetworkDiscoverySection.tsx.AGENTS.md` |
| `PairedDevicesSection.tsx` | Settings → Security → Paired Devices. Lists bearer-paired devices (label, last-seen), per-device… → see `PairedDevicesSection.tsx.AGENTS.md` |
| `__tests__/PairedDevicesSection.test.tsx` | F4 (mcp-legacy-clients-and-token-issuance) + create-flow rows, plus F1–F5 (expand-mcp-tiered-surface): tier radio defaults `observe` and warns on `operate`, base-URL select preselects the origin, snippet uses the chosen tier+base with the token once, token not shown after reopen, per-row tier badge. Mocks `../../lib/pairing/paired-devices-api.js`. |
| `PairLanding.tsx` | Browser `/pair` landing — phone-camera counterpart of the Electron shell `PairView`. Exports `PairLanding`. → see `PairLanding.tsx.AGENTS.md` |
| `pair-landing-ui.ts` | Token-only class recipes for the pair landing (no palette classes, no hex). Shared by `PairLanding`, `PairRequestLanding`, `PairKeepFailedNotice`. See change: add-lan-knock-pairing. |
| `PairKeepFailedNotice.tsx` | Shared "couldn't keep its access" notice — rendered when a device pairs but the device cookie is dropped (plain-http LAN origin). See change: add-lan-knock-pairing. |
| `PairRequestLanding.tsx` | Request-mode landing for `/pair?request`: intro → waiting (grouped confirm code, countdown, NO Cancel — the operator decides), sessionStorage resume across reloads, `visibilitychange`-driven poll, refusal → copy map. See change: add-lan-knock-pairing. |
| `PasskeyImpactNote.tsx` | `PasskeyImpactNote({query,testId,debounceMs})`: `query` = `{url}` (provider switch) or `{redirectBaseUrl}` (draft override; empty = cleared, still asked); non-URL drafts skipped. Fetches `credentialImpact`, renders `impactConsequence` or nothing (errors swallowed — advisory). See change: add-passkey-user-auth. |
| `ServerSelector.tsx` | Server selector dropdown showing persisted known servers. → see `ServerSelector.tsx.AGENTS.md` |
| `TunnelButton.tsx` | Exports `TunnelButton`. Unified tunnel/QR button. Polls `/api/tunnel-status` every 30s. → see `TunnelButton.tsx.AGENTS.md` |
| `UsersSection.tsx` | Settings → Security → Users: add user + tier (empty ⇒ first-operator bootstrap, no tier picker), re-tier select, two-click revoke, Invite QR (img data URL + copy link), status + orphaned severity pills (Active / Invite pending / Revoked; separate warning orphaned pill), unstable origin ⇒ warning callout + invite DISABLED with `aria-describedby` reason, disabled feature ⇒ how-to-enable note, load failure ⇒ error callout + Retry, labelled add form with the section's one primary button, 32 px row actions, copy-failed in `--severity-error-fg`; QR keeps `bg-white` (quiet-zone exception). Uses `lib/users/*`. See change: add-passkey-user-auth; retro-ux-identity-connectivity. |