Skip to content

Releases: omdsh-dev/dsh-browser

dsh Browser Control v0.1.3 — Firefox, Cross-Platform Setup, and Contextual Sessions

Choose a tag to compare

@Lum1104 Lum1104 released this 04 Sep 06:47
e60e6e3

dsh Browser Control v0.1.3 expands the project from a Chrome-first browser assistant into a cross-platform Chrome/Firefox integration with safer session continuity, richer side-panel workflows, and support for the current DSH transport architecture.

Highlights

Firefox and cross-platform setup

  • Added a Firefox MV3 build with a native sidebar, event-page background, runtime-port recovery, and Firefox-specific authentication safeguards.
  • Added a Windows PowerShell installer alongside the macOS/Linux installer.
  • Improved Chrome and Chromium discovery, clipboard fallbacks, browser launch behavior, and installation guidance across macOS and Linux.
  • Added automatic discovery of DSH Desktop’s recommended fixed port, 43189.
  • The bridge now displays a copyable WebSocket address in DSH General settings.

Firefox is currently distributed as a source build and requires Firefox 140 or later. Because moz-extension:// UUIDs are not stable add-on identities, Firefox must authenticate with the token stored at ~/.dsh/ext-bridge-token.

Faster browser workflows

  • Highlighted page text now appears as a removable quote in the side-panel composer and is sent inside the existing untrusted-content boundary.
  • New conversations automatically capture and inject the current page snapshot before the first prompt.
  • Added browser_open_tab, allowing the assistant—with approval—to open an HTTP(S) URL in a new tab, follow it, and return its page snapshot.
  • Hardened new-tab cancellation and readiness handling, including Firefox’s initial blank document.
  • Added a persistent text-size control with steps from 90% to 175%.
  • Fixed Settings sections being compressed or clipped in short side panels.

Browser operation remains text-only. User-attached images continue through the separate DSH multimodal conversation path.

Safer and more flexible sessions

  • Conversation restoration is now scoped to the same browser tab, window, origin, and pathname. Query strings and fragments do not split a page session.
  • Opening the same URL in a new tab creates a new conversation.
  • Navigating while the panel is closed starts fresh, while navigation during an open panel or a successful assistant action remains part of the current conversation.
  • Automatic restoration no longer falls back to unrelated global history; older conversations remain available through the history picker.
  • Sessions can be created or switched while another agent turn is running, with independent per-session tab affinity and cancellation state.
  • Added “Stay & stop asking” for users who want the assistant to keep controlling its original tab while they browse elsewhere.
  • Added session deletion through archive-then-purge handling with persisted-ID validation and running-session protection.
  • Added side-panel configuration for Claude-, OpenAI-, and Codex-compatible API relay profiles, with credentials stored in the DSH credential store.
  • Preserved provisional sessions, pending questions, approvals, and page-scoped recovery across panel and bridge lifecycle changes.

DSH 0.1.2 bridge architecture

  • Migrated the primary bridge transport to the DSH 0.1.2 Typert Gateway, Connection, and Remote APIs.
  • Added a capability-selected compatibility adapter for DSH 0.1.1-rc.2.
  • Kept Desktop-owned ask_user_question waterfalls in the native Desktop UI while routing extension-owned sessions to the browser panel.
  • Corrected older-history pagination by using the real Host follow cursor and preserving paging options.
  • Malformed history pages and records now fail closed instead of appearing as valid but incomplete history.
  • Improved follower replacement, tool cancellation, and session-scoped approval behavior.

Compatibility

  • Primary runtime: @deepseek-ai/dsh@0.1.2-rc.1
  • Temporary compatibility runtime: DSH 0.1.1-rc.2
  • Earlier DSH releases are no longer supported.
  • Chrome requires version 116 or later.
  • Firefox requires version 140 or later and a bridge token.
  • Regular HTTP and HTTPS pages are supported; protected browser pages and extension stores remain unavailable.

Install the tagged release

macOS and Linux:

git clone --branch v0.1.3 --depth 1 https://github.com/Lum1104/dsh-browser.git
cd dsh-browser
./scripts/install.sh

Windows PowerShell:

git clone --branch v0.1.3 --depth 1 https://github.com/Lum1104/dsh-browser.git
cd dsh-browser
.\scripts\install.ps1

Existing managed installations can use the update command shown in the extension.

Contributors

Thank you to everyone who contributed to this release:

