@cueplusplus/ui 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/dist/elements/scroll-anchor.js +4 -2
- package/dist/primitives/chip.d.ts +1 -1
- package/manifest/components/activity-graph.json +2 -1
- package/manifest/components/agent-card.json +2 -1
- package/manifest/components/agent-pile.json +2 -1
- package/manifest/components/background-inbox.json +2 -1
- package/manifest/components/breadcrumb.json +2 -1
- package/manifest/components/chart-tooltip-content.json +2 -1
- package/manifest/components/checkpoint-history.json +2 -1
- package/manifest/components/code-diff.json +2 -1
- package/manifest/components/combobox.json +2 -1
- package/manifest/components/comparison-card.json +2 -1
- package/manifest/components/composer-attachment-chip.json +2 -1
- package/manifest/components/composer-context.json +2 -1
- package/manifest/components/composer-model-item.json +2 -1
- package/manifest/components/composer-person-item.json +2 -1
- package/manifest/components/computer-use.json +2 -1
- package/manifest/components/confidence-marker.json +2 -1
- package/manifest/components/context-breakdown.json +2 -1
- package/manifest/components/context-usage.json +2 -1
- package/manifest/components/conversation-search.json +2 -1
- package/manifest/components/cost-meter.json +2 -1
- package/manifest/components/day-separator.json +2 -1
- package/manifest/components/document-reference.json +2 -1
- package/manifest/components/elements-command-palette.json +2 -1
- package/manifest/components/elements-timeline.json +2 -1
- package/manifest/components/elicitation-form.json +2 -1
- package/manifest/components/file-tree.json +2 -1
- package/manifest/components/flow-graph.json +4 -2
- package/manifest/components/frac.json +1 -1
- package/manifest/components/group-bar.json +2 -1
- package/manifest/components/inline-citation.json +2 -1
- package/manifest/components/job-progress.json +2 -1
- package/manifest/components/log-viewer.json +2 -1
- package/manifest/components/map-answer.json +2 -1
- package/manifest/components/math-block.json +1 -1
- package/manifest/components/mcp-server-panel.json +2 -1
- package/manifest/components/memory-chips.json +2 -1
- package/manifest/components/message-actions.json +2 -1
- package/manifest/components/message-attachments.json +2 -1
- package/manifest/components/message-queue.json +2 -1
- package/manifest/components/message-timing.json +2 -1
- package/manifest/components/meter.json +1 -1
- package/manifest/components/model-picker.json +2 -1
- package/manifest/components/multi-select.json +2 -1
- package/manifest/components/onboarding.json +2 -1
- package/manifest/components/prompt-library.json +2 -1
- package/manifest/components/queue-dock.json +2 -1
- package/manifest/components/quote-reply.json +2 -1
- package/manifest/components/reasoning-effort.json +2 -1
- package/manifest/components/reasoning-panel.json +2 -1
- package/manifest/components/regenerate-menu.json +2 -1
- package/manifest/components/research-report.json +2 -1
- package/manifest/components/retrieval-chunks.json +2 -1
- package/manifest/components/reviewable-diff.json +2 -1
- package/manifest/components/schedule-card.json +2 -1
- package/manifest/components/score-breakdown.json +2 -1
- package/manifest/components/scroll-anchor.json +2 -1
- package/manifest/components/segmented-control.json +2 -1
- package/manifest/components/settings-panel.json +2 -1
- package/manifest/components/shared-conversation.json +2 -1
- package/manifest/components/sources.json +2 -1
- package/manifest/components/speaker-identity.json +2 -1
- package/manifest/components/spec-sheet.json +2 -1
- package/manifest/components/spectrum-visualizer.json +2 -1
- package/manifest/components/stepper.json +2 -1
- package/manifest/components/streaming-text.json +2 -1
- package/manifest/components/sub.json +1 -1
- package/manifest/components/subagent-list.json +4 -2
- package/manifest/components/sup.json +1 -1
- package/manifest/components/swap-label.json +2 -1
- package/manifest/components/thread-list.json +2 -1
- package/manifest/components/thread-search.json +2 -1
- package/manifest/components/todo-list.json +2 -1
- package/manifest/components/tool-group.json +2 -1
- package/manifest/components/trace-waterfall.json +2 -1
- package/manifest/components/tree.json +2 -1
- package/manifest/components/universe-grid.json +2 -1
- package/manifest/components/usage-chart.json +2 -1
- package/manifest/components/voice-conversation.json +2 -1
- package/manifest/components/web-search.json +2 -1
- package/manifest/fixtures.json +665 -0
- package/manifest/manifest.json +81 -81
- package/manifest/tokens.json +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
# @cueplusplus/ui
|
|
2
2
|
|
|
3
|
+
## 0.11.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8ddd141: The manifest's fixture catalogue grows from 18 entries to 106, and 76 props across 74 components
|
|
8
|
+
now name one in `control.fixture`. A code generator, playground or agent reading
|
|
9
|
+
`manifest/components/<name>.json` now finds a named sample for props such as `TodoList.items`,
|
|
10
|
+
`CodeDiff.lines`, `Combobox.items` and `Breadcrumb.items`, where before it found nothing to fill
|
|
11
|
+
them with.
|
|
12
|
+
|
|
13
|
+
**Nothing to do.** No prop, type or export changed, and apart from the one fix at the end of this
|
|
14
|
+
note this release touches only the files under `manifest/`. `@cueplusplus/tokens` and `@cueplusplus/brand-tokens` move to 0.11.1 with it,
|
|
15
|
+
as one fixed family, and neither changes.
|
|
16
|
+
|
|
17
|
+
`manifest/fixtures.json` gains 88 entries:
|
|
18
|
+
|
|
19
|
+
- **Six short text fixtures** (kind `node`): `text.heading`, `text.count`, `text.total`,
|
|
20
|
+
`text.detail`, `text.author` and `text.time` — a heading, a figure, the figure it is out of, a
|
|
21
|
+
qualifier under a figure, an author's name and a clock time. Like `children.label` in 0.11.0,
|
|
22
|
+
they are for a playground or propSet to pick by hand, and no prop's `control.fixture` names them.
|
|
23
|
+
- **82 data fixtures** (71 `array`, 11 `opaque`), each a sample taken from its component's own
|
|
24
|
+
documentation specimen: todo items, diff hunks, trace spans, log lines, chart points, sources,
|
|
25
|
+
threads, models and the like. 75 of them list the printed type they fit in `accepts` —
|
|
26
|
+
`agent.todos` accepts `readonly TodoItem[]`, `layout.show-crumbs` accepts
|
|
27
|
+
`readonly BreadcrumbItem[]` — and every one of those 75 is now the `control.fixture` of at least
|
|
28
|
+
one prop. The other seven (`agent.subagent-progress`, `agents.window-start`,
|
|
29
|
+
`agents.window-end`, `chrome.expanded-front`, `composer.model-names`,
|
|
30
|
+
`knowledge.rig-dashboard`, `knowledge.trait-labels`) claim no type, so they are only ever picked
|
|
31
|
+
by hand.
|
|
32
|
+
|
|
33
|
+
An entry carries an id, a kind, a label and `accepts`, never the value itself. The values live with
|
|
34
|
+
the tools that render or export them: the docs playground, and the studio, whose bridge
|
|
35
|
+
`@cueplusplus/studio-mcp` exports each one as code from 0.1.1.
|
|
36
|
+
|
|
37
|
+
In `manifest/components/`, every change adds a `control.fixture` to a prop that had none, and no
|
|
38
|
+
existing one moved. `Combobox.items` and `MultiSelect.items` share `forms.fixture-types`, and
|
|
39
|
+
`FlowGraph` (`nodes`, `edges`) and `SubagentList` (`agents`, `summaryAgent`) gain two each.
|
|
40
|
+
`manifest.json` changes only in the SHA-256 of each record that changed.
|
|
41
|
+
|
|
42
|
+
Two records also correct the specimen code they embed:
|
|
43
|
+
|
|
44
|
+
- `meter.json` passed `paceTick={50}`, but `paceTick` is how far through the window you are, from
|
|
45
|
+
0 to 1, so the example drew no tick. It now passes `0.6`, labelled "60% of period elapsed".
|
|
46
|
+
- `math-block.json`, and `frac.json`, `sub.json` and `sup.json`, which embed the same specimen,
|
|
47
|
+
now write `visibleSteps={3}` instead of `visibleSteps={MATH.length}`. The count is the same, but
|
|
48
|
+
a tool that reads only literals can now read it.
|
|
49
|
+
|
|
50
|
+
One fix: `ScrollAnchor` (`@cueplusplus/ui/elements`) now stops its append timer once every message
|
|
51
|
+
has landed, where before the timer went on firing every 1.3 seconds for as long as the element was
|
|
52
|
+
mounted, though nothing on screen changed.
|
|
53
|
+
|
|
54
|
+
- @cueplusplus/tokens@0.11.1
|
|
55
|
+
|
|
3
56
|
## 0.11.0
|
|
4
57
|
|
|
5
58
|
### Minor Changes
|
|
@@ -27,8 +27,9 @@ function ScrollAnchor({ messages, paused = false, onSettled, className, ...props
|
|
|
27
27
|
const [count, setCount] = useState(INITIAL_COUNT);
|
|
28
28
|
const [pinned, setPinned] = useState(true);
|
|
29
29
|
const [seenCount, setSeenCount] = useState(INITIAL_COUNT);
|
|
30
|
+
const settled = count >= messages.length;
|
|
30
31
|
useEffect(() => {
|
|
31
|
-
if (paused) return;
|
|
32
|
+
if (paused || settled) return;
|
|
32
33
|
if (reduced) {
|
|
33
34
|
setCount(messages.length);
|
|
34
35
|
return;
|
|
@@ -42,8 +43,9 @@ function ScrollAnchor({ messages, paused = false, onSettled, className, ...props
|
|
|
42
43
|
return () => clearInterval(id);
|
|
43
44
|
}, [
|
|
44
45
|
messages.length,
|
|
46
|
+
reduced,
|
|
45
47
|
paused,
|
|
46
|
-
|
|
48
|
+
settled
|
|
47
49
|
]);
|
|
48
50
|
useEffect(() => {
|
|
49
51
|
if (count >= messages.length && pinned) onSettled?.();
|
|
@@ -30,7 +30,7 @@ import * as React from "react";
|
|
|
30
30
|
* <span className={chipVariants({ variant: "tag" })}>mcp</span>
|
|
31
31
|
*/
|
|
32
32
|
declare const chipVariants: (props?: ({
|
|
33
|
-
tone?: "
|
|
33
|
+
tone?: "info" | "warn" | "danger" | "accent" | "ok" | "busy" | "neutral" | null | undefined;
|
|
34
34
|
variant?: "outline" | "tinted" | "tag" | null | undefined;
|
|
35
35
|
interactive?: boolean | null | undefined;
|
|
36
36
|
} & ClassProp) | undefined) => string;
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"defaultValue": null,
|
|
17
17
|
"description": "Date and count pairs from the heat-graph package. Levels are classified for you;\ngaps are filled as empty cells.",
|
|
18
18
|
"control": {
|
|
19
|
-
"kind": "array"
|
|
19
|
+
"kind": "array",
|
|
20
|
+
"fixture": "agents.run-days"
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
{
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"defaultValue": null,
|
|
17
17
|
"description": "Detached runs. The header counts what is ready rather than what is in flight,\nbecause ready is the thing that needs you.",
|
|
18
18
|
"control": {
|
|
19
|
-
"kind": "array"
|
|
19
|
+
"kind": "array",
|
|
20
|
+
"fixture": "agents.inbox"
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
{
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"defaultValue": null,
|
|
15
15
|
"description": "What is occupying the window, in the order it stacks in the bar. Headroom\nis derived from the limit, never passed.",
|
|
16
16
|
"control": {
|
|
17
|
-
"kind": "array"
|
|
17
|
+
"kind": "array",
|
|
18
|
+
"fixture": "agents.window"
|
|
18
19
|
}
|
|
19
20
|
},
|
|
20
21
|
{
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"defaultValue": null,
|
|
27
27
|
"description": "Matches in document order. Each carries its own surrounding text so no lookup is\nneeded to render the preview.",
|
|
28
28
|
"control": {
|
|
29
|
-
"kind": "array"
|
|
29
|
+
"kind": "array",
|
|
30
|
+
"fixture": "composer.hits"
|
|
30
31
|
}
|
|
31
32
|
},
|
|
32
33
|
{
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"defaultValue": null,
|
|
15
15
|
"description": "Turns in order. A separator is inserted wherever day changes from the previous\nmessage, so grouping needs no pre-processing.",
|
|
16
16
|
"control": {
|
|
17
|
-
"kind": "array"
|
|
17
|
+
"kind": "array",
|
|
18
|
+
"fixture": "thread.days"
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
],
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"defaultValue": null,
|
|
15
15
|
"description": "Every node with its grid position. Layout is explicit; the element runs no solver.",
|
|
16
16
|
"control": {
|
|
17
|
-
"kind": "array"
|
|
17
|
+
"kind": "array",
|
|
18
|
+
"fixture": "agents.flow-nodes"
|
|
18
19
|
}
|
|
19
20
|
},
|
|
20
21
|
{
|
|
@@ -24,7 +25,8 @@
|
|
|
24
25
|
"defaultValue": null,
|
|
25
26
|
"description": "Connections by node id. An edge dims until both of its ends are visible.",
|
|
26
27
|
"control": {
|
|
27
|
-
"kind": "array"
|
|
28
|
+
"kind": "array",
|
|
29
|
+
"fixture": "agents.flow-edges"
|
|
28
30
|
}
|
|
29
31
|
},
|
|
30
32
|
{
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"Sub",
|
|
59
59
|
"Sup"
|
|
60
60
|
],
|
|
61
|
-
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={
|
|
61
|
+
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={3} />\n </Specimen>\n <Specimen label=\"first step only\" wide>\n <MathBlock steps={MATH} visibleSteps={1} />\n </Specimen>\n</Specimens>",
|
|
62
62
|
"note": "Maths with the working shown, a step at a time. The expressions are nodes rather than a string, so there is no parser and no KaTeX in the bundle — `Frac` stacks a numerator over a rule, `Sup` and `Sub` set an index upright inside the serif italic, and anything else is text.",
|
|
63
63
|
"interaction": "none. Each step's note says what justified it, which is what turns three lines of algebra into an explanation."
|
|
64
64
|
}
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"Sub",
|
|
75
75
|
"Sup"
|
|
76
76
|
],
|
|
77
|
-
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={
|
|
77
|
+
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={3} />\n </Specimen>\n <Specimen label=\"first step only\" wide>\n <MathBlock steps={MATH} visibleSteps={1} />\n </Specimen>\n</Specimens>",
|
|
78
78
|
"note": "Maths with the working shown, a step at a time. The expressions are nodes rather than a string, so there is no parser and no KaTeX in the bundle — `Frac` stacks a numerator over a rule, `Sup` and `Sub` set an index upright inside the serif italic, and anything else is text.",
|
|
79
79
|
"interaction": "none. Each step's note says what justified it, which is what turns three lines of algebra into an explanation."
|
|
80
80
|
}
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"components": [
|
|
143
143
|
"Meter"
|
|
144
144
|
],
|
|
145
|
-
"code": "<Panel className=\"w-full max-w-[36rem]\">\n {CHANNELS.map((channel) => (\n <Row key={channel.name} className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">{channel.name}</span>\n <Meter percent={channel.level} tone={channel.tone} className=\"flex-1\" />\n <span className=\"w-[3rem] shrink-0 text-right font-mono tabular-nums\">\n {channel.level}%\n </span>\n </Row>\n ))}\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Pace tick</span>\n <Meter percent={64} paceTick={
|
|
145
|
+
"code": "<Panel className=\"w-full max-w-[36rem]\">\n {CHANNELS.map((channel) => (\n <Row key={channel.name} className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">{channel.name}</span>\n <Meter percent={channel.level} tone={channel.tone} className=\"flex-1\" />\n <span className=\"w-[3rem] shrink-0 text-right font-mono tabular-nums\">\n {channel.level}%\n </span>\n </Row>\n ))}\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Pace tick</span>\n <Meter percent={64} paceTick={0.6} className=\"flex-1\" label=\"64% used, 60% of period elapsed\" />\n </Row>\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Estimated</span>\n <Meter percent={40} provenance=\"estimated\" className=\"flex-1\" />\n </Row>\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Unbounded</span>\n <Meter percent={0} provenance=\"unbounded\" className=\"flex-1\" />\n </Row>\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">No data</span>\n <Meter percent={0} empty className=\"flex-1\" />\n </Row>\n</Panel>",
|
|
146
146
|
"note": "Never invents a number: an unbounded meter draws no percentage, an empty one draws stripes rather than a zero, and an estimated ceiling is hatched so it cannot pass for a measurement.",
|
|
147
147
|
"interaction": "the over-pace pulse stills under prefers-reduced-motion and stays readable as a data attribute."
|
|
148
148
|
}
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"defaultValue": null,
|
|
17
17
|
"description": "The turns waiting to send, in the order they will drain. Ordering is the\ncaller's: Cursor lets a person drag one up the list, and a component that\nsorted the array it was given could not be dragged.",
|
|
18
18
|
"control": {
|
|
19
|
-
"kind": "array"
|
|
19
|
+
"kind": "array",
|
|
20
|
+
"fixture": "agents.follow-ups"
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
{
|