Master now carries the final #4182 plugin manager and the live client module graph of #4189, so the web management layer is re-ported onto them: - The manager keeps master's `ManagementError` codes, `ChangeResult` stages, `configure()` under `hmr.runExclusive`, `reload()` warnings and `writePluginEnabled` name matching, and adds back `inspect`, request-id installs with `plugin-manager/install-log` and `plugin-manager/install-state`, `cancelInstall`, `listBundles` titles, rows and overrides, `packageResult.kind`, `pnpmCommand` and `inspectTimeoutMs`, and `plugin-manager/changed` after each change and each `profile/reconciled`. A failed or cancelled installation restores the snapshotted manifest and lockfile instead of master's one-shot `pnpm remove` cleanup, so `cleanup` and `remainingDependencies` leave the result. - App boot keeps master's reconciliation diagnostics and emits `profile/reconciled`; `watchUserPatches` goes with the launcher's watcher now that HMR owns profile reloads. - The settings Plugin list tab stays read-only with #4189's page-local sync failures and retry; master's bundle form and row checkboxes are dropped again. The sidebar page words the Host's codes through its dictionary, and a client bundle change follows the live module graph without a page reload. - The web e2e scaffold no longer chooses a reload policy: the base bundle's `hmr` row turns on with the profile context and application readiness, and `profile.hmr: false` disables it through an overlay for the startup-only scenario.
description, kind
| description | kind |
|---|---|
| Package map for the web GUI host half: the HTTP and SPA servers, workspace-directory picking implementations, the open-in-app launch routes, and the plugin inventory projection. | package-group |
host/ — web-GUI host half
English | 中文
Summary
The host/ group provides the web GUI's plain HTTP server, the SPA dist server that serves the built Web shell, the workspace-directory picking seam with its native, browse, and adaptive composition packages, the open-in-app application probe and launch routes, and the read-only plugin inventory projection. All eight packages are product packages; the browser transport lives in client/, and the composed application is apps/cli booting the dsh-base bundle that serves the web app under apps/web/. The picker backends replace one another behind the shared seam.
Table of Contents
Packages
Eight packages play the host roles; each package README owns its contract and configuration.
| Package | Role | ctx key |
|---|---|---|
webserver/ |
Browser HTTP server: named routes, upgrades, index taps, and the fallback seat | ctx.webServer |
frontend-static/ |
SPA dist server on the webserver fallback seat | consumes ctx.webServer |
directory-picker/ |
Workspace-directory picking seam: capability contract and error vocabulary | ctx.directoryPicker |
directory-picker-native/ |
Native-OS-chooser backend for operators at the host display | registers ctx.directoryPicker |
directory-picker-browse/ |
In-app directory-browser backend, including for remote clients | registers ctx.directoryPicker |
directory-picker-auto/ |
Host-adaptive chooser that mounts the matching backend at boot | mounts a backend |
open-in-app/ |
Application probe, icon, and launch routes opening the workspace directory in an installed application | consumes ctx.webServer |
plugin-inventory/ |
Read-only projection of current Loader entries | Remote pluginInventory/list |
Related documentation
Start with the subsystem references for the transport and the workspace records, then the layering decision behind the Web client.
- HTTP server subsystem — the webserver's routes, matching order, and config.
- Workspace subsystem — the workspace records the directory picker feeds.
- Web config-tree boot and transport layering — ownership of the Web transport layers.
Dev Note
Working context for maintainers — click to expand
None.