@tangle-network/charts 0.21.20 → 0.21.21

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.
@@ -26,14 +26,15 @@
26
26
  --fw-kind-tool: var(--tone-cyan-icon);
27
27
  --fw-neutral-bar: color-mix(in oklab, var(--fw-text) 15%, var(--fw-surface));
28
28
  --fw-hatch: color-mix(in oklab, var(--fw-text) 22%, transparent);
29
- /* Root agent neutral, then five of Brand's categorical hues, each 3:1 or more against the card in both modes. No warm hue
30
- among the agents (amber is kept for the slowest and red for failure), and neighbours alternate cool and warm-leaning. */
29
+ /* Bar identity, not status: the root neutral, then an identity ring at one lightness and a moderate chroma, so no lane
30
+ outshouts another (critique P0 #3, round 29: Brand's icon-strength teal, pink and violet "compete", lime and pink read
31
+ olive and maroon). Blue, violet, pink, cyan, slate: no green, teal, lime, amber or red, so no lane is mistaken for a status. */
31
32
  --fw-h0: var(--chart-muted);
32
- --fw-h1: var(--tone-blue-icon);
33
- --fw-h2: var(--tone-teal-icon);
34
- --fw-h3: var(--tone-pink-icon);
35
- --fw-h4: var(--tone-violet-icon);
36
- --fw-h5: var(--tone-lime-icon);
33
+ --fw-h1: light-dark(oklch(0.55 0.11 255), oklch(0.70 0.11 255));
34
+ --fw-h2: light-dark(oklch(0.55 0.11 300), oklch(0.70 0.11 300));
35
+ --fw-h3: light-dark(oklch(0.55 0.11 335), oklch(0.70 0.11 335));
36
+ --fw-h4: light-dark(oklch(0.55 0.11 215), oklch(0.70 0.11 215));
37
+ --fw-h5: light-dark(oklch(0.55 0.03 255), oklch(0.70 0.03 255));
37
38
  --fw-ease: cubic-bezier(.2, .8, .2, 1);
38
39
  /* Bar height = row height - 16, so a centered bar sits 8 px from the row edge: 20 px in a 36 px step row. */
39
40
  --fw-bar-h: 20px;
@@ -205,6 +206,8 @@
205
206
  .fw-root .fw-view-agents .fw-detail-icon { flex: none; width: 16px; height: 16px; align-items: center; justify-content: center; overflow: hidden; }
206
207
  .fw-root .fw-view-agents .fw-detail { font-size: 12px; line-height: 16px; }
207
208
  .fw-root .fw-agent-dot { flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--line, var(--fw-muted)); }
209
+ /* The dot is outcome only (critique P0 #3): an agent with no recorded outcome gets a hollow ring, never its lane hue. */
210
+ .fw-root .fw-row:not([data-outcome]) .fw-agent-dot:not([data-outcome]) { background: transparent; box-shadow: inset 0 0 0 1.5px var(--fw-muted); }
208
211
 
209
212
  /* Lanes and marks */
210
213
  .fw-root .fw-lane { position: relative; overflow: hidden; min-width: 0; }
@@ -272,13 +275,13 @@
272
275
  .fw-root .fw-kinds { margin: 0; padding: 0; justify-content: flex-start; color: var(--fw-muted); }
273
276
  .fw-root .fw-kinds .fw-swatch-model { width: 12px; height: 8px; border-radius: 2px; background: var(--fw-kind-model); }
274
277
  /* With per-agent hues the key shows kind as shade, as the bars do: darker for a model call, lighter for a tool call. */
275
- .fw-root.fw-fill-agent .fw-kinds .fw-swatch-model { background: light-dark(oklch(0.50 0 0), oklch(0.72 0 0)); }
276
- .fw-root.fw-fill-agent .fw-kinds .fw-swatch-tool { background: light-dark(oklch(0.80 0 0), oklch(0.46 0 0)); }
278
+ .fw-root.fw-fill-agent .fw-kinds .fw-swatch-model { background: light-dark(oklch(0.50 0 0), oklch(0.82 0 0)); }
279
+ .fw-root.fw-fill-agent .fw-kinds .fw-swatch-tool { background: light-dark(oklch(0.80 0 0), oklch(0.64 0 0)); }
277
280
  .fw-root .fw-kinds .fw-swatch-tool { width: 12px; height: 8px; border-radius: 2px; background: var(--fw-kind-tool); }
278
281
  .fw-root .fw-kinds .fw-swatch-wait { width: 12px; height: 8px; border-radius: 2px; background: color-mix(in oklab, var(--fw-text) 12%, transparent); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--fw-text) 18%, transparent); }
279
282
  .fw-root .fw-kinds .fw-swatch-handoff { width: 10px; height: 8px; border-left: 1.5px solid var(--fw-muted); border-bottom: 1.5px solid var(--fw-muted); border-bottom-left-radius: 3px; }
280
283
  .fw-root .fw-description { margin: 0; color: var(--fw-muted); font-size: 14px; line-height: 20px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
281
- .fw-root .fw-legend .fw-swatch { width: 12px; height: 8px; border-radius: 2px; background: var(--fill); box-shadow: inset 0 0 0 1px var(--line); }
284
+ .fw-root .fw-legend .fw-swatch { width: 8px; height: 8px; border-radius: 50%; background: var(--line); }
282
285
  .fw-root .fw-legend b { color: var(--fw-text); font-weight: 600; font-variant-numeric: tabular-nums; }
283
286
  .fw-root .fw-legend .fw-swatch-step { display: inline-grid; place-items: center; width: 12px; height: 12px; border-radius: 3px; background: var(--fw-well); color: var(--fw-failed); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--fw-failed) 50%, transparent); }
