Skip to content

Clean up the device list: hide internal sessions, confirm destructive removal - #127

Merged
badcuban merged 2 commits into
mainfrom
devices-page
Aug 8, 2026
Merged

Clean up the device list: hide internal sessions, confirm destructive removal#127
badcuban merged 2 commits into
mainfrom
devices-page

Conversation

@badcuban

@badcuban badcuban commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

What changed

Hide internal desktop sessions from the device list. Every phone-link bridge and desktop restart minted a bearer session under the internal desktop-bootstrap subject, so the Connected devices list filled up with identical "desktop-bootstrap · Owner · Desktop · 127.0.0.1" rows that mean nothing to the user. These machine-to-machine sessions are now filtered out of ServerAuth.listClientSessions and the subscribeAuthAccess live stream. The requesting session is always kept visible, so a client whose own access rides on an internal session still sees itself as "This device". The CLI (threadlines auth sessions) still shows everything.

"Remove other devices" no longer severs phone-link bridges. The revoke-others action now targets only the sessions the list actually shows, using the same visibility predicate (isInternalClientSession in apps/server/src/auth/utils.ts), instead of a blanket revoke-all-except-current that silently killed active phone-link connections.

Confirmation dialog for "Remove other devices". It signs out every other device, so it now asks first.

Tests

  • ServerAuth.test.ts: internal bearer sessions are hidden from the client list while cookie sessions stay visible; revoke-others spares internal sessions and still revokes visible devices.
  • SettingsPanels.browser.tsx: confirmation dialog flow (confirm and cancel paths).
  • vp fmt, vp lint, vp run typecheck green; server auth suites and settings browser suite pass.

Sessions the desktop process mints against its own backend (phone-link
relay bridges and similar machine-to-machine logins) authenticate with
the desktop bootstrap token over bearer auth and accumulated as
meaningless desktop-bootstrap rows under Connected devices. Filter them
out of the device list and the auth-access stream, keeping the caller's
own session visible so every viewer can still see how it is connected.
Remove other devices now revokes exactly what the device list shows:
internal desktop bearer sessions are skipped, so the action no longer
severs a live phone-link connection. The bulk revoke-all-except chain
through the control plane, credential service, and repository is now
unused and removed. The web button opens a confirmation dialog stating
how many devices will be signed out before anything is revoked.
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
threadlines Skipped Skipped Aug 8, 2026 4:58am

Request Review

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 8, 2026
@badcuban
badcuban merged commit 9578111 into main Aug 8, 2026
15 checks passed
@badcuban
badcuban deleted the devices-page branch August 8, 2026 05:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant