Repository navigation
[Bug] Windows desktop: "browser time zone is unavailable" blocks chat with British Columbia Standard Time #9718
Replies: 3 comments
|
Every source claim in your report checks out on Source confirmation, in the order the request travels.
The fact the UI cannot show you: the throw is synchronous and sits before the first One design caution for the fix: On the plugin question (this repository's tracker is off, so people ask whether a plugin can carry it): to my reading it cannot, and it is worth recording why — the failing call is inside the client bundle's own module, and a registered client module cannot intercept another bundle's static import; the only remaining seam would be a process-wide patch of Thanks for the two-part mitigation table as well — " |
|
I can confirm this bug also impacts Windows users on the new permanent Alberta Time zone (Alberta Standard Time) just inroduced. Because the embedded Electron runtime cannot map this new Windows registry entry to a valid IANA identifier, it throws the fatal client-side error. As a temporary workaround, you can bypass the crash by opening PowerShell and forcing a recognized timezone variable when launching the app: $env:TZ="America/Edmonton" cheezy but works for now. |
|
Confirmed on Windows with the new BC zone — TZ override works, client-side throw is the only blocker Environment: Windows, time zone set to "British Columbia Standard Time", DSH desktop (latest release). Reproduces as reported. With TZ unset, the Electron runtime (run via ELECTRON_RUN_AS_NODE=1, so the runAsNode fuse is enabled in this build) prints: Setting TZ fixes the runtime value: The December 2026 offset printing GMT-07:00 means the bundled ICU tzdata is already current — for the new BC zone this is purely the Windows zone-ID to IANA mapping gap, not a tzdata problem. Launcher test (set TZ=America/Vancouver before start, then launch the app normally) — chat succeeds, no "browser time zone is unavailable". So TZ does reach the renderer-side sampler; the throw in packages/api/session-controller/src/client/time-zone.ts is the only thing preventing a working session. This also answers the open question of whether the renderer sees the override: it does. Suggested fix: when resolvedOptions().timeZone is undefined or empty, omit clientTimeZone and let the host's existing "unavailable" time-context state handle it, rather than throwing client-side. The host already tolerates the omission, so this should be a small change. A Windows-zone to IANA fallback (e.g. "British Columbia Standard Time" -> America/Vancouver, "Alberta Standard Time" -> America/Edmonton) would be a longer-term option once Electron/Chromium upstream adds the new IDs. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
On Windows using the new
British Columbia Standard Timezone, the official desktop app refuses every attempted chat message with:The installed Electron runtime cannot resolve the Windows zone to a non-empty IANA identifier. The client treats this missing metadata as a fatal error before sending the prompt RPC. This was encountered after updating the desktop app; the first affected Harness release has not been bisected.
Environment
0.2.0-rc.2, Windows x6444.0.0, Node24.18.1, ICU78.2, tzdata2025cBritish Columbia Standard Time(the new UTC-07:00 Pacific Time / British Columbia entry)masterat571902028a75c64c1d767f4ae5fd099485f0ddf0Microsoft documents the new BC zone in the September/October 2026 Windows updates: official guidance.
Reproduction
British Columbia Standard Time.TZoverride.Actual result: the message fails with the error above and no model response is produced.
An isolated probe using the installed desktop executable's own Electron runtime returns
undefinedfor:The observed offset was also 480 minutes (UTC-08:00), not the expected 420 (UTC-07:00). This runtime probe is separate from a direct renderer-console measurement; the actual desktop failure and subsequent successful chats were verified through the UI.
Relevant source
resolvedClientTimeZone()throws when the runtime returnsundefinedor an empty string.clientTimeZoneis already optional.This is related to discussion #5403, but a different failure: that report sends an unsupported non-empty alias to the Host; this one fails in the client before the RPC because no zone was resolved.
Expected behavior / suggested direction
Ordinary chat should remain usable when optional browser time-zone metadata is unavailable. The request should retain that unknown state rather than silently assigning UTC, Vancouver, or the server's zone as the user's location.
A possible focused change is to let the client sampler return
undefinedfor the observed missing/empty results and omitclientTimeZonefrom those requests. Keep the existing Host validation for explicitly supplied invalid zones. Any downstream display fallback should remain distinct from the user's unknown time zone. Updating the bundled ICU Windows-to-IANA mapping and time-zone rules would address the underlying platform issue as well.Suggested regression coverage:
This is a proposed direction based on the current request types and handlers, not a claim that an upstream source patch or its complete test suite has been run.
Local mitigation and verification
For diagnosis and to restore this installation, only the Harness process was launched with
TZ=America/Vancouverplus official Unicode ICU timezone resources 2026e. Windows settings, global environment variables, and installed Harness application files were left unchanged.TZ=America/VancouverTZ+ ICU 2026e resourcesUpdating timezone resources alone did not restore automatic Windows-zone detection in this local test; the explicit app-local mapping was also needed. Conversely, setting
TZalone left the old winter rule in place.With the combined mitigation, the actual desktop app completed two simple chat turns successfully, including one after a full exit and relaunch. These checks validate the local mitigation, not the proposed source change above.
Posting here rather than opening an external PR, as requested in the contribution guide.
All reactions