Complete change history

  • #24 — Add Firefox extension support.
  • #42 — Advance release metadata after v0.1.1.
  • #44 — Improve macOS/Linux installation and add Windows installation support.
  • #48 — Quote text selected in the current page.
  • #49 — Automatically seed new conversations with the current page.
  • #50 — Add session deletion and API relay profiles.
  • #52 — Add concurrent session switching with per-session tab affinity.
  • #53 — Fix clipped Settings sections.
  • #54 — Discover DSH Desktop on port 43189.
  • #58 — Add persistent side-panel text sizing.
  • #59 — Add persistent background-tab control.
  • #62 — Preserve Desktop-owned question waterfalls.
  • #64 — Show a copyable bridge URL in DSH settings.
  • #65 — Correct Host-cursor session history pagination.
  • #66 — Add browser_open_tab.
  • #68 — Support DSH 0.1.1-rc.2 and 0.1.2-rc.1 transports.
  • #69 — Scope conversation continuity to the current tab and page.

Full changelog: v0.1.1...v0.1.3

dsh Browser Control v0.1.1 — First Public Release

Choose a tag to compare

@Lum1104 Lum1104 released this 21 Aug 08:33
d2b9d6d

This is the first public release of dsh Browser Control.

dsh Browser Control connects DeepSeek Harness to the Chrome tab you are already using. It combines a Chrome MV3 extension, a local dsh bridge plugin, and a focused side-panel conversation interface.

The assistant can read structured page content, operate controls, fill forms, scroll, and navigate while preserving your existing browser login state, cookies, and sessions.

Highlights

Operate your real browser

The assistant works with the Chrome tab you already have open instead of launching a separate headless browser.

Included browser tools:

  • Read the current page as structured text.
  • Click links, buttons, checkboxes, and other controls.
  • Fill forms with React- and Vue-compatible input handling.
  • Press keyboard keys.
  • Scroll pages and read specific regions.
  • Navigate, reload, go back, and go forward.
  • Wait for page loading and DOM changes to settle.

Pages opened before the extension was installed or reloaded are instrumented automatically on the first action.

Text-first browser interface

Browser pages are exposed as bounded structured text with numbered interactive elements.

  • Stable element references across snapshots.
  • Delta snapshots that return only relevant changes.
  • Automatic post-action page context to reduce browser round trips.
  • Cross-frame snapshots and frame-local actions, including cross-origin frames.
  • Accessible names, form state, main content, and navigation changes.
  • Strict per-frame and aggregate output budgets.

Browser tools never capture screenshots. User-attached images use a separate multimodal chat path and do not change this browser privacy boundary.

Multimodal conversations

The side panel supports PNG, JPEG, WebP, and GIF attachments when the connected dsh host advertises image capability.

  • Mixed text-and-image prompts.
  • Image-only prompts.
  • Image preview and removal before sending.
  • Durable image rendering in conversation history.
  • Host-negotiated limits for image count, size, and dimensions.
  • Localized validation and admission errors.

Image support remains model-dependent. If the selected model cannot process images, the host rejects the prompt before model I/O and the side panel restores the complete draft.

Side-panel conversation experience

The extension provides a complete browser-assistant workspace inside Chrome:

  • Streamed user and assistant messages.
  • Dedicated browser-tool activity display.
  • Session history with dsh-generated titles.
  • Resume previous conversations after reopening Chrome or the side panel.
  • A dedicated New Chat action.
  • Answer ask_user_question interactions directly from the side panel.
  • Stop an active turn without discarding the session.
  • Restore running turns, pending questions, and approvals.
  • English, Simplified Chinese, and Traditional Chinese interfaces selected from the browser language.

Controlled-tab continuity

Browser work remains bound to one explicit tab.

  • Normal tab switches do not silently retarget the assistant.
  • The controlled tab can continue operating in the background.
  • Starting a new chat explicitly binds control to the currently active tab.
  • Closing the controlled tab pauses browser tools until the user chooses how to recover.
  • Tab identity survives MV3 service-worker restarts and Chrome tab replacement.
  • Asynchronous browser actions revalidate the tab, frame, document, and approval state before dispatch.

The extension never changes the visible tab on its own.

Approval and trust controls

