Three ways the configured browser defaults were not reaching a tab: Restore defaults skipped them entirely. They are unified settings like every other preference on that button, so they now take part in both the dirty labels and the reset. The viewport is a tagged union, so comparing it needs structural equality — identity would have reported a freshly decoded copy of the default as changed. `browserAutoShowFloatingPreview: false` was ignored for `preview_open`. `normalizePreviewOpenInput` filled an omitted `open` with `true` on the server, so by the time the renderer asked "did the agent state a preference?" the answer was always yes. The server now leaves unstated visibility unstated, which is the only thing it can honestly say — the preference is desktop-local and unreadable from there. A preview opened before client settings hydrated was born at the schema defaults and never corrected. The three imperative open paths now await hydration, which costs nothing: they were already async. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Julius Marminge committed on 8/16/2026, 10:43:53 PMparentbb0492d
12 files changedLine totals unavailable