deepseek-harness/packages/client/ui-command/tests
imccyu 83c2115de8 refactor(client): command decorations replace the hostBacked contribution mode
A popup on a host command is not a second command — it is what that
command's BARE invocation does on this client. CommandContribution loses
hostBacked (contributions are pure client commands again; a host-name
collision fails loud, unchanged for /model), and the contract gains
CommandDecoration + command.decorate(): key = the HOST command name, no
catalog row, no claim participation. Dispatch consults decorations only on
the bare paths (menu pick / bare enter) after the host row resolves; space
and argued enter never see them — the two edges hostBacked had to guard
explicitly hold by construction in the decoration model. A decorated name
with no host row in the session's directory never fires (a decoration
cannot manufacture a command).

ui-permission switches register→decorate with zero behavior change
(options still read the permissions projection; a pick still submits
'/permission <preset>'). Specs rewrite to the decoration semantics: no
catalog row, bare-enter popup vs argued-enter host claim, space host
claim, no-host-row miss, unavailable fall-through, duplicate fail-loud.
2026-07-29 12:01:36 +08:00
..
browser-plugin.spec.ts style: fix lint across client packages 2026-07-27 04:13:00 +08:00
directory.spec.ts feat: slash system / input service / agent scope 2026-07-27 03:28:39 +08:00
popup-view.spec.tsx chore(lint): apply eslint auto-fixes across the .tsx backlog 2026-07-27 21:49:40 +08:00
popup.spec.ts feat: slash system / input service / agent scope 2026-07-27 03:28:39 +08:00
service.spec.ts refactor(client): command decorations replace the hostBacked contribution mode 2026-07-29 12:01:36 +08:00