Skip to content

Model Switch v0.3.10

Choose a tag to compare

@NOirBRight NOirBRight released this 27 Aug 07:59
· 7 commits to main since this release

Release: v0.3.10 · stable · published 2026-08-27 · tag commit 7f4d07089fc5785ed519a931218446df29da2fd7

Highlights: Composer and Plan Review move into Model Switch

Model Switch 0.3.10 rolls the v0.3.0–v0.3.10 tag sequence into one release. It keeps Main/Subagent/Search/Image routing and adds ownership of the composer model seat and Plan Review execution picker.

Composer picker

  • Replaces the standalone dsh-composer-picker package; keep only Model Switch installed so there is one composer model seat.
  • Groups provider catalog rows into Model / Effort / Context / Fast / Thinking dimensions while still submitting through official session.selectModel.
  • Shows family name and distinct effort/Fast/context bits in the trigger.
  • Preserves a routable current model even when it is absent from the advisory catalog.
  • Renders and wraps triggers, headings, model names, catalog descriptions, and values instead of truncating them.

Plan Review

  • Takes over the official plan-review composer surface with a one-row footer: execution-model capsule plus Discuss / Keep planning / Approve.
  • Commits the selected execution model before sending approval.
  • Keeps the footer usable on narrow screens by shrinking controls and wrapping labels inside buttons.
  • Keeps composer/Plan picker failures mounted as localized, retryable diagnostics rather than silently falling back to another seat.

Mobile interaction fixes

  • Gives the custom seat an unambiguous winning priority and declares its Sessions/model-directory service gate.
  • Makes a mobile tap idempotent across pointer and synthetic-click delivery: first tap opens, second tap closes and stays closed.
  • Preserves the preferred 320px menu width when the viewport permits, hides horizontal overflow, retains internal vertical scrolling, and keeps content readable.
  • Extracts popup activation/positioning/dismissal into an internal surface module and consolidates each snapshot with its directory operations.

Behavior / technical boundary

  • Optional mobile operations use Cordis typed public non-strict lookup; absence degrades gracefully.
  • Picker state follows official directory status/routability, and unsupported/missing routes continue to fail explicitly without fallback.

Settings

  • Retains the existing Default Main, Subagent, Search, and Image Settings cards.
  • Refreshes the Settings nav glyph after shell redraws and aligns route cards with the shared LLM Providers chrome.
  • web_fetch, Vision/read_image, ordinary attachments, AgentPresets, and provider-specific image tools remain unchanged.
  • The Settings icon is still a label-matched DOM swap because rc.2 exposes no icon field.
  • Plan Review uses priority -7 because rc.2 exposes no public Plan handoff seam; the external-agents.plan-review.continue-in-dsh adapter remains for dual-install compatibility.

Install / upgrade / compatibility

DSH_HOME=~/.dsh dsh plugin --profile web add github:NOirBRight/dsh-model-switch#v0.3.10
DSH_HOME=~/.dsh dsh plugin --profile web add github:NOirBRight/dsh-llm-codex#v0.3.0
DSH_HOME=~/.dsh dsh plugin --profile web add github:NOirBRight/dsh-llm-grok#v0.3.0

Remove a standalone dsh-composer-picker dependency, preserve the profile's fetchProvider, configure routes, and restart the profile. Requires Node 22.19+ and the DSH 0.1.1-rc.2 peer set.

Validation / package contents

The release includes compiled Host/client bundles, declarations, Cordis patch metadata, and product documentation. The tagged code adds picker-family, Plan transaction, popup dismissal, seat ownership, mobile pointer, style/geometry, routability, retry-boundary, and responsive-layout coverage. The existing declared package-consumer release gate is pnpm run check (build, Vitest, and reproducible pack verification).