GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat(client): support isolated RPC connections by dvcolomban · Pull Request #401 · devframes/devframe

Conversation

@dvcolomban

@dvcolomban dvcolomban commented Sep 24, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Background (Why)

An external viewer can open RPC connections to independent Devframe endpoints in one browser document. Shared connection discovery can reuse the first endpoint, while browser credential storage and the devframe-auth BroadcastChannel can overwrite another endpoint's remembered token. Explicit connection descriptors select an endpoint but still participate in this shared authentication state.

The authentication broadcast contains a token without a backend identifier. Applications that manage independent connections or their own credential persistence need an explicit way to opt out of this shared state.

Changes (What)

Add isolated?: boolean to DevframeConnection. An isolated connection skips shared connection discovery, credential storage and authentication broadcasts. Token and one-time-code authentication still use its own RPC transport and update the retained descriptor. Omitting the flag or using false preserves existing shared behavior.

Setup accepts either a complete connection or DevframeConnectionDiscoveryOptions before metadata has been resolved:

const connection = await setupDevframeConnection({
  baseURL: 'http://localhost:5173/',
  connection: { isolated: true },
})
const rpc = await connectDevframe({ connection })

The named discovery type also accepts shared mode, so it does not imply an already resolved, isolated connection. Reusing a prepared descriptor preserves its isolation setting. JSDoc on the flag, discovery type and channel guard explains why unscoped authentication broadcasts are skipped.

Verification (Testing)

All 48 tests in the six affected connection/authentication files pass. They cover shared defaults, token precedence for provided and fetched metadata, independent token updates, descriptor reuse and transport disposal. Browser storage and transport I/O are mocked at their existing boundaries.

All 92 Devframe API snapshot checks pass locally on the PR branch. The extracted input type is assignable to and from the previous inline shape. Package build, typecheck and changed-file ESLint pass. Full monorepo validation runs in PR CI.

The current merge-check CI reports three diagnostics declaration snapshot mismatches. The same three mismatches occur on upstream main 9aa752a1, which is the upstream commit used by the PR merge check. The changed client snapshot passes; these diagnostics snapshots are outside this connection-isolation change.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@dvcolomban
feat(client): support isolated RPC connections
24ba9f4
@vercel

vercel Bot commented Sep 24, 2026

Copy link
Copy Markdown

@dvcolomban is attempting to deploy a commit to the NuxtLabs Team on Vercel.

A member of the Team first needs to authorize it.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Sep 24, 2026
Provider discovery and routing dvcol/devkit-extension#7
Closed
Server adapter contract dvcol/devkit-extension#6
Closed
dvcolomban added 2 commits September 24, 2026 18:55
@dvcolomban
refactor(client): centralize connection credentials
9a4cacf
@dvcolomban
refactor(client): retain isolation on connection descriptors
22c3206
dvcolomban
dvcolomban commented Sep 25, 2026
View reviewed changes
Comment thread packages/devframe/src/client/connection.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread packages/devframe/src/client/connection.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread packages/devframe/src/client/connection.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread packages/devframe/src/client/rpc.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread packages/devframe/src/client/rpc.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tests/__snapshots__/tsnapi/devframe/client.snapshot.d.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

dvcolomban added 2 commits September 25, 2026 09:57
@dvcolomban
fix(client): clarify isolated connection defaults and auth flow
6d66d7e
@dvcolomban
refactor(client): name connection discovery options and explain isola…
b085676
…tion
@erkamyaman

erkamyaman commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

This would help us a lot. In angular-devtools the Chrome extension panel runs on one origin and talks to a different devtools server per app, so a token saved for one server was being reused for another. We patch requestTrustWithToken today to drop tokens that belong to another server. With isolated: true we could remove that and use this instead.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot will automatically review once the pull request is marked ready for review

At least 1 approving review is required to merge this pull request.

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@dvcolomban @erkamyaman
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.