Skip to content

fix(desktop): LiveShare owner sign-in popup and reader pages on dsh 0.2.2 - #1605

Merged
xipian1216 merged 2 commits into
masterfrom
fix/desktop/liveshare-owner-login-popup
Nov 4, 2026
Merged

xipian1216 merged 2 commits into
masterfrom
fix/desktop/liveshare-owner-login-popup

Conversation

@xipian1216

Copy link
Copy Markdown
Collaborator

Summary

Two LiveShare problems of the Desktop on dsh 0.2.2, now on rc.1 in both Next and Beta.

  • Owner sign-in popup (fix(desktop): open the LiveShare owner sign-in popup from the Desktop window). The LiveShare owner page verifies its owner in a popup on the Relay: it reserves a blank window named liveshare-owner-login and waits for the single-use code the Relay page posts to window.opener. The Desktop window refused every window.open, so a share could never be published from the Desktop. The main window now opens that one popup, sandboxed and without the Desktop preload; it stays on http(s) pages, never reaches the Host, and sends the windows it opens to the system browser. Because the app protocol presents the page's requests to the Host with the Host's own origin, the popup reloads the authorize address addressed to dsh-app://app. The Host still checks state, origin and PKCE when the page redeems the code. The policy lives below src/upstream-family/.
  • Reader pages (fix(desktop): let LiveShare readers load pages with plugin recommendations and reasoning translation). A reader's page is the owner's own Web page with the owner's client plugins, and the official boot refuses the page when any of them does not activate. Plugin recommendations waited forever for pluginNavigation, and reasoning translation threw when its startup read of cotTranslation/limits was denied. Insert-only patches (patches/dsh-client-ui-plugin-recommendations@0.2.2-rc.1.patch, patches/dsh-experimental-client-ui-cot-translation@0.2.2-rc.1.patch) let the cards mount without navigation on a reader's page and leave the reasoning untranslated when the reader may not read the limits.

Validation

  • corepack yarn check on this branch after rebasing onto rc.1: Next 1100 (7 skipped), Beta's mirror-related specs 599, layout and compat 135, market 320, shared Stable specs 393, AA connector 9. Both patches apply unchanged to the rc.1 packages.
  • corepack yarn check on the combination with the file actions and the native file drag over master cffa19d passed, Next 1235 (9 skipped), Beta's mirror-related specs 667, layout and compat 135, market 320, shared Stable specs 393, AA connector 9.
  • On dsh 0.2.2-alpha.3, against a development Relay: the owner sign-in in the real Beta window, share creation, the viewer page and the access tiers (headless Host and Chromium). Not yet repeated on rc.1.

🤖 Generated with Claude Code

xipian1216 and others added 2 commits November 4, 2026 23:39
… window

dsh 0.2.2's LiveShare bundle verifies its owner in a popup on the Relay: the
owner page reserves a blank window named liveshare-owner-login, points it at
`/__liveshare/owner-authorize`, and waits for the single-use code the Relay
page posts to window.opener. The Desktop window refused every window.open,
so the Share dialog could only report the sign-in window as blocked, and a
share could never be published from the Desktop.

The main window now opens that one popup, sandboxed and without the Desktop
preload. It stays on http(s) pages, never reaches the Host, attaches no
webview, and sends the windows it opens to the system browser. The app
protocol presents the page's requests to the Host with the Host's own
origin, so the authorize address asks the Relay to post the code there,
where no window listens; the popup reloads it addressed to dsh-app://app
instead. The Host still checks state, origin and PKCE when the page redeems
the code.

The policy lives below src/upstream-family/. Both variants follow dsh
0.2.2-rc.1, which ships LiveShare, so Next carries it as Beta does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tions and reasoning translation

A LiveShare reader's page is the owner's own Web page with the owner's client
plugins, and the official boot refuses the page when any of them does not
activate. Two dsh 0.2.2 plugins need what a reader may not use:

- plugin recommendations injects `pluginNavigation`, which the plugin manager
  provides only to a page that may list bundles, so it waits forever;
- reasoning translation throws when its startup read of
  `cotTranslation/limits` is denied.

An owner profile with either one enabled therefore showed readers only
"Failed to load plugins". Insert-only patches let the cards mount without
navigation on a reader's page, where opening a plugin does nothing, and
leave the reasoning untranslated when the reader may not read the limits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@xipian1216
xipian1216 merged commit f9cacfb into master Nov 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant