Replies: 3 comments
|
I prepared the smallest upstream patch for this exact failure rather than adding a Live Voice production workaround:
Verification on exact
External pull requests are currently disabled, so this is a cherry-pickable comparison for maintainer review. The claim remains narrow: URL resolution now works for an opaque/null-origin page. This does not prove packaged Desktop/Electron, authentication, a production Live Voice carrier, or an official plugin integration seam. |
|
Verified both refs against the exact alpha tree (cd5ef81) — your diagnosis is precise, and this is a two-line fix. Confirmed 1 — the asymmetry. Confirmed 2 — the frame never leaves. The Answer to Q1 (maintainer decision): preserve an already-absolute input, don't re-resolve. Two concrete shapes, both minimal:
Q2/Q3 context. URL normalization being "shell-owned" would leave every embedded-script author re-implementing a guard the host already ships in Your patch direction (in the |
|
这个复现把“null origin URL 解析失败”和“WebView/桌面认证或 IPC 权限问题”正确分开了;这对集成方很重要:postMessage 尚未发生时,不能把它归因于 TunnelServer、CORS 或凭据。 我维护的独立 DeepSeek Harness 社区手册也采用同样的边界记录方式:official project identity and desktop-shell boundary。对该 alpha revision,建议把验收矩阵固定为:
若维护者合入比较中的两行修复,最好保留 exact commit cd5ef81 的回归测试,并在下一版本注明“opaque-origin URL resolution fixed”;这不会自动证明 Electron/Tauri、生产 carrier 或官方插件 seam 已受支持。 |
Uh oh!
There was an error while loading. Please reload this page.
Summary
On exact
dsh-v0.1.2-alpha.1(cd5ef8148158c3a752a658978873241fdf8e2bbc),WorkerTunnel.fetch()throwsTypeError: Invalid URLunder afile://page whoselocation.originis"null", even when its input is already an absolutehttp://dsh.internal/...URL. The throw happens beforepostMessage, so no IPC request frame reachesTunnelServer.This report is narrowly about reusing the exact-alpha
WorkerTunnelunder null origin. It is not a claim that every Desktop shell or every IPC design is broken.Exact reproduction
cd5ef8148158c3a752a658978873241fdf8e2bbc/0.1.2-alpha.16e97573c2d5d7769ab7a35ae087ac3eb6e8083e6Expected: the already-absolute URL is serialized into one
reqframe, or the carrier exposes a documented supported normalization step.Actual:
TypeError: Invalid URL;sentremains[].Source-level mismatch
The Client Connection RPC deliberately falls back to
http://dsh.internalwhen the page origin is null:packages/client/connection/src/client/rpc.tsWorkerTunnel.fetch()then resolves that already-absolute input again againstglobalThis.location.origin:packages/experimental/webworker-runtime/src/client/client.tsBecause the base is the string
"null", URL construction throws before the frame is posted.Independent proof and boundaries
A test-only bounded adapter that normalizes the absolute URL can traverse the exact alpha's real Typert generator, generated strict Host/Remote descriptors, Client/Host Connection and Gateway seams,
TunnelServer, andSessionStore.fork()over a structured-cloneMessageChannel:The clean run passed 6/6 and emitted
publishable: truefor this synthetic IPC-equivalent claim. It also explicitly recordscredentialBackedProvider:false,physicalAudio:false,electron:false,tauri:false,packagedDesktop:false, andofficialSeamConfirmation:false.The adapter is not a drop-in
WorkerTunnel: it has proof-specific body, queue, error, abort, and lifecycle policy. No production DSH Live Voice carrier was changed.I searched current discussions before posting. The closest items I found were #3118 (Electron
file://+ IPC carrier work) and #5063 (embedded authentication); neither describes this pre-frame null-origin URL failure.Maintainer clarification requested
WorkerTunnel.fetch()preserve an already-absoluteURL, or use the same internal-base fallback as Client Connection under null origin?Served-Web development can continue safely while this is clarified. We will not claim packaged Desktop support or an official carrier seam from the synthetic proof.
All reactions