deepseek-harness/packages/client/web
2026-08-18 01:34:53 +08:00
..
src build(client): enforce client package boundaries 2026-08-18 01:34:53 +08:00
tests feat(web): show plugin loading progress 2026-08-18 01:34:24 +08:00
package.json build(client): enforce client package boundaries 2026-08-18 01:34:53 +08:00
README.i18n.yaml feat(web): show plugin loading progress 2026-08-18 01:34:24 +08:00
README.md feat(web): show plugin loading progress 2026-08-18 01:34:24 +08:00
README.zh.md feat(web): show plugin loading progress 2026-08-18 01:34:24 +08:00
tsconfig.json refactor(client): merge React bindings into UI renderer 2026-08-18 01:34:23 +08:00
tsdown.config.ts build(client): enforce client package boundaries 2026-08-18 01:34:53 +08:00

@deepseek-ai/dsh-client-web

English | 中文

Web boot kernel: new AppWebEntry(el, seams?).run() mounts the client through two stages. The module stage builds @deepseek-ai/dsh-client-modules over the host-provided window.__DSH_BOOT__ graph and prefetches the immediately tier. The plugin stage mounts the vendored Cordis Loader, injects that module system through the Loader's internal interface, creates every graph entry, and waits for every fiber to become ACTIVE. It then hands the marked boot DOM to the dynamic UI renderer's ctx.uiRenderer.mount(el) operation; the renderer hydrates that DOM before switching to the complete UI. The host graph owns the roster and prefetch marks; this package adds only the statically adopted modules bootstrap entry.

The boot page uses plain DOM and local CSS, so client-bundle and plugin-activation failures remain visible. Its fallback fonts and colors match the theme tokens that arrive during loading. Fiber updates retain one spinner node and grow its CSS arc as entries first become active; hydration preserves that node and its animation phase until the application commit. React mounting, slot rendering, application assembly, and browser-title projection live in ui-renderer. The modules package is the only plugin package registered through registerStatic, because the module system cannot load itself.

PLATFORM_MODULES (src/platform.ts) is the single source of truth for shared modules: seed-table keys, tsdown client externals, and the Vite alias set are its projections.

The optional override parameter seams forwards the module system's loadBundle transport override (BootSeams) for environments where external <script> execution cannot reach the page context; ordinary browser callers omit it.

Model Experience

None, as the entry shell boots the browser plugin tree; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known Limitations and Deferred Work

  • The application waits for the full roster — one failed entry keeps the framework-free boot page visible with a per-entry report; partial UI availability is not supported.