New client plugin package. The GoalBar component migrates verbatim from the
original PR (phase labels, inline edit form, resume-when-paused, pending
lockout, inline errors); its data path is rebuilt for the projection model:
- GoalDock adapter reads useProjection('goal') from the standard kit — no
controller, no store, no refresh chain, no event listener (the original
PR's Session goal fields, write-revision fence, and coalesced refetch all
dissolve into the value store's seq rule).
- The inject face carries only the three mutation verbs; each reads the CAS
ref from the session's current projected value at call time and maps the
settled RPC result inline (callbacks from inject, live state from
useProjection).
- Seats at conversation.input.dock order 1 (the slot contract names GoalBar
as a resident of this strip), below TodoPanel/QueueDock, tucked against
the composer; hero phase renders nothing for free.
- IconSparkle16 is package-local (sole consumer) — ui-primitives keeps only
the shared action icons.
- goalbar.spec migrates with GoalSnapshot props (activation is process-local
and absent from the projection; the strip renders durable phase only).
10 lines
362 B
TypeScript
10 lines
362 B
TypeScript
/**
|
|
* Goal surface plugin, node half. Pure UI plugin: the empty apply exists so
|
|
* the plugin appears in the host cordis.yml / Loader; the browser half
|
|
* ships via exports["./client"], discovered through the package.json
|
|
* dshClient declaration.
|
|
*/
|
|
|
|
/** Host plugin body — no host-side behavior for this surface plugin. */
|
|
export function apply(): void {}
|