@aceshooting/lyra-ui 9.0.0 → 9.1.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 +369 -0
- package/README.md +9 -2
- package/custom-elements.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +2 -2
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +1 -0
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
- package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +2 -2
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/bar-chart.class.js +1 -1
- package/dist/components/charts/chart/bubble-chart.class.js +1 -1
- package/dist/components/charts/chart/chart.class.js +1 -1
- package/dist/components/charts/chart/doughnut-chart.class.js +1 -1
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/line-chart.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +1 -1
- package/dist/components/charts/chart/pie-chart.class.js +1 -1
- package/dist/components/charts/chart/polar-area-chart.class.js +1 -1
- package/dist/components/charts/chart/radar-chart.class.js +1 -1
- package/dist/components/charts/chart/scatter-chart.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js +6 -0
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
- package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.styles.js +9 -0
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/pagination/pagination.class.js +1 -1
- package/dist/components/data/table/table.class.js +1 -1
- package/dist/components/forms/button/button.styles.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/switch/switch.styles.js +3 -1
- package/dist/components/layout/card/card.styles.js +2 -2
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +1 -0
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.styles.js +29 -9
- package/dist/components/media/attachment-chip/attachment-chip.class.js +2 -2
- package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
- package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +2 -2
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/lightbox/lightbox.styles.js +2 -0
- package/dist/components/overlays/callout/callout.styles.js +2 -2
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/overlays/overlay/tooltip.class.js +2 -2
- package/dist/components/overlays/popup/popup.class.js +2 -2
- package/dist/components/overlays/spinner/spinner.styles.js +2 -2
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +1 -0
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +1 -0
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +1 -0
- package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +1 -0
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +1 -0
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +11 -0
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +7 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -0
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/llms/components/lr-archive-viewer.md +5 -0
- package/llms/components/lr-attachment-trigger.md +2 -2
- package/llms/components/lr-ebook-viewer.md +3 -0
- package/llms/components/lr-heatmap.md +1 -1
- package/llms/index.md +1 -1
- package/llms/migration.md +3 -3
- package/llms/peers.md +1 -1
- package/llms/shared.md +13 -0
- package/llms-full.txt +24 -3
- package/package.json +5 -3
- package/vscode-html-data.json +1 -1
- package/web-types.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,374 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3de3498: Document 18 additive public surface additions from 9.0.0 that had no changelog entry:
|
|
8
|
+
|
|
9
|
+
- `<lr-chip>`: new `end` slot (trailing content, typically an icon, after the label).
|
|
10
|
+
- `<lr-claim-evidence>`: new `compact` and `frame` properties.
|
|
11
|
+
- `<lr-code-editor>`: new `size` property.
|
|
12
|
+
- `<lr-ebook-viewer>`, `<lr-pptx-viewer>`, `<lr-spreadsheet-viewer>`: new `maxHeight` property on
|
|
13
|
+
each.
|
|
14
|
+
- `<lr-token-input>`: new `start` and `end` adornment slots.
|
|
15
|
+
- New CSS custom-property indirection (a themeable `--lr-*` hook backing a previously
|
|
16
|
+
hardcoded/token-only value) on `<lr-dock-panel>`, `<lr-retrieval-compare>`,
|
|
17
|
+
`<lr-spreadsheet-viewer>`, `<lr-stream-status>`, `<lr-code-block>`/`<lr-code-block-core>`,
|
|
18
|
+
`<lr-page-rail>`, and `<lr-pdf-viewer>`.
|
|
19
|
+
|
|
20
|
+
All 18 are additive and backward-compatible — nothing removed or renamed, no behavior change when
|
|
21
|
+
left unset — but none were individually called out in the 9.0.0 changelog entry, unlike the many
|
|
22
|
+
other opt-in additions from the same release that are documented by exact component/property name.
|
|
23
|
+
- d04b07e: Document six cancelable pre-mutation events added in 9.0.0 with no changelog entry:
|
|
24
|
+
`<lr-dock-panel>`'s `lr-collapse-request`, `<lr-widget>`'s `lr-collapse-request`,
|
|
25
|
+
`lr-fullscreen-request`, and `lr-view-request`, `<lr-page>`'s `lr-nav-toggle`, and
|
|
26
|
+
`<lr-split-panel>`'s `lr-reposition-request`.
|
|
27
|
+
|
|
28
|
+
9.0.0 added a consistent propose-then-commit event pair to several components that previously
|
|
29
|
+
only fired a single post-commit notification: a new cancelable `*-request` event fires first with
|
|
30
|
+
the proposed next state, and a consumer's `preventDefault()` on it now vetoes the change before
|
|
31
|
+
the existing non-cancelable `*-change`/completion event fires. `<lr-dock-panel>` gained
|
|
32
|
+
`lr-collapse-request` alongside its existing `lr-collapse-change`; `<lr-widget>` gained its own,
|
|
33
|
+
independent `lr-collapse-request` (alongside `lr-collapse-change`) plus `lr-fullscreen-request`
|
|
34
|
+
and `lr-view-request` (alongside `lr-fullscreen-change`/`lr-view-change`); `<lr-page>` gained
|
|
35
|
+
`lr-nav-toggle`, its first event of any kind; `<lr-split-panel>` gained `lr-reposition-request`
|
|
36
|
+
alongside its existing `lr-reposition` post-commit event. All six are genuine new opt-in public
|
|
37
|
+
API — a consumer can now veto a collapse, fullscreen, view, nav-open, or divider-reposition
|
|
38
|
+
mutation before it commits — but none were called out in the 9.0.0 changelog entry, unlike the
|
|
39
|
+
many other opt-in additions from the same release that are individually documented by name.
|
|
40
|
+
- 7bcef3e: Document further additive 9.0.0 public surface that had no changelog entry, found auditing the
|
|
41
|
+
two largest 9.0.0 remediation commits:
|
|
42
|
+
|
|
43
|
+
- `<lr-context-inspector>`: five new events — `lr-error`, `lr-copy-error`, `lr-export-error`,
|
|
44
|
+
`lr-show`, `lr-hide` (all from its embedded copy/export controls).
|
|
45
|
+
- `<lr-graph>`: eight categorical fallback CSS custom properties, `--lr-graph-cat-1` through
|
|
46
|
+
`--lr-graph-cat-8`, backing the default node-type color palette.
|
|
47
|
+
- `<lr-tag>`: new `lr-remove` event (non-cancelable notification that the remove button was
|
|
48
|
+
activated).
|
|
49
|
+
- `<lr-rating>`: new `focus`/`blur` native-passthrough events, `focus()`/`blur()`/`click()`
|
|
50
|
+
methods, and `base`/`rating` csspart compatibility aliases (same node, two names).
|
|
51
|
+
- A long tail of new, narrowly-scoped CSS custom properties (visual tokens only, no new
|
|
52
|
+
interaction surface) on `<lr-activity-feed>`, `<lr-prompt-studio>`, `<lr-task-list>`,
|
|
53
|
+
`<lr-tool-approval-dialog>`, `<lr-tool-param-form>`, `<lr-push-to-talk>`, `<lr-flow-controls>`,
|
|
54
|
+
`<lr-menu-item>`, `<lr-chip-group>`, and further `<lr-rating>` properties; plus new slot aliases
|
|
55
|
+
on `<lr-prompt-input>` (`start`/`leading`/`end`/`trailing`) and `<lr-push-to-talk>`
|
|
56
|
+
(`microphone-icon`/`icon`), and new cssparts on `<lr-model-select>`, `<lr-push-to-talk>`, and
|
|
57
|
+
`<lr-source-picker>`.
|
|
58
|
+
|
|
59
|
+
All additive and backward-compatible — nothing removed or renamed, no behavior change when left
|
|
60
|
+
unset.
|
|
61
|
+
- d59f8c5: Fix `<lr-button>`'s start/end adornments claiming a 40%-of-row flex-basis instead of just being
|
|
62
|
+
capped at 40%.
|
|
63
|
+
|
|
64
|
+
A 9.0.0 change gave `[part~="start"]`/`[part~="end"]` `flex: 0 1 40%`, which sets the flex
|
|
65
|
+
*basis* to 40% of the button's own internal row -- a preferred size the flex algorithm tries to
|
|
66
|
+
honor before shrinking -- not merely `max-inline-size: 40%`'s ceiling. Because the basis is
|
|
67
|
+
self-referential (relative to the button's own internal row, unrelated to its position in the
|
|
68
|
+
page), even a small icon claimed a 40% preferred share before shrinking, squeezing
|
|
69
|
+
`[part="label"]`'s `flex: 1 1 auto` below what its text needed and ellipsizing labels that had
|
|
70
|
+
room to spare, with visible unused space left in the row. Adornments now use `flex: 0 0 auto`
|
|
71
|
+
(content-sized); `max-inline-size: 40%` remains as the actual cap for a genuinely oversized
|
|
72
|
+
adornment.
|
|
73
|
+
- f7de4a5: Fix the same `overflow-wrap: anywhere` mid-word-break defect already fixed across seven other
|
|
74
|
+
components (see the `overflow-wrap-anywhere-sibling-components` and `switch-label-break-word`
|
|
75
|
+
changesets) in `<lr-card>` too — a straggler that remediation pass missed. Both `[part="body"]`
|
|
76
|
+
and a slotted `[slot="header"]` collapsed their min-content contribution to near nothing while
|
|
77
|
+
sitting as a flex item next to a non-shrinking sibling, splitting an ordinary short word mid-
|
|
78
|
+
syllable instead of wrapping at the space before it. `overflow-wrap: break-word` gives the
|
|
79
|
+
identical last-resort rescue for a genuinely unbreakable long token without that regression.
|
|
80
|
+
- e57c135: Fix `<lr-chat-message>`'s `[part='actions']` pinning its footer actions to the inline end
|
|
81
|
+
regardless of `message-role`, detaching an assistant/system turn's copy/regenerate controls from
|
|
82
|
+
their own start-aligned (and often transparent-background) bubble. `[part='actions']` now scopes
|
|
83
|
+
its `margin-inline-start: auto` to `message-role="user"` and adds the mirrored
|
|
84
|
+
`margin-inline-end: auto` for `assistant`/`system`, matching the role-conditional alignment
|
|
85
|
+
`[part='bubble']` already uses. `actions-position="outside"` is unaffected for every role.
|
|
86
|
+
- f7de4a5: Fix `<lr-checkbox-group>` occasionally leaking a child `<lr-checkbox>`'s own raw `lr-change`
|
|
87
|
+
(`{checked, value}`-shaped detail) to an ancestor listener, ahead of the group's own translated
|
|
88
|
+
`lr-change` (`{value: string[]}`-shaped detail) — two events instead of one, the first the wrong
|
|
89
|
+
shape. `onChildEvent`'s `stopImmediatePropagation()` only protects a listener that runs *after* it;
|
|
90
|
+
the internal listener was registered on the default bubble phase in `connectedCallback()`, which
|
|
91
|
+
only outraces a consumer's *own* bubble-phase listener when that listener happens to be registered
|
|
92
|
+
later. A Lit `@lr-change=${...}` template binding — the common case — attaches its listener while
|
|
93
|
+
the element is still a disconnected fragment, before `connectedCallback` ever runs, so it saw the
|
|
94
|
+
unstopped child event first. The internal listener now runs in the capture phase instead, which
|
|
95
|
+
always completes before any bubble-phase listener on the same node fires, regardless of
|
|
96
|
+
registration order.
|
|
97
|
+
- 7d2ad99: Fix `<lr-dashboard-grid>`'s auto-created default `<lr-widget>` cell tripping the dev-mode
|
|
98
|
+
unknown-attribute diagnostic. The component marked its own library-created default cell with a
|
|
99
|
+
plain `cell-id` attribute — the same name used for the public, author-facing routing attribute a
|
|
100
|
+
consumer writes on their own light-DOM children (`<div cell-id="a">`), but `cell-id` isn't (and
|
|
101
|
+
shouldn't be) a real `<lr-widget>` property, since `lr-widget` is a general-purpose component with
|
|
102
|
+
no concept of dashboard-grid cells. The auto-created default cell now carries `data-cell-id`
|
|
103
|
+
instead — internal bookkeeping through the universally dev-mode-exempt `data-*` prefix, consistent
|
|
104
|
+
with the existing `data-dashboard-grid-default-cell` marker on the same element — while
|
|
105
|
+
author-authored content continues to use the public `cell-id` attribute unchanged.
|
|
106
|
+
- 7a03421: Add a dev-mode console warning when an `lr-*` element is connected with an attribute it doesn't
|
|
107
|
+
observe.
|
|
108
|
+
|
|
109
|
+
A typo'd or renamed attribute previously failed silently: the browser stores it inertly, the
|
|
110
|
+
component keeps rendering its default, and nothing signals the mismatch, in any environment. In
|
|
111
|
+
development only -- gated on Lit's own dev-mode signal (`globalThis.litIssuedWarnings`, already
|
|
112
|
+
populated whenever a consumer's bundler resolves `lit`'s `development` build, exactly as it
|
|
113
|
+
already does for Lit's own dev-mode warnings) -- each `lr-*` component now warns once per
|
|
114
|
+
`(tag, attribute-name)` for an attribute outside its observed set, with a did-you-mean suggestion
|
|
115
|
+
when a close match exists: `` `<lr-lite-chart>: unknown attribute 'hide-axis' — did you mean
|
|
116
|
+
'without-value-axis'?` ``. Global HTML attributes (`class`, `id`, `style`, `hidden`, `slot`,
|
|
117
|
+
`part`, ...), `data-*`, and `aria-*` are always exempt. No production behavior change -- the
|
|
118
|
+
check is fully inert when Lit's own dev-mode signal isn't present.
|
|
119
|
+
|
|
120
|
+
Scoped to attributes only; an unrecognized `.property =` write is not detected (there is no safe
|
|
121
|
+
way to intercept it generically without either enumerating instance properties -- which floods
|
|
122
|
+
false positives against this codebase's extensive use of TypeScript's `private` keyword for
|
|
123
|
+
internal state -- or wrapping every instance in a Proxy, which cannot intercept parser-driven
|
|
124
|
+
custom-element upgrades).
|
|
125
|
+
- e57c135: Fix `<lr-heatmap>` silently substituting the built-in fallback ramp color whenever
|
|
126
|
+
`--lr-heatmap-scale-lo`/`-hi` (or a `colorSteps` entry) was set to a modern CSS color function --
|
|
127
|
+
`color-mix()`, `oklch()`, `lab()`, `color(display-p3 ...)`, etc. -- with no warning. `resolveRgb()`
|
|
128
|
+
previously re-parsed the canvas's `ctx.fillStyle` read-back as a string (hex or `rgb()`/`rgba()`
|
|
129
|
+
only), which neither recognizes the `color(srgb r g b [/ a])` form Chromium normalizes
|
|
130
|
+
`color-mix()` to, nor the literal `oklch()`/`lab()`/`color(display-p3 ...)` syntax canvas
|
|
131
|
+
round-trips as-is for those functions. It now falls back to reading the actual rendered pixel back
|
|
132
|
+
via `getImageData(0, 0, 1, 1)` -- the same idiom already used in `theme.ts`/`shiki-dark-theme.ts`/
|
|
133
|
+
`color-core.ts` -- resolving any CSS color syntax the canvas accepts instead of only the forms a
|
|
134
|
+
hand-written parser recognizes. A genuinely invalid color string is unaffected: it still triggers
|
|
135
|
+
`warnInvalidColor()` and falls back.
|
|
136
|
+
- 3a9ae9d: Fix `<lr-knowledge-graph-explorer>`'s composed legend starving the graph pane when `nodeTypes` is long.
|
|
137
|
+
|
|
138
|
+
The explorer's flex column gives `[part='graph']` `flex: 1 1 auto; min-block-size: 0` so it's the
|
|
139
|
+
one part designed to shrink, but `[part='legend']` had no size cap — browser-default flex-item
|
|
140
|
+
sizing floors it at its full content height, so a `nodeTypes` list long enough to exceed the
|
|
141
|
+
host's allocated height pushed 100% of the shrinkage onto the graph pane instead, silently
|
|
142
|
+
ignoring the documented `height` property. `[part='legend']` now caps at `var(--lr-size-12rem)`
|
|
143
|
+
and scrolls internally past that, matching the existing `[part='search-results']` pattern in the
|
|
144
|
+
same stylesheet.
|
|
145
|
+
- fa7b8a1: Fix `<lr-lightbox>`'s caption starving the stage when it's unusually long.
|
|
146
|
+
|
|
147
|
+
`[part='stage']` is `flex: 1 1 auto; min-block-size: 0` — the one part designed to shrink — but
|
|
148
|
+
`[part='caption']` had no size cap, so an unusually long caller-supplied caption could floor at
|
|
149
|
+
its full multi-line content height and squeeze the stage's allocation. `[part='caption']` now
|
|
150
|
+
caps at `var(--lr-size-8rem)` and scrolls internally past that. Same mechanism, same fix shape, as
|
|
151
|
+
`<lr-knowledge-graph-explorer>`'s composed-legend fix in this same release.
|
|
152
|
+
- 53ad948: Raise the optional `marked` peer dependency's lower bound to `^18.0.10` (was `^18.0.9`), picking
|
|
153
|
+
up an upstream patch release. Affects every Markdown-rendering component that declares `marked` as
|
|
154
|
+
an optional peer: `lr-agent-workspace`, `lr-dashboard-grid`, `lr-eval-run`, `lr-markdown`,
|
|
155
|
+
`lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`,
|
|
156
|
+
`lr-streaming-text`, and `lr-widget-renderer`.
|
|
157
|
+
- f7de4a5: Fix `<lr-multi-split>`'s `'floating'` collapse state requiring `!important` to override its
|
|
158
|
+
drawer's `position`/`inset-block`/`inset-inline-start`/`inset-inline-end`. All four were applied
|
|
159
|
+
as owned *inline* styles — always higher cascade priority than any external stylesheet rule,
|
|
160
|
+
regardless of specificity — even though their floating-state value is always the same fixed
|
|
161
|
+
literal (`absolute`, `0`), never per-render computed data. They're ordinary (overridable)
|
|
162
|
+
stylesheet rules now, keyed off the already-reflected `collapse` host attribute and the panel's
|
|
163
|
+
existing `data-collapse-state="floating"` marker, so a consumer's own CSS wins at normal
|
|
164
|
+
specificity. `flex`/`order`/`inline-size` are unaffected and stay inline: `inline-size` in
|
|
165
|
+
particular is intentionally live, mirroring the panel's own draggable `sizes` percentage so there's
|
|
166
|
+
no visual jump un-floating — a consumer wanting a different floating *width* should set `.sizes`
|
|
167
|
+
rather than override the stylesheet rule.
|
|
168
|
+
- 961987b: Document `<lr-multi-split>`'s 9.0.0 behavior change: leaving a non-floating collapse state now
|
|
169
|
+
actually clears `open`, a change that shipped without a changelog entry.
|
|
170
|
+
|
|
171
|
+
Before 8.2.3, the component reference already promised: "Leaving 'floating' while `open` is still
|
|
172
|
+
`true` also closes it, the same way `<lr-app-rail>` closes its mobile overlay when leaving
|
|
173
|
+
'mobile' while open." 8.2.3's compiled class never implemented it — there was no assignment
|
|
174
|
+
clearing `open` anywhere in the collapse path; `this.open = false` appeared only as the property
|
|
175
|
+
initializer.
|
|
176
|
+
|
|
177
|
+
9.0.0 implemented it, in `applyEffectiveCollapseTransition`: for any transition to a state other
|
|
178
|
+
than `'floating'`, `open` is now cleared. The direction of the fix was correct — the code now
|
|
179
|
+
matches what was always documented — but it shipped silently, and the reference read identically
|
|
180
|
+
in both versions since it described the intended behavior all along, giving no changelog signal
|
|
181
|
+
to grep for.
|
|
182
|
+
|
|
183
|
+
The ordering matters to any `lr-multi-split-collapse-change` handler that reads `open`: the clear
|
|
184
|
+
happens **after** the event fires, not before, so a listener reading `this.open` synchronously
|
|
185
|
+
inside its own handler still sees the pre-clear value.
|
|
186
|
+
|
|
187
|
+
This is the same omission class already retro-documented twice in 9.1.0 (the heatmap
|
|
188
|
+
flat-property-to-`data` collapse, and the tab group's removed `slot`/`label` child model).
|
|
189
|
+
- 22056b1: Fix the same `overflow-wrap: anywhere` mid-word-break defect just fixed in `<lr-switch>` (see the
|
|
190
|
+
sibling `switch-label-break-word` changeset) in six more components, found by auditing the rest of
|
|
191
|
+
the library for the same `overflow-wrap: anywhere` + `min-inline-size: 0` fingerprint on
|
|
192
|
+
natural-language text: `<lr-agent-eval-dashboard>` (heading and run-label text),
|
|
193
|
+
`<lr-realtime-session>` (status text), `<lr-spinner>` (the after-placement label),
|
|
194
|
+
`<lr-schema-viewer>` (name/description/issue text), `<lr-subagent-panel>` (label/task/model text),
|
|
195
|
+
and `<lr-callout>` (content/message text). Same root cause and fix in every case:
|
|
196
|
+
`overflow-wrap: break-word` gives the identical last-resort rescue for a genuinely unbreakable
|
|
197
|
+
long token without collapsing normal min-content sizing, so ordinary text now only wraps when it
|
|
198
|
+
truly cannot fit, and wraps at a word boundary when it does.
|
|
199
|
+
- efb4b9b: Fix `<lr-popover>` and `<lr-tooltip>` getting stuck visible and interactive after closing.
|
|
200
|
+
|
|
201
|
+
Both components drove their popup's `data-hidden` attribute through a Lit declarative template
|
|
202
|
+
binding *and* an imperative direct DOM write to the same attribute, keyed off a plain
|
|
203
|
+
non-reactive private field (`anchorPositioned`). The imperative write silently desynced Lit's own
|
|
204
|
+
dirty-check cache for that attribute part; because neither component's `updated()` lifecycle hook
|
|
205
|
+
repositions on close (only while `open`), a later close transition could evaluate the same
|
|
206
|
+
boolean expression to a value matching Lit's stale cache and skip the DOM write entirely — leaving
|
|
207
|
+
the popup visually and interactively present (`pointer-events: auto`) after every dismissal route
|
|
208
|
+
(trigger click, outside click, Escape, `.hide()`) once it had opened once. `anchorPositioned` is
|
|
209
|
+
now a real reactive `@state()` property in both classes, and the redundant imperative writes are
|
|
210
|
+
removed, making Lit's own render cycle the single source of truth for the attribute.
|
|
211
|
+
- 34c12fa: Harden `<lr-popup>` against the same imperative/declarative attribute-write desync just fixed in
|
|
212
|
+
`<lr-popover>`/`<lr-tooltip>`.
|
|
213
|
+
|
|
214
|
+
`<lr-popup>` shared the identical pattern (`anchorPositioned` as a plain non-reactive field, an
|
|
215
|
+
imperative `toggleAttribute` write alongside a declarative template binding for the same
|
|
216
|
+
`data-active`/`data-awaits-position` attributes) but never exhibited the observable bug, because
|
|
217
|
+
its `updated()` lifecycle hook unconditionally repositions on every update cycle regardless of
|
|
218
|
+
which property changed -- masking any stale-cache skip with a redundant imperative correction on
|
|
219
|
+
the same cycle. `anchorPositioned` is now a real reactive `@state()` property here too, removing
|
|
220
|
+
the fragile reliance on that masking behavior.
|
|
221
|
+
- 03fd04f: Fix `<lr-switch>`'s label/hint/error text breaking mid-syllable, and possibly wrapping, well
|
|
222
|
+
before it runs out of room.
|
|
223
|
+
|
|
224
|
+
The shared `[part="form-control"], [part="label"], [part~="hint"], [part="error"]` rule used
|
|
225
|
+
`overflow-wrap: anywhere`, which -- unlike `overflow-wrap: break-word` -- also collapses the
|
|
226
|
+
element's min-content contribution to essentially a single character. Combined with the same
|
|
227
|
+
rule's `min-inline-size: 0`, an ordinary short label could be squeezed far below its longest
|
|
228
|
+
word's width and forced to split it mid-syllable, even when there was ample room to sit on one
|
|
229
|
+
line or wrap cleanly at a space.
|
|
230
|
+
|
|
231
|
+
Switching to `overflow-wrap: break-word` alone regressed the pre-existing 320px unbreakable-token
|
|
232
|
+
test: without a width propagated down to it, `.switch-layout` (an `inline-flex` box with no
|
|
233
|
+
explicit size) falls back to shrink-to-fit sizing, which can never size narrower than its own
|
|
234
|
+
min-content -- and `break-word` (correctly) keeps that min-content at the token's full width, so
|
|
235
|
+
the layout overflowed its ancestor instead of shrinking into it. Adding `max-inline-size: 100%` to
|
|
236
|
+
both `:host` and `.switch-layout` propagates an ancestor's real constraint all the way down to the
|
|
237
|
+
flex layout, fixing the overflow. `min-inline-size: 0` was deliberately *not* added to either of
|
|
238
|
+
those two rules: leaving their automatic minimum size content-based means an outer flex/grid
|
|
239
|
+
ancestor (e.g. a settings-panel row with another sibling control) won't disproportionately squeeze
|
|
240
|
+
the switch below its longest word's width the way `overflow-wrap: anywhere`'s near-zero min-content
|
|
241
|
+
let it -- at the cost of the row overflowing slightly rather than breaking a word, which is the
|
|
242
|
+
tradeoff `break-word` intends.
|
|
243
|
+
- f7de4a5: Fix `<lr-thread-list>`'s exported `row-start`/`row-actions` parts sitting on the row's inline text
|
|
244
|
+
baseline (adding descender strut height above and below) instead of vertically centering their
|
|
245
|
+
`renderStart`/`renderActions` adornment content. Both parts are plain `<span>`s and default to
|
|
246
|
+
`display: inline`; they are now `display: inline-flex; align-items: center`, matching every other
|
|
247
|
+
adornment slot in the library. `row-content`/`row-meta`, which hold real text, are unaffected.
|
|
248
|
+
|
|
249
|
+
## 9.1.0
|
|
250
|
+
|
|
251
|
+
### Minor Changes
|
|
252
|
+
|
|
253
|
+
- b027f44: Re-export `LyraNodeTypeStyle` from every component module whose public API types a property
|
|
254
|
+
against it (`lr-graph`, `lr-knowledge-graph-explorer`, `lr-drilldown-panel`, `lr-agent-trace`,
|
|
255
|
+
`lr-entity-dossier`, `lr-entity-card`, `lr-memory-panel`, `lr-provenance-panel`,
|
|
256
|
+
`lr-graph-legend`). The type was previously only reachable from the package root barrel
|
|
257
|
+
(`@aceshooting/lyra-ui`'s `LyraNodeTypeStyle` export); a consumer importing one of these
|
|
258
|
+
components from its own granular subpath, as this library's own examples do, had no local type
|
|
259
|
+
to import against and had to either duplicate the shape by hand or reach into the disallowed
|
|
260
|
+
`internal/` path.
|
|
261
|
+
- d8fe77e: Restore `./components/viewers/archive-viewer/archive-viewer-register.js` and
|
|
262
|
+
`./components/viewers/ebook-viewer/ebook-viewer-register.js` as importable package subpaths. Both
|
|
263
|
+
files register a `<lr-document-viewer>` renderer (`application/zip`/`.zip` and
|
|
264
|
+
`application/epub+zip`/`.epub` respectively) and are genuinely opt-in for a granular consumer not
|
|
265
|
+
using the `all.js` compatibility bundle. Neither had an entry in `package.json`'s `exports` map, so
|
|
266
|
+
the documented import pattern (matching `flag-peer.js`'s precedent) hit
|
|
267
|
+
`ERR_PACKAGE_PATH_NOT_EXPORTED` even though both files ship in `dist/` and are correctly declared in
|
|
268
|
+
`sideEffects` — the same defect class as the historical `flag-peer.js` `sideEffects` omission, this
|
|
269
|
+
time in the exports map instead.
|
|
270
|
+
|
|
271
|
+
### Patch Changes
|
|
272
|
+
|
|
273
|
+
- c9a9303: Document `<lr-heatmap>`'s flat-property-to-`data` replacement, a 9.0.0 breaking change that shipped
|
|
274
|
+
without a changelog entry.
|
|
275
|
+
|
|
276
|
+
9.0.0 replaced ten independent top-level `<lr-heatmap>` members with a single discriminated-union
|
|
277
|
+
`data` property. The removed members are `mode`, `days`, `rowLabels`, `colLabels`, `values`,
|
|
278
|
+
`firstDayOfWeek`, `columnX`, `rowY`, `weekdayLabelText`, and `monthLabelText`. They are now fields on
|
|
279
|
+
one of the two `data` branches — `HeatmapMatrixData` (`{ kind: 'matrix', rowLabels, colLabels,
|
|
280
|
+
values }`) or `HeatmapCalendarData` (`{ kind: 'calendar', days, firstDayOfWeek?, columnX?, rowY?,
|
|
281
|
+
weekdayLabelText?, monthLabelText? }`) — united as `HeatmapData` and exported from the package root.
|
|
282
|
+
|
|
283
|
+
There are no runtime aliases, and assigning a removed member is silent: Lit accepts it as an
|
|
284
|
+
unobserved instance property, so the component keeps rendering its default empty grid instead of
|
|
285
|
+
erroring. That silence is why this entry exists — the 9.0.0 notes omitted the change entirely, so a
|
|
286
|
+
consumer grepping the changelog for `HeatmapMatrixData`, `HeatmapCalendarData`, `HeatmapData`, or any
|
|
287
|
+
of the removed member names found nothing and had no way to learn the API had moved.
|
|
288
|
+
|
|
289
|
+
The `data` shape itself is unchanged and intentional; only the changelog record was missing.
|
|
290
|
+
`llms/data.md`'s "9.0 migration" note already carries the full recipe, including the related removal
|
|
291
|
+
of the magic `value-label="value"` localization sentinel:
|
|
292
|
+
|
|
293
|
+
```js
|
|
294
|
+
// removed in 9.0.0
|
|
295
|
+
el.mode = 'matrix';
|
|
296
|
+
el.rowLabels = ['Mon', 'Tue'];
|
|
297
|
+
el.colLabels = ['00h', '06h'];
|
|
298
|
+
el.values = [
|
|
299
|
+
[1, 2],
|
|
300
|
+
[3, 4],
|
|
301
|
+
];
|
|
302
|
+
|
|
303
|
+
// 9.0.0 and later
|
|
304
|
+
el.data = {
|
|
305
|
+
kind: 'matrix',
|
|
306
|
+
rowLabels: ['Mon', 'Tue'],
|
|
307
|
+
colLabels: ['00h', '06h'],
|
|
308
|
+
values: [
|
|
309
|
+
[1, 2],
|
|
310
|
+
[3, 4],
|
|
311
|
+
],
|
|
312
|
+
};
|
|
313
|
+
```
|
|
314
|
+
- 3f294c1: Fix `<lr-lite-chart>`'s first category label colliding with the bottom y-axis tick.
|
|
315
|
+
|
|
316
|
+
A line chart centres its first category label on `plotX`, so that label always reaches left into the
|
|
317
|
+
y-axis tick column — a measured 5.7px horizontal overlap on both Chromium and Firefox. The only thing
|
|
318
|
+
holding the two apart is the vertical gap between the label row and the bottom tick, which is
|
|
319
|
+
`dominant-baseline="middle"` on the plot floor and therefore hangs half its line box below that floor
|
|
320
|
+
into the label row.
|
|
321
|
+
|
|
322
|
+
That gap was 1.3px on Chromium and **-0.7px on Firefox**, whose line box for the same 10px
|
|
323
|
+
`system-ui` font is 16px against Chromium's 14px. Firefox therefore painted the first x-axis label
|
|
324
|
+
overlapping the `0` tick. Raising `CATEGORY_LABEL_OFFSET` 18 → 24 and `PAD_BOTTOM` 24 → 30 together
|
|
325
|
+
leaves ~5px clear on both engines, comfortably past that 2px cross-engine variation.
|
|
326
|
+
|
|
327
|
+
Because both constants moved by the same amount, the category-label row does not shift: the plot
|
|
328
|
+
floor rises instead, so a chart's labels stay where they were and its plot area is 6px shorter. Charts
|
|
329
|
+
with an `x-label` axis title are unaffected beyond that, since `AXIS_TITLE_SPACE` is measured from
|
|
330
|
+
`padBottom`.
|
|
331
|
+
|
|
332
|
+
Note the truncation width model is unchanged: `displayCategoryLabel()` still estimates fit from
|
|
333
|
+
`APPROX_LABEL_CHARACTER_WIDTH`, so a label's *horizontal* extent remains an approximation rather than
|
|
334
|
+
a measurement. This change makes the label row robust to that approximation being wrong rather than
|
|
335
|
+
making the approximation exact.
|
|
336
|
+
- 7ae8930: Document `<lr-tab-group>`'s removed `slot`/`label` child model, a 9.0.0 breaking change that shipped
|
|
337
|
+
without a changelog entry.
|
|
338
|
+
|
|
339
|
+
9.0.0 removed the pre-9.0 attribute child model, in which a direct `<div slot="x" label="…">` child
|
|
340
|
+
became a tab captioned by its `label` with its own content as the panel, and a sibling
|
|
341
|
+
`slot="x-icon"` child supplied that tab's leading icon. `<lr-tab-group>` now builds its tab list
|
|
342
|
+
only from `<lr-tab panel="x">` descriptors paired with `<lr-tab-panel name="x">` panels; any other
|
|
343
|
+
child element is skipped regardless of its `slot`/`label` attributes, so markup still written in the
|
|
344
|
+
old shape renders an empty tab strip with no console warning.
|
|
345
|
+
|
|
346
|
+
The removal itself is unchanged and intentional — this entry only records it, because the 9.0.0 notes
|
|
347
|
+
omitted it while `README.md` continued to state that the `slot`/`label` shape "still works
|
|
348
|
+
unchanged". Both README claims are corrected (the 7.x → 8.0.0 rename table and the component/mirror
|
|
349
|
+
table), which also clears the same stale claim from three generated `llms/migration.md` rows
|
|
350
|
+
(`<wa-tab>`, `<wa-tab-panel>`, `<sl-tab-panel>`) and the packaged skill reference. `llms/layout.md`
|
|
351
|
+
already described the removal correctly and is unchanged.
|
|
352
|
+
|
|
353
|
+
To migrate, rewrite each former child as one descriptor plus one panel, folding any former
|
|
354
|
+
`slot="x-icon"` sibling's content into the `<lr-tab>`'s own default slot:
|
|
355
|
+
|
|
356
|
+
```html
|
|
357
|
+
<!-- removed in 9.0.0 -->
|
|
358
|
+
<lr-tab-group>
|
|
359
|
+
<div slot="general" label="General">General settings</div>
|
|
360
|
+
</lr-tab-group>
|
|
361
|
+
|
|
362
|
+
<!-- 9.0.0 and later -->
|
|
363
|
+
<lr-tab-group>
|
|
364
|
+
<lr-tab panel="general">General</lr-tab>
|
|
365
|
+
<lr-tab-panel name="general">General settings</lr-tab-panel>
|
|
366
|
+
</lr-tab-group>
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
A regression test now asserts a plain `slot`/`label` child produces no tab and no rendered panel, so
|
|
370
|
+
the behavior cannot drift back into being documented as supported.
|
|
371
|
+
|
|
3
372
|
## 9.0.0
|
|
4
373
|
|
|
5
374
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -307,7 +307,7 @@ doesn't carry it silently adopts the opposite behavior.
|
|
|
307
307
|
|
|
308
308
|
| 7.x | 8.0.0 | Also |
|
|
309
309
|
| ---------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
310
|
-
| `<lr-tabs>` | `<lr-tab-group>` | The `lr-tabs-change` event splits into `lr-tab-hide` (outgoing tab) then `lr-tab-show` (incoming), and `--lr-tabs-*` custom properties become `--lr-tab-group-*`. The group
|
|
310
|
+
| `<lr-tabs>` | `<lr-tab-group>` | The `lr-tabs-change` event splits into `lr-tab-hide` (outgoing tab) then `lr-tab-show` (incoming), and `--lr-tabs-*` custom properties become `--lr-tab-group-*`. The group is composed from `<lr-tab>` / `<lr-tab-panel>` children. The library's own `slot`/`label` panel-attribute shape was **removed in 9.0.0** — rewrite each former `<div slot="x" label="…">` child as one `<lr-tab panel="x">` plus one `<lr-tab-panel name="x">`, and fold each former `slot="x-icon"` sibling's content into that `<lr-tab>`'s own default slot (mark a decorative glyph `aria-hidden`, since the tab derives its accessible name from that content). A leftover `slot`/`label` child is skipped silently: the strip renders empty. |
|
|
311
311
|
| `<lr-tree-node>` | `<lr-tree-item>` | |
|
|
312
312
|
|
|
313
313
|
Neither old name is registered as an alias. A tag that silently keeps working under its old name is
|
|
@@ -897,6 +897,13 @@ Build tools can import the published manifest directly through its explicit pack
|
|
|
897
897
|
import manifest from '@aceshooting/lyra-ui/custom-elements.json' with { type: 'json' };
|
|
898
898
|
```
|
|
899
899
|
|
|
900
|
+
A subclass declaration's `cssParts` is always fully flattened (everything inherited included), but
|
|
901
|
+
`attributes`/`members`/`events`/`slots`/`cssProperties` list only a declaration's own entries plus
|
|
902
|
+
any inherited entry it overrides — intentional, since a TypeScript/JS consumer already resolves the
|
|
903
|
+
rest through the generated `.d.ts` `extends` chain. Reading `custom-elements.json` directly for
|
|
904
|
+
those four kinds means walking each declaration's own `superclass` chain, or using the already-
|
|
905
|
+
resolved `web-types.json`/`vscode-html-data.json` above instead.
|
|
906
|
+
|
|
900
907
|
## Components
|
|
901
908
|
|
|
902
909
|
The catalog below lists all 284 tags in the current Custom Elements Manifest, grouped by
|
|
@@ -1172,7 +1179,7 @@ each one-liner below.
|
|
|
1172
1179
|
| `<lr-image-comparer>` | `wa-comparison` / `sl-image-comparer` | Before/after slotted surfaces with a keyboard-accessible range divider |
|
|
1173
1180
|
| `<lr-pan-zoom>` | — (extra) | Bounded zoom and scrollable panning for slotted content or an image source, preserving Lyra 7's former zoomable-frame behavior |
|
|
1174
1181
|
| `<lr-zoomable-frame>` | `wa-zoomable-frame` | Sandboxed iframe preview with safe URL forwarding, discrete zoom levels, optional controls/interaction, and same-origin theme synchronization |
|
|
1175
|
-
| `<lr-tab-group>` + `<lr-tab>` + `<lr-tab-panel>` | `wa-tab-group` / `wa-tab` / `wa-tab-panel` / `sl-tab-group` / `sl-tab` / `sl-tab-panel` | Tab strip with `placement` (logical `start`/`end` turn it vertical) and `activation="auto"`/`"manual"`;
|
|
1182
|
+
| `<lr-tab-group>` + `<lr-tab>` + `<lr-tab-panel>` | `wa-tab-group` / `wa-tab` / `wa-tab-panel` / `sl-tab-group` / `sl-tab` / `sl-tab-panel` | Tab strip with `placement` (logical `start`/`end` turn it vertical) and `activation="auto"`/`"manual"`; composed from the upstream `<lr-tab>`/`<lr-tab-panel>` child pairs |
|
|
1176
1183
|
| `<lr-checkbox>` | `wa-checkbox` / `sl-checkbox` | Boolean form control, `role="checkbox"` with a visual/`indeterminate` mixed state |
|
|
1177
1184
|
| `<lr-switch>` | `wa-switch` / `sl-switch` | Boolean toggle-switch form control, `role="switch"` on/off semantics |
|
|
1178
1185
|
| `<lr-menu>` + `<lr-menu-item>` | `sl-menu` / `sl-menu-item` | Anchored dropdown menu around a consumer-supplied trigger; WAI-ARIA "menu button" pattern with real roving focus (not a listbox) |
|