Fixes the typecheck failure introduced by marking `splits` optional: withTabOpened keeps a missing `splits` as-is instead of feeding it to the walker, and a regression test asserts observationTabOpen does not dereference an absent right-column tree (DSH 0.1.5 / better-sidebar 0.19+).
DSH 0.1.5 (with better-sidebar 0.19+) moved the right column to dsh native Sidebar, so the sidebar snapshot no longer carries `splits`. observationTabOpen still walked [state.splits, state.bottomSplits] and fed each root straight into leafNodes(), which dereferences node.kind - with `splits` absent that throws "TypeError: Cannot read properties of undefined (reading kind)" on every render.
Because the observation tab registers inside better-sidebar render tree, the error surfaces under better-sidebar error boundary as a persistent red banner ("dsh-better-sidebar: Cannot read properties of undefined (reading kind)") even though the faulty walk lives here. Mark `splits` optional and skip absent roots before walking.
Verified on dsh 0.1.5-rc.2 + better-sidebar 0.19.0-alpha.1: with this guard in the built client bundle, the banner and the console TypeError are gone and observation tab detection behaves as before.
Reconnect screenshot content scripts in already-open documents instead of silently switching to manual capture. Track top-level navigation so loading subframes do not interrupt capture.
Explain that the daemon must already listen on the selected port and that the extension setting does not change the local CLI configuration. Show the saved daemon WebSocket address beside the save button.
Preserve current session cleanup dependencies and resolve popup imports. Add matching Korean port messages and keep the popup disconnected while connection cleanup is in progress.
Coordinate endpoint changes, session cleanup and reconnect requests in the connection controller without waiting for unreachable sockets. Preserve connection preferences and protocol diagnostics, and explicitly save popup port drafts with loading and write-error handling.
Cover storage ordering, rapid configuration changes, disconnect cleanup, handshake cancellation and transport backoff with regression tests.
Align Korean upgrade guidance, protocol interpolation and help copy with the current extension. Normalize stored locale aliases against shipped resources while preserving preferences and avoiding echo writes.
Cover language detection, storage synchronization, resource parity and the Korean recording flow. Run localization tests in CI and document supported languages and translation maintenance.
Validate signed deltas and optional targets before browser work. Guard wheel
steps against cancellation and deadlines, cancel at the daemon deadline, and
keep session serialization through bounded cleanup. Reuse visible bounds to
choose points inside clipped targets without changing other input tools.
Expose wheel through browser_interact and document native input, zoom,
completion and interruption semantics. Add CLI, protocol, dispatcher, queue,
plugin and isolated Chromium regression coverage.