Skip to content

fix: keep rc.6 UI plugins compatible with keyed settings slots (rc.8) - #134

Closed
yaojin3616 wants to merge 1 commit into
mainfrom
agent/debugger/01a0235f
Closed

fix: keep rc.6 UI plugins compatible with keyed settings slots (rc.8)#134
yaojin3616 wants to merge 1 commit into
mainfrom
agent/debugger/01a0235f

Conversation

@yaojin3616

Copy link
Copy Markdown
Contributor

Summary

  • shim the minified SlotCore served to the desktop window so an rc.6-style id is accepted as the key for the settings.plugin.item keyed slot, while keeping explicit keys authoritative
  • install the same narrow patch at postinstall time against dsh-web-frontend/dist/assets/index-*.js, with idempotence and a fail-loud vendor-drift check
  • add regression coverage for the postinstall wiring and the served frontend asset

Root cause

Harness rc.6 exposed settings.plugin.item as a list slot, so existing third-party bundles register an id. rc.7 made that slot keyed and now requires options.key, causing those bundles to fail during UI startup before the desktop can render:

failed to apply loader entry 98f85676 (@linxin666/dsh-client-ui-web-ui-settings): keyed slot "settings.plugin.item" requires options.key

The browser shell bundles its own SlotCore inside @deepseek-ai/dsh-web-frontend/dist, so the fix has to be applied to the served minified asset, not just the module the unit tests import.

Why this differs from PR #75

PR #75 targets 0.1.0-rc.7 and patches @deepseek-ai/dsh-client-ui-slots plus @deepseek-ai/dsh-client-ui-settings-plugins. Current main is on 0.1.0-rc.8, where @deepseek-ai/dsh-client-ui-slots no longer exists as a separate package and the slot shim has to live in the served minified bundle. This PR re-aims the same compatibility shim at the rc.8 layout and is intentionally scoped to the slot registration; if the configurable-plugins tab also needs a downstream patch, that should be a follow-up once we can repro the missing-card symptom.

Verification

  • node scripts/install-plugin-compatibility.mjs (twice — confirms idempotence)
  • node --check on the served frontend asset
  • npm test — 32 files, 197 tests passed
  • npm run typecheck
  • npm run build

Limitations

A packaged Electron visual launch was not performed because the Electron binary was intentionally not downloaded in this environment. The frontend rewrite deliberately fails installation if a future Harness asset no longer matches the pinned rc.8 shape, so an upgrade cannot silently omit the compatibility shim.

Fixes #74.

rc.7+ made `settings.plugin.item` a keyed slot that requires `options.key`,
but legacy rc.6 plugin bundles still register an `id`. Harness rejects the
registration with `keyed slot "settings.plugin.item" requires options.key`,
which the desktop reports as "Failed to load plugins" and prevents the
affected plugin from loading entirely.

Shim the minified SlotCore in `dsh-web-frontend/dist/assets/index-*.js` at
postinstall time: when the slot is `settings.plugin.item` and the
registrant has `id` but no `key`, copy `id` into `key`. Other keyed slots
stay strict, and the install is idempotent with a fail-loud vendor-drift
check so a future frontend asset shape change cannot silently drop the
shim.

Fixes #74.
@yaojin3616 yaojin3616 closed this Aug 21, 2026
@yaojin3616
yaojin3616 deleted the agent/debugger/01a0235f branch August 21, 2026 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

插件不兼容

1 participant