284
287
  .fw-root .fw-legend .fw-swatch-step svg { width: 8px; height: 8px; }
@@ -293,17 +296,18 @@
293
296
  .fw-root:is(.fw-fill-muted, .fw-fill-outcome) .fw-view-agents .fw-seg-tool { background: var(--fw-kind-tool); box-shadow: none; }
294
297
  /* Per-agent hues: a step's kind is a fixed lightness on its agent's hue, the same for every hue, so kind reads by lightness
295
298
  against the surface and never contradicts the key (critique P0 #4: dark tool steps were lighter than model steps, and the
296
- step varied with hue). Model is the stronger step on either surface; chroma is capped at 0.10, never raised, so a neutral (the root's grey) stays
299
+ step varied with hue). On dark both steps are light pastels, model 0.82 and tool 0.64: round 27's pastel dark fills scored
300
+ 39/252, and the critique's darker 0.72/0.46 read muddy to round 29's judges. Model is the stronger step on either surface; chroma is capped at 0.10, never raised, so a neutral (the root's grey) stays
297
301
  neutral instead of taking a red cast from its undefined hue. */
298
- .fw-root.fw-fill-agent .fw-view-agents .fw-seg-model { background: light-dark(oklch(from var(--tone) 0.50 min(c, 0.10) h), oklch(from var(--tone) 0.72 min(c, 0.10) h)); box-shadow: none; }
299
- .fw-root.fw-fill-agent .fw-view-agents :is(.fw-seg-tool, .fw-seg-failed) { background: light-dark(oklch(from var(--tone) 0.80 min(c, 0.10) h), oklch(from var(--tone) 0.46 min(c, 0.10) h)); box-shadow: none; }
302
+ .fw-root.fw-fill-agent .fw-view-agents .fw-seg-model { background: light-dark(oklch(from var(--tone) 0.50 min(c, 0.10) h), oklch(from var(--tone) 0.82 min(c, 0.10) h)); box-shadow: none; }
303
+ .fw-root.fw-fill-agent .fw-view-agents :is(.fw-seg-tool, .fw-seg-failed) { background: light-dark(oklch(from var(--tone) 0.80 min(c, 0.10) h), oklch(from var(--tone) 0.64 min(c, 0.10) h)); box-shadow: none; }
300
304
  /* A failed turn is still the agent's work: it keeps the agent's hue, and the red cross on the ending turn says it failed. */
301
305
  .fw-root.fw-fill-agent .fw-view-agents .fw-seg-failed { box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--fw-failed) 55%, transparent); }
302
306
  .fw-root .fw-view-agents .fw-seg { container-type: inline-size; justify-content: flex-start; font-size: 12px; line-height: 16px; white-space: nowrap; color: var(--fw-seg-ink); }
303
- /* Label ink holds 4.5:1 on its fill: the model step is dark on light and bright on dark, the tool step the reverse, so ink flips
304
- with it: page-light on L 0.50 and L 0.46, page-dark on L 0.72 and L 0.80. */
307
+ /* Label ink holds 4.5:1 on its fill: page-light on the dark light-theme model step (L 0.50), page-dark on every other step
308
+ (light tool 0.80, dark pastels 0.82 and 0.64). */
305
309
  .fw-root .fw-view-agents .fw-seg-model { --fw-seg-ink: light-dark(var(--fw-surface), hsl(var(--hsl-background))); }
306
- .fw-root .fw-view-agents :is(.fw-seg-tool, .fw-seg-failed) { --fw-seg-ink: var(--fw-text); }
310
+ .fw-root .fw-view-agents :is(.fw-seg-tool, .fw-seg-failed) { --fw-seg-ink: light-dark(var(--fw-text), hsl(var(--hsl-background))); }
307
311
  .fw-root .fw-view-agents .fw-seg > * { pointer-events: none; }
308
312
  /* One line, 6 px in from each end; a part that does not fit whole wraps to the hidden second line, so trailing parts drop first. */
309
313
  .fw-root .fw-seg-label { flex: 1; min-width: 0; height: 16px; margin: 0 6px; display: flex; flex-wrap: wrap; align-items: center; column-gap: 4px; overflow: hidden; }
@@ -3411,7 +3411,7 @@ function Segment({ mark, events, agentView, ending }) {
3411
3411
  className: "fw-seg-name",
3412
3412
  children: name
3413
3413
  }),
3414
- mark.count > 1 && /* @__PURE__ */ jsxs("span", {
3414
+ mark.count > 1 && name && /* @__PURE__ */ jsxs("span", {
3415
3415
  className: "fw-seg-chip",
3416
3416
  children: ["×", mark.count]
3417
3417
  }),
@@ -3586,11 +3586,6 @@ const FlowRow = memo(function FlowRow(props) {
3586
3586
  "aria-label": `${row.descendants} hidden steps`,
3587
3587
  children: ["+", row.descendants]
3588
3588
  }),
3589
- family && !props.expanded && /* @__PURE__ */ jsxs("span", {
3590
- className: "fw-count",
3591
- "aria-label": `${row.descendants} agents folded`,
3592
- children: ["+", row.descendants]
3593
- }),
3594
3589
  !row.ok && !agentView && /* @__PURE__ */ jsx("span", {
3595
3590
  className: "fw-alert",
3596
3591
  children: /* @__PURE__ */ jsx(AlertGlyph, { label: "failed" })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/charts",
3
- "version": "0.21.20",
3
+ "version": "0.21.21",
4
4
  "description": "Static SVG and HTML figures for benchmarks and operational timing. Draws from producer data and refuses what it cannot draw honestly.",
5
5
  "type": "module",
6
6
  "license": "MIT",