deepseek-harness/docs
imccyu 1b0ea07bce refactor(gui): slot system standard — single register, four props shares, framework store seat
The definitive slot model for the web client, replacing the first-generation
define/register two-step, ScopedSlots whitelist faces, and binding handles:

- 'root' is the only a-priori slot (SlotsService built-in); the shell renders
  exactly ctx.slots.renderSlot('root', {}).
- register is the single API: children = slot declaration + render
  authorization + runtime spec in one options object; misconfiguration fails
  loud at load (duplicate declaration, undeclared contribution, one store
  handle under two scopes).
- Component props arrive in four auto-derived shares: PropsRuntime<K>
  (owner params + session/global standard kits via declare-merge),
  PropsRenderSlots<S>, PropsStore<H>, and the inject business face.
  sessionId is framework-supplied; hooks are framework-made only.
- Framework store seat: defineStore factories declare schema/actions/persist;
  read = useStore, write = baked actions only; store scope derives from the
  mounting entry; per-session persist keys and clearPersisted lifecycle.
- inject factories read the apply closure's own ctx (binding handles retired;
  root-ctx back door closed); SessionProvider is self-wired render-prop.
- Rendering sits behind the SlotRenderer install seam; runtime stays
  React-free; ownership ledger keyed to the single entry axis closes the
  stale-authority window (StaleAuthorizationError probes).

Docs: the slot type-chain note is refreshed in place as the slot system
standard RFC (bilingual pair re-recorded); the web client architecture RFC
defers its slot sections there; packages/client/AGENTS.md gains the slot and
props discipline; gui-testing/web-styling notes drop missions/ references.

Tests: suites rewritten to the standard (props fed directly, real store
engines via createXXXStore().create(), no render machinery); load-time
negative samples for declaration/authorization/store conflicts; verified by
real-host playwright run (three columns, empty state, collapse, keyed session
remount, cross-slot selection sharing).

docs(ui-sidebar): point contract reference at the committed slot standard RFC

missions/ is workspace-local and never committed; the README must not cite it.
2026-07-23 03:25:11 +08:00
..
cookbook refactor(plan): remove generic mode abstraction 2026-07-22 16:57:23 +08:00
cordis-catalog Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
core-data-structures Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
i18n chore: keep local git hooks fast 2026-07-22 16:37:20 +08:00
postmortem Remove the stdio agent 2026-07-20 19:26:04 +08:00
user Remove the Echo agent 2026-07-20 20:16:41 +08:00
agent-lifecycle.md feat(session): add cross-session references 2026-07-21 16:46:48 +08:00
AGENTS.md docs: restore generated Cordis core API 2026-07-20 16:33:44 +08:00
architecture.i18n.yaml Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
architecture.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
architecture.zh.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
capability-seams.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
config-catalog.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
cordis-primer.md fix(snapshot): register filesystem tools through explicit overlay 2026-07-14 21:25:58 +08:00
defensive-patterns.md feat(agent-loop): give each send its own turn 2026-07-17 17:14:52 +08:00
development.i18n.yaml refactor: name the all-gates mode check-all 2026-07-22 18:27:31 +08:00
development.md refactor: name the all-gates mode check-all 2026-07-22 18:27:31 +08:00
development.zh.md refactor: name the all-gates mode check-all 2026-07-22 18:27:31 +08:00
event-producer-consumer.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:00:05 +08:00
glossary.md Merge branch 'codex/goal-commands' into codex/ralph-tool 2026-07-20 21:05:05 +08:00
graph-atlas.md refactor(examples): fold plan mode into ACP demo 2026-07-21 00:40:15 +08:00
module-graph.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 23:17:02 +08:00
persistence-catalog.md Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master 2026-07-22 21:06:50 +08:00
testing.md Condense snapshot testing policy 2026-07-20 23:24:43 +08:00
tool-catalog.md Merge refreshed rfc/pty into feature/persistent-pty-sessions 2026-07-22 21:12:16 +08:00
tool-execution-pipeline.md Merge current master into debug-pangwenjie 2026-07-18 13:39:12 +08:00
web-styling.md refactor(gui): slot system standard — single register, four props shares, framework store seat 2026-07-23 03:25:11 +08:00