Repository navigation
Releases: ForeverYoungPp/dsh-web-search
Release list
0.2.0-rc.1 — @ian_p/dsh-web-search
Adapts the plugin from the DSH 0.1.5-rc.3 train to 0.2.0-rc.2. On the target runtime the previous version did not load at all — the profile bundle was skipped before any of its code ran.
Package: @ian_p/dsh-web-search@0.2.0-rc.1 — dist/ only (staged from src/ by scripts/build.mjs). Published tarball: 9 files, 39.4 kB, shasum 8b7227a7e6acdc5ad099d8aa83b1ff6fcd7995e5.
Fixed — three independent breakages
- Compatibility gate.
evaluatePluginCompatibility()requires every@deepseek-ai/dsh*peer to satisfy the runtime version;^0.1.5-rc.3does not satisfy0.2.0-rc.2, so the bundle landed inskippedBundles. Peers are now^0.2.0-rc.2(cordis ~4.0.4), and the dead@deepseek-ai/dsh-toolsdeclaration is removed — it was imported nowhere and a stale peer range alone is enough to block loading. - Strict Typert codec. 0.2.0 requires
create: () => TypertSchemain place of aschemafield, enforced by both the host and the client registry validators. The old shape threw atctx.remote.$mount(...), so the browser half failed and the settings page never registered. - Settings slot. The page now registers the standard plugin-owned slot
plugins.item(idweb-search-providers, order 12) instead of the built-insettings.section, with a one-linesummaryfor the Plugins-page list card and the full provider list on the detail page.
Unchanged by design: the eight-provider fallback chain and its policies (sequential, first-success-wins, no racing/merging/retry/cache), credential record layout, the - id: web searchProvider/fetchProvider override, and the hand-written client bundle with its copy-only build.
Compatibility
- Requires DSH
0.2.0-rc.2. - Still on DSH
0.1.5-rc.3? Install@ian_p/dsh-web-search@0.1.5-rc.3— the two trains are not interchangeable.
Install
dsh plugin --profile web add @ian_p/dsh-web-search@0.2.0-rc.1Evidence
pnpm test→ 140 pass ·pnpm run test:rpc→ 18 pass + bundle smoke ·pnpm run typecheck→ clean. All three re-run onmainafter the merge.- The gate and the codec contract are asserted against the installed
0.2.0-rc.2packages, not against reimplementations, and with non-vacuous controls: the pre-change manifest is rejected by the real gate, and aschema-shaped codec is rejected by both registry faces. A five-mutation matrix (slot name, page id, order, codec shape, re-addeddsh-tools) turns the suites red. - Guardrail files byte-identical to the previous release:
src/index.js,src/host-core.js,src/remote.js,scripts/build.mjs,cordis.patch.yml,patch.web.yml,tsconfig.types.json,tests/host-core.test.mjs,tests/interaction.test.mjs. - Native review closed approved (lineage
review-da26f1f467114f0d, medium, one consolidated reliability lens). Two non-blocking advisories recorded for later:R3-plugins-item-live-reachability(WARNING) andR3-summary-branch-binding(SUGGESTION). - Artifact correspondence: the npm tarball shasum above is the code state merged in PR #3 (
eee11c8); this tag additionally carries the README-only follow-up in PR #4 (5888d2a).
Open
Live reachability of the Plugins-page card has not yet been confirmed on a real 0.2.0-rc.2 host. If the page proves unreachable, only the slot line in src/client/bundle.js needs reverting — the codec and peer fixes stand on their own — and a follow-up release will carry the correction.
Change detail: PR #3 · archived SDD change at openspec/changes/archive/2026-10-01-adapt-dsh-0.2.0-rc.2/ (proposal, delta specs now canonical under openspec/specs/, design, tasks, apply progress, archive report).
0.1.5-rc.3 — @ian_p/dsh-web-search
First published release of the multi-provider web search plugin, under a publishable scope (@ian_p, matching @ian_p/dsh-gentle-engram). The version mirrors the DSH train it targets: 0.1.5-rc.3.
Package: @ian_p/dsh-web-search@0.1.5-rc.3 — publishes dist/ only (staged from src/ by scripts/build.mjs).
Highlights
- Eight providers in one fallback chain: sequential, first-success-wins, with a local
available()pre-check and one host-log line per search naming every provider skipped or failed and the one that served. - Result shaping matches the native path: the seam owns source-list truncation (so the "sources truncated" notice works), snippets are cleaned and held to the native 150-character citation ceiling, page bodies never become snippets, and the provider's own answer is bounded.
- Provider adaptations from evidence: Tavily
chunks_per_source: 1+include_published_date, Firecrawl in-body failures surfaced, DuckDuckGo keyless last resort, SearXNGweek→month. - Settings page ("Search providers") localized en/zh through the host
localeservice and styled with the host's own control contract (--dsw-*tokens, host button/input/card geometry), so language and light/dark both follow the host. - Docs: rewritten
README.md/README_ZH.md, newdocs/DESIGN.md(host contracts, policies, gaps).