State-changing browser actions fail closed until approved unless their origins are explicitly trusted.

  • Page reads can be set to automatic, ask every time, or disabled.
  • Click, type, keypress, navigation, history, and reload actions support explicit confirmation.
  • Allow once, trust for the current side-panel session, or permanently trust an origin.
  • Wildcard trusted origins such as https://*.example.com.
  • Wildcards remain scoped to scheme and port.
  • Public-suffix wildcards such as *.co.uk and *.github.io are rejected.
  • Cross-origin navigation and unknown history destinations require confirmation.
  • Pending approvals are withdrawn when calls expire or their browser context changes.

Approvals can remain pending briefly while the side panel is closed. The extension notifies the user and restores the approval in its owning conversation when the panel is reopened.

Security and privacy

  • Browser page content is treated as untrusted input.
  • Password and payment-card values are always masked and never leave the page.
  • Action dispatch is bound to Chrome frame and document identity so stale references cannot target replacement documents.
  • Remote bridge connections support bearer-token authentication.
  • Privileged host methods reject non-loopback callers.
  • Typed values are redacted from approval dialogs.
  • Timeouts, cancellations, missing panels, stale sessions, and lost tabs fail closed.

Faster browser workflows

Browser actions use bounded DOM-quiet settling instead of unconditional delays, while snapshots reuse layout, accessibility, and frame-topology work.

Automatic action deltas and post-navigation snapshots provide the model with updated page context without requiring another explicit snapshot call.

In the repository's paired 60-run end-to-end benchmark:

Backend Success Mean latency Mean browser tool calls
dsh Browser Control 30/30 5.32 s 3.4
Matched Playwright baseline 30/30 6.67 s 4.7

In this benchmark, dsh Browser Control reduced mean end-to-end latency by about 20% and used 1.3 fewer browser-tool calls per task. See the benchmark methodology for the task definitions, controls, and reproduction instructions.

Installation and update workflow

The project includes a managed installer that builds and registers both the dsh bridge and the unpacked Chrome extension.

The Settings panel can check for newer versions and provides an update command appropriate for managed installations or local source checkouts. Updates remain explicit and are never executed automatically.

The bridge connects on demand only while a side panel needs it, preventing inactive browser profiles from competing for the host's active bridge connection.

Provider compatibility

Browser tool definitions are normalized into registry-ready JSON Schema before registration. This keeps parameterized and parameterless tools compatible with OpenAI-compatible Responses providers, including locally hosted models through applications such as LM Studio.

Installation

Requirements:

  • Node.js ^22.19 or >=24
  • Corepack and pnpm
  • Google Chrome

Run:

curl -fsSL https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/tags/v0.1.1/scripts/install.sh | bash

When the installer opens chrome://extensions:

  1. Enable Developer mode.
  2. Load or reload the unpacked dsh Browser Assistant extension.
  3. Restart dsh if it was already running during installation.

Start the managed installation with:

cd ~/.dsh/dsh-browser && pnpm start

The unscoped dsh-browser package on npm belongs to another project. This project is not installed from that package.

Compatibility notes

  • This release adapts to the dsh 0.1.1 API line.
  • The workspace is currently pinned to @deepseek-ai/dsh@0.1.1-rc.1, the published package used during implementation and validation.
  • Multimodal input is available only when both the host and selected model support images.
  • Browser operations remain text-only even when multimodal chat is enabled.
  • Regular http:// and https:// pages are supported.
  • Protected Chrome pages, including chrome:// pages and the Chrome Web Store, cannot be controlled.
  • This is an unpacked Chrome extension; there is currently no Chrome Web Store package.

Contributors

This first release includes work from:

  • @Lum1104 — project architecture, bridge, extension, security model, conversation UI, performance, multimodal support, installation, and maintenance.
  • @yeruizhi — installation troubleshooting and the original side-panel question-response and stop-control proposal incorporated into #13.
  • @tz527129804 — session history, conversation restoration, and wildcard trusted origins in #14.
  • @thaning0 — provider-compatible browser-tool schema normalization in #32.
  • @huangzhenhao90 — the top-bar New Chat action and background tab affinity in #40.
  • weisiwu — co-author of the controlled-tab dispatch implementation.

Thank you to everyone who reported issues, tested the extension, reviewed changes, and contributed ideas to the first release.

Complete change history

Foundation and installation

  • #1 — Refine the browser assistant chat UI.
  • #2 — Support pages opened before extension load.
  • #3 — Run the bridge against published dsh packages.
  • #4 — Make English the default repository documentation.
  • #5 — Document restart requirements and connection troubleshooting.

Browser control, security, and conversations

  • #9 — Cross-frame browser actions and origin-scoped approvals.
  • #10 — Browser-l...
Read more