Skip to content

Releases: ForeverYoungPp/dsh-web-search

0.2.0-rc.1 — @ian_p/dsh-web-search

Choose a tag to compare

@ForeverYoungPp ForeverYoungPp released this 30 Sep 21:03
5888d2a

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.3 does not satisfy 0.2.0-rc.2, so the bundle landed in skippedBundles. Peers are now ^0.2.0-rc.2 (cordis ~4.0.4), and the dead @deepseek-ai/dsh-tools declaration 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: () => TypertSchema in place of a schema field, enforced by both the host and the client registry validators. The old shape threw at ctx.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 (id web-search-providers, order 12) instead of the built-in settings.section, with a one-line summary for 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.1

Evidence

  • pnpm test → 140 pass · pnpm run test:rpc → 18 pass + bundle smoke · pnpm run typecheck → clean. All three re-run on main after the merge.
  • The gate and the codec contract are asserted against the installed 0.2.0-rc.2 packages, not against reimplementations, and with non-vacuous controls: the pre-change manifest is rejected by the real gate, and a schema-shaped codec is rejected by both registry faces. A five-mutation matrix (slot name, page id, order, codec shape, re-added dsh-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) and R3-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

Choose a tag to compare

@ForeverYoungPp ForeverYoungPp released this 23 Sep 19:47
d05efec

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, SearXNG week → month.
  • Settings page ("Search providers") localized en/zh through the host locale service 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, new docs/DESIGN.md (host contracts, policies, gaps).