@mkbabb/glass-ui 10.1.3 → 11.0.0
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/MIGRATION.md +1024 -1461
- package/README.md +2 -2
- package/dist/DialogContent-DG5kseRQ.js +159 -0
- package/dist/DropdownMenuTrigger-uhSXgEfK.js +76 -0
- package/dist/{Surface-1nPoabc3.js → Surface-C7wq2j0A.js} +3 -0
- package/dist/aurora.css +1 -0
- package/dist/aurora.js +246 -2472
- package/dist/auroraImageSource-xNLDUjcy.js +30 -0
- package/dist/axes.js +8 -8
- package/dist/blob.css +1 -0
- package/dist/blob.js +57 -54
- package/dist/budget-CJfhLIIV.js +13 -0
- package/dist/button-CAKhiOZy.js +113 -0
- package/dist/button.js +1 -1
- package/dist/{card-ByyqRBvK.js → card-D_uXphvL.js} +4 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +3 -2
- package/dist/{checkbox-B1qn65se.js → checkbox-COLnvULu.js} +1 -0
- package/dist/checkbox.css +1 -0
- package/dist/checkbox.js +1 -1
- package/dist/{collapsible-DFzK29Oh.js → collapsible-Bd4Et730.js} +1 -0
- package/dist/collapsible.css +1 -0
- package/dist/collapsible.js +1 -1
- package/dist/color-HkUaTAJj.js +270 -0
- package/dist/{color.glsl-DTJhdekG.js → color.glsl-bFJm8k5R.js} +4 -16
- package/dist/color.wgsl-B-qDJ_OM.js +4 -0
- package/dist/{command-CatrAsrl.js → command-BsFOGZwB.js} +3 -2
- package/dist/command.css +1 -0
- package/dist/command.js +1 -1
- package/dist/component-styles.css +0 -1
- package/dist/components/_shared/axes.d.ts +7 -0
- package/dist/components/_shared/feedback/dot-ring.css +1 -1
- package/dist/components/_shared/overlay/focus-return.d.ts +9 -0
- package/dist/components/_shared/overlay/index.d.ts +3 -0
- package/dist/components/_shared/overlay/root-scroll-lock.d.ts +4 -0
- package/dist/components/_shared/overlay/sheet-width.d.ts +2 -0
- package/dist/components/_shared/shape/useBarShape.d.ts +4 -0
- package/dist/components/aurora/composables/auroraFallbackGround.d.ts +12 -0
- package/dist/components/aurora/constants/presets.d.ts +21 -0
- package/dist/components/aurora/index.d.ts +2 -2
- package/dist/components/button/styles.css +1 -1
- package/dist/components/dark-mode-toggle/dark-mode-toggle.css +1 -1
- package/dist/components/data-table/composables/useDataTableResponsive.d.ts +2 -0
- package/dist/components/deck/styles/capture.css +1 -1
- package/dist/components/dialog/DialogContent.vue.d.ts +2 -2
- package/dist/components/dialog/ModalOverlay.vue.d.ts +2 -2
- package/dist/components/dialog/ModalScrim.vue.d.ts +26 -0
- package/dist/components/dialog/styles.css +1 -1
- package/dist/components/dock/GlassDock.vue.d.ts +4 -1
- package/dist/components/dock/composables/useDockClickIntegrity.d.ts +4 -0
- package/dist/components/dock/composables/useDockShellProps.d.ts +34 -2
- package/dist/components/dock/composables/useDockState.d.ts +5 -0
- package/dist/components/dock/index.d.ts +1 -2
- package/dist/components/dock/styles/controls/icon-button.css +1 -1
- package/dist/components/dock/styles/controls/tab-button.css +1 -1
- package/dist/components/dock/styles/morph.css +1 -1
- package/dist/components/dock/styles/run.css +1 -1
- package/dist/components/dock/trigger.d.ts +1 -0
- package/dist/components/expandable-container/ExpandableContainer.vue.d.ts +30 -29
- package/dist/components/menu/ContextMenu.vue.d.ts +27 -0
- package/dist/components/menu/DropdownMenu.vue.d.ts +5 -23
- package/dist/components/menu/context.d.ts +18 -5
- package/dist/components/menu/family-click.d.ts +2 -0
- package/dist/components/menu/family-context.d.ts +2 -0
- package/dist/components/menu/index.d.ts +1 -1
- package/dist/components/sheet/SheetContent.vue.d.ts +2 -2
- package/dist/components/sortable-list/styles.css +1 -0
- package/dist/components/surface/Surface.vue.d.ts +4 -1
- package/dist/components/tabs/composables/useTabDragMorph.d.ts +4 -7
- package/dist/components/tabs/styles/segmented.css +1 -1
- package/dist/components/tabs/types.d.ts +7 -8
- package/dist/composables/dom/useResizeObserver.d.ts +3 -1
- package/dist/composables/glass/fieldPaint.d.ts +4 -0
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +7 -6
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +8 -0
- package/dist/composables/motion/core/motionTempo.d.ts +2 -1
- package/dist/composables/motion/morph/useDragMorph.d.ts +2 -2
- package/dist/composables/motion/morph/useSelectionGroup.d.ts +6 -25
- package/dist/composables/motion/morph/useSelectionIndicator.d.ts +8 -54
- package/dist/composables/motion/spring/useLiquidFlex.d.ts +3 -5
- package/dist/composables/motion/spring/useSpringMount.d.ts +0 -9
- package/dist/{configurator-CPxIo3q2.js → configurator-C1ZKEf1b.js} +7 -5
- package/dist/configurator.css +1 -0
- package/dist/configurator.js +1 -1
- package/dist/constants-DfrO-IaH.js +8 -0
- package/dist/constellation.css +1 -0
- package/dist/constellation.js +2 -1
- package/dist/control.css +1 -0
- package/dist/{control.css_vue_type_style_index_0_src_true_lang-BIdufaDG.js → control.css_vue_type_style_index_0_src_true_lang-D2hdtjs4.js} +1 -0
- package/dist/{createCanvasLifecycle-hJHobVTn.js → createCanvasLifecycle-DS0vEs_G.js} +76 -75
- package/dist/dark-mode-toggle.js +1 -1
- package/dist/{data-table-Cs93-uY7.js → data-table-lDykVYuo.js} +113 -107
- package/dist/data-table.css +1 -0
- package/dist/data-table.js +1 -1
- package/dist/{deck-Cm_VmyNL.js → deck-Bc-2mEKE.js} +1 -0
- package/dist/deck.js +1 -1
- package/dist/dialog.js +1 -1
- package/dist/dock-trigger.d.ts +1 -0
- package/dist/dock-trigger.js +88 -0
- package/dist/dock.js +677 -689
- package/dist/dom.js +1 -1
- package/dist/easing.js +4 -4
- package/dist/expandable-container-wS1awXGd.js +135 -0
- package/dist/expandable-container.css +1 -0
- package/dist/expandable-container.js +1 -1
- package/dist/{fading-scroll-CTeW3KNS.js → fading-scroll-D3Y20ibL.js} +2 -2
- package/dist/fading-scroll.js +1 -1
- package/dist/fieldPaint-Ci77oajZ.js +7 -0
- package/dist/fourier-field.css +1 -0
- package/dist/fourier-field.js +15 -13
- package/dist/glSetup-DMaDgrEj.js +577 -0
- package/dist/glass-ui.js +67 -66
- package/dist/handmark.css +1 -0
- package/dist/handmark.js +82 -71
- package/dist/index.css +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/{input-eLZ_AU7l.js → input-BLF2pMHE.js} +1 -1
- package/dist/input.js +1 -1
- package/dist/{label-CE03H1KL.js → label-ryNPL7e6.js} +1 -0
- package/dist/label.css +1 -0
- package/dist/label.js +1 -1
- package/dist/labeled-field.css +1 -0
- package/dist/labeled-field.js +5 -4
- package/dist/{menu-DaYAZiVW.js → menu-C_l2Sslf.js} +162 -112
- package/dist/menu.js +3 -3
- package/dist/metric.js +1 -0
- package/dist/motion-core.js +138 -44
- package/dist/motion-lHDAQHEE.js +91 -0
- package/dist/motion.js +5 -5
- package/dist/motionTempo-DXdVbCWr.js +13 -0
- package/dist/music-staff.js +1 -0
- package/dist/{number-field-RP89046a.js → number-field-BXFUP49Z.js} +3 -2
- package/dist/number-field.css +1 -0
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.css +1 -0
- package/dist/pager-dots.js +4 -3
- package/dist/participation-C5y5VZTN.js +52 -0
- package/dist/{popover-BdpoE4Ar.js → popover-DQUmwuAa.js} +3 -2
- package/dist/popover.js +1 -1
- package/dist/{progress-eVa-mc7J.js → progress-BUn0Bw7Z.js} +1 -0
- package/dist/progress.css +1 -0
- package/dist/progress.js +1 -1
- package/dist/{radio-group-B58Bz16F.js → radio-group-xdEy2tdi.js} +1 -0
- package/dist/radio-group.css +1 -0
- package/dist/radio-group.js +1 -1
- package/dist/root-scroll-lock-DJFrQhMa.js +22 -0
- package/dist/select-Dt5dXm87.js +309 -0
- package/dist/select.js +1 -1
- package/dist/{separator-D4EZM10u.js → separator-C4y9p_ky.js} +1 -0
- package/dist/separator.css +1 -0
- package/dist/separator.js +1 -1
- package/dist/sheet-DLqNUIZl.js +347 -0
- package/dist/sheet-width-DgXgJNa5.js +18 -0
- package/dist/sheet.js +2 -2
- package/dist/{slider-5uoY-cLG.js → slider-CZiKrWGg.js} +8 -8
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -1
- package/dist/{status-dot-W4LFiJps.js → status-dot-BDZKcRxy.js} +2 -1
- package/dist/status-dot.css +1 -0
- package/dist/status-dot.js +1 -1
- package/dist/styles/components.css +1 -1
- package/dist/styles/glass/glass-capsule.css +1 -1
- package/dist/styles/glass/glass-chip.css +1 -1
- package/dist/styles/glass/mark.css +1 -1
- package/dist/styles/glass/overlay-plate.css +1 -1
- package/dist/styles/glass/surface-axis.css +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/theme/radius.css +1 -1
- package/dist/styles/tokens/color-radius.css +1 -1
- package/dist/styles/tokens/manifest.d.ts +1 -1
- package/dist/styles/tokens/scale-paper.css +1 -1
- package/dist/styles/utilities/base-misc.css +1 -1
- package/dist/surface.js +1 -1
- package/dist/{switch-BYUZ6g9G.js → switch-DLfGYU35.js} +1 -0
- package/dist/switch.css +1 -0
- package/dist/switch.js +1 -1
- package/dist/tabs-NgTRPGZx.js +229 -0
- package/dist/tabs.js +1 -1
- package/dist/textarea.js +1 -1
- package/dist/timeline.css +1 -0
- package/dist/timeline.js +4 -3
- package/dist/toggle-group-DgXcJGD6.js +129 -0
- package/dist/toggle-group.css +1 -0
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.js +2 -0
- package/dist/{tooltip-CZVubnJf.js → tooltip-Do3qCw0r.js} +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.css +1 -0
- package/dist/typewriter.js +1 -0
- package/dist/uniformBridge-CJyy7NOn.js +150 -0
- package/dist/useBarShape-CmP35Z8o.js +24 -0
- package/dist/{useCanvas2D-CQRElMyE.js → useCanvas2D-Bhpwua98.js} +1 -1
- package/dist/{useDockCtaReceive-BSSgD6mu.js → useDockCtaReceive-Dn_-paqP.js} +1 -1
- package/dist/{useDragMorph-B363RUbF.js → useDragMorph-BEI74U0t.js} +51 -40
- package/dist/{color.wgsl-BTszLY39.js → useGpuSubstrate-Y5XAdU8d.js} +7 -7
- package/dist/{useLiquidPress-h1scrPtP.js → useLiquidPress-D5mjZC6U.js} +2 -2
- package/dist/{useResizeObserver-CdUlm2QZ.js → useResizeObserver-Bv3nN46q.js} +4 -7
- package/dist/useScrollChrome-DMP6kDI9.js +67 -0
- package/dist/useSelectionGroup-DAQv5Lb5.js +186 -0
- package/dist/{useSpring-9u2_shxV.js → useSpring-Aof0nTRt.js} +1 -1
- package/dist/useSpringMount-jgNkymRl.js +73 -0
- package/dist/wgpuSetup-CFuqd_RP.js +1278 -0
- package/package.json +8 -1
- package/dist/DialogContent-CwIBvou_.js +0 -157
- package/dist/DropdownMenuTrigger-CKRnhDSQ.js +0 -93
- package/dist/button-BOFTUPyU.js +0 -110
- package/dist/composables/motion/morph/eyeglass.d.ts +0 -141
- package/dist/expandable-container-CZUj9BzY.js +0 -142
- package/dist/glass-ui.css +0 -2
- package/dist/motion-BvV1_24p.js +0 -61
- package/dist/motionTempo-tscp92Nm.js +0 -7
- package/dist/participation-B7UFdgXB.js +0 -55
- package/dist/select-BiF0FCZf.js +0 -292
- package/dist/sheet-DmJxgAHc.js +0 -345
- package/dist/tabs-C5sC0fBE.js +0 -269
- package/dist/toggle-group-CC5b3o1R.js +0 -125
- package/dist/useScrollChrome-BJbWV32F.js +0 -162
- package/dist/useSelectionGroup-zsEwitF6.js +0 -291
- package/dist/useSpringMount-OA-0mTNv.js +0 -73
package/MIGRATION.md
CHANGED
|
@@ -2,15 +2,225 @@
|
|
|
2
2
|
|
|
3
3
|
The per-version migration guide for `@mkbabb/glass-ui`. Each `## <version>` section
|
|
4
4
|
records the breaking changes that landed in that cut, newest first. Clean breaks only
|
|
5
|
-
— no legacy aliases, no back-compat shims
|
|
5
|
+
— no legacy aliases, no back-compat shims; every break is a one-line
|
|
6
6
|
rename or import re-point per call site.
|
|
7
7
|
|
|
8
|
+
## 11.0.0
|
|
9
|
+
|
|
10
|
+
The CHANGELOG's 11.0.0 entry lists every breaking change with its migration step. The
|
|
11
|
+
sections below give the detail.
|
|
12
|
+
|
|
13
|
+
### The dock's hover and its closed corner
|
|
14
|
+
|
|
15
|
+
- **No dock control grows on hover any more.** `.dock-icon-button` and `.dock-tab-button`
|
|
16
|
+
used to answer a hover with `scale: 1.1`, so a small control such as a figure dock's
|
|
17
|
+
view toggle swelled under the pointer. A hover now changes the fill and the highlight
|
|
18
|
+
only, and a press keeps its spring. We deleted the `--scale-hover-dock` token along
|
|
19
|
+
with its last readers, so a stylesheet that sets or reads it should delete that
|
|
20
|
+
declaration. Nothing replaces it.
|
|
21
|
+
- **A closed dock with a persistent control keeps a rounded-rectangle corner.** A closed
|
|
22
|
+
horizontal dock always took `--radius-circle` (50%). When a `#persistent` control sits
|
|
23
|
+
beside the summary, the box is two cells wide, so 50% drew an oval. That dock now takes
|
|
24
|
+
`--radius-dock` (16 px), the same corner it wears when open. A dock of one cell is
|
|
25
|
+
still a circle.
|
|
26
|
+
|
|
27
|
+
### Backdrops, the still aurora and the dock trigger
|
|
28
|
+
|
|
29
|
+
- **`DockBackdropMode` is removed, and the type is now `BackdropMode` in `./axes`.** The
|
|
30
|
+
same `"live" | "static"` union also types the new `backdropMode` prop on `Surface` and
|
|
31
|
+
`Card`. If you imported the type by name, import `BackdropMode` from
|
|
32
|
+
`@mkbabb/glass-ui/axes` instead. There is no alias.
|
|
33
|
+
- **`Surface` and `Card` take `backdropMode`.** With `"static"`, the plate keeps its
|
|
34
|
+
fill, edge and rim but skips the backdrop filter, and it carries
|
|
35
|
+
`data-backdrop-mode="static"`. Use it for plates that sit in the page flow over a
|
|
36
|
+
field that does not move. The default, `"live"`, behaves as before.
|
|
37
|
+
- **`./aurora` exports `STILL_FIELD`.** It is a partial config that zeroes the four drift
|
|
38
|
+
axes and the animated film grain (`paperGrain`), while the canvas texture stays. Spread
|
|
39
|
+
it last over a field config, and the render loop parks after the first frame. This is
|
|
40
|
+
additive.
|
|
41
|
+
- **`DockTrigger` moves from `./dock` to `./dock-trigger`.** Import it with
|
|
42
|
+
`import { DockTrigger } from "@mkbabb/glass-ui/dock-trigger"`. Since `dist/dock.js` no
|
|
43
|
+
longer imports reka's `SelectTrigger`, `SelectIcon` or `PopoverTrigger`, or the
|
|
44
|
+
`DropdownMenuTrigger` chunk, a page that shows a `GlassDock` at first paint and opens
|
|
45
|
+
menus only later keeps that code out of its entry bundle. There is no alias.
|
|
46
|
+
|
|
47
|
+
### Menus and modals
|
|
48
|
+
|
|
49
|
+
- **`<DropdownMenu trigger="context">` becomes `<ContextMenu>`.** The right-click menu is
|
|
50
|
+
its own root now, so a page that renders only `DropdownMenu` no longer bundles reka's
|
|
51
|
+
context-menu code. The parts (`DropdownMenuTrigger`, `DropdownMenuContent`,
|
|
52
|
+
`DropdownMenuItem` and the rest) are unchanged and work under both roots.
|
|
53
|
+
`DropdownMenu` loses its `trigger` prop, `DropdownMenuProps` now describes the click
|
|
54
|
+
menu alone, and `ContextMenuProps` has only `dir` and `modal`. We removed the public
|
|
55
|
+
`MenuTrigger` type, so code that imported it should drop that import.
|
|
56
|
+
|
|
57
|
+
```diff
|
|
58
|
+
- <DropdownMenu trigger="context">
|
|
59
|
+
+ <ContextMenu>
|
|
60
|
+
<DropdownMenuTrigger as-child>…</DropdownMenuTrigger>
|
|
61
|
+
<DropdownMenuContent>…</DropdownMenuContent>
|
|
62
|
+
- </DropdownMenu>
|
|
63
|
+
+ </ContextMenu>
|
|
64
|
+
```
|
|
65
|
+
- **A modal `Dialog`, `SheetContent` or `CommandDialog` no longer locks `body`.** While
|
|
66
|
+
its scrim is showing, the root element (`html`) carries `overflow: hidden`, and `body`
|
|
67
|
+
keeps its own overflow and padding. reka's `--scrollbar-width` property on the root and
|
|
68
|
+
its `padding-right` compensation on `body` are gone, because the root's
|
|
69
|
+
`scrollbar-gutter: stable` already keeps the layout still. If your code read
|
|
70
|
+
`--scrollbar-width`, or checked `body.style.overflow` to detect an open modal, read
|
|
71
|
+
`document.documentElement.style.overflow` instead. reka's `ConfigProvider`
|
|
72
|
+
`scrollBody` option no longer affects glass modals. The `pointer-events: none` guard
|
|
73
|
+
that reka puts on `body` while a modal is open is unchanged, and when the modal closes,
|
|
74
|
+
`body` gets back whatever inline `pointer-events` you had set.
|
|
75
|
+
- **A dock samples its live backdrop when the field draws.** The dock reads the
|
|
76
|
+
backdrop each time the field canvas announces a frame, which every glass canvas
|
|
77
|
+
(Aurora, Blob, and any field built on `useWebGLCanvas`, `useWebGPUCanvas` or
|
|
78
|
+
`useCanvas2D`) does on each draw. A `backgroundCanvas` you draw yourself, outside
|
|
79
|
+
those helpers, is sampled on mount, resize, scroll, theme change and at the end of a
|
|
80
|
+
transition on it, but not on each of its own frames.
|
|
81
|
+
|
|
82
|
+
### Shape, glide and the dropdown system
|
|
83
|
+
|
|
84
|
+
Each change below is a clean break with no alias.
|
|
85
|
+
|
|
86
|
+
- **SegmentedTabs glides, and the eyeglass, the press squish and the capsule hover are
|
|
87
|
+
gone.** The indicator moves by `translate`, `width` and `height` on `--spring-dock` and
|
|
88
|
+
keeps its size, so neither material deforms. These are removed with no replacement:
|
|
89
|
+
the `--eyeglass-span-max` token, the `data-eyeglass-wake` and `data-eyeglass-clamped`
|
|
90
|
+
attributes, the `--stretch` channel on the tabs indicator, the label
|
|
91
|
+
`transition-delay`, the press animation, and `.glass-capsule-hover` on inactive tabs.
|
|
92
|
+
If you declared `--eyeglass-span-max`, delete the declaration. A drag (`motion="full"`)
|
|
93
|
+
still follows the pointer and snaps, but it no longer squishes.
|
|
94
|
+
- **There is a new token, `--hover-ink-mix: 45%`.** It sets how far an inactive label's
|
|
95
|
+
colour moves from `--muted-foreground` toward `--foreground` on hover. This is
|
|
96
|
+
additive.
|
|
97
|
+
- **The selection engine no longer deforms.** With SegmentedTabs gliding, the dock's
|
|
98
|
+
layer switcher was the last indicator that stretched, and it now glides the same way.
|
|
99
|
+
We removed these from `@mkbabb/glass-ui/motion-core` with no replacement: the `deform`
|
|
100
|
+
parameter and the `SelectionDeform` type, `squishOnTravel` (from both
|
|
101
|
+
`useSelectionIndicator` and `useSelectionGroup`), the `activeValues` parameter of
|
|
102
|
+
`useSelectionIndicator`, the `onSelect` parameter of `useSelectionGroup`, and the
|
|
103
|
+
constants `DEFAULT_INDICATOR_MAX_STRETCH` and `INDICATOR_RELEASE_AT_ARRIVAL`. The
|
|
104
|
+
`--tab-indicator-max-stretch` token is deleted too. If you pass any of these, delete
|
|
105
|
+
the argument.
|
|
106
|
+
- **`.glass-capsule-hover` no longer moves, and `ToggleGroupItem` no longer squishes.** A
|
|
107
|
+
hover no longer scales a capsule (it used to grow by 1.015 on
|
|
108
|
+
`--ease-cartoon-punch`), and the capsule's `:active` press snap is gone, while the
|
|
109
|
+
catch-light stays. `ToggleGroupItem` drops `.tap-squish` and its `--scale-press`
|
|
110
|
+
adjustment. This changes paint and motion only, not the API. `.tap-squish` and
|
|
111
|
+
`useLiquidPress` on Button, Switch, Checkbox, Radio and the dock controls are
|
|
112
|
+
unchanged.
|
|
113
|
+
- **`--radius-pill` is now `1rem`, and there is a new `--radius-circle: 50%`.** A box up
|
|
114
|
+
to 32 px tall still shows a full pill, since the browser clamps a radius to half the
|
|
115
|
+
shorter side, but a taller box shows 16 px corners. Glass's own circles now use
|
|
116
|
+
`--radius-circle`: the avatar, status dot, dot ring, pager dot, switch thumb, radio dot,
|
|
117
|
+
dark-mode toggle, dock icon button, dialog close button, icon chip and chip remove
|
|
118
|
+
button, menu radio dot, expandable trigger and the collapsed dock at rest.
|
|
119
|
+
`--mark-stadium` is set for `.badge-atom` only. The dock's cut cap rests on
|
|
120
|
+
`--radius-dock` and cuts to `--radius-xs`. This is a visual break. A box of yours taller
|
|
121
|
+
than 32 px that read `--radius-pill`, `--radius-control`, `--radius-tab`,
|
|
122
|
+
`--radius-badge` or `--radius-dock` now shows corners, and a circle of yours that used
|
|
123
|
+
the pill radius on a box taller than 32 px should switch to `--radius-circle`.
|
|
124
|
+
- **`GlassDock` gains `expandOn`, `anchor` and `collapsedLabel`.** These are additive, and
|
|
125
|
+
each one defaults to the old behaviour (`"hover"`, `"center"` and `"Expand dock"`).
|
|
126
|
+
The new types `DockExpandOn` and `DockAnchor` are exported. With
|
|
127
|
+
`anchor="start"` or `anchor="end"` the root carries `data-anchor`, which your own CSS
|
|
128
|
+
can key on, and that is all `anchor` does. It does not move the dock or change its
|
|
129
|
+
morph. The morph grows from whichever edge your layout places the dock at, because its
|
|
130
|
+
origin is measured when the morph starts, so the dock, its `#persistent` group and its
|
|
131
|
+
panes all hold that edge. A dock your layout centres grows on both sides whatever
|
|
132
|
+
`anchor` says, so to hold an edge, place the dock in a wrapper sized to its content.
|
|
133
|
+
- **There is one dropdown system.**
|
|
134
|
+
- `DropdownMenu` now defaults to `modal: false`. Pass `modal` for a menu that must
|
|
135
|
+
make the rest of the page inert, and a modal menu still takes reka's body scroll
|
|
136
|
+
lock.
|
|
137
|
+
- `SelectContent` passes `bodyLock: false`, and its 4 px gap to the trigger is now
|
|
138
|
+
`sideOffset: 4`. The old default was `0` plus a `translate-*-1` nudge, which is gone.
|
|
139
|
+
- `ExpandableContainer` locks scrolling on `<html>` instead of `<body>`.
|
|
140
|
+
- The root element carries `scrollbar-gutter: stable` (through `:where(html)`, so it
|
|
141
|
+
has no specificity).
|
|
142
|
+
- `DropdownMenuContent`, `PopoverContent` and `SelectContent` pass
|
|
143
|
+
`collisionPadding: 16`.
|
|
144
|
+
- The menu, panel and listbox plates take
|
|
145
|
+
`max-inline-size: min(22rem, 100vw - 2rem)`. Their `max-block-size` is the available
|
|
146
|
+
height reka measures, with no `--overlay-max-block` clamp, and the element that
|
|
147
|
+
scrolls has `overflow-y: auto` and `overscroll-behavior: contain`. The command list
|
|
148
|
+
and the hint still use `--overlay-max-block`. The select viewport loses
|
|
149
|
+
`max-h-[inherit]`.
|
|
150
|
+
- Below 30rem, `SelectContent` opens as a bottom sheet and carries
|
|
151
|
+
`data-form="sheet"`.
|
|
152
|
+
|
|
153
|
+
If you relied on a dropdown making the page inert, pass `modal`. If you styled
|
|
154
|
+
`[data-slot="select-content"]` by its `data-side` translate, drop that rule.
|
|
155
|
+
- **There is a new `--radius-bar` token and a `data-shape="bar"` attribute.**
|
|
156
|
+
`--radius-bar` is `var(--radius-panel)` (12 px). `Button`, `ToggleGroupItem` and
|
|
157
|
+
`SegmentedTabs` carry `data-shape="bar"` and take `--radius-bar` when the label wraps,
|
|
158
|
+
when the box is taller than its rung (`min-block-size`), or when it is wider than
|
|
159
|
+
20rem. A single-line control on its rung keeps the pill, and `ToggleGroupItem` now
|
|
160
|
+
caps its pill radius at half its rung, as `Button` does. If your own CSS keyed on the
|
|
161
|
+
round corner of a wide or wrapping button, select `[data-shape="bar"]` instead.
|
|
162
|
+
|
|
163
|
+
### Styles, the aurora and the dock's hit box
|
|
164
|
+
|
|
165
|
+
- **Per-component sheets are no longer part of `@mkbabb/glass-ui/styles`.** The rules for
|
|
166
|
+
the Configurator, MusicStaff, Metric, Deck (stage, turn, capture and reveal), Carousel
|
|
167
|
+
and SortableList now load with their component's module. If you import the component
|
|
168
|
+
from its subpath or from the root, nothing changes for you. If you write these class
|
|
169
|
+
names on your own markup without importing the component, those rules no longer
|
|
170
|
+
reach it. The sheets are not package exports, so render the component or copy the
|
|
171
|
+
rules you need. The sheets still sit in `@layer components`, so they rank against the
|
|
172
|
+
entry exactly as before.
|
|
173
|
+
- **The aurora's static ground no longer follows nucleus positions.** If you moved nuclei
|
|
174
|
+
to shift the static ground (on the `"css"` substrate, or before the canvas starts),
|
|
175
|
+
you now see the ground the preset mounted with, while the live canvas still moves. To
|
|
176
|
+
change the ground, change the palette or the field shape. `.aurora-placeholder` is now
|
|
177
|
+
two elements, so a selector that assumed one element should select
|
|
178
|
+
`[data-aurora-ground-active]`.
|
|
179
|
+
- **A dock its owner opens takes taps while it morphs.** If you delayed your own scrim or
|
|
180
|
+
row handlers to wait out the dock's click-integrity window, you can arm them as soon
|
|
181
|
+
as the dock opens. The delay still applies when the dock opens from a hover.
|
|
182
|
+
- **A wheel over an expanded dock run that has reached its end no longer scrolls the
|
|
183
|
+
page** in Firefox, which now matches Chromium.
|
|
184
|
+
- **There are two new exports**, `auroraGroundKey(config)` and
|
|
185
|
+
`GpuSubstrateOptions.prepare`.
|
|
186
|
+
|
|
187
|
+
### Package layout, the shadow and a lighter entry
|
|
188
|
+
|
|
189
|
+
- **`dist/glass-ui.css` is removed, and `@mkbabb/glass-ui/styles` no longer carries any
|
|
190
|
+
component's own rules.** Each component chunk imports its own sheet
|
|
191
|
+
(`dist/<chunk>.css`), so a bundler consumer needs no change, since the sheet loads with
|
|
192
|
+
the component. A test suite that runs in Node and imports a glass component now meets
|
|
193
|
+
a `.css` import in many more chunks. Let the test runner's bundler transform
|
|
194
|
+
glass-ui, for example with vitest's `server.deps.inline: [/@mkbabb\/glass-ui/]`. If you
|
|
195
|
+
styled glass markup through those rules without rendering the component (copied
|
|
196
|
+
markup or server-rendered HTML), the rules no longer reach it, so render the component
|
|
197
|
+
or import its chunk.
|
|
198
|
+
- **A component subpath, and the root entry, can no longer be imported in plain Node
|
|
199
|
+
without a CSS loader**, because their chunks import stylesheets. This now holds for
|
|
200
|
+
every subpath whose components carry styles (`/aurora`, `/status-dot`,
|
|
201
|
+
`/toggle-group`, `/timeline` and others), as it already did for the root entry,
|
|
202
|
+
`/carousel`, `/configurator`, `/deck`, `/metric`, `/music-staff` and
|
|
203
|
+
`/sortable-list`. Composable and utility subpaths are unchanged. A Node script or test
|
|
204
|
+
that imports them should register a loader that maps `.css` to an empty module, or run
|
|
205
|
+
through a bundler (vitest with glass-ui inlined).
|
|
206
|
+
- **Component rules now load after the `/styles` entry, not inside it.** They stay in
|
|
207
|
+
`@layer components`, so your `utilities` layer still wins. Within `components`, a
|
|
208
|
+
component's rule now follows `components.css` and `accessibility.css` in document
|
|
209
|
+
order. We checked every element that carries one of the accessibility classes and
|
|
210
|
+
found none that also gets a component rule setting the same property.
|
|
211
|
+
- **`./styles.css` (`dist/component-styles.css`) now holds only the three shared
|
|
212
|
+
registers** (`track-well`, `track-flow` and `value-marks`). The component rules it used
|
|
213
|
+
to pull in through `glass-ui.css` now load with their chunks.
|
|
214
|
+
- **`dist/components/_shared/field/control.css` is no longer published.** Nothing ever
|
|
215
|
+
loaded it, because its rules ship through the field components' own styles, which are
|
|
216
|
+
now in `dist/control.css`.
|
|
217
|
+
|
|
8
218
|
## 10.1.2
|
|
9
219
|
|
|
10
220
|
Two behaviour changes, no type change. **A custom dock seat must now carry
|
|
11
221
|
`data-glass-dock-seat` to rove.**
|
|
12
222
|
|
|
13
|
-
- **
|
|
223
|
+
- **A morph reserves the size it settles at.** The dock no longer reserves an
|
|
14
224
|
old width on an expand or for the rest of a morph when its full pane changes (a
|
|
15
225
|
breakpoint that swaps its controls) or its host changes (a viewport or container that
|
|
16
226
|
resizes) while it is collapsed or morphing. So the page no longer scrolls sideways
|
|
@@ -75,28 +285,24 @@ One type-level change, below; no runtime break. Behaviour a consumer may notice:
|
|
|
75
285
|
open at their edge. A consumer override that positioned the sheet itself can be deleted.
|
|
76
286
|
- **New:** `<Skeleton shimmer>`.
|
|
77
287
|
|
|
78
|
-
## 10.0.0
|
|
288
|
+
## 10.0.0
|
|
79
289
|
|
|
80
|
-
|
|
81
|
-
(detector: `node -p "require('./package.json').version"`); the bump to `10.0.0` was the cut's
|
|
82
|
-
own act, ~~and nothing below is on the registry~~ [2026-09-22 · LIVE since `v10.0.0`; the cut is on the registry]. The breaking changes are the cascade layer, the three
|
|
290
|
+
The breaking changes are the cascade layer, the three
|
|
83
291
|
published names that leave, the `AuroraAtoms` narrowing and `text-caption`'s upright
|
|
84
|
-
paint
|
|
85
|
-
also
|
|
292
|
+
paint, so the release is a major, and the rest rides it. Two blocks written after 9.0.0
|
|
293
|
+
also ship in this release: _Amended after 9.0.0_ under §9.0.0 (the keyboard
|
|
86
294
|
registry) and _Amended after 9.0.0_ under §8.1.0 (`darkModeSyncScript`'s `defaultDark`
|
|
87
295
|
object form and write order). They are not repeated here. The non-breaking paint and
|
|
88
|
-
default changes
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
below: `cm-serif` leaves for `font-serif-math`, `useSidebarFollow` exempts by attribute,
|
|
296
|
+
default changes are listed under `CHANGELOG.md` 10.0.0; the one paint row below is here
|
|
297
|
+
because it changes what a reader sees enough to count as a break.
|
|
298
|
+
|
|
299
|
+
Four more breaks are marked below: `cm-serif` leaves for `font-serif-math`, `useSidebarFollow` exempts by attribute,
|
|
92
300
|
`parentId` names the direct parent, and `SegmentedTabs` goes generic (type-level:
|
|
93
|
-
`InstanceType<typeof SegmentedTabs>` no longer compiles; runtime unchanged).
|
|
301
|
+
`InstanceType<typeof SegmentedTabs>` no longer compiles; runtime unchanged). Those
|
|
94
302
|
rows run from _The token-root contract_ to the end of this section, and three of them are
|
|
95
303
|
paint or rendered-text rows (_`Metric`'s delta paints the one ink_, _Paint: three label
|
|
96
304
|
sites clear 4.5:1_, _The tooltip chip pairs its size with the caption leading_) beside the
|
|
97
|
-
|
|
98
|
-
[2026-09-22 · the cut: `package.json` declares `10.0.0` (`npm version 10.0.0`, the release
|
|
99
|
-
commit); the heading's LIVE bracket follows the registry publish, as §9.0.0's did.]
|
|
305
|
+
paint row above.
|
|
100
306
|
|
|
101
307
|
_This file ships in the package_
|
|
102
308
|
|
|
@@ -246,7 +452,7 @@ A `localStorage` accessor or `getItem` that throws (privacy mode, a sandboxed or
|
|
|
246
452
|
longer leaves `<html>` unstamped: the script treats an unreadable store as ABSENT, so a
|
|
247
453
|
scalar `defaultDark` falls to its one arm (by default, `prefers-color-scheme`) and the
|
|
248
454
|
object form to its `absent` arm. Every emission grows 13 bytes, so every hash moves. The
|
|
249
|
-
old column is the source
|
|
455
|
+
old column is the source as amended after 9.0.0 (the table under _Amended after 9.0.0_
|
|
250
456
|
under §8.1.0); the published 9.0.0 `{ normalize: true }` hash,
|
|
251
457
|
`sha256-Xtel8uEYWeIEsJMO4TZWEump78fncLVrH4/fe166vIw=`, moves to the same new value.
|
|
252
458
|
|
|
@@ -277,11 +483,10 @@ arm is untouched.
|
|
|
277
483
|
|
|
278
484
|
Everything that reads them goes darker in light mode: `Badge`'s success/warning plates,
|
|
279
485
|
`StatusDot` and its inner marks, the `Toast` and `Alert` tone wash, rim and glyph,
|
|
280
|
-
|
|
486
|
+
the `.input-pill:user-valid` border, and every
|
|
281
487
|
`text-success`/`text-warning`. As text ink, `--success` is 3.30 on the card, under
|
|
282
|
-
1.4.3's 4.5:1 — keep it off body copy.
|
|
283
|
-
|
|
284
|
-
neither token; see _`Metric`'s delta paints the one ink_ below.]
|
|
488
|
+
1.4.3's 4.5:1 — keep it off body copy. `Metric`'s delta paints `--foreground` from
|
|
489
|
+
10.0.0 and reads neither token; see _`Metric`'s delta paints the one ink_ below.
|
|
285
490
|
|
|
286
491
|
_The token-root contract_
|
|
287
492
|
|
|
@@ -443,13 +648,12 @@ Paint only. The tooltip chip reads `--tooltip-text` with `--type-leading-caption
|
|
|
443
648
|
it inherited body's 1.5 before, so a one-line hint is about 2.4 px shorter at the 12 px
|
|
444
649
|
caption floor.
|
|
445
650
|
|
|
446
|
-
## 9.0.0
|
|
651
|
+
## 9.0.0
|
|
447
652
|
|
|
448
|
-
|
|
449
|
-
landed after the `8.1.0` section below was written, and a removal cannot ride a minor
|
|
450
|
-
so the
|
|
451
|
-
|
|
452
|
-
names is superseded here, not overwritten.
|
|
653
|
+
This section exists because a breaking change
|
|
654
|
+
landed after the `8.1.0` section below was written, and a removal cannot ride a minor,
|
|
655
|
+
so the release became a major and `8.1.0`'s purely additive content rides it. 8.1.0 was
|
|
656
|
+
never published; its section keeps its heading so the notes stay where they were written.
|
|
453
657
|
|
|
454
658
|
_The `./canvas` subpath is removed_
|
|
455
659
|
|
|
@@ -460,65 +664,45 @@ _The `./canvas` subpath is removed_
|
|
|
460
664
|
The subpath published six names and the root barrel already published all six, so this
|
|
461
665
|
removes a door and no room. `canvas2d` remains the internal substrate it always was; no
|
|
462
666
|
file moved, no symbol was renamed, and nothing was deprecated first — a clean break, per
|
|
463
|
-
this document's own rule.
|
|
464
|
-
the fifteen generated sibling roots returned no importer of the specifier, in code or in
|
|
465
|
-
CSS.
|
|
667
|
+
this document's own rule.
|
|
466
668
|
|
|
467
669
|
_The `./search` subpath is removed, and this one takes the room with the door_
|
|
468
|
-
[2026-08-29 · BK #42 W-SEARCH, landed `76b594c8`]
|
|
469
670
|
|
|
470
671
|
| removed | migration |
|
|
471
672
|
| --- | --- |
|
|
472
|
-
| `@mkbabb/glass-ui/search` | The subpath is gone and nothing republishes its names. The fuzzy engine is
|
|
473
|
-
| `SearchBar` |
|
|
673
|
+
| `@mkbabb/glass-ui/search` | The subpath is gone and nothing republishes its names. The fuzzy engine is internal (`src/composables/search/`): it serves the library's own dock search and is not a public surface. |
|
|
674
|
+
| `SearchBar` | Deleted with its `searchFieldVariants` CVA. No replacement component ships: the `.input-bar` recipe (on `./styles`, which SURVIVES untouched) composes with your own input element — that recipe was always the paint; the chrome was 79 lines over it. |
|
|
474
675
|
| `FuzzySearchState` · `SearchableItem` · `SearchIndex` · `SearchResult` · `SearchVariant` · `SearchVariants` · `UseFuzzySearchOptions` and every other `/search` type | Die with the door. Type your own items; the engine's shapes are internal. |
|
|
475
676
|
|
|
476
677
|
The root barrel never carried `SearchBar` or any fuzzy name, so `./search` was the only
|
|
477
|
-
door
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
import statement whose component no longer exists. [2026-08-29 · the batch-close
|
|
481
|
-
overfitting audit found the census one edge short: a FIFTH edge lives outside value.js —
|
|
482
|
-
`bbnf-lang/playground/src/components/docs/DocsSidebar.vue:4-5` imports `FuzzySearch` /
|
|
483
|
-
`useFuzzySearch` / `SearchableItem` from `./search` at playground pin `^3.0.0`. The
|
|
484
|
-
four-edge claim was value.js-true and constellation-short; the edge routes to the #76
|
|
485
|
-
band for its own relay addendum.] The known `.input-bar` selector sites
|
|
486
|
-
read the RECIPE, not the component, and are unaffected.
|
|
678
|
+
door, so the removal is total, not a narrowing. A file that imports from it needs one
|
|
679
|
+
import statement deleted per component it used. Selectors that read `.input-bar` read the
|
|
680
|
+
recipe, not the component, and are unaffected.
|
|
487
681
|
|
|
488
682
|
_The `<FourierField>` `colorResolver` prop is removed_
|
|
489
|
-
[2026-09-17 · O-20 CUT-4/5 — the row was owed at the cut and is written now]
|
|
490
683
|
|
|
491
684
|
| removed | migration |
|
|
492
685
|
| --- | --- |
|
|
493
|
-
| `<FourierField :color-resolver>` | Drop the binding and keep the `color` you already pass — the component resolves that value itself. Drop the `import { defaultBlobColorResolver } from "@mkbabb/glass-ui/color"` above it too,
|
|
686
|
+
| `<FourierField :color-resolver>` | Drop the binding and keep the `color` you already pass — the component resolves that value itself. Drop the `import { defaultBlobColorResolver } from "@mkbabb/glass-ui/color"` above it too, unless the file uses it for something else; at 10.0.0 the name leaves `./color`, so drop it then in any case (see _Two names leave `./color`_ under 10.0.0). |
|
|
494
687
|
|
|
495
|
-
|
|
496
|
-
`git tag --contains 4a86570b` prints `v9.0.0` and nothing else. The published
|
|
688
|
+
9.0.0 is the first release without it. The published
|
|
497
689
|
`FourierField.vue.d.ts` at 9.0.0 declares seven props — `config?`, `spectrum?`,
|
|
498
690
|
`getPalette?`, `color?`, `seed?`, `freeze?`, `interactive?` — no
|
|
499
691
|
`colorResolver`, and `colorResolver` survives in the package only as two sentences of
|
|
500
|
-
prose in `dist/composables/color/index.d.ts
|
|
692
|
+
prose in `dist/composables/color/index.d.ts`, corrected in 10.0.0.
|
|
501
693
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
7.0.0 and 8.0.0 and is gone at 9.0.0; the repair is one deleted attribute per site.
|
|
507
|
-
Those same two lines also carry `variant="hero"` / `variant="final"`, which have been
|
|
508
|
-
dead since **4.1.0** (`cb1e09fd`, 2026-06-19) and are inert attributes today — delete
|
|
509
|
-
them in the same edit.
|
|
694
|
+
At 3.13.0 `colorResolver: ColorResolver` was **required**, not optional. It relaxed to
|
|
695
|
+
optional at 7.0.0 and 8.0.0 and is gone at 9.0.0; the repair is one deleted attribute per
|
|
696
|
+
site. A `variant="hero"` or `variant="final"` on the same element has been inert since
|
|
697
|
+
**4.1.0**; delete it in the same edit.
|
|
510
698
|
|
|
511
699
|
`ColorResolver` and `defaultBlobColorResolver` both still ship on `./color` and are
|
|
512
|
-
**unchanged by this
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
`./color` at 10.0.0, the next major, so the "keep importing" allowance ends there. See
|
|
517
|
-
_Two names leave `./color`_ under 10.0.0 for the one-line replacement.]
|
|
700
|
+
**unchanged by this release**, so a consumer may keep importing `defaultBlobColorResolver`
|
|
701
|
+
for its own use at 9.0.0; what no longer exists is the prop that consumed it. Both names
|
|
702
|
+
leave `./color` at 10.0.0; see _Two names leave `./color`_ under 10.0.0 for the one-line
|
|
703
|
+
replacement.
|
|
518
704
|
|
|
519
705
|
_The `<FourierField>` instance API loses `renderAt` and gains `headT` + `flick`_
|
|
520
|
-
[2026-09-18 · O-20 CURSOR — the expose delta had no row; measured off the two published
|
|
521
|
-
`FourierField.vue.d.ts`]
|
|
522
706
|
|
|
523
707
|
| removed | migration |
|
|
524
708
|
| --- | --- |
|
|
@@ -543,10 +727,8 @@ injects one impulse into the clock, capped and floored like any other. Neither r
|
|
|
543
727
|
API.
|
|
544
728
|
|
|
545
729
|
_Two earlier majors' removals get their rows here_
|
|
546
|
-
[2026-09-17 · O-20 A-4-RIDER + B-3 — the rows were missing entirely; they are written
|
|
547
|
-
under the major that actually shipped without each name, not under this one]
|
|
548
730
|
|
|
549
|
-
Thirteen `@theme` tokens and three `@utility` classes left the published CSS at
|
|
731
|
+
These rows are written under the major that actually shipped without each name. Thirteen `@theme` tokens and three `@utility` classes left the published CSS at
|
|
550
732
|
**8.0.0** and one class left at **7.0.0**, none with a MIGRATION row. The rows are now
|
|
551
733
|
in §8.0.0 (_Theme tokens removed_ · _Classes and utilities removed_) and §7.0.0
|
|
552
734
|
(_`.paper-texture` is removed_). **9.0.0 removed no token and no utility**: the
|
|
@@ -554,9 +736,6 @@ in §8.0.0 (_Theme tokens removed_ · _Classes and utilities removed_) and §7.0
|
|
|
554
736
|
byte-identical between 8.0.0 and 9.0.0 (242 and 47 on both).
|
|
555
737
|
|
|
556
738
|
_`GlassDock`'s props fold onto `collapse`_
|
|
557
|
-
[2026-09-22 · O-32 §1.1 — landed at `ac471032` (BK #47 W1, 2026-08-24); `git tag
|
|
558
|
-
--contains ac471032` prints `v9.0.0` first. The cut shipped with no row; it is written
|
|
559
|
-
now, measured off `useDockShellProps.ts` and `dock/index.ts` at `v8.0.0` and `v9.0.0`]
|
|
560
739
|
|
|
561
740
|
| removed | migration |
|
|
562
741
|
| --- | --- |
|
|
@@ -575,26 +754,23 @@ now, measured off `useDockShellProps.ts` and `dock/index.ts` at `v8.0.0` and `v9
|
|
|
575
754
|
(`false | "closed" | "open"`) and `DockProps`.
|
|
576
755
|
|
|
577
756
|
_`--dock-max-inline-size` is removed_
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
757
|
+
|
|
758
|
+
Its reader left at 9.0.0 and its declaration at 10.0.0, so the row sits under the release
|
|
759
|
+
that stopped reading it. It is an unlayered `:root` token, outside the `@theme` and
|
|
760
|
+
`@utility` name sets counted above.
|
|
582
761
|
|
|
583
762
|
| removed | migration |
|
|
584
763
|
| --- | --- |
|
|
585
|
-
| `--dock-max-inline-size` | Nothing reads it. 9.0.0 deleted its last reader with the per-instance inline cap
|
|
764
|
+
| `--dock-max-inline-size` | Nothing reads it. 9.0.0 deleted its last reader with the per-instance inline cap, so setting it did nothing at 9.0.0. The declaration in `tokens/offsets.css` is deleted at 10.0.0. To bound a dock's inline size, write `max-inline-size` on the dock's class. |
|
|
586
765
|
|
|
587
766
|
_Eight `./handmark` types leave with the barrel's reshape_
|
|
588
|
-
[2026-09-22 · O-23 L-5 — removed at `5a69ed9f` (BK #51 γ4, GF-HANDMARK, 2026-08-25);
|
|
589
|
-
`git tag --contains` prints `v9.0.0` first. The cut shipped with no row; it is written
|
|
590
|
-
now, measured off `handmark/index.ts` at `v8.0.0` and `v9.0.0`]
|
|
591
767
|
|
|
592
768
|
| removed | migration |
|
|
593
769
|
| --- | --- |
|
|
594
770
|
| `Brush` · `BrushName` · `BlendMode` · `TaperSpec` · `InkPath` | No successor. The brush continuum is gone: `<HandMark>` inks one pen and takes no `brush` prop. |
|
|
595
771
|
| `HandMarkProps` · `HandAnimation` · `MarkBox` | No successor type. `<HandMark>` declares five props at 9.0.0 (`shape` · `color` · `weight` · `seed` · `draw`); `draw` is the draw-on switch. `HandShape` stays. |
|
|
596
772
|
|
|
597
|
-
The same
|
|
773
|
+
The same change took 25 more names off the barrel: `BRUSHES`, `resolveBrush`,
|
|
598
774
|
`lerpBrush`, `StampFn`, `shapeGeom`, `ShapeGeom`, `boilLines`, `naturalUnderlinePoints`,
|
|
599
775
|
`VB_W`, `VB_H`, `UNDERLINE_GAP`, `ink`, `SVGFragment`, `grainFilter`, `hasGrain`,
|
|
600
776
|
`getStroke`, `getStrokePoints`, `getSvgPathFromStroke`, `StrokeOptions`, `InputPoint`,
|
|
@@ -605,9 +781,9 @@ polyline with the component's own pen). `HandMark`, `HandShape` and `serialize`
|
|
|
605
781
|
unchanged.
|
|
606
782
|
|
|
607
783
|
_Amended after 9.0.0_
|
|
608
|
-
|
|
609
|
-
this section
|
|
610
|
-
|
|
784
|
+
|
|
785
|
+
Everything from here to the end of this section shipped in 10.0.0, not in 9.0.0. Both
|
|
786
|
+
changes are behavioural, not renames.
|
|
611
787
|
|
|
612
788
|
**The keyboard registry honours `defaultPrevented`, and modal overlays quiet the app's
|
|
613
789
|
bindings.** Nothing is renamed and nothing is removed. Two behaviours change, and a
|
|
@@ -647,14 +823,10 @@ the page operable and keeps its keyboard with it.
|
|
|
647
823
|
of what the app answers to, not a live capability probe, and a help overlay is itself a
|
|
648
824
|
modal that filtering would hand an empty list.
|
|
649
825
|
|
|
650
|
-
## 8.1.0
|
|
651
|
-
as a version number by the `9.0.0` section above — the content below stands, the cut it
|
|
652
|
-
lands in is now the major] [2026-09-17 · that major is on the registry: 9.0.0]
|
|
826
|
+
## 8.1.0
|
|
653
827
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
next minor this additive change cuts at.~~ [2026-09-17 · SHIPPED inside 9.0.0 — the detector prints `9.0.0`; everything below is live on the registry.] Nothing below is breaking; a caller who does
|
|
657
|
-
not opt in has nothing to do.
|
|
828
|
+
8.1.0 was never published: everything below shipped inside 9.0.0. Nothing below is
|
|
829
|
+
breaking; a caller who does not opt in has nothing to do.
|
|
658
830
|
|
|
659
831
|
_`darkModeSyncScript()` gains three options — `defaultDark` · `queryOverride` · `normalize`_
|
|
660
832
|
|
|
@@ -673,9 +845,9 @@ and nothing else from this module).
|
|
|
673
845
|
Precedence is **query > storage > default**, in that order and no other.
|
|
674
846
|
|
|
675
847
|
_The default emission is BYTE-IDENTICAL — deliberately, and it nearly was not_
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
moves_ under 10.0.0.
|
|
848
|
+
|
|
849
|
+
This holds through 9.0.0. At 10.0.0 every emission moves, the default to 313 bytes; see
|
|
850
|
+
_`darkModeSyncScript()` hardens its read, and every CSP hash moves_ under 10.0.0.
|
|
679
851
|
|
|
680
852
|
The emitted `<head>` script is exactly what a `script-src 'sha256-…'` CSP pins, and a
|
|
681
853
|
re-hashed default would be **blocked at first paint, silently** — no type error, no
|
|
@@ -710,14 +882,14 @@ _Two behaviours are RATIFIED rather than left to be discovered_
|
|
|
710
882
|
says. If you build these URLs from a boolean, emit the flag or omit it; do not emit
|
|
711
883
|
it with a value.
|
|
712
884
|
|
|
713
|
-
Both are held by named
|
|
885
|
+
Both are held by named tests in
|
|
714
886
|
`tests/composables/dark/darkModeSyncScript.test.ts`, so a silent reorder or a swap to a
|
|
715
887
|
value grammar turns the suite RED rather than surprising a consumer.
|
|
716
888
|
|
|
717
889
|
_Amended after 9.0.0_
|
|
718
|
-
|
|
719
|
-
end of this section
|
|
720
|
-
above are
|
|
890
|
+
|
|
891
|
+
Everything from here to the end of this section shipped in 10.0.0, not in 9.0.0. The
|
|
892
|
+
three rows above are what 9.0.0 shipped.
|
|
721
893
|
|
|
722
894
|
**`defaultDark` widens to answer the absent case and the `"auto"` case separately.**
|
|
723
895
|
|
|
@@ -737,9 +909,8 @@ paint in private browsing now knows what that was.
|
|
|
737
909
|
|
|
738
910
|
**One CSP hash moves, and only one.** The four opt-in byte counts are unmoved and three
|
|
739
911
|
of the four hashes are unmoved; `{normalize: true}` reorders its bytes, so its hash
|
|
740
|
-
moves. Every figure below is derived from the function,
|
|
741
|
-
|
|
742
|
-
column read out of the published `dist/dark.js`:
|
|
912
|
+
moves. Every figure below is derived from the function, and the 9.0.0 row is read out of
|
|
913
|
+
the published `dist/dark.js`:
|
|
743
914
|
|
|
744
915
|
```
|
|
745
916
|
darkModeSyncScript() 300 B sha256-VTba/T+6rX/y5+Gk2oyLaaYBdLf4xSZtXnc7kMYziI8= unmoved
|
|
@@ -753,9 +924,9 @@ darkModeSyncScript() 300 B sha256-VTba/T+6rX/y5+Gk2oyLaaYBd
|
|
|
753
924
|
```
|
|
754
925
|
|
|
755
926
|
If you pin the normalize emission under `script-src 'sha256-…'`, re-pin it at the bump
|
|
756
|
-
or first paint is blocked.
|
|
757
|
-
|
|
758
|
-
|
|
927
|
+
or first paint is blocked. Through this amendment the default emission is
|
|
928
|
+
byte-identical and needs nothing; the 10.0.0 read hardening moves the default too, and
|
|
929
|
+
every form re-pins at that bump.
|
|
759
930
|
|
|
760
931
|
_Wire it with a build plugin; do not transcribe the bytes_
|
|
761
932
|
|
|
@@ -800,13 +971,11 @@ than pinning a literal you maintain by hand — it is the same string on both si
|
|
|
800
971
|
|
|
801
972
|
## 8.0.0
|
|
802
973
|
|
|
803
|
-
**
|
|
804
|
-
`
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
deletion roll is wider: `HeaderRibbon` went at `4bf53962`, outside the batch, and its
|
|
809
|
-
`./header-ribbon` key is not one of the two counted here. Its entry is below TagsInput's.].
|
|
974
|
+
**The export surface is re-cut: one batched change and six subpath movements.**
|
|
975
|
+
`exports` goes **66 → 70 keys**. Clean breaks throughout: no aliases, no deprecation
|
|
976
|
+
window. Two keys retire, six are added, and one component is deleted in that batch. The
|
|
977
|
+
major deletes more than that: `HeaderRibbon` and several other components left in the
|
|
978
|
+
same release, each with its own entry below TagsInput's.
|
|
810
979
|
|
|
811
980
|
_Package subpaths_
|
|
812
981
|
|
|
@@ -814,7 +983,7 @@ _Package subpaths_
|
|
|
814
983
|
| --- | --- | --- |
|
|
815
984
|
| `@mkbabb/glass-ui/dropdown-menu` | `@mkbabb/glass-ui/menu` | Re-point the specifier. **The fourteen `DropdownMenu*` SFC names are UNCHANGED** — the family's directory and door moved, not its symbols, so a one-line import edit is the whole migration. The old name was wrong in both directions: the same 28 reka imports serve both the click and the context arm, and `./context-menu` was never exported at all. |
|
|
816
985
|
| `@mkbabb/glass-ui/forms` | `@mkbabb/glass-ui/input` · `/textarea` · `/checkbox` · `/radio-group` | Split the import by component. `./forms` was a hand-curated union of four components — a second door onto the same source — and the rule is now stateable: **one subpath per public component, no exceptions in either direction.** |
|
|
817
|
-
|
|
|
986
|
+
| `@mkbabb/glass-ui/drawer` | `@mkbabb/glass-ui/sheet` | `Drawer` folded whole into `Sheet` (the detent is a size), so `./drawer` retired with the fold; this is a fold, not a deletion. `<Drawer>` + `<DrawerContent>` → `<Dialog>` + `<SheetContent side="bottom" :detents="[…]">` — a detent is a size, so `left`/`right` ladders are as legal as `bottom`/`top`. `mode="live-behind"` → `<Dialog :modal="false">`. `DrawerHeader` · `DrawerTitle` · `DrawerDescription` · `DrawerFooter` → the `Dialog*` parts on `./dialog`. `direction` (`DrawerDirection`) → `side`; `snapPoints` → `detents`, ascending fractions of the anchored axis (a string snap point converts to its fraction); `activeSnapPoint` → `v-model:detent`. Two defaults flip: `direction` defaulted to `bottom`, `side` defaults to `right`, so write `side="bottom"` for a bottom sheet; the live-behind ladder `[0.12, 0.5, 1]` was implicit, so write `:detents="[0.12, 0.5, 1]"` to keep it. `DrawerStage` has no successor: the stage was deleted in this major (see **The immersive stage scrim is a private stage-effect role, reconnected to `--glass-level`** under §8.0.0). |
|
|
818
987
|
| `ControlSize` (from `/forms`) | `@mkbabb/glass-ui/input` | The shared `sm \| md \| lg` union the control register threads as `size?`. Input is the canonical member, so `./input` is its one published door. |
|
|
819
988
|
| `useUserInvalidAria` (from `/forms`) | `@mkbabb/glass-ui` (root) | No move — it was **already** on the root barrel, which is now its only door. |
|
|
820
989
|
|
|
@@ -823,14 +992,9 @@ _Deleted — `TagsInput`_
|
|
|
823
992
|
`TagsInput`, `TagsInputInput`, `TagsInputItem`, `TagsInputItemDelete`,
|
|
824
993
|
`TagsInputItemText` and their five prop types are **deleted from the root barrel**, with
|
|
825
994
|
the component directory, its story and its contract test. It was never published on a
|
|
826
|
-
subpath
|
|
827
|
-
negative control) found **zero specifier edges and zero symbol edges**. There is no
|
|
828
|
-
replacement: compose `<Chip>` inside a `<LabeledField>` if you need the shape.
|
|
995
|
+
subpath. There is no replacement: compose `<Chip>` inside a `<LabeledField>` if you need the shape.
|
|
829
996
|
|
|
830
997
|
_Deleted — `HeaderRibbon`_
|
|
831
|
-
[2026-09-18 · O-26 R-11-RIDER — the component went at this cut (`4bf53962`, part of the Φ5
|
|
832
|
-
deletion spine) and had no entry until now, outside the export re-cut the count sentence
|
|
833
|
-
above tallies.]
|
|
834
998
|
|
|
835
999
|
`HeaderRibbon` is deleted with the `@mkbabb/glass-ui/header-ribbon` subpath and both of its
|
|
836
1000
|
types, `HeaderRibbonProps` and `HeaderRibbonPlacement`. Delete the import and the specifier
|
|
@@ -845,7 +1009,7 @@ on a glass surface, and you compose that yourself under your own wrapper:
|
|
|
845
1009
|
</div>
|
|
846
1010
|
```
|
|
847
1011
|
|
|
848
|
-
On 7.0.0 the same plate was `material="functional"`; that prop is deleted
|
|
1012
|
+
On 7.0.0 the same plate was `material="functional"`; that prop is deleted in this release and
|
|
849
1013
|
`functional` was the `floating` tier under a second name — see the Surface row below.
|
|
850
1014
|
|
|
851
1015
|
The `role` and the label belong to the consumer's wrapper because the landmark is the
|
|
@@ -855,9 +1019,6 @@ already removed AT 7.0.0; see `## 7.0.0` below. The published 7.0.0 component is
|
|
|
855
1019
|
persistent-only, and renders expanded from first paint.
|
|
856
1020
|
|
|
857
1021
|
_Deleted — `AnimatedDigit`_
|
|
858
|
-
[2026-09-18 · O-26 R-11-RIDER-2 — retired at this cut (`4bf53962`, the Φ5 deletion spine)
|
|
859
|
-
with no entry until now. Measured, not recalled: the `exports` key set goes **74 → 70**
|
|
860
|
-
from 7.0.0 to 8.0.0, and this subpath is one of the eleven that retire.]
|
|
861
1022
|
|
|
862
1023
|
`AnimatedDigit` is deleted with the `@mkbabb/glass-ui/animated-digit` subpath and its two
|
|
863
1024
|
types, `AnimatedDigitProps` and `AnimatedDigitMode`. There is no successor: nothing in the
|
|
@@ -865,8 +1026,6 @@ library rolls a digit, and a counter that animates its own glyphs is the caller'
|
|
|
865
1026
|
surface's. Delete the import and the specifier together.
|
|
866
1027
|
|
|
867
1028
|
_Deleted — `CompletionSeal`_
|
|
868
|
-
[2026-09-18 · O-26 R-11-RIDER-2 — retired at this cut (`4bf53962`, the Φ5 deletion spine)
|
|
869
|
-
with no entry until now.]
|
|
870
1029
|
|
|
871
1030
|
`CompletionSeal` is deleted with the `@mkbabb/glass-ui/completion-seal` subpath, its types
|
|
872
1031
|
`CompletionSealProps` and `CompletionSealShape`, and the composable door beside it —
|
|
@@ -874,8 +1033,6 @@ with no entry until now.]
|
|
|
874
1033
|
successor, composable included: the whole seal went at once.
|
|
875
1034
|
|
|
876
1035
|
_Deleted — `InstrumentChassis`_
|
|
877
|
-
[2026-09-18 · O-26 R-11-RIDER-2 — retired at this cut (`4bf53962`, the Φ5 deletion spine)
|
|
878
|
-
with no entry until now.]
|
|
879
1036
|
|
|
880
1037
|
`InstrumentChassis` is deleted with the `@mkbabb/glass-ui/instrument-chassis` subpath and
|
|
881
1038
|
all five of its types: `InstrumentChassisProps`, `InstrumentChassisBoundary`,
|
|
@@ -884,8 +1041,6 @@ There is no successor component. The proportion and reserve it framed are layout
|
|
|
884
1041
|
caller now owns outright.
|
|
885
1042
|
|
|
886
1043
|
_Deleted — `LiquidGrid`_
|
|
887
|
-
[2026-09-18 · O-26 R-11-RIDER-2 — retired at `bda718ac` ("W3 clean deletes"), inside this
|
|
888
|
-
major, with no entry until now.]
|
|
889
1044
|
|
|
890
1045
|
`LiquidGrid` is deleted with the `@mkbabb/glass-ui/liquid-grid` subpath and everything that
|
|
891
1046
|
door published: the `useLiquidGrid` composable with `LiquidGridHandle` and
|
|
@@ -897,18 +1052,15 @@ door published: the `useLiquidGrid` composable with `LiquidGridHandle` and
|
|
|
897
1052
|
that type has its own door on `@mkbabb/glass-ui/color`. There is no successor.
|
|
898
1053
|
|
|
899
1054
|
_Deleted — `PaperBackdrop`_
|
|
900
|
-
[2026-09-18 · O-26 R-11-RIDER-2 — retired at this cut (`4bf53962`, the Φ5 deletion spine)
|
|
901
|
-
with no entry until now.]
|
|
902
1055
|
|
|
903
1056
|
`PaperBackdrop` is deleted with the `@mkbabb/glass-ui/paper-backdrop` subpath and its type
|
|
904
1057
|
`PaperBackdropProps`. There is no successor component; a page-level ground is a background
|
|
905
1058
|
you own.
|
|
906
1059
|
|
|
907
1060
|
_Deleted — `Pulse`_
|
|
908
|
-
|
|
909
|
-
StatusDot
|
|
910
|
-
|
|
911
|
-
component's own retirement.]
|
|
1061
|
+
|
|
1062
|
+
The `StatusDot` prop table below retires the `pulse` prop; this entry is the `Pulse`
|
|
1063
|
+
component itself.
|
|
912
1064
|
|
|
913
1065
|
`Pulse` is deleted with the `@mkbabb/glass-ui/pulse` subpath and its exported `PulseState`.
|
|
914
1066
|
This one is a merge rather than a drop, so it has a successor: liveness is an axis of
|
|
@@ -933,8 +1085,6 @@ it. Any call site that leant on Pulse's default must name the state. Import from
|
|
|
933
1085
|
below for the rest.
|
|
934
1086
|
|
|
935
1087
|
_Deleted — `WatercolorDot`_
|
|
936
|
-
[2026-09-18 · O-26 R-11-RIDER-2 — retired at `62305f4a` ("the hero ornament dies, the ramp
|
|
937
|
-
is the library's own hand"), inside this major, with no entry until now.]
|
|
938
1088
|
|
|
939
1089
|
`WatercolorDot` is deleted with the `@mkbabb/glass-ui/watercolor-dot` subpath and every
|
|
940
1090
|
symbol that door published: `useWatercolorBlob` with `UseWatercolorBlobOptions` and
|
|
@@ -947,9 +1097,6 @@ library (`src/composables/glass/procedural/prng.ts`) behind no published door, a
|
|
|
947
1097
|
pinned 7.0.0 package and into your own tree.
|
|
948
1098
|
|
|
949
1099
|
_Six composables leave `./motion`, `./motion-core` and the root barrel_
|
|
950
|
-
[2026-09-22 · O-23 L-5 — retired at `bda718ac` ("W3 clean deletes", 2026-07-20; `git tag
|
|
951
|
-
--contains` prints `v8.0.0` first), inside this major, with no entry until now; written
|
|
952
|
-
because the census rows below point at them]
|
|
953
1100
|
|
|
954
1101
|
| removed | migration |
|
|
955
1102
|
| --- | --- |
|
|
@@ -970,10 +1117,6 @@ If you style the menu family from outside, the selectors renamed with the family
|
|
|
970
1117
|
namespace.
|
|
971
1118
|
|
|
972
1119
|
_Theme tokens removed — thirteen `@theme` names_
|
|
973
|
-
[2026-09-17 · O-20 A-4-RIDER — these left the published CSS at this cut and had no row
|
|
974
|
-
until now. Measured, not recalled: the `@theme` custom-property name set of the
|
|
975
|
-
published `./styles` closure goes **246 → 242** from 7.0.0 to 8.0.0 and is unchanged
|
|
976
|
-
from 8.0.0 to 9.0.0, so every one of the thirteen belongs here.]
|
|
977
1120
|
|
|
978
1121
|
If you read one of these by name, it resolves to nothing today. Each row names what
|
|
979
1122
|
carries the value now, or says there is nothing.
|
|
@@ -1018,51 +1161,43 @@ are very much alive: the register re-cut onto SIX role rungs — `--spring-dock`
|
|
|
1018
1161
|
`--spring-present` · `--spring-press` · `--spring-panel` · `--spring-world` ·
|
|
1019
1162
|
`--spring-bloom`, each with its own `-duration`, `-exit-duration` and `-settle` clock. A
|
|
1020
1163
|
recipe that wants one by utility name reaches the token directly:
|
|
1021
|
-
`ease-(--spring-press)`. A consumer that
|
|
1022
|
-
|
|
1164
|
+
`ease-(--spring-press)`. A consumer that wants the utilities back declares them in its
|
|
1165
|
+
own CSS. The old spellings map by intent, not by name: `--ease-spring` and
|
|
1023
1166
|
`--ease-spring-snappy` were `--spring-snappy`, which is now `--spring-present` (or
|
|
1024
1167
|
`--spring-dock` for dock motion); `--ease-spring-smooth` and `--ease-spring-bouncy` also
|
|
1025
1168
|
land on `--spring-present`; `--ease-spring-gentle` was `--spring-gentle`, now
|
|
1026
1169
|
`--spring-world`; `--ease-spring-press` is the one that kept its name, `--spring-press`.
|
|
1027
1170
|
|
|
1028
1171
|
_Classes and utilities removed_
|
|
1029
|
-
[2026-09-17 · O-20 B-3 — the `@utility` name set of the published `./styles` closure
|
|
1030
|
-
goes **49 → 47** at this cut (three out, one in) and is unchanged at 9.0.0.]
|
|
1031
1172
|
|
|
1032
1173
|
| removed | what to write instead |
|
|
1033
1174
|
| --- | --- |
|
|
1034
1175
|
| `glass-fill` | `glass-plate`, which landed in the very commit that removed this one (`4b1a9733`): `.glass-card` moved from `@apply glass-fill` to `@apply glass-plate` there. It paints `background: var(--glass-veil)`, and you pick the rung by declaring `--glass-veil-tier: var(--glass-veil-quiet)` — or `--glass-veil-wash`, `--glass-veil-resting`, `--glass-veil-floating`, `--glass-veil-overlay` — in the place `--glass-fill-rung` used to go. The old TINT mix has no hand-composed equivalent: `--glass-bg-resting`, `--glass-tint-source` and `--glass-tint-strength` all have 0 declarations at 9.0.0. `--glass-fill-tinted` is **not** the successor — it has shipped beside `glass-fill` since 5.0.0 (`216e1d54`), and still beside it in the 7.0.0 package, as a tint OVERLAY. It is itself an ordinary custom property, a `color-mix` that READS the two registered knobs: `@property --glass-fill-tint` (`<color>`, initial `transparent`) and `@property --glass-fill-strength` (`<percentage>`, initial `0%`), both registered at the foot of `styles/tokens/glass.css`. With both at their initials the mix resolves to a fully transparent stop, so reading `--glass-fill-tinted` as a `background` paints nothing until you set both knobs yourself. |
|
|
1035
1176
|
| `text-admin-label` | `text-mono-micro`, plus `uppercase font-medium` wherever the caps or the 500 weight carried meaning — the successor does not include them. The old recipe was `font-mono` · `--type-admin-label` (10px) · `line-height: 1` · `uppercase` · `tracking-caps` · `font-weight: 500`; the new one is `font-mono` · `--type-micro` (11px) · `line-height: 1.25` · `letter-spacing: 0.025em`. Landed `6b450f22`. |
|
|
1036
|
-
| `touch-hit-area` | Removed, no drop-in utility.
|
|
1177
|
+
| `touch-hit-area` | Removed, no drop-in utility. Do not rebuild it from its old body (a centred `::before` with `pointer-events: none`): that halo is inert and never expanded a tap target. `--touch-target` (`2.75rem`) still ships and is still what the components read, and there are two ways to reach it. **The host as the seat, the paint on a child** — the host wears `.control-bit`, which sizes it to `max(var(--touch-target), face)` on both axes, in flow, margin box == border box, while the smaller `.control-bit__face` child carries the paint; checkbox and the radio item ship this way (`styles/glass/control-bit.css`). The absolutely-positioned `.checkbox__seat` span it replaced bled past the box and made the hit rect lie — do not reach for that form. **Or the attribute floor** — `[data-control-target]` on the host, read by the shared rule in `styles/utilities/responsive.css`: `@media (pointer: coarse){[data-control-target]{min-block-size: var(--touch-target, 2.75rem); min-inline-size: var(--touch-target, 2.75rem)}}`. That rule ships from 7.0.0; what changes in this release is that Button wears the attribute unconditionally rather than icon-only. It is a floor, not a halo: it grows the host's own box, and the paint stays small by sitting on a child — the Timeline marks are `<button data-control-target>` whose disc does not inflate. Either door; never the inert `::before`. |
|
|
1037
1178
|
|
|
1038
1179
|
The roster also GAINED one utility at this cut: the `@utility` diff 7.0.0 → 8.0.0 is
|
|
1039
1180
|
three out, one in, and that gain is the successor named above.
|
|
1040
1181
|
|
|
1041
1182
|
_The blanket blur opt-out is gone — `--glass-cell-backdrop-filter`_
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
name — which is why it is its own block and not a fourteenth row in the table above.]
|
|
1183
|
+
|
|
1184
|
+
It was a plain custom property, never a `@theme` or `@utility` name, which is why it is
|
|
1185
|
+
its own block and not a fourteenth row in the table above.
|
|
1046
1186
|
|
|
1047
1187
|
| removed | what to write instead |
|
|
1048
1188
|
| --- | --- |
|
|
1049
1189
|
| `--glass-cell-backdrop-filter` | `surface="opaque"` on the component, or `data-surface="opaque"` on a plain element. The token was the blur channel's blanket override: every glass rung read `backdrop-filter: var(--glass-cell-backdrop-filter, var(--glass-blur-<rung>))`, so declaring it anywhere in the tree replaced the blur of every rung under it. Sixteen read-arms collapsed in the same commit, and the rule that set it went with them — `:where(.glass-wash, .glass-quiet, .glass-resting, .glass-floating, .glass-overlay, .glass-card, .glass-dock) > * { --glass-cell-backdrop-filter: none; }`, the content-tier suppression that kept a glass child from blurring inside a glass parent. Both halves are gone together. Build on the SURFACE axis instead, never on the token: a surface declares what it is, and the blur follows from it. Landed `4b1a9733`. |
|
|
1050
1190
|
|
|
1051
1191
|
_A registered `@property` name is gone — `--specular-angle`_
|
|
1052
|
-
[2026-09-18 · O-26 R-15-RIDER — a registered `@property` name is a published name, and
|
|
1053
|
-
this one left with no row. The major was MEASURED, not recalled: `grep -c specular-angle`
|
|
1054
|
-
on `dist/styles/tokens/property-regs.css` is 1 at 7.0.0 and 0 at 8.0.0 and 9.0.0, and the
|
|
1055
|
-
dist-wide file count goes 5 → 0 → 0, so the row belongs at THIS cut. No roster impact: the
|
|
1056
|
-
roster pins `@theme` and `@utility` names.]
|
|
1057
1192
|
|
|
1058
1193
|
| removed | what to write instead |
|
|
1059
1194
|
| --- | --- |
|
|
1060
1195
|
| `--specular-angle` | Removed, no successor. It was the angular channel of the specular register, `@property`-registered in `styles/tokens/property-regs.css` and read by the conic-gradient leg of the `::before` sweep. The positional family is THREE names from this cut, not four: `--specular-x`, `--specular-y` and `--specular-intensity` all survive and stay registered. A stylesheet that writes the angle declares an unregistered custom property that nothing reads. |
|
|
1061
1196
|
|
|
1062
1197
|
_Focus moves off `box-shadow` and stops restating the shape_
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
`--focus-ring-shadow` as the control's paint.
|
|
1198
|
+
|
|
1199
|
+
Both are visible breaks for a consumer that relied on the pill geometry or read
|
|
1200
|
+
`--focus-ring-shadow` as the control's paint.
|
|
1066
1201
|
|
|
1067
1202
|
| was | now | what to do |
|
|
1068
1203
|
| --- | --- | --- |
|
|
@@ -1073,8 +1208,6 @@ had a row. Both are visible breaks for a consumer that relied on the pill geomet
|
|
|
1073
1208
|
what changed is that `.field-control` is no longer one of them.
|
|
1074
1209
|
|
|
1075
1210
|
_Alert loses its tone wash_
|
|
1076
|
-
[2026-09-17 · O-20 C-1 (the ask is value.js's AF-7) — W-ALERT (#33, `76bfae26`) landed
|
|
1077
|
-
at this cut with no MIGRATION paragraph; this is it.]
|
|
1078
1211
|
|
|
1079
1212
|
All five Alert tones now ride ONE `.glass-quiet` rung. There is no per-tone tinted
|
|
1080
1213
|
plate, and there is no per-tone ink rung (`--success-ink` and its siblings are not
|
|
@@ -1086,15 +1219,13 @@ What to do: adopt the component and delete any local fork. A `class="bg-success/
|
|
|
1086
1219
|
text-success"` wrapper reproduces exactly the thing this cut removed; drop it whole. Set
|
|
1087
1220
|
`announce` explicitly if you want the live region — it defaults to `off`.
|
|
1088
1221
|
|
|
1089
|
-
**The toned glyph channel was dead from 8.0.0 through 9.0.0, and paints from
|
|
1090
|
-
|
|
1091
|
-
neutral.** The TONED arms carry `[&>svg]:text-(--tone)`, but BASE ended
|
|
1222
|
+
**The toned glyph channel was dead from 8.0.0 through 9.0.0, and paints from 10.0.0
|
|
1223
|
+
on, so at 9.0.0 the glyph is still neutral.** The TONED arms carry `[&>svg]:text-(--tone)`, but BASE ended
|
|
1092
1224
|
`[&>svg]:text-current`; `cn()` is a bucketed deduper rather than twMerge, so both
|
|
1093
1225
|
survived the join, and Tailwind emits the `--tone` rule BEFORE the `currentcolor` rule
|
|
1094
1226
|
at equal specificity — currentcolor won, and a toned Alert was pixel-identical to a
|
|
1095
1227
|
neutral one. Chrome measured the toned glyph at `rgb(28, 25, 23)`, the plate ink. The
|
|
1096
|
-
|
|
1097
|
-
evidence pair is in `docs/tranches/BK/execution/2026-09-17-o20-cure/C2/RECORD.md`. If
|
|
1228
|
+
fix deletes `text-current` from BASE, and the glyph then reads the tone. If
|
|
1098
1229
|
you relied on the neutral-looking glyph, note that your toned Alerts will now paint
|
|
1099
1230
|
their tone.
|
|
1100
1231
|
|
|
@@ -1122,18 +1253,6 @@ glass-ui declares it as a peer so the type closure is part of the published cont
|
|
|
1122
1253
|
rather than an accident of hoisting. The range matches reka-ui's own usage. When reka-ui
|
|
1123
1254
|
ships the dependency correctly, this peer can be dropped in one line.
|
|
1124
1255
|
|
|
1125
|
-
_Release-path note (U-08's substitution, recorded rather than done silently)_
|
|
1126
|
-
|
|
1127
|
-
This cut's close battery reads `npm run typecheck` + `npm test` +
|
|
1128
|
-
~~`node scripts/verify-governed-invariants.mjs`~~ **`node scripts/gate-register.mjs`** +
|
|
1129
|
-
`npm run verify:package` + the wired visual suite. The third command **does not exist**
|
|
1130
|
-
and cannot be run — detector, verbatim: `ls scripts/verify-governed-invariants.mjs` →
|
|
1131
|
-
`No such file or directory`; `git ls-files scripts/` → 15 files, absent. It was lost with
|
|
1132
|
-
the governance stash and `scripts/gate-register.mjs` is its committed successor: it
|
|
1133
|
-
re-derives the code-side register, parses the seat budget from its own authority, and
|
|
1134
|
-
exits non-zero on any violation.
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
1256
|
**`StatusDot`'s 7.0.0 cut is written down — two majors late.** The 7.0.0 rewrite
|
|
1138
1257
|
replaced this component's entire API and shipped no migration rows at all, while
|
|
1139
1258
|
`v-bind="$attrs"` made every retired prop a silent no-op: the call sites kept
|
|
@@ -1203,16 +1322,15 @@ _Metric — one atom, two composers_
|
|
|
1203
1322
|
- **`<Metric orientation>` is `<Metric posture>`** — `inline | stacked | cell | row`.
|
|
1204
1323
|
- **New**: `delta` + `polarity` (status ink on the neutral material, never a coloured
|
|
1205
1324
|
plate), `compact` (locale-aware compact numbers through `coalesceMetric`), and
|
|
1206
|
-
`coalesceMetric` / `metricPolarity` are exported from `./metric`.
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
paints the one ink_ under 10.0.0.]
|
|
1325
|
+
`coalesceMetric` / `metricPolarity` are exported from `./metric`. The status ink ends
|
|
1326
|
+
at 10.0.0: the delta paints `--foreground` and its number and sign carry the polarity;
|
|
1327
|
+
see _`Metric`'s delta paints the one ink_ under 10.0.0.
|
|
1210
1328
|
|
|
1211
1329
|
**The dock's "rail" vocabulary is struck; the layer-switcher renames and the
|
|
1212
1330
|
hairline is built.** `rail` meant a VERTICALLY-ORIENTED DOCK in the dock band's own
|
|
1213
1331
|
identifiers (`--dock-rail-padding` was the vertical dock's padding, `--dock-rail-extend-length`
|
|
1214
|
-
its reach, `--dock-rail-accent-*` its selected bar)
|
|
1215
|
-
|
|
1332
|
+
its reach, `--dock-rail-accent-*` its selected bar), but a rail is a *hairline inside* a
|
|
1333
|
+
horizontal or vertical dock. Three
|
|
1216
1334
|
things now carry three names: a vertical dock is `<GlassDock orientation="vertical">`,
|
|
1217
1335
|
the in-dock tab strip is the **layer switcher**, and the line across the dock is the
|
|
1218
1336
|
**hairline**. Clean break, no aliases.
|
|
@@ -1271,10 +1389,8 @@ horizontal OR a vertical dock. The plain `<DockSeparator>` is unchanged.
|
|
|
1271
1389
|
knob and `.value-mark(s)` selectors are removed.** The Slider `.slider-track` and
|
|
1272
1390
|
the Progress `.progress-rail` now COMPOSE two shared registers — the recessed
|
|
1273
1391
|
`.track-well` groove and the `.glass-value-marks`/`.glass-value-mark`
|
|
1274
|
-
checkpoint-dot layer
|
|
1275
|
-
|
|
1276
|
-
BK #86+#88 — it declares no material (0 `backdrop-filter`, 0 blur, 0 saturate), so
|
|
1277
|
-
the prefix promised one it never had. The emitted class is `.track-well`.] — and each drives its OWN typed public property. There is no
|
|
1392
|
+
checkpoint-dot layer (the groove carries no `glass-` prefix because it declares no
|
|
1393
|
+
material) — and each drives its OWN typed public property. There is no
|
|
1278
1394
|
shared inheriting background axis (a Slider `background` and a Progress `<color>`
|
|
1279
1395
|
are different grammars and must not collide on one knob).
|
|
1280
1396
|
|
|
@@ -1284,21 +1400,17 @@ _CSS custom properties_
|
|
|
1284
1400
|
| --- | --- |
|
|
1285
1401
|
| removed at 8.0 | `--slider-track-bg`, `--progress-track` |
|
|
1286
1402
|
| never published (candidate-only) | `--track-bg` |
|
|
1287
|
-
| added at 8.0 | `--glass-slider-track-background` (CSS `background` grammar; falls back `--muted-medium`, spectrum `--secondary`), `--glass-progress-track-background` (CSS `background` grammar; falls back to the host-relative groove ground `--track-well-recess`)
|
|
1403
|
+
| added at 8.0 | `--glass-slider-track-background` (CSS `background` grammar; falls back `--muted-medium`, spectrum `--secondary`), `--glass-progress-track-background` (CSS `background` grammar; falls back to the host-relative groove ground `--track-well-recess`) |
|
|
1288
1404
|
| retained | `--value-mark-position`, `--value-mark-size`, `--value-mark-color` |
|
|
1289
|
-
|
|
1290
|
-
is
|
|
1291
|
-
|
|
1292
|
-
`.track-ground`.
|
|
1405
|
+
|
|
1406
|
+
`--progress-track-on-glass` is removed at 8.0. The groove ground is the one
|
|
1407
|
+
host-relative derivation `--track-well-recess`, declared on `.track-well` /
|
|
1408
|
+
`.track-ground`.
|
|
1293
1409
|
|
|
1294
1410
|
Old Slider writers (`--slider-track-bg: <background>`) move to
|
|
1295
1411
|
`--glass-slider-track-background`. Old Progress writers (`--progress-track:
|
|
1296
1412
|
<color>`) move to `--glass-progress-track-background`; any `background` value is
|
|
1297
|
-
valid there.
|
|
1298
|
-
and said "a gradient into the Progress property is invalid (color grammar only)".
|
|
1299
|
-
Both are void — the `<color>`-only property never shipped a writer and was struck at
|
|
1300
|
-
BK #88; its replacement takes the full `background` grammar, like its Slider
|
|
1301
|
-
sibling.] Both properties inherit, so an ancestor
|
|
1413
|
+
valid there, gradients included, like its Slider sibling. Both properties inherit, so an ancestor
|
|
1302
1414
|
may style a component population; Progress reads the property (it is never
|
|
1303
1415
|
assigned on `.progress-rail`), so an inherited override reaches the rail.
|
|
1304
1416
|
|
|
@@ -1309,9 +1421,8 @@ _DOM classes (unsupported implementation hooks, listed for completeness)_
|
|
|
1309
1421
|
| removed | `.slider-marks`, `.slider-mark`, `.progress-value-marks`, `.progress-value-mark` |
|
|
1310
1422
|
| never emitted (candidate-only) | `.value-marks`, `.value-mark` |
|
|
1311
1423
|
| added | `.track-well`, `.track-flow`, `.glass-value-marks`, `.glass-value-mark` |
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
band, composed by Progress and Timeline — is added at the same cut.]
|
|
1424
|
+
|
|
1425
|
+
`.track-flow` is the one indeterminate flow band, composed by Progress and Timeline.
|
|
1315
1426
|
|
|
1316
1427
|
_Package export_
|
|
1317
1428
|
|
|
@@ -1319,10 +1430,7 @@ _Package export_
|
|
|
1319
1430
|
generated `dist/component-styles.css` manifest, which folds the shared
|
|
1320
1431
|
`track-well.css` + `track-flow.css` + `value-marks.css` structure before the raw
|
|
1321
1432
|
SFC bundle so the emitted `.track-well`/`.track-flow`/`.glass-value-mark(s)`
|
|
1322
|
-
classes have their rules on this entry.
|
|
1323
|
-
the emitted classes `.glass-track-well`/`.glass-value-mark(s)` and folded two
|
|
1324
|
-
partials; the groove renamed and `track-flow.css` joined the manifest at BK
|
|
1325
|
-
#86+#88.] The canonical `@mkbabb/glass-ui/styles` (`dist/styles/index.css`) is
|
|
1433
|
+
classes have their rules on this entry. The canonical `@mkbabb/glass-ui/styles` (`dist/styles/index.css`) is
|
|
1326
1434
|
unchanged and reaches the same partials through its own cascade — import exactly
|
|
1327
1435
|
ONE style entry, never both.
|
|
1328
1436
|
|
|
@@ -1341,21 +1449,18 @@ no token-name change, only the removal of the device-conditional value.
|
|
|
1341
1449
|
backdrop sample (the last published value) **multiplied by `--glass-level`**, so it
|
|
1342
1450
|
flattens in lockstep with every other glass surface: `14px` at level 1, `4.2px` at level
|
|
1343
1451
|
0.3 (`prefers-contrast: more`), `0px` at level 0 (`prefers-reduced-transparency` /
|
|
1344
|
-
`forced-colors`).
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
this paragraph and the next record a scrim 8.0.0 does not ship.] The radius never reads
|
|
1452
|
+
`forced-colors`). Within this major `Drawer` folded whole into `Sheet` and the stage
|
|
1453
|
+
itself was deleted, so no component accepts `stage` at 8.0.0; this paragraph and the next
|
|
1454
|
+
describe a scrim 8.0.0 does not ship. The radius never reads
|
|
1348
1455
|
the per-frame `--stage-t`, and it carries no saturation term — it is a scene-separation
|
|
1349
1456
|
effect, not a glass surface recipe, and not the deep endpoint. (Interim development had
|
|
1350
1457
|
repointed it onto the `16px` deep radius, bypassing the clarity axis; this restores the
|
|
1351
1458
|
`14px × level` behavior.)
|
|
1352
1459
|
|
|
1353
1460
|
**`CommandDialog` is not an immersive receiver.** It forwards `DialogProps`, never
|
|
1354
|
-
`DialogContentProps`, so it cannot request the stage.
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
§8.0.0), and neither `Dialog` nor `SheetContent` accepts `stage` at 8.0.0: the stage
|
|
1358
|
-
went at `b155ca4c`.]
|
|
1461
|
+
`DialogContentProps`, so it cannot request the stage. Neither `Dialog` nor
|
|
1462
|
+
`SheetContent` accepts `stage` at 8.0.0 (see the `./sheet` row under _Package
|
|
1463
|
+
subpaths_ under §8.0.0).
|
|
1359
1464
|
|
|
1360
1465
|
**Blur ontology, restated.** The glass material is three separate concepts: FIVE calm
|
|
1361
1466
|
role recipes (`wash`/`quiet`/`resting`/`floating`/`overlay`) across THREE distinct
|
|
@@ -1515,7 +1620,7 @@ _Runtime + type exports on `./card`_
|
|
|
1515
1620
|
| removed at 8.0 | `CardTier` (type), `CardVariant` (type), `CardMetal` (type), `CardAction` (component) |
|
|
1516
1621
|
| retained | `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`, `CardProps`, `CardSize` |
|
|
1517
1622
|
|
|
1518
|
-
`CardTier` was already folded onto the shared `surface` axis at 5.0.0 (
|
|
1623
|
+
`CardTier` was already folded onto the shared `surface` axis at 5.0.0 (_`CardTier` folds onto the `surface` axis_
|
|
1519
1624
|
below) and survives as `SurfaceProps["tier"]` / `SurfaceTier` (`@mkbabb/glass-ui/axes`) — the
|
|
1520
1625
|
`/card` re-export is what 8.0 drops. `CardVariant` dies with the `variant` prop: the trio it
|
|
1521
1626
|
enumerated is the one `selected` boolean. `CardMetal` dies with `metal`: the three
|
|
@@ -1596,8 +1701,8 @@ replacements, without aliases or compatibility shims.
|
|
|
1596
1701
|
`/instrument-chassis` subpath. It is no longer exported from the root.
|
|
1597
1702
|
|
|
1598
1703
|
_`.paper-texture` is removed_
|
|
1599
|
-
|
|
1600
|
-
|
|
1704
|
+
|
|
1705
|
+
6.0.0 is its last shipping version.
|
|
1601
1706
|
|
|
1602
1707
|
There is no successor class: the two surviving `@utility paper-*` recipes are not
|
|
1603
1708
|
drop-ins (`paper-grain-overlay` and `paper-underpaint` paint relief and tooth on an
|
|
@@ -1672,14 +1777,12 @@ subpath, with a successor or `none`:
|
|
|
1672
1777
|
(`yieldToMain` / `useYieldToMain` take no options and expose no priority enum).
|
|
1673
1778
|
- `/surface`: `surfaceClass` / `decorationClass` → none (the resolver is now the private
|
|
1674
1779
|
`resolveSurfaceClass`; compose `<Surface>` and let it own the class).
|
|
1675
|
-
- `/card`: `CardSurface` → `CardVariant` + the shared `Surface` axis (`/axes`)
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
target no longer exists. `CardSpecular` has no successor — write
|
|
1682
|
-
`--glass-specular-intensity-rest` / `-hover` / `-active` on the element];
|
|
1780
|
+
- `/card`: `CardSurface` → `CardVariant` + the shared `Surface` axis (`/axes`).
|
|
1781
|
+
`CardVariant` is itself removed at 8.0 with the `variant` prop it enumerated (§8.0.0
|
|
1782
|
+
`./card` table), so coming from 6.x, go straight to the `surface` axis and `selected`.
|
|
1783
|
+
`CardSpecular` has no successor (`SurfaceSpecular` and the `specular` prop are both
|
|
1784
|
+
removed at 8.0): write `--glass-specular-intensity-rest` / `-hover` / `-active` on the
|
|
1785
|
+
element;
|
|
1683
1786
|
`ScrollCardProps` / `ScrollCardHeaderProps` (+ the `ScrollCard` / `ScrollCardHeader`
|
|
1684
1787
|
components) → the `ScrollCard` family is retired; compose `Card` inside a scroll container.
|
|
1685
1788
|
- `/command`: `MenuItemVariants` → none (the menu-row treatment is applied internally).
|
|
@@ -1707,7 +1810,7 @@ dedicated per-prop row in the §7.0.0 table above — `avatarVariants` / `Avatar
|
|
|
1707
1810
|
goo/metaball facilities (`useGooMorph`, `GooBarbellRefs`, `UseGooMorphParams`, `UseGooMorphReturn`,
|
|
1708
1811
|
`MORPH_SIGNATURES`, `MorphSignature`, `MorphSignatureName`, `MorphVector`, `GooFilter`,
|
|
1709
1812
|
`useMetaballRenderer`, `UseMetaballRendererOptions` — all shipping through v6.0.0, removed at 7.0.0);
|
|
1710
|
-
(b) the `## 5.0.0` `/api` per-symbol
|
|
1813
|
+
(b) the `## 5.0.0` `/api` per-symbol table, which marks each `/api` member with its removal version;
|
|
1711
1814
|
and (c) one family excluded here because its own mechanism section documents it — the ~67
|
|
1712
1815
|
`/motion` keyframes re-exports (`Easing`, `TimingFunction`, …; see the Motion-ownership paragraph
|
|
1713
1816
|
above). Whole-key drops are the export-map delta, not member removals.
|
|
@@ -1729,8 +1832,7 @@ pole is force-pinned). Additive — not a break; no alias, no shim. `alwaysExpan
|
|
|
1729
1832
|
contract introduced in 5.0. It is persistent-only: the action row renders expanded and operable
|
|
1730
1833
|
from first paint, with no disclosure mode, anchor button, or reveal gesture. DOM/action order is
|
|
1731
1834
|
stable across placements; only visual direction changes, and the action row flows in RTL while
|
|
1732
|
-
the band keeps its physical corner.
|
|
1733
|
-
collapsible-cut census.)
|
|
1835
|
+
the band keeps its physical corner.
|
|
1734
1836
|
|
|
1735
1837
|
Wide stage/inspector composition uses `proportion="golden|preview-dominant"`; an
|
|
1736
1838
|
absent inspector leaves stage at 100%. Boundaries and reserve default to none.
|
|
@@ -1761,20 +1863,11 @@ pointer, keyboard, disabled, and re-entry lifecycle.
|
|
|
1761
1863
|
The 7.0 package line declares `@mkbabb/value.js@^4.0.0` as an OPTIONAL peer — required
|
|
1762
1864
|
for the `/color` and `/css` consumers, absent otherwise — alongside optional
|
|
1763
1865
|
`@mkbabb/pencil-boil@^0.9.2`; its Keyframes range is finalized from the immutable
|
|
1764
|
-
packed compatibility check.
|
|
1765
|
-
|
|
1766
|
-
standing as that cut's record — but it is NOT an install instruction at 9.0.0:
|
|
1767
|
-
`@mkbabb/pencil-boil` is not a peer of any kind there (retired at BK #51),
|
|
1768
|
-
`peerDependencies` declares nine names — `@lucide/vue` · `@mkbabb/keyframes.js` ·
|
|
1769
|
-
`@mkbabb/value.js` · `@vueuse/core` · `reka-ui` · `tailwindcss` · `tw-animate-css` ·
|
|
1770
|
-
`vue` · `vue-component-type-helpers` — and none of them is it. HandMark needs no
|
|
1771
|
-
install.] Glass imports only Value's `/color`, `/css`, and
|
|
1866
|
+
packed compatibility check. That describes 7.0 only: from 9.0.0 `@mkbabb/pencil-boil` is
|
|
1867
|
+
not a peer of any kind, and HandMark needs no install. Glass imports only Value's `/color`, `/css`, and
|
|
1772
1868
|
`/easing` capabilities; the removed Value root has no compatibility external.
|
|
1773
|
-
`perfect-freehand` is no longer a peer
|
|
1774
|
-
|
|
1775
|
-
core does not — `src/components/handmark/freehand.ts` was deleted at `5a69ed9f`
|
|
1776
|
-
(2026-08-25) and is absent from the 9.0.0 tree. HandMark inks its own ribbon from
|
|
1777
|
-
`handmark/stroke.ts`; `src/` and `demo/` import `perfect-freehand` zero times.] The
|
|
1869
|
+
`perfect-freehand` is no longer a peer; from 9.0.0 HandMark inks its own ribbon and
|
|
1870
|
+
carries no copy of it either. The
|
|
1778
1871
|
obsolete shadcn generator metadata is removed.
|
|
1779
1872
|
|
|
1780
1873
|
`EasingPicker` now uses the canonical CSS jump terms `jump-start`, `jump-end`,
|
|
@@ -1790,7 +1883,7 @@ Import `@mkbabb/glass-ui/styles/theme` to register the package's Tailwind v4
|
|
|
1790
1883
|
entry is a registration bridge over the owning token variables, not a standalone
|
|
1791
1884
|
resolved base-token stylesheet.
|
|
1792
1885
|
|
|
1793
|
-
The glass blur ladder is recalibrated ~15% subtler
|
|
1886
|
+
The glass blur ladder is recalibrated ~15% subtler on every rung:
|
|
1794
1887
|
quiet/resting `8→7`, floating/overlay `13→11`, the high-DPI (2dppx) overlay
|
|
1795
1888
|
restore `20→17`, the native `::backdrop` scrim `8→7`, the immersive stage scrim
|
|
1796
1889
|
`16→14`, and the side-sheet graded field `40→34`. No API or token-name change —
|
|
@@ -1807,7 +1900,7 @@ in every shipped config and repaints nothing; a consumer that re-pins
|
|
|
1807
1900
|
|
|
1808
1901
|
## 6.0.0
|
|
1809
1902
|
|
|
1810
|
-
|
|
1903
|
+
6.0.0 removes public wrappers and aliases whose lifecycle belongs to their parent,
|
|
1811
1904
|
and adds explicit interaction and renderer-status seams. `CompletionSeal`, `Deck`, `Dock`,
|
|
1812
1905
|
and `HandMark` remain public. The package export-map delta is exactly the removal of
|
|
1813
1906
|
`./stacked-icons`; all other 5.0.0 export keys, including `./scroll-progress-rim`, remain.
|
|
@@ -1823,17 +1916,17 @@ and `HandMark` remain public. The package export-map delta is exactly the remova
|
|
|
1823
1916
|
| `DataTablePagination` | Use `DataTable`'s controlled `page`, `pageSize`, `total`, and `pagination` surface. |
|
|
1824
1917
|
| `DrawerOverlay`, `DrawerPortal` | Use `DrawerContent`; it owns one overlay and portal boundary. |
|
|
1825
1918
|
| `DropdownMenuPortal` | Use `DropdownMenuContent`; it owns the portal boundary. |
|
|
1826
|
-
| `ProgressDefault`, `ProgressGradient`, `ProgressLiquid` | Use `<Progress variant="default\|liquid">`.
|
|
1919
|
+
| `ProgressDefault`, `ProgressGradient`, `ProgressLiquid` | Use `<Progress variant="default\|liquid">`. The `gradient` variant is deleted at 8.0 with its three `--motion-duration-progress-*` tokens and its `@property --progress-crescendo`. |
|
|
1827
1920
|
| `ProgressSectioned`, `useProgressGeometry`, `ProgressSegment`, `SectionedCell`, or `<Progress variant="sectioned">` | Use numeric `marks` on continuous Progress for reference checkpoints; own colored lifecycle phases in the product composition. |
|
|
1828
1921
|
| `SelectScrollUpButton`, `SelectScrollDownButton` | Use `SelectContent`; overflow controls are internal. |
|
|
1829
1922
|
| `ConstellationExpose.backend()` | Read the exposed `rendererStatus` ref or `@renderer-status`; Constellation now reports `engine: "canvas2d"`. |
|
|
1830
1923
|
| `parseColorRGBA` from `/constellation` | Resolve paint in the consumer or use the component's palette input; the renderer-local parser is no longer public. |
|
|
1831
1924
|
| `<Blob @click>` relying on the implicit hit layer | Add `press-label="…"` to opt into the SDF-shaped native button. Omit it for a decorative, listener-free Blob; use `disabled` to disable the button. |
|
|
1832
1925
|
| `installDeckSpring`, `deckEase`, `DECK_SPRING` | Keep `useDeck` for deck state/navigation and own presentation motion at the presentation boundary. |
|
|
1833
|
-
| `useGooMorph`, `MORPH_SIGNATURES`, `GooFilter` | At 6.0.0 these goo/metaball facilities still ship and still work — no change is required at this cut. They fold out of the public surface at 7.0.0; keep application motion at its owning presentation boundary and migrate then, see `## 7.0.0`.
|
|
1926
|
+
| `useGooMorph`, `MORPH_SIGNATURES`, `GooFilter` | At 6.0.0 these goo/metaball facilities still ship and still work — no change is required at this cut. They fold out of the public surface at 7.0.0; keep application motion at its owning presentation boundary and migrate then, see `## 7.0.0`. |
|
|
1834
1927
|
| `<TypewriterText interactive>` / `backspaceToPosition()` | Remove the hidden per-glyph action; render a named native button for an editing command. |
|
|
1835
|
-
| `IconChip` / `@mkbabb/glass-ui/icon-chip` | At 6.0.0 `./icon-chip` still ships and still works — no change is required at this cut. `IconChip` folds onto `<Chip shape="icon">` (or a bare glyph) at 7.0.0 — migrate then, see `## 7.0.0`.
|
|
1836
|
-
| `MetricBadge`, `/metric-badge`, `/metric-cell`, `/metric-stack` | At 6.0.0 these three subpaths still ship and still work — no change is required at this cut. The consolidation into one `/metric` subpath (`Metric`, `MetricCell`, `MetricRow`, `MetricStack`; keep phase, aura, protagonist, result animation, and fixed-row layout in the product composition) happens at 7.0.0 — migrate then, see `## 7.0.0`.
|
|
1928
|
+
| `IconChip` / `@mkbabb/glass-ui/icon-chip` | At 6.0.0 `./icon-chip` still ships and still works — no change is required at this cut. `IconChip` folds onto `<Chip shape="icon">` (or a bare glyph) at 7.0.0 — migrate then, see `## 7.0.0`. |
|
|
1929
|
+
| `MetricBadge`, `/metric-badge`, `/metric-cell`, `/metric-stack` | At 6.0.0 these three subpaths still ship and still work — no change is required at this cut. The consolidation into one `/metric` subpath (`Metric`, `MetricCell`, `MetricRow`, `MetricStack`; keep phase, aura, protagonist, result animation, and fixed-row layout in the product composition) happens at 7.0.0 — migrate then, see `## 7.0.0`. |
|
|
1837
1930
|
| `InkMark` | Rename to `HandMark` from `@mkbabb/glass-ui/handmark`. |
|
|
1838
1931
|
| `StackedIconGroup` / `@mkbabb/glass-ui/stacked-icons` | Render ordinary owner-local DOM with explicit names, overflow, and detail controls. |
|
|
1839
1932
|
|
|
@@ -1866,38 +1959,32 @@ and `HandMark` remain public. The package export-map delta is exactly the remova
|
|
|
1866
1959
|
release build pin `0.9.2`; `catmullRomToBezier`, `ellipsePoints`, `perturbPoints`,
|
|
1867
1960
|
`perturbPointsClosed`, `pointsToLinear`, `wobbleLinePoints`, and `useLineBoil` are the
|
|
1868
1961
|
exercised producer surface. Pencil 0.9.2 declares Node 24/npm 11; the optional peer may
|
|
1869
|
-
be omitted by Glass consumers that do not use HandMark.~~
|
|
1870
|
-
`@mkbabb/pencil-boil` is no longer a peer of any kind
|
|
1871
|
-
`
|
|
1872
|
-
import it zero times. **HandMark needs no install**: `/handmark` is self-contained.]
|
|
1962
|
+
be omitted by Glass consumers that do not use HandMark.~~ From 9.0.0
|
|
1963
|
+
`@mkbabb/pencil-boil` is no longer a peer of any kind. **HandMark needs no install**:
|
|
1964
|
+
`/handmark` is self-contained.
|
|
1873
1965
|
|
|
1874
1966
|
## 5.0.0
|
|
1875
1967
|
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
cut dropped 20 export keys** — the `./api` discovery-subpath fold plus 19 component and
|
|
1968
|
+
5.0.0 joins a visual redesign (the warm, weighty, liquid look) with a structural
|
|
1969
|
+
reshape of the package. **5.0.0 dropped 20 export keys** — the `./api` discovery-subpath fold plus 19 component and
|
|
1879
1970
|
style subpaths. The authoritative enumeration is the 20-key removed-key table in
|
|
1880
1971
|
`CHANGELOG.md` `## 5.0.0` (`### Breaking`); the per-key migration for each dropped subpath
|
|
1881
1972
|
lives in this section's own subsections below. The `./api` fold is the largest single piece:
|
|
1882
1973
|
its 203 canonical symbols re-home onto their owning published subpath or retire with their
|
|
1883
|
-
subpath (the per-symbol
|
|
1884
|
-
[CORRECTION 2026-07-17: previously read "the whole consumer break is ONE dropped export key
|
|
1885
|
-
— `./api` — plus its 199-symbol re-home ... every other published key is preserved".]
|
|
1974
|
+
subpath (the per-symbol table below is complete).
|
|
1886
1975
|
Beyond the dropped keys, the remaining rows are a token rename (`--ring` →
|
|
1887
1976
|
`--focus-ring-color`), one component/subpath rename (`goo-blob` → `blob`), and the
|
|
1888
1977
|
source-only `src/subpaths/` deletion + curated flat-barrel relocations (no export break).
|
|
1889
|
-
The
|
|
1978
|
+
The visual redesign is a paint upgrade — no public-prop break beyond the rows below.
|
|
1890
1979
|
|
|
1891
|
-
### The `/api` discovery-subpath fold —
|
|
1980
|
+
### The `/api` discovery-subpath fold — all 203 symbols
|
|
1892
1981
|
|
|
1893
1982
|
`@mkbabb/glass-ui/api` (the pure types + constants discovery layer) is FOLD-DELETED — one
|
|
1894
|
-
of the 20 keys
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
follows: 141 re-home onto their OWNING published subpath and are still exported there on the
|
|
1898
|
-
current branch — a consumer swaps the import PATH with zero symbol loss; the other 62 were
|
|
1983
|
+
of the 20 keys 5.0.0 dropped (the removed-key table in `CHANGELOG.md` `## 5.0.0`). Its 203 canonical symbols (the v4.2.0 `/api` export set) resolve as
|
|
1984
|
+
follows: 141 re-home onto their OWNING published subpath and were still exported there at
|
|
1985
|
+
7.0.0 — a consumer swaps the import PATH with zero symbol loss; the other 62 were
|
|
1899
1986
|
retired or renamed across 5.0.0, 6.0.0, and 7.0.0 and have no surviving import under their
|
|
1900
|
-
old name (the
|
|
1987
|
+
old name (the table below gives each one's home or removal version):
|
|
1901
1988
|
|
|
1902
1989
|
```ts
|
|
1903
1990
|
// 5.0.0 — the /api discovery layer is gone; import each symbol from its owning subpath
|
|
@@ -1906,7 +1993,7 @@ old name (the census table below gives each one's branch home or removal version
|
|
|
1906
1993
|
+ import type { BadgeVariants } from "@mkbabb/glass-ui/badge";
|
|
1907
1994
|
```
|
|
1908
1995
|
|
|
1909
|
-
Of the 203 symbols, 141
|
|
1996
|
+
Of the 203 symbols, 141 remained exported on a public subpath at 7.0.0 (the fold is a
|
|
1910
1997
|
pure import-path swap — the owning subpath needs no new export for a surviving symbol) and 62
|
|
1911
1998
|
were retired or renamed since: 31 at 5.0.0 (the deleted viz types, the `/virtual` and
|
|
1912
1999
|
`/border-progress` types with no owning subpath, the `glass-panel` / `sheet` / `toggle-chip`
|
|
@@ -1917,51 +2004,28 @@ and the `Countup` return-alias), and 29 at 7.0.0 (the metric-badge / icon-chip /
|
|
|
1917
2004
|
spa-view / motion-curves consolidations, `PagerWindow`, plus the member-level CVA removals —
|
|
1918
2005
|
`AvatarVariants`, `ToggleVariants`, `SliderVariants`, `ButtonVariants`, and `MenuItemVariants`;
|
|
1919
2006
|
see `## 7.0.0`).
|
|
1920
|
-
[CORRECTION 2026-07-17: previously read "3 at 6.0.0 (`StackedIconGroupProps`, the `Countup`
|
|
1921
|
-
return-alias, `PagerWindow`), and 28 at 7.0.0" — `PagerWindow` (and its `pagerWindow` value)
|
|
1922
|
-
is exported by the `v6.0.0` `/pager-dots` and `/deck` barrels and dropped only on the branch,
|
|
1923
|
-
so it is a 7.0.0 removal; the 5.0.0/6.0.0/7.0.0 split is 31 / 2 / 29.]
|
|
1924
2007
|
The retired viz, `/virtual`, and `/border-progress` families are detailed in their own
|
|
1925
2008
|
subsections below.
|
|
1926
2009
|
|
|
1927
2010
|
The surface-axis grammar types (`Surface` / `SurfaceTier`) publish via the dedicated `/axes`
|
|
1928
|
-
grammar subpath (
|
|
1929
|
-
there
|
|
1930
|
-
|
|
1931
|
-
`a8a6f66b` (8.0.0); `ControlSize` is exported from `/input`, and the census row says so.]
|
|
2011
|
+
grammar subpath (the `/api` successor for those types), and both are still exported
|
|
2012
|
+
there. The `components/_shared` `ControlSize` convenience union re-homed to `/forms` at
|
|
2013
|
+
5.0.0; `./forms` split at 8.0.0, and `ControlSize` is exported from `/input`.
|
|
1932
2014
|
Of the three root-barrel `*Variants` types, only
|
|
1933
2015
|
`AlertVariants` still resolves off the root `@mkbabb/glass-ui` barrel — `AvatarVariants` and
|
|
1934
|
-
`ToggleVariants` were removed at 7.0.0 (the
|
|
2016
|
+
`ToggleVariants` were removed at 7.0.0 (the table marks each). value.js's consumed specifiers
|
|
1935
2017
|
ride the per-family subpaths named in the table below, so the compound-import unbuildable class
|
|
1936
2018
|
cannot recur.
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
version):
|
|
1944
|
-
[CORRECTION 2026-07-17: previously labeled "The full 199-symbol map ... `new import (owning
|
|
1945
|
-
subpath)` is the 5.0.0 target".]
|
|
1946
|
-
[2026-09-22 · O-23 L-5 — "current branch" is the branch at 2026-07-17. A sweep of every
|
|
1947
|
-
subpath-homed row against the 8.0.0, 9.0.0 and 10.0.0 export maps, and of each live
|
|
1948
|
-
subpath's declared exports, found twenty rows whose name had since left — twelve at
|
|
1949
|
-
8.0.0 (`4bf53962` retired four subpaths, `bda718ac` deleted the composables behind these
|
|
1950
|
-
rows (see _Six composables leave `./motion`, `./motion-core` and the root barrel_ under
|
|
1951
|
-
8.0.0)) and eight at 9.0.0 (`5a69ed9f`, the handmark barrel) — and `ControlSize`, which
|
|
1952
|
-
changed door at 8.0.0. Those 21 rows carry their removal version and commit now; the
|
|
1953
|
-
root-homed rows were not re-swept. A second sweep of every removal row's named successor
|
|
1954
|
-
against the 10.0.0 export map and the `dist/` types found nine rows pointing at a
|
|
1955
|
-
successor that has itself left (`CardSurface`, `Countup`, `GlassPanelVariant`,
|
|
1956
|
-
`HeaderRibbonPosition`, `InstrumentChassisPhase`, `PagerWindow`, `PaperGridConfig`,
|
|
1957
|
-
`PaperGridHandle`, `UsePaperGridOptions`); each now names the successor's own removal,
|
|
1958
|
-
measured.]
|
|
1959
|
-
|
|
1960
|
-
| symbol | kind | branch home (verified) — or removal version |
|
|
2019
|
+
|
|
2020
|
+
The full 203-symbol `/api` table (grouped alphabetically by symbol; `kind` is the TS export
|
|
2021
|
+
kind; the last column is the symbol's home at 7.0.0, or its removal version). Rows whose
|
|
2022
|
+
name or named successor has left since carry that removal too:
|
|
2023
|
+
|
|
2024
|
+
| symbol | kind | home — or removal version |
|
|
1961
2025
|
|---|---|---|
|
|
1962
2026
|
| `AlertVariants` | type | `@mkbabb/glass-ui` (root) |
|
|
1963
|
-
| `AnimatedDigitMode` | type | ~~`/animated-digit`~~ removed 8.0.0 — `./animated-digit` retired
|
|
1964
|
-
| `AnimatedDigitProps` | type | ~~`/animated-digit`~~ removed 8.0.0 — `./animated-digit` retired
|
|
2027
|
+
| `AnimatedDigitMode` | type | ~~`/animated-digit`~~ removed 8.0.0 — `./animated-digit` retired; no successor (see _Deleted — `AnimatedDigit`_ under 8.0.0) |
|
|
2028
|
+
| `AnimatedDigitProps` | type | ~~`/animated-digit`~~ removed 8.0.0 — `./animated-digit` retired; no successor (see _Deleted — `AnimatedDigit`_ under 8.0.0) |
|
|
1965
2029
|
| `AuroraAtoms` | type | `/aurora` |
|
|
1966
2030
|
| `AuroraConfig` | type | `/aurora` |
|
|
1967
2031
|
| `AuroraCursorApi` | type | `/aurora` |
|
|
@@ -1982,29 +2046,29 @@ measured.]
|
|
|
1982
2046
|
| `AvatarVariants` | type | removed 7.0.0 — use `Avatar` typed `size`/`shape` props + `AvatarSize`/`AvatarShape` (root) |
|
|
1983
2047
|
| `BadgeVariants` | type | `/badge` |
|
|
1984
2048
|
| `BezierPoints` | type | `/easing` |
|
|
1985
|
-
| `BlendMode` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
1986
|
-
| `BloomUpPreset` | type | ~~`/motion`~~ removed 8.0.0 — `useBloomUp` deleted
|
|
2049
|
+
| `BlendMode` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2050
|
+
| `BloomUpPreset` | type | ~~`/motion`~~ removed 8.0.0 — `useBloomUp` deleted; no successor |
|
|
1987
2051
|
| `BorderProgressCoverage` | type | removed 5.0.0 — /border-progress retired; the masked band is `ScrollProgressRim` (/scroll-progress-rim) |
|
|
1988
2052
|
| `BorderProgressMilestone` | type | removed 5.0.0 — /border-progress retired; see `ScrollProgressRim` (/scroll-progress-rim) |
|
|
1989
2053
|
| `BorderProgressMilestoneEvent` | type | removed 5.0.0 — /border-progress retired; see `ScrollProgressRim` (/scroll-progress-rim) |
|
|
1990
2054
|
| `BorderProgressProps` | type | removed 5.0.0 — /border-progress retired; see `ScrollProgressRim` (/scroll-progress-rim) |
|
|
1991
|
-
| `Brush` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
1992
|
-
| `BrushName` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
2055
|
+
| `Brush` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2056
|
+
| `BrushName` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
1993
2057
|
| `ButtonVariants` | type | removed 7.0.0 — use `ButtonProps` / `ButtonEmphasis` / `ButtonSize` (/button) |
|
|
1994
|
-
| `Canvas2DFrame` | type | ~~`/canvas`~~ root barrel
|
|
1995
|
-
| `Canvas2DHandle` | type | ~~`/canvas`~~ root barrel
|
|
1996
|
-
| `Canvas2DOptions` | type | ~~`/canvas`~~ root barrel
|
|
1997
|
-
| `Canvas2DSuspendReason` | type | ~~`/canvas`~~ root barrel
|
|
2058
|
+
| `Canvas2DFrame` | type | ~~`/canvas`~~ root barrel (`./canvas` removed at 9.0.0; the name never moved) |
|
|
2059
|
+
| `Canvas2DHandle` | type | ~~`/canvas`~~ root barrel |
|
|
2060
|
+
| `Canvas2DOptions` | type | ~~`/canvas`~~ root barrel |
|
|
2061
|
+
| `Canvas2DSuspendReason` | type | ~~`/canvas`~~ root barrel |
|
|
1998
2062
|
| `CardMetal` | type | removed 8.0.0 — the `metal` prop dies; the three `metal-{gold,silver,bronze}-border` utilities survive class-borne and a class name needs no union |
|
|
1999
|
-
| `CardSurface` | type | removed 7.0.0 — Card decoration folds onto `CardVariant` (/card) + the `Surface` axis (/axes)
|
|
2063
|
+
| `CardSurface` | type | removed 7.0.0 — Card decoration folds onto `CardVariant` (/card) + the `Surface` axis (/axes) (`CardVariant` itself left at 8.0.0 (see _Props — `<Card>`_ under 8.0.0); the `Surface` axis (/axes) stands) |
|
|
2000
2064
|
| `CardTier` | type | removed 8.0.0 from `/card` — already folded onto the shared `surface` axis at 5.0.0; use `SurfaceProps["tier"]` / `SurfaceTier` (/axes) |
|
|
2001
2065
|
| `CardVariant` | type | removed 8.0.0 — the `variant` trio is the one `selected` boolean (presence, not truth) |
|
|
2002
2066
|
| `CelebrationBurstPreset` | type | removed 5.0.0 — dead-composable sweep; `useCelebrationBurst` retired (0 consumers) |
|
|
2003
2067
|
| `ClickDelegateOptions` | type | `/sidebar` |
|
|
2004
|
-
| `ColorHarmony` | type | `/color`
|
|
2005
|
-
| `ColorResolver` | type |
|
|
2006
|
-
| `CompletionSealProps` | type | ~~`/completion-seal`~~ removed 8.0.0 — `./completion-seal` retired
|
|
2007
|
-
| `CompletionSealShape` | type | ~~`/completion-seal`~~ removed 8.0.0 — `./completion-seal` retired
|
|
2068
|
+
| `ColorHarmony` | type | `/color` (`deriveHue`'s second argument, and `DeriveBlobPaletteOptions.harmony`) |
|
|
2069
|
+
| `ColorResolver` | type | ~~`/color`~~ removed 10.0.0 with `defaultBlobColorResolver` (see _Two names leave `./color`_ under 10.0.0) |
|
|
2070
|
+
| `CompletionSealProps` | type | ~~`/completion-seal`~~ removed 8.0.0 — `./completion-seal` retired; no successor (see _Deleted — `CompletionSeal`_ under 8.0.0) |
|
|
2071
|
+
| `CompletionSealShape` | type | ~~`/completion-seal`~~ removed 8.0.0 — `./completion-seal` retired; no successor (see _Deleted — `CompletionSeal`_ under 8.0.0) |
|
|
2008
2072
|
| `ConcentricConfig` | type | removed 5.0.0 — /concentric viz DELETED (viz-family prune) |
|
|
2009
2073
|
| `ConcentricHandle` | type | removed 5.0.0 — /concentric viz DELETED |
|
|
2010
2074
|
| `ConfiguratorCloneMode` | type | `/configurator` |
|
|
@@ -2015,8 +2079,8 @@ measured.]
|
|
|
2015
2079
|
| `ConstellationField` | type | `/constellation` |
|
|
2016
2080
|
| `ConstellationProps` | type | `/constellation` |
|
|
2017
2081
|
| `ConstellationWarp` | type | `/constellation` |
|
|
2018
|
-
| `ControlSize` | type | ~~`/forms`~~ `/input`
|
|
2019
|
-
| `Countup` | type | removed 6.0.0 — the return-type alias dropped; use `UseCountupReturn` (/motion)
|
|
2082
|
+
| `ControlSize` | type | ~~`/forms`~~ `/input` (`./forms` split at 8.0.0; see _Package subpaths_ under 8.0.0) |
|
|
2083
|
+
| `Countup` | type | removed 6.0.0 — the return-type alias dropped; use `UseCountupReturn` (/motion) (`UseCountupReturn` itself left at 8.0.0 (see _Six composables leave `./motion`, `./motion-core` and the root barrel_ under 8.0.0); the number tween is `useAnimatedNumber` (/motion)) |
|
|
2020
2084
|
| `CurveFn` | type | removed 7.0.0 — /motion-curves retired; import easing math from `@mkbabb/value.js/easing` |
|
|
2021
2085
|
| `DarkFlipSettledCallback` | type | `/dark` |
|
|
2022
2086
|
| `DarkModeSyncScriptOptions` | type | `/dark` |
|
|
@@ -2024,7 +2088,7 @@ measured.]
|
|
|
2024
2088
|
| `DeckMoves` | type | `/deck` |
|
|
2025
2089
|
| `DEFAULT_AURORA_CONFIG` | const | `/aurora` |
|
|
2026
2090
|
| `DeriveAuroraOptions` | type | `/aurora` |
|
|
2027
|
-
| `DeriveBlobPaletteOptions` | type | `/color`
|
|
2091
|
+
| `DeriveBlobPaletteOptions` | type | `/color` (the options bag of `deriveBlobPalette`) |
|
|
2028
2092
|
| `DeriveEasing` | type | `/aurora` |
|
|
2029
2093
|
| `DockCtaReceivePreset` | type | `/motion` |
|
|
2030
2094
|
| `DotFlowFieldHandle` | type | removed 5.0.0 — /dot-flow-field viz DELETED |
|
|
@@ -2039,35 +2103,35 @@ measured.]
|
|
|
2039
2103
|
| `FlowPattern` | type | `/aurora` |
|
|
2040
2104
|
| `ForcedSectionWindowRange` | type | removed 5.0.0 — /virtual subpath retired; no owning subpath |
|
|
2041
2105
|
| `FourierFieldConfig` | type | `/fourier-field` |
|
|
2042
|
-
| `FourierFieldProps` | type | ~~`/fourier-field`~~
|
|
2043
|
-
| `FuzzySearchState` | type | ~~`/search`~~ removed 9.0.0
|
|
2106
|
+
| `FourierFieldProps` | type | ~~`/fourier-field`~~ never exported from anywhere; this row was wrong when it was written |
|
|
2107
|
+
| `FuzzySearchState` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2044
2108
|
| `GlassPanelProps` | type | removed 5.0.0 — /glass-panel retired; compose `Card` / `Surface` / `.glass-resting` |
|
|
2045
|
-
| `GlassPanelVariant` | type | removed 5.0.0 — /glass-panel retired; the tier-homonym; use `CardTier` (/card) or `SurfaceTier` (/axes)
|
|
2046
|
-
| `HandAnimation` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
2047
|
-
| `HandMarkProps` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
2109
|
+
| `GlassPanelVariant` | type | removed 5.0.0 — /glass-panel retired; the tier-homonym; use `CardTier` (/card) or `SurfaceTier` (/axes) (`CardTier` itself left at 8.0.0 (see _Props — `<Card>`_ under 8.0.0); `SurfaceTier` (/axes) stands) |
|
|
2110
|
+
| `HandAnimation` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2111
|
+
| `HandMarkProps` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2048
2112
|
| `HandShape` | type | `/handmark` |
|
|
2049
2113
|
| `HapticPattern` | type | removed 5.0.0 — dead-composable sweep; `useHaptic` retired |
|
|
2050
|
-
| `HeaderRibbonPosition` | type | removed 5.0.0 — renamed → `HeaderRibbonPlacement` (/header-ribbon)
|
|
2051
|
-
| `HeaderRibbonProps` | type | ~~`/header-ribbon`~~ removed 8.0.0 — `./header-ribbon` retired
|
|
2052
|
-
| `HighlightMatcher` | type | ~~`/motion-core`~~ removed 8.0.0 — `useTextHighlight` deleted
|
|
2114
|
+
| `HeaderRibbonPosition` | type | removed 5.0.0 — renamed → `HeaderRibbonPlacement` (/header-ribbon) (`HeaderRibbonPlacement` left with `./header-ribbon` at 8.0.0 (see _Deleted — `HeaderRibbon`_ under 8.0.0); no successor) |
|
|
2115
|
+
| `HeaderRibbonProps` | type | ~~`/header-ribbon`~~ removed 8.0.0 — `./header-ribbon` retired; no successor (see _Deleted — `HeaderRibbon`_ under 8.0.0) |
|
|
2116
|
+
| `HighlightMatcher` | type | ~~`/motion-core`~~ removed 8.0.0 — `useTextHighlight` deleted; no successor |
|
|
2053
2117
|
| `IconChipIcon` | type | removed 7.0.0 — /icon-chip retired; use `<Chip shape="icon">` (/chip) |
|
|
2054
2118
|
| `IconChipProps` | type | removed 7.0.0 — /icon-chip retired; use `<Chip shape="icon">` (/chip) |
|
|
2055
2119
|
| `IconChipSection` | type | removed 7.0.0 — /icon-chip retired; use `<Chip shape="icon">` (/chip) |
|
|
2056
2120
|
| `IconChipTone` | type | removed 7.0.0 — /icon-chip retired; use `<Chip shape="icon">` (/chip) |
|
|
2057
|
-
| `InkPath` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
2058
|
-
| `InstrumentChassisPhase` | type | removed 7.0.0 — phase → state; use `InstrumentChassisState` (/instrument-chassis)
|
|
2121
|
+
| `InkPath` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2122
|
+
| `InstrumentChassisPhase` | type | removed 7.0.0 — phase → state; use `InstrumentChassisState` (/instrument-chassis) (`InstrumentChassisState` left with `./instrument-chassis` at 8.0.0 (see _Deleted — `InstrumentChassis`_ under 8.0.0); no successor) |
|
|
2059
2123
|
| `JumpTerm` | type | `/easing` |
|
|
2060
2124
|
| `LazyLoaderOptions` | type | `/sidebar` |
|
|
2061
2125
|
| `LiquidRevealPreset` | type | `/motion` |
|
|
2062
|
-
| `MarkBox` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
2126
|
+
| `MarkBox` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2063
2127
|
| `MAX_NUCLEI` | const | `/aurora` |
|
|
2064
2128
|
| `MAX_STOPS` | const | `/aurora` |
|
|
2065
2129
|
| `MenuItemVariants` | type | removed 7.0.0 — no public replacement; the menu-row treatment is applied internally by the menu components (was /command) |
|
|
2066
2130
|
| `MetricBadgeLabelPosition` | type | removed 7.0.0 — /metric-badge folded into /metric |
|
|
2067
2131
|
| `MetricBadgeProps` | type | removed 7.0.0 — /metric-badge folded into /metric; compose `Metric` in `./badge` |
|
|
2068
2132
|
| `MetricBadgeSize` | type | removed 7.0.0 — /metric-badge folded into /metric; use `MetricSize` (/metric) |
|
|
2069
|
-
| `MetricCellAppearance` | type | removed 7.0.0 — /metric-cell consolidated into /metric
|
|
2070
|
-
| `MetricCellProps` | type | removed 8.0.0 — `MetricCell` folds into the one `Metric` atom; use `MetricProps` (/metric) and set `posture="cell"`
|
|
2133
|
+
| `MetricCellAppearance` | type | removed 7.0.0 — /metric-cell consolidated into /metric; `MetricCell` itself is removed at 8.0.0, so the destination is `Metric` (/metric) |
|
|
2134
|
+
| `MetricCellProps` | type | removed 8.0.0 — `MetricCell` folds into the one `Metric` atom; use `MetricProps` (/metric) and set `posture="cell"` |
|
|
2071
2135
|
| `MetricRowProps` | type | `/metric` |
|
|
2072
2136
|
| `MetricStackProps` | type | `/metric` |
|
|
2073
2137
|
| `MotionCurve` | type | removed 7.0.0 — /motion-curves retired; import easing math from `@mkbabb/value.js/easing` |
|
|
@@ -2075,22 +2139,22 @@ measured.]
|
|
|
2075
2139
|
| `NavigateOptions` | type | removed 7.0.0 — use `ViewTransitionOptions` (/motion-core) |
|
|
2076
2140
|
| `OklchStop` | type | `/aurora` |
|
|
2077
2141
|
| `PagerDotsProps` | type | `/pager-dots` |
|
|
2078
|
-
| `PagerWindow` | type | removed 7.0.0 — windowing math internalized; use `PagerDots` / `DeckPager`
|
|
2142
|
+
| `PagerWindow` | type | removed 7.0.0 — windowing math internalized; use `PagerDots` / `DeckPager` (`DeckPager` itself left at 8.0.0; `PagerDots` (/pager-dots) stands) |
|
|
2079
2143
|
| `PAPER_WASH_GROUND` | const | `/aurora` |
|
|
2080
2144
|
| `PaperBackdropFrequency` | type | removed 7.0.0 — scope the shared paper variables at the owning route |
|
|
2081
|
-
| `PaperBackdropProps` | type | ~~`/paper-backdrop`~~ removed 8.0.0 — `./paper-backdrop` retired
|
|
2082
|
-
| `PaperGridConfig` | type | removed 5.0.0 — renamed → `LiquidGridConfig` (/liquid-grid)
|
|
2083
|
-
| `PaperGridHandle` | type | removed 5.0.0 — renamed → `LiquidGridHandle` (/liquid-grid)
|
|
2145
|
+
| `PaperBackdropProps` | type | ~~`/paper-backdrop`~~ removed 8.0.0 — `./paper-backdrop` retired; no successor (see _Deleted — `PaperBackdrop`_ under 8.0.0) |
|
|
2146
|
+
| `PaperGridConfig` | type | removed 5.0.0 — renamed → `LiquidGridConfig` (/liquid-grid) (`LiquidGridConfig` left with `./liquid-grid` at 8.0.0 (see _Deleted — `LiquidGrid`_ under 8.0.0); no successor) |
|
|
2147
|
+
| `PaperGridHandle` | type | removed 5.0.0 — renamed → `LiquidGridHandle` (/liquid-grid) (`LiquidGridHandle` left with `./liquid-grid` at 8.0.0 (see _Deleted — `LiquidGrid`_ under 8.0.0); no successor) |
|
|
2084
2148
|
| `PointerVec2` | type | `/motion-core` |
|
|
2085
2149
|
| `ScrollCardHeaderProps` | type | removed 7.0.0 — ScrollCard family retired; compose `Card` within a scroll container |
|
|
2086
2150
|
| `ScrollCardProps` | type | removed 7.0.0 — ScrollCard family retired; compose `Card` within a scroll container |
|
|
2087
2151
|
| `ScrollToOptions` | type | `/sidebar` |
|
|
2088
2152
|
| `ScrollTrackerOptions` | type | `/sidebar` |
|
|
2089
|
-
| `SearchableItem` | type | ~~`/search`~~ removed 9.0.0
|
|
2090
|
-
| `SearchIndex` | type | ~~`/search`~~ removed 9.0.0
|
|
2091
|
-
| `SearchResult` | type | ~~`/search`~~ removed 9.0.0
|
|
2092
|
-
| `SearchVariant` | type | ~~`/search`~~ removed 9.0.0
|
|
2093
|
-
| `SearchVariants` | type | ~~`/search`~~ removed 9.0.0
|
|
2153
|
+
| `SearchableItem` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2154
|
+
| `SearchIndex` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2155
|
+
| `SearchResult` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2156
|
+
| `SearchVariant` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2157
|
+
| `SearchVariants` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2094
2158
|
| `SectionLayout` | type | removed 5.0.0 — /virtual subpath retired; no owning subpath |
|
|
2095
2159
|
| `SectionWindowRange` | type | removed 5.0.0 — /virtual subpath retired; no owning subpath |
|
|
2096
2160
|
| `SegmentedTabOption` | type | `/tabs` |
|
|
@@ -2110,7 +2174,7 @@ measured.]
|
|
|
2110
2174
|
| `StrokeMode` | type | `/aurora` |
|
|
2111
2175
|
| `StrokeOrient` | type | `/aurora` |
|
|
2112
2176
|
| `Surface` | type | `/axes` |
|
|
2113
|
-
| `TaperSpec` | type | ~~`/handmark`~~ removed 9.0.0 —
|
|
2177
|
+
| `TaperSpec` | type | ~~`/handmark`~~ removed 9.0.0 — no successor (see _Eight `./handmark` types leave with the barrel's reshape_ under 9.0.0) |
|
|
2114
2178
|
| `TimelineSegment` | type | `/timeline` |
|
|
2115
2179
|
| `TimelineSegmentGradient` | type | removed 8.0.0 — the per-segment gradient dialect died with the segmented variant; a span's paint is its `accent` (/timeline) |
|
|
2116
2180
|
| `TimelineSegmentState` | type | `/timeline` |
|
|
@@ -2124,8 +2188,8 @@ measured.]
|
|
|
2124
2188
|
| `TriggerPoint` | type | `/motion-core` |
|
|
2125
2189
|
| `UseAccentToneOptions` | type | `/color` |
|
|
2126
2190
|
| `UseAccentToneReturn` | type | `/color` |
|
|
2127
|
-
| `UseBloomUpOptions` | type | ~~`/motion`~~ removed 8.0.0 — `useBloomUp` deleted
|
|
2128
|
-
| `UseBloomUpReturn` | type | ~~`/motion`~~ removed 8.0.0 — `useBloomUp` deleted
|
|
2191
|
+
| `UseBloomUpOptions` | type | ~~`/motion`~~ removed 8.0.0 — `useBloomUp` deleted; no successor |
|
|
2192
|
+
| `UseBloomUpReturn` | type | ~~`/motion`~~ removed 8.0.0 — `useBloomUp` deleted; no successor |
|
|
2129
2193
|
| `UseCelebrationBurstOptions` | type | removed 5.0.0 — dead-composable sweep; `useCelebrationBurst` retired |
|
|
2130
2194
|
| `UseCelebrationBurstReturn` | type | removed 5.0.0 — dead-composable sweep; `useCelebrationBurst` retired |
|
|
2131
2195
|
| `UseCharStaggerOptions` | type | removed 7.0.0 — `useCharStagger` / `SplitChars` retired; render ordinary accessible text |
|
|
@@ -2133,7 +2197,7 @@ measured.]
|
|
|
2133
2197
|
| `UseClipboardOptions` | type | `/dom` |
|
|
2134
2198
|
| `UseClipboardReturn` | type | `/dom` |
|
|
2135
2199
|
| `UseConcentricOptions` | type | removed 5.0.0 — /concentric viz DELETED |
|
|
2136
|
-
| `UseCountupOptions` | type | ~~`/motion`~~ removed 8.0.0 — `useCountup` deleted
|
|
2200
|
+
| `UseCountupOptions` | type | ~~`/motion`~~ removed 8.0.0 — `useCountup` deleted; the number tween is `useAnimatedNumber` (/motion) |
|
|
2137
2201
|
| `UseDockCtaReceiveOptions` | type | `/motion` |
|
|
2138
2202
|
| `UseDockCtaReceiveReturn` | type | `/motion` |
|
|
2139
2203
|
| `UseDockSearchOptions` | type | `/dock` |
|
|
@@ -2144,21 +2208,21 @@ measured.]
|
|
|
2144
2208
|
| `UseDragMorphReturn` | type | `/motion` |
|
|
2145
2209
|
| `UseEasingPickerOptions` | type | `/easing` |
|
|
2146
2210
|
| `UseEasingPickerReturn` | type | `/easing` |
|
|
2147
|
-
| `UseFuzzySearchOptions` | type | ~~`/search`~~ removed 9.0.0
|
|
2211
|
+
| `UseFuzzySearchOptions` | type | ~~`/search`~~ removed 9.0.0 (the whole `./search` subpath left; nothing replaced it) |
|
|
2148
2212
|
| `UseGlobalDarkOptions` | type | `/dark` |
|
|
2149
2213
|
| `UseGlobalDarkReturn` | type | `/dark` |
|
|
2150
2214
|
| `UseHapticOptions` | type | removed 5.0.0 — dead-composable sweep; `useHaptic` retired |
|
|
2151
2215
|
| `UseHapticReturn` | type | removed 5.0.0 — dead-composable sweep; `useHaptic` retired |
|
|
2152
2216
|
| `UseLiquidRevealOptions` | type | `/motion` |
|
|
2153
2217
|
| `UseLiquidRevealReturn` | type | `/motion` |
|
|
2154
|
-
| `UsePaperGridOptions` | type | removed 5.0.0 — renamed → `UseLiquidGridOptions` (/liquid-grid)
|
|
2218
|
+
| `UsePaperGridOptions` | type | removed 5.0.0 — renamed → `UseLiquidGridOptions` (/liquid-grid) (`UseLiquidGridOptions` left with `./liquid-grid` at 8.0.0 (see _Deleted — `LiquidGrid`_ under 8.0.0); no successor) |
|
|
2155
2219
|
| `UsePointerVelocityField` | type | `/motion-core` |
|
|
2156
2220
|
| `UsePointerVelocityFieldOptions` | type | `/motion-core` |
|
|
2157
2221
|
| `UseScrollChromeOptions` | type | `/motion-core` |
|
|
2158
2222
|
| `UseScrollChromeReturn` | type | `/motion-core` |
|
|
2159
2223
|
| `UseScrollTriggerOptions` | type | `/motion-core` |
|
|
2160
2224
|
| `UseScrollTriggerReturn` | type | `/motion-core` |
|
|
2161
|
-
| `UseTextHighlightControls` | type | ~~`/motion-core`~~ removed 8.0.0 — `useTextHighlight` deleted
|
|
2225
|
+
| `UseTextHighlightControls` | type | ~~`/motion-core`~~ removed 8.0.0 — `useTextHighlight` deleted; no successor |
|
|
2162
2226
|
| `UseUserInvalidAriaOptions` | type | `/dom` |
|
|
2163
2227
|
| `UseUserInvalidAriaReturn` | type | `/dom` |
|
|
2164
2228
|
| `ViewTransitionOptions` | type | `/motion-core` |
|
|
@@ -2174,14 +2238,12 @@ token-first focus axis). MIGRATE: rename every `--ring` reference to `--focus-ri
|
|
|
2174
2238
|
at each declaration/read site. A consumer that cannot re-point in one pass reads it
|
|
2175
2239
|
fallback-first for the transition window — `var(--focus-ring-color, var(--ring))` — then
|
|
2176
2240
|
drops the `var(--ring)` fallback once its own tree is renamed (the fallback is a consumer
|
|
2177
|
-
convenience, NOT a library alias: glass-ui ships only `--focus-ring-color`).
|
|
2178
|
-
the 5.0.0 cut commit; the atlas consumer (12 bare `--ring` reads across 11 files)
|
|
2179
|
-
re-points on its own `^5.0.0` bump.
|
|
2241
|
+
convenience, NOT a library alias: glass-ui ships only `--focus-ring-color`).
|
|
2180
2242
|
|
|
2181
2243
|
### `goo-blob` → `blob` (component + subpath rename)
|
|
2182
2244
|
|
|
2183
2245
|
`<GooBlob>` renames to `<Blob>` and the `@mkbabb/glass-ui/goo-blob` subpath renames to
|
|
2184
|
-
`@mkbabb/glass-ui/blob` (clean break, no alias
|
|
2246
|
+
`@mkbabb/glass-ui/blob` (clean break, no alias; a full rename). The
|
|
2185
2247
|
types + scoped CSS seams rename in lockstep; the config registry keys
|
|
2186
2248
|
`BLOB_CONFIG_KEY` / `BLOB_CONFIG_DEFAULTS` already carried the `BLOB` prefix (stable, no
|
|
2187
2249
|
change). MIGRATE (one-line rename per call site):
|
|
@@ -2206,27 +2268,16 @@ deleted; `src/tokens.ts` moves to `src/styles/tokens.ts`, while `src/index.ts` a
|
|
|
2206
2268
|
`src/forms.ts` remain. These are SOURCE-ONLY, KEY-PRESERVING changes: published
|
|
2207
2269
|
subpaths and chunk names are unchanged, so consumers take no action.
|
|
2208
2270
|
|
|
2209
|
-
### The
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
`goo-dot-matrix`
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
30+-attempt viz family), so the surviving re-home target is the blob FIELD donor
|
|
2220
|
-
(`@mkbabb/glass-ui/blob`, byte-untouched render). MIGRATE: none for the library's own tree;
|
|
2221
|
-
any external consumer of `/goo-dot-matrix` re-homes onto `<Blob>` (the merged-metaball FIELD
|
|
2222
|
-
look). The inv-11 registry-consumer probe (`npm view @mkbabb/glass-ui` + the constellation
|
|
2223
|
-
census) read ZERO consumers; recorded in the cut notes.
|
|
2224
|
-
|
|
2225
|
-
**BI.W-VIZ-DELETIONS — `DotFlowField` / `Concentric` / `DotMatrix` + their subpaths DELETED
|
|
2226
|
-
(the user-ordered clean-break prune). Clean break, no alias ("No legacy code").** The three
|
|
2227
|
-
condemned procedural-viz members are DEFINITION-ABSENT at the 5.0.0 cut — the user edict
|
|
2228
|
-
verbatim: *"Dot flow field, concentric, dot matrix — all to be deleted. You've failed 30+
|
|
2229
|
-
attempts to implement these."* The deleted surface:
|
|
2271
|
+
### The 5.0.0 visual and structural retirements
|
|
2272
|
+
|
|
2273
|
+
**`GooDotMatrix` and the `/goo-dot-matrix` subpath are removed. Clean break, no alias.**
|
|
2274
|
+
The goo-and-dot hybrid viz (`<GooDotMatrix>`, `GooDotConfig`, `useGooDotMatrix`,
|
|
2275
|
+
`DEFAULT_GOO_DOT_CONFIG`) and its `@mkbabb/glass-ui/goo-dot-matrix` subpath are gone at
|
|
2276
|
+
5.0.0. It was a demonstration hybrid with no external consumer. If you used it, move to
|
|
2277
|
+
`<Blob>` from `@mkbabb/glass-ui/blob`, which paints the same merged-metaball field.
|
|
2278
|
+
|
|
2279
|
+
**`DotFlowField`, `Concentric` and `DotMatrix` and their subpaths are deleted. Clean
|
|
2280
|
+
break, no alias.** The three procedural vizzes are gone at 5.0.0, with no successor:
|
|
2230
2281
|
|
|
2231
2282
|
| dropped subpath | dropped exports (component + composable + config/handle types) |
|
|
2232
2283
|
|---|---|
|
|
@@ -2234,111 +2285,65 @@ attempts to implement these."* The deleted surface:
|
|
|
2234
2285
|
| `@mkbabb/glass-ui/concentric` | `<Concentric>`, `useConcentric`, `ConcentricConfig`, `ConcentricHandle`, `UseConcentricOptions`, `DEFAULT_CONCENTRIC_CONFIG`, `sampleHeight`/`toneFromHeight`/… |
|
|
2235
2286
|
| `@mkbabb/glass-ui/dot-matrix` | `<DotMatrix>`, `useDotMatrix`, `DotMatrixConfig`, `DotMatrixHandle`, `UseDotMatrixOptions`, `DEFAULT_DOT_MATRIX_CONFIG`, `fibonacciDot`/`facingFade`/… |
|
|
2236
2287
|
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
family is RETIRED, not re-attempted — a future streamline/topographic/dot-sphere need
|
|
2240
|
-
re-enters through a NEW honest trigger, never a re-open of the deleted registers. **MIGRATE:
|
|
2241
|
-
none for consumers — the sibling census (`npm view` + the constellation import-graph) read
|
|
2242
|
-
ZERO binary consumers of the three subpaths, so this is a no-op-for-consumers record (per
|
|
2243
|
-
invariant-11), not a silent prune.** The surviving procedural-viz suite is aurora · blob ·
|
|
2244
|
-
fourier-field · constellation · **liquid-grid** (the KEEPER born-WebGPU grid viz — NOT in the
|
|
2245
|
-
delete set); the shared `curlFBM` chunk (`flow.glsl.ts`/`flow.wgsl.ts`) KEEPS (liquid-grid +
|
|
2246
|
-
aurora-curl-warp consume it, the ≥2 shared-chunk bar).
|
|
2288
|
+
The procedural vizzes that remain are aurora, blob, fourier-field, constellation and
|
|
2289
|
+
liquid-grid.
|
|
2247
2290
|
|
|
2248
2291
|
#### The `/virtual` subpath retirement
|
|
2249
2292
|
|
|
2250
|
-
**
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
registry+sibling probe at execution found FABRICATED: (1) the named external consumer, words
|
|
2254
|
-
`DefinitionContentView`, imports a byte-DIVERGENT words-LOCAL fork (`@/composables/virtual`,
|
|
2255
|
-
md5 ≠ the glass-ui copy), never `@mkbabb/glass-ui/virtual` — 0 external binary consumers; (2)
|
|
2256
|
-
the "internal live consumer" (the dock-search results list) does NOT compose the windower —
|
|
2257
|
-
the library dock only accepts an optional `ensureTargetWindow` callback. There are 0 src/
|
|
2258
|
-
production consumers; the mechanism is DEMO-ONLY (3 demo sites). Under the mechanism-distinctness
|
|
2259
|
-
|
|
2260
|
-
- ≥2-binary-consumer law the PUBLISHED SUBPATH does not earn its keep, so it retires:
|
|
2293
|
+
**The `/virtual` subpath is removed. Clean break, no alias.** The section-windowing engine
|
|
2294
|
+
had no production consumer inside the library and no external importer of the published
|
|
2295
|
+
subpath, so the subpath goes:
|
|
2261
2296
|
|
|
2262
2297
|
| dropped surface | disposition |
|
|
2263
2298
|
|---|---|
|
|
2264
|
-
| `@mkbabb/glass-ui/virtual` subpath export + `typesVersions` |
|
|
2265
|
-
| `src/subpaths/virtual.ts` mirror |
|
|
2266
|
-
| `/api` re-export of `FlatSection` / `ForcedSectionWindowRange` / `SectionLayout` / `SectionWindowRange` |
|
|
2267
|
-
| `demo/composables/virtual/` facility (`useVirtualSectionWindow` / `virtualSectionLayout` / narrow index) |
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
nothing from this row" today, DECLINED-TERMINAL). A no-op-for-consumers record (per
|
|
2272
|
-
invariant-11), not a silent prune.** Re-entry trigger: the published subpath re-mints only on
|
|
2273
|
-
a real ≥2 cross-repo binary consume (a words re-adopt ask, or the vft V4 → V6.g consume) — a
|
|
2274
|
-
production or external importer of the glass-ui surface, never a demo page and never a local
|
|
2275
|
-
fork. The final demo-owned coordinate is recorded in
|
|
2276
|
-
`docs/consumer-evidence/use-virtual-section-window.md`; no permanent proof script
|
|
2277
|
-
or compatibility coordinate remains.
|
|
2299
|
+
| `@mkbabb/glass-ui/virtual` subpath export + `typesVersions` | removed |
|
|
2300
|
+
| `src/subpaths/virtual.ts` mirror | deleted |
|
|
2301
|
+
| `/api` re-export of `FlatSection` / `ForcedSectionWindowRange` / `SectionLayout` / `SectionWindowRange` | removed — the 4 types have no owning subpath (see the `/api` fold note above) |
|
|
2302
|
+
| `demo/composables/virtual/` facility (`useVirtualSectionWindow` / `virtualSectionLayout` / narrow index) | kept as a demo-only facility, imported only by the two windowed stories |
|
|
2303
|
+
|
|
2304
|
+
If you imported `@mkbabb/glass-ui/virtual`, keep a local copy of the windower in your own
|
|
2305
|
+
tree.
|
|
2278
2306
|
|
|
2279
2307
|
#### The `/border-progress` subpath retirement
|
|
2280
2308
|
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
public `ScrollProgressRim` successor.
|
|
2309
|
+
**`/border-progress` and the broad `BorderProgress` component are deleted. Clean break,
|
|
2310
|
+
no alias.** The old surface mixed a content wrapper, three coverage modes, milestone
|
|
2311
|
+
events, spectrum expansion, and progress paint. Its one lasting mechanism, the
|
|
2312
|
+
radius-following masked band, now belongs to the smaller public `ScrollProgressRim`.
|
|
2286
2313
|
|
|
2287
2314
|
| surface | disposition |
|
|
2288
2315
|
|---|---|
|
|
2289
|
-
| `@mkbabb/glass-ui/border-progress` subpath export + `typesVersions` |
|
|
2290
|
-
| `BorderProgress`, milestone APIs, content-wrapper behavior, and old CSS properties |
|
|
2291
|
-
| `@mkbabb/glass-ui/scroll-progress-rim` |
|
|
2316
|
+
| `@mkbabb/glass-ui/border-progress` subpath export + `typesVersions` | removed |
|
|
2317
|
+
| `BorderProgress`, milestone APIs, content-wrapper behavior, and old CSS properties | deleted |
|
|
2318
|
+
| `@mkbabb/glass-ui/scroll-progress-rim` | added — exports `ScrollProgressRim` |
|
|
2292
2319
|
|
|
2293
2320
|
`ScrollProgressRim` accepts aggregate `value` / `max`, optional per-item `segments` whose values
|
|
2294
2321
|
are clamped to `[0,1]`, an edge `coverage`, and optional rainbow `stops`. It paints one 4px masked
|
|
2295
|
-
band that follows the host radius and exposes native progressbar semantics.
|
|
2296
|
-
|
|
2297
|
-
unchanged.
|
|
2322
|
+
band that follows the host radius and exposes native progressbar semantics. `completion-seal`
|
|
2323
|
+
remains published and unchanged at 5.0.0.
|
|
2298
2324
|
|
|
2299
|
-
#### The `/scrolling-text` subpath
|
|
2325
|
+
#### The `/scrolling-text` subpath removal
|
|
2300
2326
|
|
|
2301
|
-
**
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
at the 5.0.0 cut the fresh registry+sibling probe (`npm view @mkbabb/glass-ui` + a read-only grep of
|
|
2305
|
-
the constellation) reads its ONLY binary consumers as **speedtest, 2 sites** — `ResultDetailSheet.vue:6`
|
|
2306
|
-
|
|
2307
|
-
- `AppSettingsButton.vue:97`, both `import { ScrollingText } from "@mkbabb/glass-ui/scrolling-text"`;
|
|
2308
|
-
**0** across muster · sci-report · atlas · slides · value.js · keyframes.js · words · bbnf-buddy. The
|
|
2309
|
-
≥2-**repo**-binary-consumer bar is UNMET (one consuming repo), and the mechanism is a distinct
|
|
2310
|
-
overflow-marquee no survivor expresses — so the law does NOT fold it onto a sibling, it RELOCATES to the
|
|
2311
|
-
sole consumer's own repo (UF-P6 no-standing-overfit — the honest home is speedtest's tree, NOT a
|
|
2312
|
-
keep-with-evidence-doc). Unlike border-progress (banked dormant, demo-only own-render), scrolling-text
|
|
2313
|
-
has NO glass-ui demo consumer once its story folds, so the retire is a full DELETE:
|
|
2327
|
+
**The `/scrolling-text` subpath and the `ScrollingText` component are removed. Clean
|
|
2328
|
+
break, no alias.** `ScrollingText` was an overflow-detection marquee with a single
|
|
2329
|
+
consuming app, so it moved into that app rather than staying in the library:
|
|
2314
2330
|
|
|
2315
2331
|
| dropped surface | disposition |
|
|
2316
2332
|
|---|---|
|
|
2317
|
-
| `@mkbabb/glass-ui/scrolling-text` subpath export + `typesVersions` |
|
|
2318
|
-
| `src/
|
|
2319
|
-
|
|
|
2320
|
-
| root barrel re-export (`src/index.ts` `export * from "./components/scrolling-text"`) | DROPPED — no `ScrollingText` off the root barrel |
|
|
2321
|
-
| the `data/scrolling-text` demo story + its manifest row + metrics-family member | DELETED — the metrics family keeps its four metric primitives |
|
|
2322
|
-
|
|
2323
|
-
**MIGRATE: none — the fresh probe read ZERO external binary consumers beyond speedtest; a
|
|
2324
|
-
no-op-for-registry-consumers record (per invariant-11), not a silent prune.** Relocation home: speedtest
|
|
2325
|
-
ADOPTS a local copy (or its own overflow primitive) on its `^5.x` consume and DROPS the `/scrolling-text`
|
|
2326
|
-
import — the by-name ASK (with the paired kf `^5.2.0` / value `^3.1.0` peer bump) is rostered on the
|
|
2327
|
-
`crossrepo-asks:bi` book (`docs/tranches/BI/coordination/asks-and-consumes.md`). Re-entry trigger: a real
|
|
2328
|
-
≥2-repo cross-repo binary consume re-mints the published subpath (never a demo page, never one repo).
|
|
2329
|
-
Recorded in `proof:consumer-evidence-true` (the SP1 arm — source-anchored: component + mirror + root-barrel
|
|
2330
|
-
re-export + demo story DEFINITION-ABSENT).
|
|
2333
|
+
| `@mkbabb/glass-ui/scrolling-text` subpath export + `typesVersions` | removed |
|
|
2334
|
+
| `src/components/scrolling-text/` component (`ScrollingText.vue` + barrel + README) | deleted |
|
|
2335
|
+
| root barrel re-export | dropped — no `ScrollingText` off the root barrel |
|
|
2331
2336
|
|
|
2332
|
-
|
|
2337
|
+
If you imported it, copy the component into your own tree (or use your own overflow
|
|
2338
|
+
primitive) and drop the `/scrolling-text` import.
|
|
2333
2339
|
|
|
2334
|
-
|
|
2335
|
-
the `v6.0.0` tag `exports` still carries `./icon-tooltip`; the 6→7 diff drops it — see the
|
|
2336
|
-
`IconTooltip` row in the §7.0.0 table). This subsection sits under `## 5.0.0` only for
|
|
2337
|
-
proximity to the other Tooltip-composition guidance. Compose the canonical Tooltip family
|
|
2338
|
-
directly, placing one provider around the nearest real control group:
|
|
2339
|
-
[CORRECTION 2026-07-17: this subsection previously opened by asserting a 5.0.0 removal;
|
|
2340
|
-
`./icon-tooltip` ships through v6.0.0 and is removed only at 7.0.0.]
|
|
2340
|
+
#### The `icon-tooltip` clean break (a 7.0.0 removal)
|
|
2341
2341
|
|
|
2342
|
+
`IconTooltip` and the `@mkbabb/glass-ui/icon-tooltip` subpath are deleted at 7.0.0 (the
|
|
2343
|
+
`v6.0.0` `exports` still carries `./icon-tooltip`; see the `IconTooltip` row in the
|
|
2344
|
+
§7.0.0 table). This subsection sits under `## 5.0.0` only for proximity to the other
|
|
2345
|
+
Tooltip-composition guidance. Compose the canonical Tooltip family directly, placing one
|
|
2346
|
+
provider around the nearest real control group:
|
|
2342
2347
|
```vue
|
|
2343
2348
|
<TooltipProvider :delay-duration="250">
|
|
2344
2349
|
<Tooltip>
|
|
@@ -2355,73 +2360,55 @@ Required instructions must remain visible because touch does not synthesize hove
|
|
|
2355
2360
|
its real `<label for>` and renders supporting copy beside the control, linked through the slotted
|
|
2356
2361
|
`describedBy` value. It does not add a help trigger or conceal required field guidance.
|
|
2357
2362
|
|
|
2358
|
-
|
|
2359
|
-
`/liquid-grid`. Clean break, no alias
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
site):
|
|
2363
|
+
**`PaperGrid` (the viz) is renamed `LiquidGrid`, and `/paper-grid` becomes
|
|
2364
|
+
`/liquid-grid`. Clean break, no alias.** The rename separates the WebGPU liquid grid viz
|
|
2365
|
+
from the static `.paper-grid` / `--paper-grid-texture` paper card register
|
|
2366
|
+
(`cards.css` / `scale-paper.css`), which is unchanged. Migrate with one rename per call
|
|
2367
|
+
site:
|
|
2364
2368
|
- `import { PaperGrid, DEFAULT_PAPER_GRID_CONFIG } from "@mkbabb/glass-ui/paper-grid"`
|
|
2365
2369
|
→ `import { LiquidGrid, DEFAULT_LIQUID_GRID_CONFIG } from "@mkbabb/glass-ui/liquid-grid"`.
|
|
2366
2370
|
- `<PaperGrid …>` → `<LiquidGrid …>`; `PaperGridConfig` → `LiquidGridConfig` (the `/api`
|
|
2367
|
-
discovery type); `usePaperGrid` → `useLiquidGrid`; `samplePaperGrid` → `sampleLiquidGrid
|
|
2368
|
-
the demo route `/substrates/paper-grid` → `/substrates/liquid-grid`.
|
|
2371
|
+
discovery type); `usePaperGrid` → `useLiquidGrid`; `samplePaperGrid` → `sampleLiquidGrid`.
|
|
2369
2372
|
- The `.paper-grid-wrapper`/`.paper-grid-canvas` scoped SFC classes → `.liquid-grid-*`
|
|
2370
|
-
(internal — no consumer surface).
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
`
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
degrades the JS gesture physics to their CSS floor (the same state `prefers-reduced-motion`
|
|
2386
|
-
produces); `motion="off"` unbinds the enrichment AND writes `--motion-weight: 0` (the
|
|
2387
|
-
functional interaction — click/keyboard/drag-handle — stays). PRM forces `full → reduced`
|
|
2388
|
-
regardless (a11y absolute).
|
|
2373
|
+
(internal — no consumer surface). The prop schema is otherwise unchanged, except the
|
|
2374
|
+
per-cell `shearMax` config field, which is gone (the sheet warp is shear-free, so a
|
|
2375
|
+
`shearMax` on a config object is a dead field; drop it).
|
|
2376
|
+
- **The paint changed too, not the API:** the ripple is now one smooth continuous sheet
|
|
2377
|
+
warp, so major gridlines bow as one coherent curve, instead of each cell kinking about
|
|
2378
|
+
its own centre. No consumer action.
|
|
2379
|
+
|
|
2380
|
+
**The four motion booleans collapse onto one `motion` axis. Clean break, no alias.** The
|
|
2381
|
+
`draggable` / `pressable` / `spring` / `liquidDrag` booleans (on `Card`, `Slider`,
|
|
2382
|
+
`DialogContent`, `SheetContent`, `SegmentedTabs` and `DockLayerGroup`) become a single
|
|
2383
|
+
`motion?: "full" | "reduced" | "off"` axis. The default is `full`, so physics is on unless
|
|
2384
|
+
you opt down. `motion="reduced"` degrades the gesture physics to their CSS floor (the same
|
|
2385
|
+
state `prefers-reduced-motion` produces); `motion="off"` unbinds the enrichment and writes
|
|
2386
|
+
`--motion-weight: 0`, while click, keyboard and drag-handle interaction stay.
|
|
2387
|
+
`prefers-reduced-motion` always turns `full` into `reduced`.
|
|
2389
2388
|
- **`<SegmentedTabs draggable>` / `<DockLayerGroup draggable>` → the `motion="full"`
|
|
2390
|
-
|
|
2391
|
-
`motion="reduced"
|
|
2392
|
-
`false`) — the pull is an enrichment over the always-present click/keyboard model write.
|
|
2389
|
+
default.** The drag is now on by default, and a click-only strip opts down with
|
|
2390
|
+
`motion="reduced"`. DockLayerGroup's drag was off by default before.
|
|
2393
2391
|
- **`<Card pressable>` → explicit command composition.** Card no longer infers
|
|
2394
2392
|
interaction or mounts a press engine. Put a `Button` or `Link` inside the Card so
|
|
2395
2393
|
native focus, keyboard, disabled, naming, and activation semantics stay together.
|
|
2396
2394
|
- **`<Slider liquidDrag>` → `motion`.** `liquidDrag="false"` → `motion="reduced"` (or
|
|
2397
|
-
`"off"`); the default `full`
|
|
2395
|
+
`"off"`); the default `full` behaves as `liquidDrag: true` did.
|
|
2398
2396
|
- **`<DialogContent spring>` / `<SheetContent spring>` → `springPreset` + `motion`.** The
|
|
2399
|
-
`spring` boolean carried
|
|
2400
|
-
"smooth" | "snappy" | "bouncy" | "gentle"`
|
|
2401
|
-
|
|
2402
|
-
`
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
eyeglass path is removed. Clean break, no alias.** A bare `<SegmentedTabs>` paints one
|
|
2412
|
-
measured ~~`.glass-lens`~~ indicator inside the pill track; `underline` remains the only other
|
|
2413
|
-
material. [`.glass-lens` was DELETED at 8.0.0 — see the §8.0.0 delete banner; the indicator
|
|
2414
|
-
rides the `.glass-{rung}` blur+tint base.]
|
|
2397
|
+
`spring` boolean carried both the on/off and the preset, so it splits: `springPreset?:
|
|
2398
|
+
"smooth" | "snappy" | "bouncy" | "gentle"` picks the curve, and `motion` gates the
|
|
2399
|
+
engine. `spring={true}` → `springPreset="smooth"`; `spring="bouncy"` →
|
|
2400
|
+
`springPreset="bouncy"`; unset `spring` → unset `springPreset` (the centred dialog keeps
|
|
2401
|
+
its CSS reveal; a side sheet always rides the interruptible spring). Sheet's
|
|
2402
|
+
`dragDismiss` now engages the spring engine on its own and no longer requires `spring`.
|
|
2403
|
+
- **`keepDockOpen`, `dragDismiss` and `responsive` are unchanged**, since they describe a
|
|
2404
|
+
behaviour, not motion intensity.
|
|
2405
|
+
|
|
2406
|
+
**`pill` remains the `SegmentedTabs` default, and the two-rest-state eyeglass path is
|
|
2407
|
+
removed. Clean break, no alias.** A bare `<SegmentedTabs>` paints one measured indicator
|
|
2408
|
+
inside the pill track; `underline` remains the only other material.
|
|
2415
2409
|
|
|
2416
2410
|
- **`<SegmentedTabs eyeglass>` remains deleted.** Drop the old attribute; there is no
|
|
2417
|
-
named eyeglass variant.
|
|
2418
|
-
the point — the eyeglass came back as what `pill` IS, on the owner's ruling that we do
|
|
2419
|
-
not need a million variants that are essentially the same thing. It is a different
|
|
2420
|
-
construct wearing the same name: the pill track arms it by declaring
|
|
2421
|
-
`--eyeglass-span-max`, and the writer answers with `--eyeglass-span` /
|
|
2422
|
-
`--eyeglass-swell` / `--eyeglass-origin`. **None of the three tokens struck below comes
|
|
2423
|
-
back** — proud/settled was a second REST state, this is a transient deform that returns
|
|
2424
|
-
to 1 — so a consumer who removed them has nothing to restore and nothing to re-read.]
|
|
2411
|
+
named eyeglass variant.
|
|
2425
2412
|
- **The old proud/settled sizing and release controls are deleted.** Remove
|
|
2426
2413
|
`--eyeglass-proud`, `--eyeglass-settled`, and `--eyeglass-live-t` overrides. The active
|
|
2427
2414
|
fill matches the selected control instead of reserving or magnifying a second rest state.
|
|
@@ -2429,66 +2416,39 @@ rides the `.glass-{rung}` blur+tint base.]
|
|
|
2429
2416
|
`--spring-eyeglass-settle`, and `--spring-eyeglass-duration` overrides. Selection uses
|
|
2430
2417
|
the shared `snappy` register; no replacement preset or compatibility token exists.
|
|
2431
2418
|
|
|
2432
|
-
**
|
|
2433
|
-
|
|
2434
|
-
cuts:
|
|
2419
|
+
**The `selectableChipVariants` alias and the `--corner-shape-card` / `-pill` tokens are
|
|
2420
|
+
removed. Clean break, no alias.**
|
|
2435
2421
|
- **`selectableChipVariants` → `chipVariants`, `SelectableChipVariants` → `ChipVariants`.**
|
|
2436
|
-
The `
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
MIGRATE: a consumer who was re-pointing `--corner-shape-card`/`-pill` mints the alias
|
|
2456
|
-
itself and adds the surface to `glass/squircle.css`'s `@supports` block (presets-in-
|
|
2457
|
-
consumers). `proof:squircle-language`'s policy clause is re-pointed onto the NEGATIVE
|
|
2458
|
-
GUARD — a re-mint of either token reds (the net-negative cannot silently reverse).
|
|
2459
|
-
|
|
2460
|
-
**BG.W-DOCK-CAP-SCROLL-FADE — the `<GlassDock overflow="scroll">` opt-in RETIRED.
|
|
2461
|
-
Clean break, no alias ("No legacy code").** The `overflow` prop is now
|
|
2462
|
-
`"grow" | "wrap"` (the `"scroll"` member is GONE). A capped dock axis is
|
|
2463
|
-
INTRINSICALLY a scroll axis, no opt-in: a HORIZONTAL dock scrolls its over-cap
|
|
2464
|
-
inline content whenever the row exceeds `--dock-max-inline-size` (the intrinsic
|
|
2465
|
-
`.dock-scroll-x` port; under the cap nothing scrolls), and a VERTICAL rail scrolls
|
|
2466
|
-
its over-cap block content whenever it exceeds `--dock-max-block-size` (the
|
|
2467
|
-
unconditional cap-derived shell rule; the `.dock-scroll-y` opt-in class is
|
|
2468
|
-
retired). The scroll port's CROSS axis is now `overflow-*: clip` +
|
|
2469
|
-
`overflow-clip-margin: var(--dock-control-safe-inset)` (the mechanically-honest
|
|
2470
|
-
un-clip — the prior `overflow-*: visible` pin was a latent no-op that CSS Overflow
|
|
2471
|
-
§3 computed to `auto`), and the over-cap edge feathers via the `<FadingScroll>`
|
|
2472
|
-
`--fade-scroll-width` mask seam (the liquid-weight soft edge). MIGRATE: drop any
|
|
2473
|
-
`overflow="scroll"` prop — a capped dock scrolls by construction; set
|
|
2474
|
-
`--dock-max-block-size` / `--dock-max-inline-size` per-instance to anchor the cap.
|
|
2475
|
-
Machine-locked by `proof:dock-plate-clearance` (W2 re-pointed onto the `clip` +
|
|
2476
|
-
`overflow-clip-margin` un-clip + the `.dock-scroll-y`-retired assert + a self-test
|
|
2477
|
-
bite).
|
|
2478
|
-
[2026-09-22 · O-32 AC-D-1 — true from 5.0.0 through 8.0.0 only. 9.0.0 deleted the inline
|
|
2479
|
-
cap's last reader and the edge mask with it (`964535cb`, the W3 LATTICE): a horizontal
|
|
2422
|
+
The alias over the one `chipVariants` recipe is deleted. The recipe publishes from
|
|
2423
|
+
`@mkbabb/glass-ui/chip` — `chipVariants` (value) + `ChipVariants` (type) — because 5.0.0
|
|
2424
|
+
also removed the `./selectable-chip` subpath (folded onto the one `<Chip>` family) and
|
|
2425
|
+
the `./api` subpath. Migrate by renaming both names and re-pointing the import to
|
|
2426
|
+
`@mkbabb/glass-ui/chip`; the recipe body is unchanged. The old `<SelectableChip>`
|
|
2427
|
+
component folds onto `<Chip>` in the same release.
|
|
2428
|
+
- **`--corner-shape-card` / `--corner-shape-pill` are deleted.** They were dead `round`
|
|
2429
|
+
knobs with no reader, and the CSS `corner-shape` initial value is already `round`, so
|
|
2430
|
+
cards and pills stay round with no declaration. The squircle members
|
|
2431
|
+
`--corner-shape-{bigdock,dialog,sheet,panel,hero}` are live and untouched. If you
|
|
2432
|
+
re-pointed either token, declare it yourself and add your surface to your own
|
|
2433
|
+
`@supports (corner-shape: …)` block.
|
|
2434
|
+
|
|
2435
|
+
**The `<GlassDock overflow="scroll">` opt-in is removed. Clean break, no alias.** The
|
|
2436
|
+
`overflow` prop became `"grow" | "wrap"`. From 5.0.0 through 8.0.0 a capped dock axis
|
|
2437
|
+
scrolled by construction: a horizontal dock scrolled its over-cap inline content past
|
|
2438
|
+
`--dock-max-inline-size`, a vertical rail scrolled past `--dock-max-block-size`, and the
|
|
2439
|
+
over-cap edge feathered through the `<FadingScroll>` `--fade-scroll-width` mask. Drop any
|
|
2440
|
+
`overflow="scroll"` prop. 9.0.0 removed the inline cap and the edge mask: a horizontal
|
|
2480
2441
|
dock's run scrolls natively when it outgrows its stage, with no edge fade, and
|
|
2481
|
-
`--dock-max-inline-size` does nothing
|
|
2482
|
-
|
|
2483
|
-
vertical cap.]
|
|
2442
|
+
`--dock-max-inline-size` does nothing (10.0.0 deletes it; see _`--dock-max-inline-size`
|
|
2443
|
+
is removed_ under 9.0.0). `--dock-max-block-size` remains the vertical cap.
|
|
2484
2444
|
|
|
2485
|
-
###
|
|
2445
|
+
### The dock control and trigger fold, and the reka `ui/tabs` retirement
|
|
2486
2446
|
|
|
2487
|
-
The dock
|
|
2488
|
-
|
|
2489
|
-
retires
|
|
2490
|
-
|
|
2491
|
-
|
|
2447
|
+
The five dock control and trigger components collapse onto two: `<DockControl>` with a
|
|
2448
|
+
`shape` axis and `<DockTrigger>` with a `for` axis. The internal reka `ui/tabs`
|
|
2449
|
+
substrate retires (`<DockLayerGroup>` now runs on the headless `useSelectionGroup`
|
|
2450
|
+
engine), and the dock-item drag-reorder axis goes. Clean break, no alias; every call site
|
|
2451
|
+
re-points by name.
|
|
2492
2452
|
|
|
2493
2453
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2494
2454
|
|---|---|---|
|
|
@@ -2498,184 +2458,90 @@ dock-ITEM drag-reorder axis. Clean break, no alias — every consumer re-points
|
|
|
2498
2458
|
| `DockDropdownTrigger` | `DockTrigger` | `<DockDropdownTrigger …>` → `<DockTrigger for="dropdown" …>` |
|
|
2499
2459
|
| `DockPopoverTrigger` | `DockTrigger` | `<DockPopoverTrigger …>` → `<DockTrigger for="popover" …>` |
|
|
2500
2460
|
|
|
2501
|
-
**`<GlassDock draggable-items>`
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
`
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
The Kronecker fold (UF-P7/UF-J6): the three overlays with the SAME positioned-glass
|
|
2521
|
-
mechanism collapse onto ONE sealed `<Popover>` with a `trigger` axis (`click` default
|
|
2522
|
-
· `hover`) that switches the reka ROOT internally (fine-hover → reka
|
|
2523
|
-
`HoverCardRoot`; click/coarse-hover → `PopoverRoot`) and therefore owns the content
|
|
2524
|
-
semantics: hover previews are named non-modal groups; click surfaces are non-modal
|
|
2525
|
-
dialogs. `<PopoverContent>` retains the shared `surface` axis. `keepDockOpen` is ONE `watch(open)`
|
|
2526
|
-
serving both roots. Coarse-pointer hover auto-promotes to tap-toggle (reka's
|
|
2527
|
-
`excludeTouch` leaves the hover root structurally dead on touch). **Tooltip SURVIVES**
|
|
2528
|
-
the fold as a genuinely distinct mechanism (`aria-describedby` naming, `role="tooltip"`,
|
|
2529
|
-
the SR mirror, non-focusable content). Clean
|
|
2530
|
-
break, no alias — every consumer re-points by name.
|
|
2461
|
+
**`<GlassDock draggable-items>` and the `update:order` emit are removed.** A dock reorder
|
|
2462
|
+
is the consumer's concern: compose `useSortable` (`@mkbabb/glass-ui/sortable`). Drop
|
|
2463
|
+
`draggable-items`, `@update:order` and any `data-dock-draggable` markers.
|
|
2464
|
+
|
|
2465
|
+
**The reka `ui/tabs` substrate is gone.** It was never on a public barrel, so there is no
|
|
2466
|
+
import to migrate. Tab UIs use `<SegmentedTabs>` (`@mkbabb/glass-ui/tabs`).
|
|
2467
|
+
`useDockCtaReceive` and `cta-seat.css` stay.
|
|
2468
|
+
|
|
2469
|
+
### HoverPopover and HoverCard fold onto one `<Popover>`
|
|
2470
|
+
|
|
2471
|
+
The three overlays that share the positioned-glass mechanism collapse onto one
|
|
2472
|
+
`<Popover>` with a `trigger` axis (`click` default, or `hover`). It switches the reka
|
|
2473
|
+
root internally (a fine-pointer hover uses `HoverCardRoot`; a click or a coarse-pointer
|
|
2474
|
+
hover uses `PopoverRoot`), so it owns the content semantics: hover previews are named
|
|
2475
|
+
non-modal groups, and click surfaces are non-modal dialogs. `<PopoverContent>` keeps the
|
|
2476
|
+
shared `surface` axis, and `keepDockOpen` serves both roots. On a coarse pointer a hover
|
|
2477
|
+
popover becomes tap-to-toggle. **Tooltip stays its own component**, since its naming
|
|
2478
|
+
(`aria-describedby`, `role="tooltip"`, non-focusable content) is a different mechanism.
|
|
2479
|
+
Clean break, no alias.
|
|
2531
2480
|
|
|
2532
2481
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2533
2482
|
|---|---|---|
|
|
2534
2483
|
| `HoverPopover` (`@mkbabb/glass-ui/hover-popover`) | `Popover` (`@mkbabb/glass-ui/popover`) | `<HoverPopover content side align>…</HoverPopover>` → `<Popover trigger="hover"><PopoverTrigger as-child>…</PopoverTrigger><PopoverContent :side>…</PopoverContent></Popover>` |
|
|
2535
|
-
| `HoverCard` / `HoverCardTrigger` / `HoverCardContent` (`@mkbabb/glass-ui/hover-card`) | `Popover` / `PopoverTrigger` / `PopoverContent` | `<HoverCard>…</HoverCard>` → `<Popover trigger="hover">…</Popover>`; `<HoverCardContent>` → `<PopoverContent aria-label="…">`
|
|
2484
|
+
| `HoverCard` / `HoverCardTrigger` / `HoverCardContent` (`@mkbabb/glass-ui/hover-card`) | `Popover` / `PopoverTrigger` / `PopoverContent` | `<HoverCard>…</HoverCard>` → `<Popover trigger="hover">…</Popover>`; `<HoverCardContent>` → `<PopoverContent aria-label="…">` |
|
|
2536
2485
|
| `hoverOpenDelay` prop | `openDelay` prop | `:hover-open-delay="80"` → `:open-delay="80"` |
|
|
2537
2486
|
| `./hover-popover` subpath export | `./popover` | delete the import spec; import `Popover`/`PopoverTrigger`/`PopoverContent` from `@mkbabb/glass-ui/popover` |
|
|
2538
2487
|
| `./hover-card` subpath export | `./popover` | as above |
|
|
2539
|
-
| `hover-popover.css` substrate sheet (`.hover-popover-panel` / `.hover-popover-label`) | none | the
|
|
2540
|
-
|
|
2541
|
-
The trigger chooses the role; callers cannot create a hover dialog or a click-triggered
|
|
2542
|
-
group whose `aria-haspopup` promises the wrong target. Cross-repo: the `words` hover-card
|
|
2543
|
-
×12-13 migration + the `atlas` `EasterEgg.vue` hover-popover fold ride the `^5.0.0`
|
|
2544
|
-
peer-bump asks (`docs/tranches/BI/coordination/asks-and-consumes.md`, filed by
|
|
2545
|
-
W-FACTOR-ASKS). Machine-locked by `proof:fold-delete` (overlay clause: retired
|
|
2546
|
-
dir/subpath/export absent ×2, no consumer import, survivor `Popover` present) + the
|
|
2547
|
-
WCAG 1.4.13 / coarse-pointer / focus-return π (rides the B-close gestalt ceremony).
|
|
2548
|
-
|
|
2549
|
-
### BI.W-COMPOSITIONS-PRUNE — the demo storybook prunes 5 misfiled single-component demos out of the `compositions` band
|
|
2550
|
-
|
|
2551
|
-
No consumer API change (demo-only IA). The storybook `compositions` band is for REAL SCENES —
|
|
2552
|
-
components composed into a surface they were built for (auth-shell, settings, empty-states,
|
|
2553
|
-
form-validation, gate-pattern, the story chassis). Five registrations were SINGLE-library-family
|
|
2554
|
-
demos misfiled there; each carries an `@mkbabb/glass-ui/*` subpath (one library family owns it), so it
|
|
2555
|
-
belongs on that family's band. `proof:demo`'s compositions-census (CP1) enforces this: a surviving
|
|
2556
|
-
`compositions/*` story must carry a `/compositions/*` ROUTE-path subpath, never a library subpath.
|
|
2557
|
-
|
|
2558
|
-
| demo | was | now |
|
|
2559
|
-
|---|---|---|
|
|
2560
|
-
| Configurator | `/compositions/configurator` | `/containers/configurator` |
|
|
2561
|
-
| Instrument Chassis | `/compositions/instrument-chassis` | `/data/instrument-chassis` |
|
|
2562
|
-
| Labeled Field | `/compositions/labeled-field` | `/forms/labeled-field` |
|
|
2563
|
-
| Drawer Live-Behind | `/compositions/drawer-live-behind` | folded into `/containers/drawer` (a Live-behind mode section — one comprehensive Drawer page: snap · fixed · live-behind) |
|
|
2564
|
-
|
|
2565
|
-
The listed surviving subpaths (`@mkbabb/glass-ui/{configurator,instrument-chassis,labeled-field,drawer}`)
|
|
2566
|
-
are unchanged by this demo-only relocation. Retired demo paths resolve to the semantic 404; use the current
|
|
2567
|
-
routes in the table above. The Tooltip-family break is documented separately above.
|
|
2568
|
-
|
|
2569
|
-
### BI.W-HERO-DEMOTE — the standalone `/compositions/hero` demo is demoted to the `/compositions` section landing
|
|
2570
|
-
|
|
2571
|
-
No consumer API change (demo-only IA). The standalone `compositions/hero` storybook page (UF-K2 — "what even
|
|
2572
|
-
is /compositions/hero — this likely needs to be removed or made not a full category item, a sub-page instead")
|
|
2573
|
-
DUPLICATED the `/compositions` D1 section landing: the chassis already renders the real-scene bento (the composed
|
|
2574
|
-
scenes as tiles) over the section hero, and the landing subtitle carries the "Real scenes" identity. So the
|
|
2575
|
-
standalone story is RETIRED — no `compositions/hero` manifest row/route and `demo/stories/compositions/hero.vue`
|
|
2576
|
-
is deleted; `/compositions` renders the bento landing directly. The audacious flourishes (the `heroScale:"mega"`
|
|
2577
|
-
rung + the ℱ ornament) were page-specific decoration and die with the page — the section landing keeps the uniform
|
|
2578
|
-
D1 `hero` rung across all 11 categories (no per-category special-casing). `proof:demo`'s HD arm enforces the
|
|
2579
|
-
demotion (no standalone row/route + `hero.vue` DEFINITION-ABSENT); `proof:compositions-hero` witnesses the SFC
|
|
2580
|
-
stays retired.
|
|
2581
|
-
|
|
2582
|
-
| demo | was | now |
|
|
2583
|
-
|---|---|---|
|
|
2584
|
-
| Hero (Real scenes) | `/compositions/hero` (standalone `heroScale:"mega"` story) | the `/compositions` section landing (the real-scene bento hero) |
|
|
2488
|
+
| `hover-popover.css` substrate sheet (`.hover-popover-panel` / `.hover-popover-label`) | none | the popover content rides the shared `glass-floating` + `glass-reveal` recipe |
|
|
2585
2489
|
|
|
2586
|
-
The
|
|
2490
|
+
The trigger chooses the role, so a caller cannot create a hover dialog or a
|
|
2491
|
+
click-triggered group whose `aria-haspopup` promises the wrong target.
|
|
2587
2492
|
|
|
2588
|
-
###
|
|
2493
|
+
### ContextMenu folds onto the Menu family as `trigger="context"`
|
|
2589
2494
|
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
pointer; `click` → the reka `DropdownMenu*` substrate at the button). ONE menu engine, one
|
|
2596
|
-
set of items — the trigger is paint/anchoring, not mechanism. `v-model:open` round-trips in
|
|
2597
|
-
both modes. **Select (listbox) and Combobox (combobox) SURVIVE** the census (distinct ARIA
|
|
2598
|
-
roles + keyboard models); **Command SURVIVES** as its own command-palette root. Clean break,
|
|
2599
|
-
no alias — every consumer re-points by name.
|
|
2495
|
+
ContextMenu shared DropdownMenu's mechanism (the same roving focus, typeahead and rows),
|
|
2496
|
+
so the `ContextMenu*` family collapses onto the `DropdownMenu*` family with a `trigger`
|
|
2497
|
+
axis (`click` default, or `context`). `context` anchors the menu at the pointer through
|
|
2498
|
+
reka's `ContextMenu*` substrate; `click` anchors it at the button. `v-model:open` works in
|
|
2499
|
+
both modes. Select, Combobox and Command stay separate. Clean break, no alias.
|
|
2600
2500
|
|
|
2601
2501
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2602
2502
|
|---|---|---|
|
|
2603
2503
|
| `ContextMenu` / `ContextMenuTrigger` / `ContextMenuContent` / …Item / …CheckboxItem / …RadioItem / …RadioGroup / …Label / …Separator / …Shortcut / …Sub* (`@mkbabb/glass-ui/context-menu`) | `DropdownMenu` / `DropdownMenuTrigger` / `DropdownMenuContent` / … (`@mkbabb/glass-ui/dropdown-menu`) | `<ContextMenu><ContextMenuTrigger>…</ContextMenuTrigger><ContextMenuContent>…</ContextMenuContent></ContextMenu>` → `<DropdownMenu trigger="context"><DropdownMenuTrigger>…</DropdownMenuTrigger><DropdownMenuContent>…</DropdownMenuContent></DropdownMenu>` (rename `ContextMenu*` → `DropdownMenu*` at every node; add `trigger="context"` on the root) |
|
|
2604
2504
|
| `./context-menu` subpath export | `./dropdown-menu` | delete the import spec; import the `DropdownMenu*` family from `@mkbabb/glass-ui/dropdown-menu` |
|
|
2605
2505
|
|
|
2606
|
-
The `--dropdown-menu-{bg,border,shadow}`
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
survivor `DropdownMenu` present) + the roving-focus/typeahead-parity π (`trigger=context`
|
|
2611
|
-
right-click reads identically to `trigger=click`, Chrome + WebKit, both modes; rides the
|
|
2612
|
-
B-close gestalt ceremony). No cross-repo ContextMenu consumer in the round-2b roster
|
|
2613
|
-
(invariant-11 probe confirmed at execution).
|
|
2614
|
-
|
|
2615
|
-
### BI.W-MULTISELECT-FOLD — MultiSelect folds onto `<Combobox multiple>`
|
|
2616
|
-
|
|
2617
|
-
> [BK #81 W-PICKER, 2026-08-08 — **STRUCK IN PLACE, survivor column false.** This
|
|
2618
|
-
> section, `src/index.ts` and `src/components/index.ts` all named `<Combobox>` (and
|
|
2619
|
-
> `<ComboboxAnchor>` / `<ComboboxList>` / `<ComboboxItem>`) as the survivor. **No
|
|
2620
|
-
> such component has ever existed in this library**, at any version — detector:
|
|
2621
|
-
> `rg -n "export .*\bCombobox\b" src/index.ts src/forms.ts` → 0 matches; the only
|
|
2622
|
-
> `Combobox*` symbols on disk are reka-ui imports inside `components/command/` and
|
|
2623
|
-
> the prop TYPES in `_shared/selection.ts`. The honest retirement is: **`ui/multi-
|
|
2624
|
-
> select` retired, no replacement.** The mechanism does ship — reka's `ComboboxRoot`
|
|
2625
|
-
> is `<Command>`'s substrate, and `multiple` now genuinely reaches it through
|
|
2626
|
-
> `<Command>`'s attribute forward (landed this row) — so a multi-select is a
|
|
2627
|
-
> composition a consumer builds, not a component the library hands over. The
|
|
2628
|
-
> "machine-locked by `proof:fold-delete` (survivor Combobox `multiple` capability
|
|
2629
|
-
> present)" clause could never have held; the surviving pin is
|
|
2630
|
-
> `tests/components/select.contract.test.ts`'s `"multiple" extends keyof
|
|
2631
|
-
> SelectProps → false`, which is real and stays.]
|
|
2632
|
-
|
|
2633
|
-
The Kronecker fold (D-FACTOR PASS-1 §B): `MultiSelect` was a `Popover` + `Command`
|
|
2634
|
-
composition over the SAME Combobox-family mechanism (a filtered listbox with a
|
|
2635
|
-
selection model) — no distinct mechanism, so it folds onto `<Combobox multiple>`. reka's
|
|
2636
|
-
`ComboboxRoot` carries `multiple` natively (an array `v-model` + `by` comparison); the
|
|
2637
|
-
selected values render as **chips-in-trigger** via the shared glass-chip capsule register
|
|
2638
|
-
(the TagsInput chip register — `.glass-chip .glass-capsule`), read from the forwarded
|
|
2639
|
-
root `modelValue` slot state. `MultiSelect` was a root-barrel-only export (NO subpath at
|
|
2640
|
-
HEAD), so there is no `./multi-select` package export to retire. Clean break, no alias.
|
|
2506
|
+
The `--dropdown-menu-{bg,border,shadow}` tokens join `--dropdown-menu-font` on
|
|
2507
|
+
`.dropdown-menu-content`, so a consumer retunes the menu plate with one `:root`
|
|
2508
|
+
override. (8.0.0 later renamed the family's subpath to `./menu`, and 11.0.0 gives the
|
|
2509
|
+
context menu its own `ContextMenu` root again; see those sections.)
|
|
2641
2510
|
|
|
2642
|
-
|
|
2643
|
-
|---|---|---|
|
|
2644
|
-
| `MultiSelect` / `MultiSelectOption` (root barrel `@mkbabb/glass-ui`) | `Combobox` (+ `multiple`) (`@mkbabb/glass-ui/forms`) | `<MultiSelect v-model="arr" :options="opts" placeholder="…" :max-display="3" />` → `<Combobox v-model="arr" multiple>`, composing `<ComboboxAnchor>` (render selected chips-in-trigger from the `modelValue` slot on the glass-chip capsule register) + `<ComboboxList>` / `<ComboboxInput>` / `<ComboboxItem :value>` (the same filtered items). The prior `:options` array becomes explicit `<ComboboxItem>`s; `:max-display` has no analogue (the chips-in-trigger wrap, they do not collapse to `(+N)`). |
|
|
2511
|
+
### MultiSelect is removed
|
|
2645
2512
|
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
gestalt ceremony).
|
|
2513
|
+
`MultiSelect` and `MultiSelectOption` (root barrel only, no subpath) are removed with no
|
|
2514
|
+
replacement component. Earlier text here named a `<Combobox multiple>` survivor, but the
|
|
2515
|
+
library has never exported a `Combobox` component. A multi-select is a composition you
|
|
2516
|
+
build: reka's `ComboboxRoot` is `<Command>`'s substrate, and `multiple` reaches it through
|
|
2517
|
+
`<Command>`'s attribute forward, so `<Command multiple>` with your own chips in the
|
|
2518
|
+
trigger is the shape. `Select` does not take `multiple`.
|
|
2653
2519
|
|
|
2654
|
-
###
|
|
2520
|
+
### One explicit `<Chip>` family
|
|
2655
2521
|
|
|
2656
|
-
`<Chip>` is the single compact plate
|
|
2522
|
+
`<Chip>` is the single compact plate and control family. Its independent axes are
|
|
2657
2523
|
`mode: static | selectable | action | removable`, `shape: pill | cell | icon`, `size`,
|
|
2658
2524
|
`tone`, and `surface`. Static is the default and renders an inert `<span>` with no role,
|
|
2659
2525
|
focus, pressed state, pointer cursor, or forwarded listeners. Selectable uses toggle
|
|
2660
2526
|
semantics, action is a native button, and removable keeps an inert root with one named
|
|
2661
2527
|
remove button. Shape controls geometry only; `shape="icon"` accepts a slotted glyph rather
|
|
2662
|
-
than owning icon rendering. `Badge` remains a distinct static label. Clean
|
|
2663
|
-
|
|
2528
|
+
than owning icon rendering. `Badge` remains a distinct static label. Clean break, no
|
|
2529
|
+
alias.
|
|
2664
2530
|
|
|
2665
2531
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2666
2532
|
|---|---|---|
|
|
2667
2533
|
| `ToggleChip` (`@mkbabb/glass-ui/toggle-chip`) | `Chip` (`@mkbabb/glass-ui/chip`) | `<ToggleChip v-model="on" variant="chip">…</ToggleChip>` → `<Chip v-model="on" mode="selectable" shape="pill">…</Chip>`; `variant="cell"` → `shape="cell"`. |
|
|
2668
2534
|
| `SelectableChip` (`@mkbabb/glass-ui/selectable-chip`) | `Chip` (`@mkbabb/glass-ui/chip`) | `<SelectableChip v-model="on" :tone="t">…</SelectableChip>` → `<Chip v-model="on" mode="selectable" :tone="t">…</Chip>`. |
|
|
2669
2535
|
| `toggleChipVariants` / `ToggleChipVariants` (`/toggle-chip`) | `chipVariants` / `ChipVariants` (`/chip`) | Rename the recipe and type; the recipe axes are now `interactive × size × shape`. |
|
|
2670
|
-
| `./toggle-chip` + `./selectable-chip` subpath exports | `./chip` | delete the import specs; import `Chip` / `chipVariants` from `@mkbabb/glass-ui/chip` (
|
|
2536
|
+
| `./toggle-chip` + `./selectable-chip` subpath exports | `./chip` | delete the import specs; import `Chip` / `chipVariants` from `@mkbabb/glass-ui/chip` (not on the root barrel) |
|
|
2671
2537
|
|
|
2672
|
-
The `/chip` subpath
|
|
2673
|
-
|
|
2538
|
+
The `/chip` subpath stays light: concrete colours resolve through the lazy accent-tone
|
|
2539
|
+
solver while CSS variables stay on the synchronous path.
|
|
2674
2540
|
|
|
2675
|
-
###
|
|
2541
|
+
### `CardTier` folds onto the `surface` axis
|
|
2676
2542
|
|
|
2677
|
-
The bare
|
|
2678
|
-
`@mkbabb/glass-ui/surface`)
|
|
2543
|
+
The bare tier-and-decoration glass plate is extracted as `<Surface>` (published at
|
|
2544
|
+
`@mkbabb/glass-ui/surface`), and `Card`'s old tier spellings fold onto the same axis.
|
|
2679
2545
|
Clean break, no alias.
|
|
2680
2546
|
|
|
2681
2547
|
| Retired (5.0.0) | Replacement |
|
|
@@ -2684,589 +2550,362 @@ Clean break, no alias.
|
|
|
2684
2550
|
| `CardTier` `"deep"` (tier prop spelling) | `deep` on `Card`/`Surface` |
|
|
2685
2551
|
|
|
2686
2552
|
Card's former `surface="cartoon"` superset is now the explicit `cartoon` boolean;
|
|
2687
|
-
`surface` accepts only the shared `glass | veil | opaque` material axis. The
|
|
2688
|
-
|
|
2553
|
+
`surface` accepts only the shared `glass | veil | opaque` material axis. The `ScrollCard`
|
|
2554
|
+
and `ScrollCardHeader` wrappers are removed; compose `Card` with
|
|
2689
2555
|
`class="card-scroll-host"` and `CardHeader shrink` where the live timeline is needed.
|
|
2690
2556
|
|
|
2691
|
-
|
|
2692
|
-
publishes; the private-union floor holds).
|
|
2557
|
+
### The `surface="clear"` member is removed
|
|
2693
2558
|
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
The `surface="clear"` decoration member (BE.W-CLEAR-VARIANT — the Apple-Clear
|
|
2697
|
-
maximally-translucent plate + its mandatory `::before` legibility scrim) is RETIRED as
|
|
2698
|
-
dead substrate: a full mechanism with ZERO binding consumers (0 in-repo + 0 across
|
|
2699
|
-
atlas / speedtest / slides / value.js / keyframes.js at npm 4.2.0 — the substrate-
|
|
2700
|
-
without-consumer invariant J-inv-10). Clean break, no alias.
|
|
2559
|
+
The `surface="clear"` member (a maximally translucent plate with a mandatory legibility
|
|
2560
|
+
scrim) had no consumer, so it is removed. Clean break, no alias.
|
|
2701
2561
|
|
|
2702
2562
|
| Retired (5.0.0) | Replacement |
|
|
2703
2563
|
|---|---|
|
|
2704
|
-
| `surface="clear"` (Surface union member) | none
|
|
2705
|
-
| `--glass-bg-clear` / `--glass-opacity-clear` tokens | none (
|
|
2706
|
-
|
|
2707
|
-
No
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
every `Surface` union member resolves ≥1 real non-demo/non-self consumer in `src/` OR is
|
|
2711
|
-
DEFINITION-ABSENT — the vacuous-green a dead member used to ride is closed) + the coupled
|
|
2712
|
-
retirement of `proof:glass-foundation`'s A3 clear arm (the gate that verified the member
|
|
2713
|
-
dies WITH it) + the `proof:encapsulation` G2 3-member re-green.
|
|
2714
|
-
|
|
2715
|
-
### BI.W-DIALOG-PLACEMENT — Sheet folds onto `<Dialog placement>`; ConfirmDialog → a Dialog preset
|
|
2716
|
-
|
|
2717
|
-
The Kronecker fold (D-FACTOR FACTOR-B): `Sheet` was the SAME reka `DialogRoot` + the
|
|
2718
|
-
SAME FocusScope as Dialog — its side-slide is PAINT, not a distinct mechanism — so it
|
|
2719
|
-
folds onto a `<DialogContent placement="center | top | right | bottom | left">` axis
|
|
2720
|
-
(`center` default = the byte-identical centered modal; the four side values are the
|
|
2721
|
-
retired Sheet sides). The per-side rounding/border are the retired `sheetVariants`
|
|
2722
|
-
decoration arms verbatim; the slide GEOMETRY is byte-identical but the motion is now the
|
|
2723
|
-
interruptible spring (not the `sheet-animate` keyframe); the structural positioning ships
|
|
2724
|
-
PRECOMPILED off `[data-slot="dialog-content"][data-placement]` (`dialog-placement.css`,
|
|
2725
|
-
the renamed `sheet.css`). **`ConfirmDialog` DEMOTES to a Dialog preset** — its
|
|
2726
|
-
promise/`v-model:open` opener was thin (a glass `<DialogContent :show-close="false">` +
|
|
2727
|
-
a title/description + a confirm/cancel footer + a loading dismiss-guard), a CONSUMER
|
|
2728
|
-
composition now (presets live in consumers), not a shipped component. Clean break, no
|
|
2729
|
-
alias.
|
|
2564
|
+
| `surface="clear"` (Surface union member) | none; use `surface="glass"` (the translucent default) or `surface="veil"` (the borderless text plate) |
|
|
2565
|
+
| `--glass-bg-clear` / `--glass-opacity-clear` tokens | none (the `.glass-clear` decoration and the `[data-surface="clear"]` scrim rule go with the member) |
|
|
2566
|
+
|
|
2567
|
+
No surviving surface changes paint.
|
|
2568
|
+
|
|
2569
|
+
### Sheet folds onto `<Dialog placement>`, and ConfirmDialog becomes a Dialog preset
|
|
2730
2570
|
|
|
2731
|
-
|
|
2732
|
-
it
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2571
|
+
`Sheet` was the same reka `DialogRoot` and focus scope as Dialog, with a side slide on
|
|
2572
|
+
top, so it folds onto `<DialogContent placement="center | top | right | bottom | left">`.
|
|
2573
|
+
`center` is the default centred modal; the four sides are the old Sheet sides, with the
|
|
2574
|
+
same rounding, border and slide geometry, now moved by the interruptible spring. The
|
|
2575
|
+
positioning ships precompiled in `dialog-placement.css` (the renamed `sheet.css`).
|
|
2576
|
+
**`ConfirmDialog` becomes a preset you compose**: a glass `<DialogContent
|
|
2577
|
+
:show-close="false">` with a title, a description, a confirm and cancel footer, and a
|
|
2578
|
+
loading guard on dismiss. Clean break, no alias.
|
|
2579
|
+
|
|
2580
|
+
At 5.0.0 `Drawer` stays: it owns the snap-detent physics and the live-behind non-modal
|
|
2581
|
+
focus model. A side sheet with no detents is `<Dialog placement="right">`; a detented
|
|
2582
|
+
bottom sheet over a live surface is `<Drawer>`. Sheet's `dragDismiss` does not carry into
|
|
2583
|
+
the fold. (8.0.0 later folds `Drawer` into `Sheet`; see _Package subpaths_ under 8.0.0.)
|
|
2738
2584
|
|
|
2739
2585
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2740
2586
|
|---|---|---|
|
|
2741
2587
|
| `Sheet` / `SheetTrigger` / `SheetContent` / `SheetHeader` / `SheetTitle` / `SheetDescription` / `SheetFooter` / `SheetClose` (`@mkbabb/glass-ui/sheet`) | `Dialog` / `DialogTrigger` / `DialogContent` / `DialogHeader` / `DialogTitle` / `DialogDescription` / `DialogFooter` / `DialogClose` (`@mkbabb/glass-ui/dialog`) | `<Sheet>…<SheetContent side="right">` → `<Dialog>…<DialogContent placement="right">`; every `Sheet*` sub-part → its `Dialog*` twin (same slot shape) |
|
|
2742
|
-
| `<SheetContent side="top\|right\|bottom\|left">` | `<DialogContent placement="…">` | `side="right"` → `placement="right"` (
|
|
2743
|
-
| `<SheetContent dragDismiss dragThreshold>` | `<Drawer>` (snap physics) | a drag-dismissable bottom sheet is a `Drawer
|
|
2744
|
-
| `SheetVariants` (type, `/sheet`) | `Placement` axis (`@mkbabb/glass-ui`) | `SheetVariants['side']` → `Placement` (`"center" \| "top" \| "right" \| "bottom" \| "left"`); no successor CVA type
|
|
2745
|
-
| `ConfirmDialog` (`@mkbabb/glass-ui/confirm-dialog`) | `Dialog` preset (consumer composition) | `<ConfirmDialog v-model:open title description confirm-label destructive :loading @confirm>` → a `<Dialog v-model:open><DialogContent surface="glass" :show-close="false" @escape-key-down @interact-outside>` with a `<DialogHeader>` title/description
|
|
2588
|
+
| `<SheetContent side="top\|right\|bottom\|left">` | `<DialogContent placement="…">` | `side="right"` → `placement="right"` (`placement="center"` is the default centred modal) |
|
|
2589
|
+
| `<SheetContent dragDismiss dragThreshold>` | `<Drawer>` (snap physics) | a drag-dismissable bottom sheet is a `Drawer`, not a placement Dialog |
|
|
2590
|
+
| `SheetVariants` (type, `/sheet`) | `Placement` axis (`@mkbabb/glass-ui`) | `SheetVariants['side']` → `Placement` (`"center" \| "top" \| "right" \| "bottom" \| "left"`); no successor CVA type |
|
|
2591
|
+
| `ConfirmDialog` (`@mkbabb/glass-ui/confirm-dialog`) | `Dialog` preset (consumer composition) | `<ConfirmDialog v-model:open title description confirm-label destructive :loading @confirm>` → a `<Dialog v-model:open><DialogContent surface="glass" :show-close="false" @escape-key-down @interact-outside>` with a `<DialogHeader>` title/description and a `<DialogFooter>` cancel/confirm `<Button>` pair (the confirm reads `tone="destructive"` when destructive, see the next section; the loading guard calls `preventDefault` on the dismiss intents while in flight) |
|
|
2746
2592
|
| `./sheet` subpath export | `./dialog` | delete the import spec; import from `@mkbabb/glass-ui/dialog` |
|
|
2747
|
-
| `./confirm-dialog` subpath export | `./dialog` | as above
|
|
2748
|
-
| `sheet.css` (`[data-slot="sheet-content"][data-side]`) | `dialog-placement.css` (`[data-slot="dialog-content"][data-placement]`) | the precompiled
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
`
|
|
2760
|
-
present) + the edge-slide + focus-return π (Chrome + real WebKit, both modes; rides the
|
|
2761
|
-
B-close gestalt ceremony).
|
|
2762
|
-
|
|
2763
|
-
### BI.W-BUTTON-TONE — `Button.destructive` migrates off `variant` onto the `tone` axis
|
|
2764
|
-
|
|
2765
|
-
The Kronecker factorization reaches the library's oldest component (PASS-4B ruling 5 — "destructive
|
|
2766
|
-
IS a tone"). `destructive` was a `variant` CVA member — but a destructive intent is a SEMANTIC TONE,
|
|
2767
|
-
not a style/surface register, so it moves onto the ORTHOGONAL `tone` axis (`_shared/axes.ts`'s `TONES`
|
|
2768
|
-
tuple, the ONE grammar home). `variant` is now STYLE-only (`default`/`primary-audacious`/`gold-audacious`/
|
|
2769
|
-
`outline`/`secondary`/`accent`/`ghost`/`glass`/`glass-wash`/`ai`/`link`) — machine-locked by
|
|
2770
|
-
`proof:variant-residual` (no tone/size/surface concept may hide in a `variant` map). The four-state
|
|
2771
|
-
fill/hover/active/aria-pressed recipe moves VERBATIM onto the `tone.destructive` arm (the byte-identical
|
|
2772
|
-
CVA rows); `tone="neutral"` is the tone-less default (the variant paints alone). Clean break, no alias.
|
|
2773
|
-
`ButtonVariants['tone']` publishes on `/api` in lockstep (it re-derives off the CVA `tone` map — no
|
|
2774
|
-
separate api edit).
|
|
2593
|
+
| `./confirm-dialog` subpath export | `./dialog` | as above; compose the confirm preset over `Dialog` |
|
|
2594
|
+
| `sheet.css` (`[data-slot="sheet-content"][data-side]`) | `dialog-placement.css` (`[data-slot="dialog-content"][data-placement]`) | the precompiled positioning file renames; its `:where()` override specificity is unchanged |
|
|
2595
|
+
|
|
2596
|
+
A side dialog reads the Dialog glass rung `--glass-bg-dialog` (the old Sheet read the
|
|
2597
|
+
floating rung), so its plate alpha shifts slightly; the slide geometry is unchanged.
|
|
2598
|
+
|
|
2599
|
+
### `Button` `destructive` moves off `variant` onto the `tone` axis
|
|
2600
|
+
|
|
2601
|
+
A destructive intent is a semantic tone, not a style, so it moves onto the `tone` axis.
|
|
2602
|
+
`variant` is now style-only (`default`/`primary-audacious`/`gold-audacious`/`outline`/
|
|
2603
|
+
`secondary`/`accent`/`ghost`/`glass`/`glass-wash`/`ai`/`link`). The destructive fill,
|
|
2604
|
+
hover, active and pressed paint moves unchanged onto `tone="destructive"`, and
|
|
2605
|
+
`tone="neutral"` is the default. Clean break, no alias.
|
|
2775
2606
|
|
|
2776
2607
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2777
2608
|
|---|---|---|
|
|
2778
|
-
| `<Button variant="destructive">` | `<Button tone="destructive">` |
|
|
2779
|
-
| `ButtonVariants['variant']` member `"destructive"` | `ButtonVariants['tone']` member `"destructive"` | the CVA `variant` map
|
|
2780
|
-
|
|
2781
|
-
Cross-repo: the consumer call-site migration (`<Button variant="destructive">` → `<Button tone="destructive">`
|
|
2782
|
-
in words/atlas/muster/sci-report, paired with the kf `^5.2.0` + value `^3.1.0` peer bump) is filed by
|
|
2783
|
-
`BI.W-FACTOR-ASKS` on the `docs/tranches/BI/coordination/asks-and-consumes.md` roster. Machine-locked by
|
|
2784
|
-
`proof:variant-residual` (the `button:destructive` residual GREENs when `destructive` is a `tone` value +
|
|
2785
|
-
DEFINITION-ABSENT from the `variant` map) — jointly with `BI.W-SYNONYM-RENAMES` (the alert/badge tone
|
|
2786
|
-
residuals). The tone byte-diff rides `W-SYNONYM-RENAMES-DELTA.md` + the B-close gestalt ceremony.
|
|
2609
|
+
| `<Button variant="destructive">` | `<Button tone="destructive">` | `tone` composes with any style, so a destructive outline or ghost button is now expressible: `<Button variant="outline" tone="destructive">` |
|
|
2610
|
+
| `ButtonVariants['variant']` member `"destructive"` | `ButtonVariants['tone']` member `"destructive"` | the CVA `variant` map drops `destructive`; the CVA `tone` map adds it (`"neutral" \| "destructive"`, default `neutral`) |
|
|
2787
2611
|
|
|
2788
|
-
###
|
|
2612
|
+
### Synonym renames: `type`/`variant` tone, `direction`, `position` and `ToastVariant`
|
|
2789
2613
|
|
|
2790
|
-
|
|
2791
|
-
distinct mechanism). Every rename is a NAME rename with ZERO value change (byte-identical paint); the `/api`
|
|
2792
|
-
surface moves in lockstep (the old synonym name is DEFINITION-ABSENT, no alias, no dual path).
|
|
2614
|
+
Each of these is a name change with no paint change, and the old name has no alias.
|
|
2793
2615
|
|
|
2794
|
-
**
|
|
2795
|
-
`type
|
|
2796
|
-
|
|
2797
|
-
still resolves the SAME classes/`.feedback-tone-<name>` register.
|
|
2616
|
+
**The tone axis.** The status register (success, warning, info, destructive, and neutral)
|
|
2617
|
+
moves off the `type` and `variant` maps onto the one shared `tone` axis. Each tone still
|
|
2618
|
+
resolves the same `.feedback-tone-<name>` classes.
|
|
2798
2619
|
|
|
2799
2620
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2800
2621
|
|---|---|---|
|
|
2801
|
-
| `<Alert variant="destructive\|success\|warning\|info">` | `<Alert tone="…">` | the CVA `variant` map
|
|
2802
|
-
| `<Badge variant="destructive\|success\|warning\|info">` | `<Badge tone="…">` | `variant` stays
|
|
2803
|
-
| `Toast.variant?: ToastVariant` (`'default'\|'destructive'\|…`) | `Toast.tone?: Tone` |
|
|
2804
|
-
| `Notification` item `type: 'success'\|'error'\|'info'\|'warning'` | item `tone: 'success'\|'warning'\|'info'\|'destructive'` |
|
|
2622
|
+
| `<Alert variant="destructive\|success\|warning\|info">` | `<Alert tone="…">` | the CVA `variant` map becomes a `tone` map; `variant:'default'` → `tone:'neutral'`. `Alert` now emits `:data-tone` |
|
|
2623
|
+
| `<Badge variant="destructive\|success\|warning\|info">` | `<Badge tone="…">` | `variant` stays style-only (`default`/`secondary`/`outline`); a new `tone` map carries the semantics. `Badge` emits `:data-tone`, and the glass register keys off `.badge-atom--glass[data-tone='…']` |
|
|
2624
|
+
| `Toast.variant?: ToastVariant` (`'default'\|'destructive'\|…`) | `Toast.tone?: Tone` | `ToastVariant` is removed; the toast reads the shared `Tone` axis (`default` → `neutral`), published from `@mkbabb/glass-ui/axes`. `Toast` emits `:data-tone` |
|
|
2625
|
+
| `Notification` item `type: 'success'\|'error'\|'info'\|'warning'` | item `tone: 'success'\|'warning'\|'info'\|'destructive'` | `type` → `tone`; `error` becomes `destructive` |
|
|
2805
2626
|
|
|
2806
|
-
**Orientation
|
|
2627
|
+
**Orientation and placement.**
|
|
2807
2628
|
|
|
2808
2629
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2809
2630
|
|---|---|---|
|
|
2810
|
-
| `<StackedIconGroup direction="horizontal\|vertical">` | `<StackedIconGroup orientation="…">` | `direction` →
|
|
2811
|
-
| `HeaderRibbon.position?: HeaderRibbonPosition` (`'left'\|'right'`) | `HeaderRibbon.placement?: HeaderRibbonPlacement` | `position` →
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
`
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
`
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
> **The refraction half of this entry is STRUCK.** `.glass-lens` / `#glass-refract` are
|
|
2826
|
-
> themselves DELETED at 8.0.0 — see the §8.0.0 delete banner ("The `.glass-lens` refraction is
|
|
2827
|
-
> DELETED — the class, the filter asset, and both root exports"). Every "re-point onto
|
|
2828
|
-
> `.glass-lens`" below is struck; the surviving door is the `.glass-{wash,quiet,resting,floating,overlay}`
|
|
2829
|
-
> blur+tint base, with NO refraction successor.
|
|
2830
|
-
|
|
2831
|
-
The FAM-10 mechanism-distinctness ruling (UF-B2): `<GlassPanel>` owned NO distinct mechanism — its tier map
|
|
2832
|
-
was Card's, its surface was the shared `surface` resolver, and its `useGlassRenderer`/`createGlassFilter`
|
|
2833
|
-
JS-canvas `feDisplacementMap` was a SECOND refraction path. A slotless glass surface needs no component:
|
|
2834
|
-
`<Surface tier surface>` (or the bare `class="glass-resting"` utility) serves the plate case. Clean
|
|
2835
|
-
break, no alias — the component, its subpath, its `/api` type, its tier-proof gate, and the JS-canvas
|
|
2836
|
-
refraction builder all retire together.
|
|
2631
|
+
| `<StackedIconGroup direction="horizontal\|vertical">` | `<StackedIconGroup orientation="…">` | `direction` → `orientation` (`:data-direction` → `:data-orientation`) |
|
|
2632
|
+
| `HeaderRibbon.position?: HeaderRibbonPosition` (`'left'\|'right'`) | `HeaderRibbon.placement?: HeaderRibbonPlacement` | `position` → `placement`; the type `HeaderRibbonPosition` → `HeaderRibbonPlacement` (published on `/header-ribbon`) |
|
|
2633
|
+
|
|
2634
|
+
These keep their names because they mean something different: `SortableList.axis` (the
|
|
2635
|
+
drag axis), `DockStack.position` (alignment), `MetricStack.register` (display mode),
|
|
2636
|
+
`Toaster.position` (corner anchor) and `Drawer.direction` (a forwarded reka prop).
|
|
2637
|
+
|
|
2638
|
+
### `GlassPanel` retires onto `Card`, `<Surface>` and `.glass-resting`
|
|
2639
|
+
|
|
2640
|
+
`<GlassPanel>` shared Card's tier map and the shared surface resolver, and its JS-canvas
|
|
2641
|
+
`feDisplacementMap` was a second refraction path. A slotless glass surface needs no
|
|
2642
|
+
component: `<Surface tier surface>`, or the bare `class="glass-resting"`, serves the plate
|
|
2643
|
+
case. Clean break, no alias. (`.glass-lens`, which earlier text here named as the
|
|
2644
|
+
refraction successor, is itself deleted at 8.0.0, so there is no refraction path.)
|
|
2837
2645
|
|
|
2838
2646
|
| Retired (5.0.0) | Survivor | Rename |
|
|
2839
2647
|
|---|---|---|
|
|
2840
|
-
| `GlassPanel` (`@mkbabb/glass-ui/glass-panel`) | `Card` / `<Surface>` / `class="glass-resting"` | `<GlassPanel tier="resting">…</GlassPanel>` → `<Surface tier="resting" surface="glass">…</Surface>` (or the bare `class="glass-resting"` on the plate)
|
|
2841
|
-
| `GlassPanelProps` (type, `/api`) | none
|
|
2648
|
+
| `GlassPanel` (`@mkbabb/glass-ui/glass-panel`) | `Card` / `<Surface>` / `class="glass-resting"` | `<GlassPanel tier="resting">…</GlassPanel>` → `<Surface tier="resting" surface="glass">…</Surface>` (or the bare `class="glass-resting"` on the plate) |
|
|
2649
|
+
| `GlassPanelProps` (type, `/api`) | none | `<Surface>` publishes `SurfaceProps` (the shared tier × surface axis) |
|
|
2842
2650
|
| `./glass-panel` subpath export | `./card` / root `<Surface>` | delete the import spec; import `Card`/`Surface` from `@mkbabb/glass-ui` (root) or `@mkbabb/glass-ui/card` |
|
|
2843
|
-
| `useGlassRenderer` / `createGlassFilter` / `destroyGlassFilter` (the JS-canvas refraction builder) |
|
|
2844
|
-
| `.glass-card` (co-selector alias) | `.glass-resting` | fold the alias onto `.glass-resting` (
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
`
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
import
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
spectrum-thumb focus-ring pairing, the WatercolorDot solid-ring floor, the
|
|
2862
|
-
`backdrop-filter: none` prefix policy — are internal fixes with no API change):
|
|
2863
|
-
|
|
2864
|
-
- **PKT-1 (value.js P2)** — the emitted `dist/styles/components.css` R3 base block no
|
|
2865
|
-
longer re-declares a **bare** `:root { --default-transition-duration: 150ms }` over a
|
|
2866
|
-
consumer's own `@theme` alias. It now routes THROUGH the house token —
|
|
2867
|
-
`--default-transition-duration: var(--duration-fast, 150ms)`. Consumer impact: a
|
|
2868
|
-
bare `@import "@mkbabb/glass-ui/styles"` consumer's Tailwind `.transition-*`
|
|
2869
|
-
utilities now read the house `--duration-fast` (0.2s) as their default duration
|
|
2870
|
-
(was the frozen 150ms), and a consumer that retunes `--duration-fast` (or its own
|
|
2871
|
-
`--default-transition-duration` `@theme` alias) now GOVERNS them instead of being
|
|
2872
|
-
clobbered. No import or class rename — a felt-duration retune only.
|
|
2873
|
-
- **X7 (value.js P10/T-40)** — new customization tokens `--type-weight-display` (600),
|
|
2874
|
-
`--type-weight-heading` (700), `--type-weight-title` (700). The `text-display*` /
|
|
2875
|
-
`text-heading` / `text-title` utilities read them instead of hardcoded weights, so a
|
|
2876
|
-
consumer dials the bold-letterform character from ONE override. Purely additive
|
|
2877
|
-
(defaults byte-identical); no break.
|
|
2878
|
-
|
|
2879
|
-
Machine-locked by `proof:xr-producer-repairs` (X1 duration-through-token on the fresh
|
|
2880
|
-
dist + X7 tokens-declared + `text-title` reads `var(--type-weight-title)`).
|
|
2881
|
-
|
|
2882
|
-
**Deferred (NOT in this cut):** the T-45 glass-ladder backdrop edge-bleed (X2) — its
|
|
2883
|
-
oversampled-pseudo cure is architecturally blocked at the rung (both pseudos claimed;
|
|
2884
|
-
`.btn-glass`/`.glass-deep`/the dock re-declare `backdrop-filter` on the host, so moving
|
|
2885
|
-
the plate to a pseudo double-blurs those consumers; the edge rim interferes with an
|
|
2886
|
-
edge-oversampling blur). Routed to a wrapper-architecture follow-up + the #92 paint
|
|
2887
|
-
batch (see `docs/tranches/BI/audit/visual/W-XR-PRODUCER-REPAIRS-DELTA.md`). Likewise the
|
|
2888
|
-
X5 `color-mix`-@property-collapse on bare `.glass-wash` is booked to #92 (a live-paint
|
|
2889
|
-
engine repro).
|
|
2651
|
+
| `useGlassRenderer` / `createGlassFilter` / `destroyGlassFilter` (the JS-canvas refraction builder) | none; the `.glass-{rung}` blur+tint base | there is no refraction path |
|
|
2652
|
+
| `.glass-card` (co-selector alias) | `.glass-resting` | fold the alias onto `.glass-resting` (same paint) |
|
|
2653
|
+
|
|
2654
|
+
A plate that moves from `GlassPanel` to `<Surface>` or `class="glass-resting"` paints the
|
|
2655
|
+
same at every tier.
|
|
2656
|
+
|
|
2657
|
+
### `--default-transition-duration` follows `--duration-fast`, and three weight tokens arrive
|
|
2658
|
+
|
|
2659
|
+
- The emitted `dist/styles/components.css` no longer re-declares a bare
|
|
2660
|
+
`:root { --default-transition-duration: 150ms }` over your own `@theme` alias. It now
|
|
2661
|
+
reads `--default-transition-duration: var(--duration-fast, 150ms)`. So with a bare
|
|
2662
|
+
`@import "@mkbabb/glass-ui/styles"`, Tailwind's `.transition-*` utilities take the house
|
|
2663
|
+
`--duration-fast` (0.2s) as their default, and retuning `--duration-fast` (or your own
|
|
2664
|
+
`--default-transition-duration` alias) now governs them. No import or class rename.
|
|
2665
|
+
- New tokens `--type-weight-display` (600), `--type-weight-heading` (700) and
|
|
2666
|
+
`--type-weight-title` (700). The `text-display*` / `text-heading` / `text-title`
|
|
2667
|
+
utilities read them instead of fixed weights, so one override dials the letterform
|
|
2668
|
+
weight. Purely additive; the defaults are unchanged.
|
|
2890
2669
|
|
|
2891
2670
|
## 4.1.0
|
|
2892
2671
|
|
|
2893
|
-
**
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
`
|
|
2903
|
-
`
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
`
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
`
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
`--
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
ADDITIVE (4.1.0): aurora `warpMode` gains `"curl"` — the Bridson curl-noise flow warp (opt-in; the default fbm/cellular/hybrid render byte-identical). The published `WarpMode` union widens additively; no break (BB.B1).
|
|
2974
|
-
|
|
2975
|
-
ADDITIVE (4.1.0, BB.W-SURFACE-AXIS-COMPLETE): the shared `Surface = "glass" | "veil" | "opaque"`
|
|
2976
|
-
axis reaches the last two surfaces R8-12 named verbatim — `<Toast>` and `<Button>` each gain a
|
|
2977
|
-
`surface` prop (the Card-`surface`-gains-`veil` precedent). `<Toast surface="glass">` (the default,
|
|
2978
|
-
byte-identical to today's `glass-floating` plate) composes WITH the `variant` tone arm — the
|
|
2979
|
-
feedback-tone tint rides ON the resolved surface, orthogonal to the {glass·veil·opaque} decoration.
|
|
2980
|
-
`<Button surface=…>` defaults UNSET (the `variant` axis owns Button's default); `surface="opaque"`
|
|
2981
|
-
and the `solid` variant are the same `--glass-level:0` endpoint reached from two axes (NOT
|
|
2982
|
-
duplicated recipes). No break for either.
|
|
2983
|
-
|
|
2984
|
-
**ADDITIVE (4.1.0, BB.W-ON-GLASS-FG) — the surface-aware FOREGROUND register (the dark-theme
|
|
2985
|
-
whisper collapse closed).** glass-ui mints a THREE-RUNG on-glass foreground family whose
|
|
2986
|
-
contrast TARGET is the COMPOSITED content-tier glass FILL, not the canvas: `--on-glass-muted`
|
|
2987
|
-
(+ `--on-glass-muted-strong`), `--input-on-glass`, and `--progress-track-on-glass`. The
|
|
2988
|
-
glass-first MAXIMAL default (AX.W54) makes a caption/well/track over a TRANSLUCENT glass plate
|
|
2989
|
-
the common case, where the canvas-calibrated `--muted-foreground` (= `--neutral-5`, "AA vs
|
|
2990
|
-
page") COLLAPSED on its own surface (1.15-3.29:1 measured in dark theme). The calm-light content
|
|
2991
|
-
tiers (`.glass-card`/`.glass-resting`/`.glass-quiet`/`.glass-wash`) now re-point
|
|
2992
|
-
`--muted-foreground` → `--on-glass-muted` (+ the `-strong` twin) BESIDE the BA adaptive-glass
|
|
2993
|
-
seam (the THIRD state — between page-muted and the bright-bucket full ink; legible-AND-subordinate),
|
|
2994
|
-
so every `text-muted-foreground` caption + CardDescription inherits the on-glass rung with ZERO
|
|
2995
|
-
per-site edit. Input/Textarea wells read `--input-on-glass`; the Progress default/gradient track
|
|
2996
|
-
reads `--progress-track-on-glass`. No break, no rename — the page-muted register
|
|
2997
|
-
(`--muted-foreground: var(--neutral-5)`) is UNTOUCHED for the opaque-canvas case.
|
|
2998
|
-
|
|
2999
|
-
CONSUMER-INTERIM DELETION (the ≥2-consumer law closed): a consumer that hand-re-declared
|
|
3000
|
-
`--muted-foreground` over glass — the slides `deck.css §1` `--muted-foreground`/`-strong`
|
|
3001
|
-
override, the speedtest WG (secondary-text + value-plate) + WV1 (survey-seat) interims — DELETES
|
|
3002
|
-
its override on the `^4.1.0` re-pin and INHERITS the library on-glass register. The override that
|
|
3003
|
-
PROVED the fix retires onto the root.
|
|
3004
|
-
|
|
3005
|
-
**BB.W-METAL-SHIMMER — the `@keyframes gold-shimmer-slide` RETIRED onto the
|
|
3006
|
-
metal-PARAMETERIZED `@keyframes metal-shimmer-sweep`. Clean break, no alias ("No
|
|
3007
|
-
legacy code").** The gold-only shimmer keyframe generalized into ONE metal-agnostic
|
|
3008
|
-
position sweep (reading a `--metal-shimmer-color` channel + the `--metal-stop-*`
|
|
3009
|
-
slots the recipe binds per-metal), so the bronze quad (the third brand metal) + the
|
|
3010
|
-
gold + silver registers all share ONE keyframe. Two notes:
|
|
3011
|
-
|
|
3012
|
-
1. **`@keyframes gold-shimmer-slide` is GONE** — the keyframe NAME is removed (no
|
|
3013
|
-
alias). The `.gold-shimmer` CLASS is PRESERVED (it re-points onto
|
|
3014
|
-
`metal-shimmer-sweep` with `--metal-shimmer-color: gold`; the gold gradient stops +
|
|
3015
|
-
`background-size`/`background-clip` + the PRM bracket are byte-identical — the gold
|
|
3016
|
-
READ is UNCHANGED). The `--animate-gold-shimmer` token is PRESERVED (re-pointed onto
|
|
3017
|
-
`metal-shimmer-sweep`). MIGRATE only if a consumer referenced `gold-shimmer-slide`
|
|
3018
|
-
BY NAME in a hand-rolled `animation:` rule → `animation: metal-shimmer-sweep …`.
|
|
3019
|
-
No consumer that composed the `.gold-shimmer` class or read `--animate-gold-shimmer`
|
|
3020
|
-
changes.
|
|
3021
|
-
2. **NEW additive surface (no break).** The bronze quad (`--bronze`/`-light`/`-dark`/
|
|
3022
|
-
`-deep` + `--color-bronze*`, the third brand metal on the W-NO-GRAY exception), the
|
|
3023
|
-
`--duration-metal: 6s` slow clock, and the `.metal-{gold,silver,bronze}` /
|
|
3024
|
-
`.metal-*-border` / `.metal-rainbow-rim` utilities are all ADDITIVE — a consumer
|
|
3025
|
-
opts in by composing a `.metal-*` class. The `.metal-rainbow-rim` composes
|
|
3026
|
-
W-GLASS-ACCENT's `--glass-accent` rim seam.
|
|
2672
|
+
**The Canvas2D fourier renderer and the three-view split retire onto the WebGPU
|
|
2673
|
+
`useFourierField`. No public-prop break.** The fourier surface moves off Canvas2D onto
|
|
2674
|
+
the WGSL-first GPU substrate (`createGpuSubstrate`, `setupWGPU` + `setupGL`), and the demo
|
|
2675
|
+
studio views fold into one view. `<FourierField>` keeps its `ConstellationProps`-shaped
|
|
2676
|
+
contract, so a library consumer has nothing to change.
|
|
2677
|
+
|
|
2678
|
+
**The constellation moves onto the WebGPU substrate, and `drawOverlay` is no longer
|
|
2679
|
+
painted.** The constellation re-homes off Canvas2D (the `ctx.arc()` discs and the 2D
|
|
2680
|
+
`drawOverlay` skin seam) onto WebGPU instanced points and lines. `drawOverlay` stays a
|
|
2681
|
+
public `ConstellationProps` prop, but the built-in GPU loop never calls it. Under
|
|
2682
|
+
`prefers-reduced-motion` the field still freezes, frame for frame. No consumer change
|
|
2683
|
+
beyond that.
|
|
2684
|
+
|
|
2685
|
+
**`<Button variant="solid">` is removed. Clean break, no alias.** The `solid` variant
|
|
2686
|
+
kept the old opaque `bg-primary` fill. The default `<Button>` is the glass register; for a
|
|
2687
|
+
loud call to action use `variant="accent"` (gold tint on glass). The
|
|
2688
|
+
`default`/`outline`/`secondary`/`accent`/`ghost` variants are unchanged (`destructive`
|
|
2689
|
+
moves onto the `tone` axis at 5.0.0).
|
|
2690
|
+
|
|
2691
|
+
**`<DockRail>` and `DockRailItem` retire onto the hover-expand `<DockStack>` and
|
|
2692
|
+
`DockStackItem`. Clean break, no alias.** The divider-carousel rail is rebuilt as a
|
|
2693
|
+
macOS-style stack: a core anchor item whose members fan out beside the rail on hover or
|
|
2694
|
+
focus (three configurable, with a scrollable overflow through `<FadingScroll>`), extending
|
|
2695
|
+
past the dock edge into its own gutter so it never covers `<main>`. `DockRail`,
|
|
2696
|
+
`DockRailItem`, `DockRail.vue`, `src/styles/dock/rail-extend.css` and the `measureSeam` /
|
|
2697
|
+
`--dock-rail-seam-offset` seam locator are gone from `@mkbabb/glass-ui/dock`. Migrate
|
|
2698
|
+
`<DockRail v-model:context :items>` → `<DockStack v-model:selected :items>`, and
|
|
2699
|
+
`DockRailItem` → `DockStackItem = { id, label, icon?, onSelect? }`.
|
|
2700
|
+
|
|
2701
|
+
Additive (4.1.0): `@mkbabb/glass-ui/border-progress` — `<BorderProgress>`, a masked-conic
|
|
2702
|
+
border-ring primitive whose progress is the element's border. It is removed again at 5.0.0;
|
|
2703
|
+
see _The `/border-progress` subpath retirement_ under 5.0.0.
|
|
2704
|
+
|
|
2705
|
+
Additive (4.1.0): `--instrument-dial-min-block-size-desktop`. The wide-axis chassis dial
|
|
2706
|
+
reserve now ships in the library (`@container chassis (min-width: 45rem)` on
|
|
2707
|
+
`.instrument-dial`, default `var(--chassis-max-block-size)`). If you wrote your own
|
|
2708
|
+
wide-axis reserve, such as `.instrument-dial { min-block-size: var(--chassis-max-block-size) }`,
|
|
2709
|
+
delete it; retune through the token if your meter's block size differs.
|
|
2710
|
+
|
|
2711
|
+
Documented (4.1.0): `--glass-opacity-{tier}`, the per-tier alpha. The values are
|
|
2712
|
+
unchanged, so an override that re-pinned the same tier alphas can be deleted.
|
|
2713
|
+
|
|
2714
|
+
Additive (4.1.0): aurora `warpMode` gains `"curl"`, a curl-noise flow warp (opt-in; the
|
|
2715
|
+
default fbm/cellular/hybrid render is unchanged). The published `WarpMode` union widens.
|
|
2716
|
+
|
|
2717
|
+
Additive (4.1.0): the shared `Surface = "glass" | "veil" | "opaque"` axis reaches `<Toast>`
|
|
2718
|
+
and `<Button>`, which each gain a `surface` prop. `<Toast surface="glass">` is the default
|
|
2719
|
+
and matches the old `glass-floating` plate; the feedback tone tint rides on the resolved
|
|
2720
|
+
surface. `<Button surface=…>` defaults unset (the `variant` axis owns Button's default);
|
|
2721
|
+
`surface="opaque"` and the `solid` variant reach the same `--glass-level:0` endpoint from
|
|
2722
|
+
two axes. No break for either.
|
|
2723
|
+
|
|
2724
|
+
**Additive (4.1.0): the surface-aware foreground register.** glass-ui adds an on-glass
|
|
2725
|
+
foreground family whose contrast target is the composited glass fill, not the page:
|
|
2726
|
+
`--on-glass-muted` (+ `--on-glass-muted-strong`), `--input-on-glass`, and
|
|
2727
|
+
`--progress-track-on-glass`. A caption, well or track over a translucent plate used to
|
|
2728
|
+
read `--muted-foreground`, which is tuned against the page and fell to 1.15–3.29:1 on its
|
|
2729
|
+
own surface in dark mode. The light content tiers (`.glass-card`/`.glass-resting`/
|
|
2730
|
+
`.glass-quiet`/`.glass-wash`) now point `--muted-foreground` at `--on-glass-muted`, so
|
|
2731
|
+
every `text-muted-foreground` caption and CardDescription picks up the on-glass rung with
|
|
2732
|
+
no per-site edit. Input and Textarea wells read `--input-on-glass`; the Progress track
|
|
2733
|
+
reads `--progress-track-on-glass`. The page register (`--muted-foreground:
|
|
2734
|
+
var(--neutral-5)`) is untouched for the opaque-canvas case. If you re-declared
|
|
2735
|
+
`--muted-foreground` over glass to fix that contrast yourself, delete the override.
|
|
2736
|
+
|
|
2737
|
+
**`@keyframes gold-shimmer-slide` retires onto the metal-parameterized
|
|
2738
|
+
`@keyframes metal-shimmer-sweep`. Clean break, no alias.** The gold-only keyframe becomes
|
|
2739
|
+
one metal-agnostic sweep (reading `--metal-shimmer-color` and the `--metal-stop-*` slots),
|
|
2740
|
+
so gold, silver and bronze share it.
|
|
2741
|
+
|
|
2742
|
+
1. **`@keyframes gold-shimmer-slide` is gone** with no alias. The `.gold-shimmer` class
|
|
2743
|
+
stays and now runs `metal-shimmer-sweep` with `--metal-shimmer-color: gold`, painting
|
|
2744
|
+
exactly as before; `--animate-gold-shimmer` stays too. Migrate only if you named
|
|
2745
|
+
`gold-shimmer-slide` in your own `animation:` rule: write
|
|
2746
|
+
`animation: metal-shimmer-sweep …` instead.
|
|
2747
|
+
2. **New, additive.** The bronze quad (`--bronze`/`-light`/`-dark`/`-deep` +
|
|
2748
|
+
`--color-bronze*`), the `--duration-metal: 6s` slow clock, and the
|
|
2749
|
+
`.metal-{gold,silver,bronze}` / `.metal-*-border` / `.metal-rainbow-rim` utilities.
|
|
2750
|
+
You opt in by composing a `.metal-*` class; `.metal-rainbow-rim` uses the
|
|
2751
|
+
`--glass-accent` rim seam.
|
|
3027
2752
|
|
|
3028
2753
|
## 4.0.0
|
|
3029
2754
|
|
|
3030
|
-
**
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
1. **`variant="segmented"` → `variant="pill"
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
family
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
`
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
the
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
(
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
(
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
`
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
slides deck `DeckPager` were ALREADY one register; BA.W-PAGER harvests that into ONE
|
|
3127
|
-
primitive — `<PagerDots>` (`@mkbabb/glass-ui/pager-dots`), encapsulated in a glass pager
|
|
3128
|
-
pill. Two breaks:
|
|
3129
|
-
|
|
3130
|
-
1. **`CarouselDots` → `<PagerDots>` (clean break).** `CarouselDots` is GONE from the
|
|
3131
|
-
`/carousel` barrel (it auto-wired the embla API via `useCarousel()` inject).
|
|
3132
|
-
`<PagerDots>` is standalone — wire `:count`, `:active` (`v-model:active`), and
|
|
3133
|
-
`@select`/`scrollTo` to the embla API explicitly. MIGRATE: `<CarouselDots />` →
|
|
3134
|
-
`<PagerDots :count="api.scrollSnapList().length" :active="api.selectedScrollSnap()"
|
|
3135
|
-
@select="(i) => api.scrollTo(i)" />`. The pip anatomy (24px hit-box, 6px pip,
|
|
3136
|
-
elongate-on-active, the `--foreground` 52%/72%/full register) is IDENTICAL — the dots
|
|
3137
|
-
look the same; they now read a `--pager-dot-*` token set (retint the active fill via
|
|
3138
|
-
`--pager-dot-active`) and sit in the `.glass-pager-ring` chassis by default
|
|
3139
|
-
(`ring="false"` for a flush-on-an-ambient-glass-host deck). `windowFit?` generalizes
|
|
3140
|
-
the DeckPager dock-gutter windowing (off by default).
|
|
3141
|
-
2. **The `<CarouselPager>` counter is off the opaque `bg-card` ring.** The counter
|
|
3142
|
-
`<span>` now composes `.glass-pager-ring` (the glass-floating pill) instead of
|
|
3143
|
-
`rounded-pill border border-border bg-card` — the dark `rgb(28,25,23)` slab dies.
|
|
3144
|
-
No consumer change (the counter is internal to `<CarouselPager>`); a consumer that
|
|
3145
|
-
hand-overrode the counter's `bg-card` re-points to the glass ring.
|
|
3146
|
-
|
|
3147
|
-
**BA.W-HANDMARK — `GlassUnderline` + the `/underline` subpath RETIRED onto
|
|
3148
|
-
`<HandMark shape="underline">`. Clean break, no alias (DEC-8 outcome 1).** The d6
|
|
3149
|
-
hand-voice family re-landed on `@mkbabb/glass-ui/handmark` (`<HandMark>` / `<InkMark>`
|
|
3150
|
-
|
|
3151
|
-
- the flat `BRUSHES` continuum + the pure L1–L3 stages), and the editorial underline
|
|
3152
|
-
is now ONE shape of that ONE hand voice — not a parallel component. Two breaks:
|
|
3153
|
-
|
|
3154
|
-
1. **`@mkbabb/glass-ui/underline` (`<GlassUnderline>`) is GONE.** The `/underline`
|
|
3155
|
-
subpath + the `GlassUnderline*` types are removed from the surface (no alias, per
|
|
3156
|
-
the no-backwards-compat invariant). MIGRATE: `import { GlassUnderline } from
|
|
3157
|
-
"@mkbabb/glass-ui/underline"` → `import { HandMark } from
|
|
3158
|
-
"@mkbabb/glass-ui/handmark"`; `<GlassUnderline>word</GlassUnderline>` →
|
|
3159
|
-
`<HandMark shape="underline">word</HandMark>`. The editorial draw-on underline is
|
|
3160
|
-
`<HandMark shape="underline" animation="draw-on">`; the natural pencil-boil
|
|
3161
|
-
morphology (scale-relative amplitude, irregular seeded periods) is the `boil`
|
|
3162
|
-
brush (`<HandMark brush="boil" shape="underline">`). The default `pen` brush is a
|
|
3163
|
-
clean wobbled line, `grain:0`, no extra dep.
|
|
3164
|
-
[2026-09-17 · O-20 CLOSE-DOCS · the 4.0.0 record of the brush axis, kept as that —
|
|
3165
|
-
but do not write these attributes at 9.0.0. `<HandMark>` declares five props there
|
|
3166
|
-
(`shape` · `color` · `weight` · `seed` · `draw`, `HandMark.vue:33-41`); `brush`,
|
|
3167
|
-
`animation` and the `BRUSHES` continuum are gone, so `brush="boil"` and
|
|
3168
|
-
`animation="draw-on"` are inert attributes. `draw` is the draw-on switch, and the
|
|
3169
|
-
underline is `<HandMark shape="underline">`.]
|
|
3170
|
-
2. **New optional peers (vendored/peer split).** `<HandMark>` adds two OPTIONAL peers:
|
|
3171
|
-
`@mkbabb/pencil-boil ^0.4.1` (the L1 wobble geometry — imported only when a wobble
|
|
3172
|
-
paints) and `perfect-freehand ^1.2.3` (the variable-width hull body — VENDORED into
|
|
3173
|
-
`freehand.ts`, declared as an optional peer for provenance, touched only by the
|
|
3174
|
-
`ribbon:"hull"` highlighter). Both are tree-shaken when unused; a `pen`-only
|
|
3175
|
-
consumer pulls neither. The `/handmark` chunk is ≈7.6 KiB-gzip (the `profile:budget`
|
|
3176
|
-
rebaseline records it + the engaged pf hull body).
|
|
3177
|
-
[2026-09-17 · O-20 CLOSE-DOCS · true at 4.0.0 (`git show v4.0.0:package.json` carries
|
|
3178
|
-
both, both optional) and false as an install instruction today. `perfect-freehand`
|
|
3179
|
-
stopped being a peer at 7.0.0 and `@mkbabb/pencil-boil` at 9.0.0; neither name is in
|
|
3180
|
-
the nine that 9.0.0 declares. The file this row names is gone too —
|
|
3181
|
-
`src/components/handmark/freehand.ts` was deleted at `5a69ed9f` (2026-08-25), and
|
|
3182
|
-
with it the `ribbon:"hull"` axis. A 9.0.0 HandMark consumer installs nothing.]
|
|
3183
|
-
|
|
3184
|
-
**This row is for any FUTURE external `/underline` consumer — NOT slides.** The
|
|
3185
|
-
2026-06-15 slides ground-truth (BINDING) confirms slides imports ZERO
|
|
3186
|
-
`@mkbabb/glass-ui/underline` / `GlassUnderline`: its `SlideIntro`/`SlideCloser` red
|
|
3187
|
-
pen-underlines are deck-LOCAL CSS/SVG `::after` glyphs, never the library component.
|
|
3188
|
-
The phantom "slides adopt-book break" was the AZ-H6-fold assumption the slides session
|
|
3189
|
-
disproved at HEAD `c943a49`; there is no slides edit on this fold.
|
|
2755
|
+
**The tab family standardizes on one engine with two materials. Clean break, no
|
|
2756
|
+
alias.** `SegmentedTabs` is now one engine with two materials (`variant: "pill" |
|
|
2757
|
+
"underline"`) and one orientation axis (`orientation: "horizontal" | "vertical"`). Four
|
|
2758
|
+
retirements:
|
|
2759
|
+
|
|
2760
|
+
1. **`variant="segmented"` → `variant="pill"`, now the default.** Segmented and pill were
|
|
2761
|
+
one register. `pill` is the glass material: a glass-quiet track with a selected
|
|
2762
|
+
indicator that reads as glass (`--glass-bg-floating`). Drop `variant="segmented"` or
|
|
2763
|
+
rename it to `variant="pill"`; a `<SegmentedTabs>` with no `variant` now paints the
|
|
2764
|
+
glass pill.
|
|
2765
|
+
2. **The `overflow="scroll" / "auto"` axis is removed.** Overflow is `<FadingScroll>`'s
|
|
2766
|
+
job (`@mkbabb/glass-ui/fading-scroll`). Wrap a genuinely overflowing tab row in
|
|
2767
|
+
`<FadingScroll>` or apply `useFadingScroll`; the usual short tab row needs neither.
|
|
2768
|
+
3. **`:multi-select` moves to `<ToggleGroup>`.** A strip of independent toggles on one
|
|
2769
|
+
surface (`role="group"`) is a ToggleGroup, not a tab family member:
|
|
2770
|
+
`<SegmentedTabs :multi-select>` → `<ToggleGroup type="multiple">`. The tabs model is a
|
|
2771
|
+
single string now, not `string | string[]`.
|
|
2772
|
+
4. **`ui/Tabs` (`Tabs`/`TabsList`/`TabsTrigger`/`TabsContent`/`TabsIndicator`) leaves the
|
|
2773
|
+
public surface.** The standard family is `SegmentedTabs` (`@mkbabb/glass-ui/tabs`);
|
|
2774
|
+
move a hand-rolled `ui/Tabs` recipe to the matching `<SegmentedTabs variant="…">`.
|
|
2775
|
+
|
|
2776
|
+
The `UnderlineTabs` → `<SegmentedTabs variant="underline">` and `BouncyToggle` →
|
|
2777
|
+
`<SegmentedTabs>` swaps are drop-in: `:options` / `:model-value` / `@update:model-value`
|
|
2778
|
+
and `variant` are unchanged.
|
|
2779
|
+
|
|
2780
|
+
**Never stack `.glass-btn` and `.btn-pill`.** The two button size registers exclude each
|
|
2781
|
+
other: `.glass-btn` is the fixed-square icon primitive (`width/height:
|
|
2782
|
+
var(--size-icon-btn)` + `contain:paint`), and `.btn-pill` is the content-width text pill.
|
|
2783
|
+
On one element the fixed square wins and `contain:paint` clips a wrapped text label into
|
|
2784
|
+
a ~40px blob, and a `.glass-btn` with a text child collapses the same way. For a
|
|
2785
|
+
text-bearing control use a real `<Button>` with a leading glyph. No library recipe
|
|
2786
|
+
changes.
|
|
2787
|
+
|
|
2788
|
+
**Dialog `variant` moves onto the shared `surface` axis. Clean break.**
|
|
2789
|
+
`<DialogContent variant="glass|opaque">` becomes `<DialogContent
|
|
2790
|
+
surface="glass|veil|opaque">`, with no alias. Migrate per call site: `variant="glass"` →
|
|
2791
|
+
`surface="glass"` (also the default), `variant="opaque"` → `surface="opaque"`; `veil` is
|
|
2792
|
+
new. `glass` and `opaque` paint as before.
|
|
2793
|
+
|
|
2794
|
+
Additive: the shared `Surface = "glass" | "veil" | "opaque"` axis reaches `GlassPanel`,
|
|
2795
|
+
`Sheet`, `Popover`, `Command`, `Drawer`, and `ExpandableContainer`, which each gain a
|
|
2796
|
+
`surface` prop (default `"glass"`). `<Skeleton>` gains `surface?: "glass" | "opaque"`
|
|
2797
|
+
(default `"opaque"`, as `bg-muted` painted before); `surface="glass"` is a translucent
|
|
2798
|
+
`--skeleton-glass-bg` block for use over a frosted plate. The `ExpandableContainer`
|
|
2799
|
+
fullscreen overlay now opens onto the overlay glass tier by default (`surface="opaque"`
|
|
2800
|
+
restores the solid wall). No break for any of these.
|
|
2801
|
+
|
|
2802
|
+
**The Select bound and the Slider size axis now paint in every consumer.** No API
|
|
2803
|
+
rename: the structural utilities now ship as precompiled CSS instead of arbitrary
|
|
2804
|
+
classes your content scan never saw. Three things you will see:
|
|
2805
|
+
(1) `<SelectContent>` bounds its content to `min(24rem, 60dvh)`, tightened by
|
|
2806
|
+
`--reka-popper-available-height`, and scrolls inside, so a tall dropdown no longer runs
|
|
2807
|
+
off the viewport (override the cap with `--select-content-max-h` on any ancestor).
|
|
2808
|
+
(2) `<Slider size="md">` (and `sm`/`lg`) renders its real track geometry (`md` ≈ 20px /
|
|
2809
|
+
1.25rem); the `size` prop used to be inert in consumers, which fell back to a 6px track.
|
|
2810
|
+
(3) glass-ui's own `@source` directive re-points `"../components"` → `"../*.js"` so it
|
|
2811
|
+
reaches the compiled `dist/*.js` chunks. If you copied that `@source` line, make sure
|
|
2812
|
+
yours points at the installed `dist`.
|
|
2813
|
+
|
|
2814
|
+
Additive: `<WatercolorDot>` gains `variant?: "solid" | "ghost"` (default `"solid"`).
|
|
2815
|
+
`variant="ghost"` renders the same seeded blob as a stroke over a low-alpha fill, for an
|
|
2816
|
+
empty palette slot. No break.
|
|
2817
|
+
|
|
2818
|
+
**`CarouselDots` retires onto `<PagerDots>`, and the counter moves off `bg-card`. Clean
|
|
2819
|
+
break, no alias.** The carousel dots become one primitive, `<PagerDots>`
|
|
2820
|
+
(`@mkbabb/glass-ui/pager-dots`), in a glass pager pill. Two breaks:
|
|
2821
|
+
|
|
2822
|
+
1. **`CarouselDots` → `<PagerDots>`.** `CarouselDots` is gone from the `/carousel`
|
|
2823
|
+
barrel (it wired the embla API through `useCarousel()`). `<PagerDots>` stands alone, so
|
|
2824
|
+
wire `:count`, `:active` (`v-model:active`) and `@select` yourself:
|
|
2825
|
+
`<CarouselDots />` → `<PagerDots :count="api.scrollSnapList().length"
|
|
2826
|
+
:active="api.selectedScrollSnap()" @select="(i) => api.scrollTo(i)" />`. The dots look
|
|
2827
|
+
the same; they now read a `--pager-dot-*` token set (retint the active fill with
|
|
2828
|
+
`--pager-dot-active`) and sit in the `.glass-pager-ring` by default (`ring="false"`
|
|
2829
|
+
for a flush deck). `windowFit?` windows the dots to the space available (off by
|
|
2830
|
+
default).
|
|
2831
|
+
2. **The `<CarouselPager>` counter is off the opaque `bg-card` ring.** The counter now
|
|
2832
|
+
composes `.glass-pager-ring` instead of `rounded-pill border border-border bg-card`.
|
|
2833
|
+
An override of the counter's `bg-card` should target the glass ring instead.
|
|
2834
|
+
|
|
2835
|
+
**`GlassUnderline` and the `/underline` subpath retire onto `<HandMark shape="underline">`.
|
|
2836
|
+
Clean break, no alias.** The hand-drawn family lands on `@mkbabb/glass-ui/handmark`, and
|
|
2837
|
+
the editorial underline is one shape of it. Two breaks:
|
|
2838
|
+
|
|
2839
|
+
1. **`@mkbabb/glass-ui/underline` (`<GlassUnderline>`) is gone**, with the
|
|
2840
|
+
`GlassUnderline*` types. Migrate `import { GlassUnderline } from
|
|
2841
|
+
"@mkbabb/glass-ui/underline"` → `import { HandMark } from "@mkbabb/glass-ui/handmark"`,
|
|
2842
|
+
and `<GlassUnderline>word</GlassUnderline>` → `<HandMark shape="underline">word</HandMark>`.
|
|
2843
|
+
At 4.0.0 the draw-on underline was `<HandMark shape="underline" animation="draw-on">`
|
|
2844
|
+
and the pencil-boil look was `brush="boil"`. From 9.0.0 `<HandMark>` takes five props
|
|
2845
|
+
(`shape` · `color` · `weight` · `seed` · `draw`): `brush` and `animation` are gone, and
|
|
2846
|
+
`draw` is the draw-on switch.
|
|
2847
|
+
2. **Optional peers at 4.0.0.** `<HandMark>` added two optional peers,
|
|
2848
|
+
`@mkbabb/pencil-boil ^0.4.1` and `perfect-freehand ^1.2.3`, both tree-shaken when
|
|
2849
|
+
unused. `perfect-freehand` stopped being a peer at 7.0.0 and `@mkbabb/pencil-boil` at
|
|
2850
|
+
9.0.0, so from 9.0.0 HandMark needs no install.
|
|
3190
2851
|
|
|
3191
2852
|
## 3.13.0
|
|
3192
2853
|
|
|
3193
|
-
**
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
3.13.0
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
`height`; a static nav column adds `always-expanded`). `<GlassDock variant="instrument-strip">`
|
|
3229
|
-
is removed (zero live consumers) — compose `<InstrumentChassis>` directly; the speedtest
|
|
3230
|
-
`SurveyResultDock` cockpit re-pins on the 3.13.0 adopt.
|
|
3231
|
-
|
|
3232
|
-
BREAKING (3.13.0): `<MetricBadge>` / `<MetricPill>` — the primary prop `amount` is renamed
|
|
3233
|
-
`value` (the Metric value-core convergence; a valid `0` now renders `0`, never the placeholder).
|
|
3234
|
-
Clean break, no alias — speedtest re-points on the bump (`/metric-cell` + `/metric-stack`
|
|
3235
|
-
surfaces unchanged).
|
|
3236
|
-
|
|
3237
|
-
ADDITIVE (3.13.0): the `/constellation` subpath gains optional default-OFF generalization
|
|
3238
|
-
props/exports (pinnedIndex/pinNode, accentEdges, the palette accent/edgeFloor/edgeAccentAlpha,
|
|
3239
|
-
stepPinnedDrift, warpAutoRelease + warpSettled) — the protected quintet is byte-compatible.
|
|
3240
|
-
|
|
3241
|
-
ADDITIVE (3.13.0): the Card `surface` union gains `"veil"` — the borderless/rimless
|
|
3242
|
-
wash-fill text-legibility plate (`--veil-*` knobs, the optional `--veil-feather` mask). No break.
|
|
2854
|
+
**The dock's interactive register drops the brand red for a luminance lift.** No API
|
|
2855
|
+
rename; this is a token and default change. The dock's selected, hover, active and
|
|
2856
|
+
pressed paint at the library root is now a glass luminance lift, not a brand-red accent.
|
|
2857
|
+
Two new retint knobs: `--dock-selected-accent`, the one knob for the selected affordance
|
|
2858
|
+
(default `color-mix(in oklab, var(--foreground) 14%, transparent)`, which flips with
|
|
2859
|
+
`--foreground`, read by the rail's leading-edge accent bar), and `--dock-control-press-bg`,
|
|
2860
|
+
the press darken (`--glass-bg-resting` mixed about 7% toward `--foreground`, read on every
|
|
2861
|
+
dock control `:active`). The rail's active glyph and bar no longer fall back to
|
|
2862
|
+
`var(--dock-rail-active-accent, var(--primary))`: the glyph stays `--foreground`, and the
|
|
2863
|
+
bar paints `--dock-selected-accent`. If you tinted the selected register to a brand hue
|
|
2864
|
+
through `--dock-rail-active-accent`, set `--dock-selected-accent` instead.
|
|
2865
|
+
|
|
2866
|
+
**3.13.0 is the release; there is no 3.11 or 3.12 entry.** The dock taxonomy, the metric
|
|
2867
|
+
`amount`→`value` rename, the constellation generalization and the Card `veil` addition
|
|
2868
|
+
all ship in 3.13.0. Registry versions 3.11.0, 3.11.1, 3.11.2 and 3.12.0 were published
|
|
2869
|
+
from an older tree and are not part of this line, so pin **3.13.0** and read every break
|
|
2870
|
+
below as landing there.
|
|
2871
|
+
|
|
2872
|
+
**v3.13.0** — the dock taxonomy clean break: `<GlassDock variant="rail">` →
|
|
2873
|
+
`<GlassDock orientation="vertical">`. The `variant` discriminant is removed; a vertical
|
|
2874
|
+
dock is now collapsible by default (it morphs its `height`), and a static nav column adds
|
|
2875
|
+
`always-expanded`. `<GlassDock variant="instrument-strip">` is removed; compose
|
|
2876
|
+
`<InstrumentChassis>` directly.
|
|
2877
|
+
|
|
2878
|
+
Breaking (3.13.0): `<MetricBadge>` / `<MetricPill>` — the primary prop `amount` is
|
|
2879
|
+
renamed `value`, and a valid `0` now renders `0`, never the placeholder. Clean break, no
|
|
2880
|
+
alias (the `/metric-cell` and `/metric-stack` surfaces are unchanged).
|
|
2881
|
+
|
|
2882
|
+
Additive (3.13.0): the `/constellation` subpath gains optional, default-off props and
|
|
2883
|
+
exports (pinnedIndex/pinNode, accentEdges, the palette accent/edgeFloor/edgeAccentAlpha,
|
|
2884
|
+
stepPinnedDrift, warpAutoRelease + warpSettled). Existing props are unchanged.
|
|
2885
|
+
|
|
2886
|
+
Additive (3.13.0): the Card `surface` union gains `"veil"`, a borderless, rimless wash
|
|
2887
|
+
plate for text legibility (`--veil-*` knobs and the optional `--veil-feather` mask). No
|
|
2888
|
+
break.
|
|
3243
2889
|
|
|
3244
2890
|
## 3.10.0
|
|
3245
2891
|
|
|
3246
|
-
**v3.10.0
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
**v2.0.0 (AI.W1 R3)**—the motion composables move off the root barrel to
|
|
3261
|
-
the new `@mkbabb/glass-ui/motion` flat subpath, closing the
|
|
3262
|
-
AI-CARRY-GLASS-UI-KEYFRAMES-EDGE 4-tranche chronic. See the **v2.0.0**
|
|
3263
|
-
section below for the full symbol list + codemod hints. Same SCC-trap
|
|
3264
|
-
closure shape as L.W1 Lane C — different heavy peer
|
|
3265
|
-
(`@mkbabb/keyframes.js` instead of `@vueuse/core`).
|
|
2892
|
+
**v3.10.0** — two subpaths with no production consumer are removed outright (no aliases):
|
|
2893
|
+
`@mkbabb/glass-ui/deck-progress` and `/instrument-rail`. Compose the equivalent from the
|
|
2894
|
+
surviving primitives (`Progress`, `Section`, the `.glass-*` ladder, `InstrumentChassis`).
|
|
2895
|
+
`/header-ribbon` and `/glass-panel` still ship at 3.10.0. New subpath:
|
|
2896
|
+
`@mkbabb/glass-ui/underline` (`<GlassUnderline>`), which retires onto
|
|
2897
|
+
`<HandMark shape="underline">` at 4.0.0 (see above).
|
|
2898
|
+
|
|
2899
|
+
## 2.0.0 — motion subpath surgery
|
|
2900
|
+
|
|
2901
|
+
**v2.0.0**—the motion composables move off the root barrel to the new
|
|
2902
|
+
`@mkbabb/glass-ui/motion` flat subpath, so the root barrel no longer pulls in
|
|
2903
|
+
`@mkbabb/keyframes.js`. See the **v2.0.0** section below for the full symbol list +
|
|
2904
|
+
codemod hints. It is the same move v1.0 made for `@vueuse/core`.
|
|
3266
2905
|
|
|
3267
2906
|
---
|
|
3268
2907
|
|
|
3269
|
-
v1.0
|
|
2908
|
+
v1.0 freezes the public API and lands four
|
|
3270
2909
|
architectural transpositions that BREAK v0.9.x consumer shapes:
|
|
3271
2910
|
|
|
3272
2911
|
1. **Root-barrel Phase 2**—vueuse-bearing symbols leave the root barrel; they
|
|
@@ -3276,9 +2915,9 @@ architectural transpositions that BREAK v0.9.x consumer shapes:
|
|
|
3276
2915
|
3. **Subpath flatten**—`composables/dark` + `composables/keyboard` collapse
|
|
3277
2916
|
to flat `/dark` + `/keyboard`; new `/carousel` subpath added.
|
|
3278
2917
|
4. **Second-consumer fidelity**—substrate without ≥ 2 consumers either wires
|
|
3279
|
-
a real second consumer or retires
|
|
2918
|
+
a real second consumer or retires.
|
|
3280
2919
|
|
|
3281
|
-
|
|
2920
|
+
v1.0 ships no legacy aliases and no backwards-compat shims.
|
|
3282
2921
|
Every break is documented below. v0.9.4 remains available indefinitely as a
|
|
3283
2922
|
patch-stream tag; v1.0 adoption is opt-in.
|
|
3284
2923
|
|
|
@@ -3312,7 +2951,7 @@ to the v1.0 subpath surface in ~30 minutes. Entry-chunk gz dropped 32.5 KB.
|
|
|
3312
2951
|
## Before you migrate
|
|
3313
2952
|
|
|
3314
2953
|
1. **Pin to v0.9.4 first** if you are on v0.9.0–v0.9.3. v0.9.4 patches the
|
|
3315
|
-
|
|
2954
|
+
subpath-typing publication gap and lets you adopt subpath imports
|
|
3316
2955
|
incrementally BEFORE the breaking v1.0 cut.
|
|
3317
2956
|
2. **Run your tests + typecheck** at v0.9.4. Establish a green baseline.
|
|
3318
2957
|
3. **Inventory your imports**—`rg 'from "@mkbabb/glass-ui"' src/` lists
|
|
@@ -3331,8 +2970,8 @@ to the v1.0 subpath surface in ~30 minutes. Entry-chunk gz dropped 32.5 KB.
|
|
|
3331
2970
|
|
|
3332
2971
|
The root barrel is now vueuse-free. Re-exporting these symbols from
|
|
3333
2972
|
`@mkbabb/glass-ui` forced every consumer to walk the vueuse SCC at
|
|
3334
|
-
tree-shake time, regressing entry-chunk gzip by ~2 KB
|
|
3335
|
-
|
|
2973
|
+
tree-shake time, regressing entry-chunk gzip by ~2 KB. Phase 2 carves them onto
|
|
2974
|
+
subpaths.
|
|
3336
2975
|
|
|
3337
2976
|
#### 1.1—Form primitives → `/forms`
|
|
3338
2977
|
|
|
@@ -3344,7 +2983,7 @@ import { Input, Textarea, Combobox, ComboboxInput } from "@mkbabb/glass-ui";
|
|
|
3344
2983
|
import { Input, Textarea, Combobox, ComboboxInput } from "@mkbabb/glass-ui/forms";
|
|
3345
2984
|
```
|
|
3346
2985
|
|
|
3347
|
-
The `/forms` subpath was added at v0.9.3
|
|
2986
|
+
The `/forms` subpath was added at v0.9.3 and is preserved
|
|
3348
2987
|
verbatim at v1.0. Affected symbols: `Input`, `Textarea`, `Combobox`,
|
|
3349
2988
|
`ComboboxAnchor`, `ComboboxCancel`, `ComboboxEmpty`, `ComboboxGroup`,
|
|
3350
2989
|
`ComboboxInput`, `ComboboxItem`, `ComboboxItemIndicator`, `ComboboxList`,
|
|
@@ -3460,7 +3099,7 @@ that an editor multi-cursor pass is the canonical workflow.
|
|
|
3460
3099
|
### 2. Subpath flatten (v0.9.4 transitional shapes retired)
|
|
3461
3100
|
|
|
3462
3101
|
v0.9.4 introduced nested `composables/dark` + `composables/keyboard`
|
|
3463
|
-
subpaths as a transitional shape for the
|
|
3102
|
+
subpaths as a transitional shape for the dts-publication-gap fix.
|
|
3464
3103
|
v1.0 flattens them to match every other public subpath
|
|
3465
3104
|
(`/forms`, `/dock`, `/configurator`, ...).
|
|
3466
3105
|
|
|
@@ -3499,16 +3138,14 @@ $ node -e "import('@mkbabb/glass-ui/composables/dark')"
|
|
|
3499
3138
|
Error: ERR_PACKAGE_PATH_NOT_EXPORTED
|
|
3500
3139
|
```
|
|
3501
3140
|
|
|
3502
|
-
That hard fail is intentional
|
|
3503
|
-
nested form to the flat one.
|
|
3141
|
+
That hard fail is intentional: no alias re-routes the nested form to the flat one.
|
|
3504
3142
|
|
|
3505
3143
|
---
|
|
3506
3144
|
|
|
3507
3145
|
### 3. Composable retirements (substrate-without-consumer binary)
|
|
3508
3146
|
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
retired with rationale.
|
|
3147
|
+
v1.0 checked six composables for a real consumer. Three had one and stay; three
|
|
3148
|
+
retired.
|
|
3512
3149
|
|
|
3513
3150
|
#### 3.1—`useOffsetPagination`—REMOVED
|
|
3514
3151
|
|
|
@@ -3525,37 +3162,27 @@ retired with rationale.
|
|
|
3525
3162
|
(`@tanstack/vue-query` if you need server-state coordination,
|
|
3526
3163
|
`@vueuse/core`'s `useOffsetPagination` if you want a thin wrapper).
|
|
3527
3164
|
|
|
3528
|
-
#### 3.2—`useVirtualSectionWindow`—REMOVED
|
|
3529
|
-
|
|
3530
|
-
- **Status**:
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
- **
|
|
3534
|
-
|
|
3535
|
-
that words used a divergent local fork and Dock exposed only an optional
|
|
3536
|
-
callback. The demo facility retains only the two actual stories' measured
|
|
3537
|
-
height, bounded far-target, spacer, and active-id behavior; the former content
|
|
3538
|
-
wrapper, tuning knobs, module cache, and unused readbacks are deleted.
|
|
3539
|
-
- **Subpath retired**: `@mkbabb/glass-ui/virtual` — re-minted at BC, then
|
|
3540
|
-
retired again at BI after the binary-consumer claim failed. `useVirtualGrid` (the
|
|
3541
|
-
`@tanstack/vue-virtual`-bearing grid windower) STAYS words-local — one
|
|
3542
|
-
consumer + a hard 3rd-party dep, the ≥2-consumer bar fails for glass-ui.
|
|
3165
|
+
#### 3.2—`useVirtualSectionWindow`—REMOVED
|
|
3166
|
+
|
|
3167
|
+
- **Status**: removed in v1.0. It returned briefly in 4.1.0 and left the package
|
|
3168
|
+
again at 5.0.0; a reduced copy lives on as a demo-only facility.
|
|
3169
|
+
- **Reason**: no production consumer. Demo-only at v0.9.x.
|
|
3170
|
+
- **Subpath retired**: `@mkbabb/glass-ui/virtual` (re-added in 4.1.0, removed again
|
|
3171
|
+
at 5.0.0).
|
|
3543
3172
|
- **Migration**: no Glass package replacement exists. Product consumers own
|
|
3544
3173
|
their windowing or choose a dedicated virtualizer.
|
|
3545
3174
|
|
|
3546
|
-
#### 3.3—`useWindowedStore`—REMOVED
|
|
3175
|
+
#### 3.3—`useWindowedStore`—REMOVED
|
|
3547
3176
|
|
|
3548
|
-
- **Status**:
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
census found no demo consumer either, so retaining the implementation and
|
|
3552
|
-
test-only cases would preserve machinery for its own sake.
|
|
3177
|
+
- **Status**: removed in v1.0; it returned briefly in 4.1.0 and was deleted again at
|
|
3178
|
+
5.0.0.
|
|
3179
|
+
- **Reason**: no production consumer and no demo consumer.
|
|
3553
3180
|
- **Subpath retired**: `@mkbabb/glass-ui/virtual` (shared with
|
|
3554
3181
|
`useVirtualSectionWindow`) remains absent.
|
|
3555
|
-
- **Migration**:
|
|
3556
|
-
|
|
3182
|
+
- **Migration**: keep your own implementation; Glass provides no alias or forwarding
|
|
3183
|
+
coordinate.
|
|
3557
3184
|
|
|
3558
|
-
#### 3.4—`virtualSectionLayout` helpers—REMOVED
|
|
3185
|
+
#### 3.4—`virtualSectionLayout` helpers—REMOVED
|
|
3559
3186
|
|
|
3560
3187
|
- **Status**: removed from the package surface; the unchanged demo fixture lives
|
|
3561
3188
|
at `demo/composables/virtual/virtualSectionLayout.ts`.
|
|
@@ -3564,8 +3191,7 @@ retired with rationale.
|
|
|
3564
3191
|
`FlatSection`, `SectionLayout`, `SectionWindowRange`, and
|
|
3565
3192
|
`ForcedSectionWindowRange` types.
|
|
3566
3193
|
- **Reason for the v1.0 removal**: support substrate for
|
|
3567
|
-
`useVirtualSectionWindow`; retired with its parent.
|
|
3568
|
-
that parent and was corrected with it at BI. `findSectionOffset` is
|
|
3194
|
+
`useVirtualSectionWindow`; retired with its parent. `findSectionOffset` is
|
|
3569
3195
|
refined to a binary search over a by-id-sorted view (the words copy
|
|
3570
3196
|
linear-scanned; the offset answer is byte-identical), and `FlatSection`
|
|
3571
3197
|
now shares the four hierarchy fields with the sidebar's `TreeIndexEntry`
|
|
@@ -3594,9 +3220,7 @@ All three remain on `@mkbabb/glass-ui` (vueuse-free) via
|
|
|
3594
3220
|
#### 4.1—`<DockShowcaseFrame>`—REMOVED
|
|
3595
3221
|
|
|
3596
3222
|
- **Status**: REMOVED in v1.0 (demo file deleted).
|
|
3597
|
-
- **Reason**: demo-private chassis
|
|
3598
|
-
consumers at L.W3 open (`rg "DockShowcaseFrame" demo/` returned only
|
|
3599
|
-
the definition file).
|
|
3223
|
+
- **Reason**: a demo-private chassis with no consumer besides its own file.
|
|
3600
3224
|
- **Public-surface impact**: NONE. The component was never on the
|
|
3601
3225
|
library public surface—it was a demo-private chassis primitive.
|
|
3602
3226
|
No `src/` source / barrel / package.json export changes.
|
|
@@ -3611,8 +3235,7 @@ All three remain on `@mkbabb/glass-ui` (vueuse-free) via
|
|
|
3611
3235
|
|
|
3612
3236
|
#### Primitives KEPT (2nd consumer wired)
|
|
3613
3237
|
|
|
3614
|
-
|
|
3615
|
-
the wave at 1 consumer:
|
|
3238
|
+
v1.0 wired second consumers for three primitives that had one:
|
|
3616
3239
|
|
|
3617
3240
|
- **`<DiscoGlyph>`**—2nd consumer at
|
|
3618
3241
|
`demo/stories/foundations/chart-chassis-palette.vue` (chart-token
|
|
@@ -3630,7 +3253,7 @@ No consumer-side change. All three remain exported via the root barrel
|
|
|
3630
3253
|
|
|
3631
3254
|
### 5. Composables restructure (internal re-org)
|
|
3632
3255
|
|
|
3633
|
-
|
|
3256
|
+
v1.0 restructured `src/composables/` into coherent sub-trees.
|
|
3634
3257
|
**This affects you ONLY if you import directly from a deep relative
|
|
3635
3258
|
path** (e.g., `@mkbabb/glass-ui/src/composables/useTimer`). The public
|
|
3636
3259
|
surface (`@mkbabb/glass-ui` root barrel + named subpaths) is unchanged
|
|
@@ -3724,23 +3347,22 @@ const studio = useConfiguratorState<MyConfig>({
|
|
|
3724
3347
|
});
|
|
3725
3348
|
```
|
|
3726
3349
|
|
|
3727
|
-
|
|
3350
|
+
Aurora's per-preset clone semantics now route through the canonical primitive; `useAuroraStudio` was demo-private and retired. `cyclePreset` also accepts an optional `direction?: 1 | -1` (default `1`) so consumers can map `ArrowLeft` / `ArrowRight` keyboard handlers cleanly. Purely additive—no consumer migration required.
|
|
3728
3351
|
|
|
3729
3352
|
---
|
|
3730
3353
|
|
|
3731
|
-
## v2.0.0—Motion subpath surgery
|
|
3354
|
+
## v2.0.0—Motion subpath surgery
|
|
3732
3355
|
|
|
3733
|
-
|
|
3734
|
-
deferral from AI). The root barrel statically reached `@mkbabb/keyframes.js`
|
|
3356
|
+
The root barrel statically reached `@mkbabb/keyframes.js`
|
|
3735
3357
|
through `composables/motion`, which forced every consumer's entry chunk to
|
|
3736
3358
|
carry the ~102 KB raw / ~34 KB gz `keyframes-*.js` chunk even when the
|
|
3737
3359
|
consumer only imported `<Card>` or `<Button>`. The motion composables now
|
|
3738
3360
|
live on the `@mkbabb/glass-ui/motion` flat subpath. The root barrel is
|
|
3739
3361
|
keyframes.js-free.
|
|
3740
3362
|
|
|
3741
|
-
The shape mirrors the
|
|
3742
|
-
|
|
3743
|
-
|
|
3363
|
+
The shape mirrors the v1.0 move that carved `/dark`, `/keyboard`, and `/carousel`
|
|
3364
|
+
off the root barrel for the vueuse-bearing surface. Same precedent, different heavy
|
|
3365
|
+
peer.
|
|
3744
3366
|
|
|
3745
3367
|
### Symbols moved—root barrel → `/motion`
|
|
3746
3368
|
|
|
@@ -3850,14 +3472,12 @@ routes that don't use motion composables. The carry retires per route.
|
|
|
3850
3472
|
|
|
3851
3473
|
### No back-compat shim
|
|
3852
3474
|
|
|
3853
|
-
|
|
3854
|
-
(no backwards-compat shims), v2.0.0 ships no root-barrel alias for the moved
|
|
3855
|
-
symbols. Pinning to `^1.9.3` remains supported on the v1.x patch stream if a
|
|
3475
|
+
v2.0.0 ships no root-barrel alias for the moved symbols. Pinning to `^1.9.3` remains supported on the v1.x patch stream if a
|
|
3856
3476
|
consumer cannot migrate immediately.
|
|
3857
3477
|
|
|
3858
3478
|
---
|
|
3859
3479
|
|
|
3860
|
-
## v3.0.0—`/motion-core` engine-free carve
|
|
3480
|
+
## v3.0.0—`/motion-core` engine-free carve
|
|
3861
3481
|
|
|
3862
3482
|
v2.0.0 moved the whole motion sub-tree onto `/motion` on the theory that "the
|
|
3863
3483
|
bundler walks the sub-tree's `export *` chain as one SCC anyway" — so splitting
|
|
@@ -3930,17 +3550,15 @@ grep -c "@mkbabb/keyframes" node_modules/@mkbabb/glass-ui/dist/motion.js
|
|
|
3930
3550
|
|
|
3931
3551
|
### No back-compat shim
|
|
3932
3552
|
|
|
3933
|
-
|
|
3934
|
-
precept 1/2 + L invariant 4, `/motion` ships no alias for the carved symbols.
|
|
3553
|
+
`/motion` ships no alias for the carved symbols.
|
|
3935
3554
|
Consumers rename per call site (the diffs are mechanical 1-line edits).
|
|
3936
3555
|
|
|
3937
3556
|
---
|
|
3938
3557
|
|
|
3939
|
-
## v1.2.1—Aurora init fail-explicit
|
|
3558
|
+
## v1.2.1—Aurora init fail-explicit
|
|
3940
3559
|
|
|
3941
|
-
|
|
3942
|
-
|
|
3943
|
-
is now **fail-explicit**.
|
|
3560
|
+
Library-internal contract violations now throw, while browser-API degradation paths
|
|
3561
|
+
keep a silent fallback, so `<Aurora>` init failure is now **fail-explicit**.
|
|
3944
3562
|
|
|
3945
3563
|
### Before (≤ v1.2.0)
|
|
3946
3564
|
|
|
@@ -3993,8 +3611,7 @@ The top-level prop wins when both are set.
|
|
|
3993
3611
|
|
|
3994
3612
|
### Why the change
|
|
3995
3613
|
|
|
3996
|
-
|
|
3997
|
-
and O invariant 24:
|
|
3614
|
+
The rule is:
|
|
3998
3615
|
|
|
3999
3616
|
- Library-internal contract (shader compile / factory init / WebGL2 unavailable)
|
|
4000
3617
|
→ throw.
|
|
@@ -4015,13 +3632,10 @@ consumer can decide how to handle it.
|
|
|
4015
3632
|
call site.
|
|
4016
3633
|
- If you have an error boundary upstream and want the failure to surface
|
|
4017
3634
|
there, no change needed.
|
|
4018
|
-
- Speedtest's single `<Aurora>` call site (`src/App.vue:5`) inherits the
|
|
4019
|
-
fail-explicit default—the consumer-side disposition is coordinated at
|
|
4020
|
-
the cross-repo cohort wave (O.W6).
|
|
4021
3635
|
|
|
4022
3636
|
---
|
|
4023
3637
|
|
|
4024
|
-
## v1.3.0—`avatarVariant` → `avatarVariants`
|
|
3638
|
+
## v1.3.0—`avatarVariant` → `avatarVariants`
|
|
4025
3639
|
|
|
4026
3640
|
Renamed for consistency with the other variants constants in the library
|
|
4027
3641
|
(`buttonVariants`, `toggleVariants`, `badgeVariants`, `sliderVariants`, ...).
|
|
@@ -4035,16 +3649,11 @@ import { avatarVariant } from "@mkbabb/glass-ui";
|
|
|
4035
3649
|
import { avatarVariants } from "@mkbabb/glass-ui";
|
|
4036
3650
|
```
|
|
4037
3651
|
|
|
4038
|
-
The `AvatarVariants` type alias is unchanged.
|
|
4039
|
-
(`words`, `fourier-analysis`, `bbnf-buddy`, `keyframes.js`, `value.js`,
|
|
4040
|
-
`speedtest`) found one passthrough re-export site
|
|
4041
|
-
(`value.js/demo/@/components/avatar/index.ts`); coordinated at O.W6
|
|
4042
|
-
cross-repo cohort wave. No other production call sites use the symbol
|
|
4043
|
-
across the constellation.
|
|
3652
|
+
The `AvatarVariants` type alias is unchanged.
|
|
4044
3653
|
|
|
4045
3654
|
---
|
|
4046
3655
|
|
|
4047
|
-
## v1.3.0—`useDarkModeSync` → `installDarkModeSync`
|
|
3656
|
+
## v1.3.0—`useDarkModeSync` → `installDarkModeSync`
|
|
4048
3657
|
|
|
4049
3658
|
Renamed because the composable doesn't follow the canonical `useFoo`
|
|
4050
3659
|
contract—it returns `void` after installing a `watch` side-effect.
|
|
@@ -4061,14 +3670,9 @@ import { installDarkModeSync } from "@mkbabb/glass-ui";
|
|
|
4061
3670
|
installDarkModeSync(localIsDark);
|
|
4062
3671
|
```
|
|
4063
3672
|
|
|
4064
|
-
Cross-repo audit found 3 references in speedtest
|
|
4065
|
-
(`src/components/speedtest/SpeedtestMeter.vue`,
|
|
4066
|
-
`src/components/dashboard/composables/useEChartsTheme.ts`); coordinated
|
|
4067
|
-
at O.W6 cross-repo cohort. No other constellation references.
|
|
4068
|
-
|
|
4069
3673
|
---
|
|
4070
3674
|
|
|
4071
|
-
## Metric consolidation
|
|
3675
|
+
## Metric consolidation (7.0.0)
|
|
4072
3676
|
|
|
4073
3677
|
The three parallel metric packages are replaced by one static numeric-readout family.
|
|
4074
3678
|
`MetricBadge` becomes `Metric`; `MetricCell`, `MetricRow`, and `MetricStack` retain their
|
|
@@ -4105,7 +3709,7 @@ root-barrel imports for non-vueuse-bearing symbols) and still saw the
|
|
|
4105
3709
|
-32.5 KB entry-chunk gz drop. Per-package subpath imports are an
|
|
4106
3710
|
incremental polish above that baseline.
|
|
4107
3711
|
|
|
4108
|
-
### Adaptive glass over light — the self-engage default + the sampled observer
|
|
3712
|
+
### Adaptive glass over light — the self-engage default + the sampled observer
|
|
4109
3713
|
|
|
4110
3714
|
Glass surfaces (the dock + the `.glass-card`/`.glass-resting`/`.glass-quiet`/`.glass-wash`
|
|
4111
3715
|
content tiers + the overlay band) now **self-darken over light backdrops by default** —
|
|
@@ -4133,14 +3737,14 @@ barrel promotion (`docs/consumer-evidence/use-glass-backdrop-luminance.md`).
|
|
|
4133
3737
|
|
|
4134
3738
|
---
|
|
4135
3739
|
|
|
4136
|
-
### The luminous-dark transmissive material + the calm-light recalibration
|
|
3740
|
+
### The luminous-dark transmissive material + the calm-light recalibration
|
|
4137
3741
|
|
|
4138
3742
|
The DARK register was rebuilt as a luminous transmissive material, and the LIGHT
|
|
4139
3743
|
content-tier self-engage was recalibrated. Both are **token-identity evolutions, NOT
|
|
4140
3744
|
breaking aliases** (the lib's own default tokens evolve as the lib's identity changes —
|
|
4141
3745
|
presets-in-consumers; no clean-break migration, no codemod).
|
|
4142
3746
|
|
|
4143
|
-
**1 — The calm-light recalibration (
|
|
3747
|
+
**1 — The calm-light recalibration (no more gray slab).** The content tiers
|
|
4144
3748
|
(`.glass-card`/`.glass-resting`/`.glass-quiet`/`.glass-wash`) no longer apply the full 20%
|
|
4145
3749
|
AA darken UNCONDITIONALLY — over a plain LIGHT page they self-engage only a sub-perceptual
|
|
4146
3750
|
`--glass-tint-strength-floor` (4%), so a calm-light card stays a translucent WARM cream
|
|
@@ -4170,15 +3774,14 @@ otherwise.
|
|
|
4170
3774
|
**3 — The `--surface-tint-*` family gained a dark arm.** In dark the family now mixes
|
|
4171
3775
|
toward a light ink (`hsl(48 12% 96%)`) so chip backplates / hairlines / the dock-rail
|
|
4172
3776
|
divider / the timeline dot read against the near-black card (was: invisible — collapsed
|
|
4173
|
-
into the plate). The light arm + the in-srgb interpolation are UNCHANGED
|
|
4174
|
-
fence). Every `--surface-tint-*` consumer re-resolves automatically — no per-site edit.
|
|
3777
|
+
into the plate). The light arm + the in-srgb interpolation are UNCHANGED. Every `--surface-tint-*` consumer re-resolves automatically — no per-site edit.
|
|
4175
3778
|
|
|
4176
|
-
### The warm-chroma floor — the neutral ladder + glass plate off gray
|
|
3779
|
+
### The warm-chroma floor — the neutral ladder + glass plate off gray
|
|
4177
3780
|
|
|
4178
3781
|
The `--neutral-*` ladder + the `--card` glass plate were re-saturated onto the warm
|
|
4179
|
-
identity
|
|
4180
|
-
(the
|
|
4181
|
-
|
|
3782
|
+
identity, off gray. This is a **token-identity evolution, NOT a breaking alias**
|
|
3783
|
+
(the library's own default tokens evolve as its identity changes; no migration, no
|
|
3784
|
+
codemod). The ladder was SPECIFIED warm (hue 48) but RESOLVED
|
|
4182
3785
|
achromatic — at the library's low saturation it painted a yellow-green gray (OKLab hue ~95°,
|
|
4183
3786
|
chroma below the perceptual floor). The values evolve, both modes in lockstep:
|
|
4184
3787
|
|
|
@@ -4195,7 +3798,7 @@ chroma below the perceptual floor). The values evolve, both modes in lockstep:
|
|
|
4195
3798
|
| `--glass-border-*` rim α | wash 8% → overlay 18% | wash 11% → overlay 22% (warmer rim) |
|
|
4196
3799
|
|
|
4197
3800
|
The moves are **chroma-only at constant L** — the L (and therefore every AA contrast ratio)
|
|
4198
|
-
is preserved to within ±0.005
|
|
3801
|
+
is preserved to within ±0.005. **`--card` now decouples from
|
|
4199
3802
|
`--neutral-0`** (a glass plate reads warm-cream over a flat backdrop, the page stays calm
|
|
4200
3803
|
surface). A consumer who OVERRODE any `--neutral-*` rung or `--card` (presets-in-consumers)
|
|
4201
3804
|
RE-PINS their own value in `:root`/`.dark` — those overrides win as before; no action
|
|
@@ -4213,16 +3816,16 @@ still tracks the ladder, so a consumer reading those gets the warm value automat
|
|
|
4213
3816
|
|
|
4214
3817
|
---
|
|
4215
3818
|
|
|
4216
|
-
### The scroll-state edge fade — `.scroll-fade-*` → `<FadingScroll>` + `--mask-fade-width` → `--fade-scroll-width`
|
|
3819
|
+
### The scroll-state edge fade — `.scroll-fade-*` → `<FadingScroll>` + `--mask-fade-width` → `--fade-scroll-width`
|
|
4217
3820
|
|
|
4218
3821
|
The scroll-BLIND static `.scroll-fade-mask` / `.scroll-fade-y` / `.scroll-fade-top` /
|
|
4219
3822
|
`.scroll-fade-bottom` mask utilities are SUPERSEDED by the scroll-state-driven
|
|
4220
3823
|
`<FadingScroll>` primitive (`@mkbabb/glass-ui/fading-scroll`, axis `x`|`y`). The static
|
|
4221
3824
|
masks feathered BOTH edges unconditionally with no scroll knowledge — so the first card's
|
|
4222
|
-
chrome was half-erased at `scroll = 0
|
|
3825
|
+
chrome was half-erased at `scroll = 0`. `<FadingScroll>` feathers
|
|
4223
3826
|
the start edge ONLY past `scroll > 0` and the end edge ONLY while trailing overflow remains.
|
|
4224
3827
|
This is a **CLEAN BREAK — no alias** (the static utilities + the `--mask-fade-width` token
|
|
4225
|
-
were
|
|
3828
|
+
were removed at 4.1.0).
|
|
4226
3829
|
|
|
4227
3830
|
| was | now |
|
|
4228
3831
|
|---|---|
|
|
@@ -4256,15 +3859,15 @@ legibility cue, not motion — it stops interpolating, the discrete edge presenc
|
|
|
4256
3859
|
|
|
4257
3860
|
---
|
|
4258
3861
|
|
|
4259
|
-
### The disco CTA register retired — `btn-audacious` / `btn-audacious-gold` GONE
|
|
3862
|
+
### The disco CTA register retired — `btn-audacious` / `btn-audacious-gold` GONE
|
|
4260
3863
|
|
|
4261
3864
|
The user removed the "disco effect" wholesale. The `@utility btn-audacious` + `@utility btn-audacious-gold`
|
|
4262
3865
|
recipes (the sparkle `✦` glyph, the disco-grain hover, the gold-sweep shimmer, the typed press-ripple)
|
|
4263
3866
|
and their `@keyframes sparkle-sweep` / `btn-gold-bg-sweep` + the `--duration-sparkle` /
|
|
4264
3867
|
`--glass-grain-opacity-disco` / `--ripple-radius-max` / `--motion-duration-ripple` knobs are **DELETED —
|
|
4265
|
-
clean break, no alias
|
|
4266
|
-
**variant keys are KEPT and re-pointed** onto the calm glass-first register (
|
|
4267
|
-
|
|
3868
|
+
clean break, no alias**. The `primary-audacious` / `gold-audacious` Button
|
|
3869
|
+
**variant keys are KEPT and re-pointed** onto the calm glass-first register (gold survives,
|
|
3870
|
+
calm), so a `<Button variant="primary-audacious">` / `variant="gold-audacious">` call site needs
|
|
4268
3871
|
**no change** — it inherits the new register automatically. Only a consumer that applied the `btn-audacious`
|
|
4269
3872
|
_utility class directly_ (not via the variant) must migrate.
|
|
4270
3873
|
|
|
@@ -4279,11 +3882,11 @@ _utility class directly_ (not via the variant) must migrate.
|
|
|
4279
3882
|
The dock-tab PRIMARY tier (`<DockTabButton data-tier="primary">`) no longer auto-attaches `btn-audacious` or
|
|
4280
3883
|
paints the phase-grain hover/halo — it reads the plain de-red'd dock-control glass hover register. The
|
|
4281
3884
|
`data-tier="primary"` styling hook is **unchanged** (the taller/wider structural shell stays); only the disco
|
|
4282
|
-
accents drop.
|
|
4283
|
-
|
|
4284
|
-
|
|
3885
|
+
accents drop. Any direct `btn-audacious` class binding migrates to the calm glass register per the
|
|
3886
|
+
table; the `gold-audacious` / `primary-audacious` _variant_ consumers are untouched. This is a
|
|
3887
|
+
**breaking change for direct-utility consumers**, one reason the release is 4.0.0.
|
|
4285
3888
|
|
|
4286
|
-
### Per-spring duration clock minted — `--spring-<name>-duration`
|
|
3889
|
+
### Per-spring duration clock minted — `--spring-<name>-duration`
|
|
4287
3890
|
|
|
4288
3891
|
ADDITIVE — no migration required. `--spring-<name>-duration` (generated from the `(response, ζ)` SPRING_PRESETS
|
|
4289
3892
|
table: smooth 0.36s / snappy 0.34s / bouncy 0.69s / gentle 0.44s / dock 0.28s) is the spring's OWN settle clock.
|
|
@@ -4300,7 +3903,7 @@ v0.9.4 remains available indefinitely as a v0.9.x patch-stream tag.
|
|
|
4300
3903
|
v1.0 adoption is opt-in. If you cannot migrate immediately:
|
|
4301
3904
|
|
|
4302
3905
|
- Pin to `^0.9.4` in `package.json`.
|
|
4303
|
-
- The
|
|
3906
|
+
- The subpath typing-publication gap is patched at v0.9.4—you can
|
|
4304
3907
|
adopt subpath imports incrementally (`@mkbabb/glass-ui/forms`,
|
|
4305
3908
|
`@mkbabb/glass-ui/composables/dark`, etc.) without breaking your
|
|
4306
3909
|
existing root-barrel calls.
|
|
@@ -4326,34 +3929,32 @@ touched 15 src/ files:
|
|
|
4326
3929
|
| `registerShortcut` → `/keyboard` | 2 sites (incl. 1 test mock) | ~2 min |
|
|
4327
3930
|
| Build + typecheck + lighthouse re-probe | — | ~15 min |
|
|
4328
3931
|
|
|
4329
|
-
|
|
4330
|
-
`docs/tranches/L/coordination/speedtest-Y.md`):
|
|
3932
|
+
Observed deltas in that app:
|
|
4331
3933
|
|
|
4332
3934
|
| Indicator | Pre-v1.0 | Post-v1.0 | Delta |
|
|
4333
3935
|
|---|---|---|---|
|
|
4334
3936
|
| `dist/index.html` modulepreload directives | 1 | 0 | canonical SCC closure |
|
|
4335
|
-
| Entry chunk gz
|
|
4336
|
-
| Glass-ui `dist/glass-ui.js` gz | 33.6 KB
|
|
4337
|
-
| Glass-ui `dist/glass-ui.js` raw | 189 KB
|
|
4338
|
-
| Subpath dts publication (`/dark`, `/keyboard`, `/api`, `/carousel`) | broken
|
|
3937
|
+
| Entry chunk gz | ~204 KB | 171.5 KB | -32.5 KB |
|
|
3938
|
+
| Glass-ui `dist/glass-ui.js` gz | 33.6 KB | 22.4 KB | -11.2 KB |
|
|
3939
|
+
| Glass-ui `dist/glass-ui.js` raw | 189 KB | 124.8 KB | -65 KB |
|
|
3940
|
+
| Subpath dts publication (`/dark`, `/keyboard`, `/api`, `/carousel`) | broken | self-contained | gap closed |
|
|
4339
3941
|
|
|
4340
3942
|
Speedtest build PASS in 9.83s. Consumer-side vue-tsc resolution clean.
|
|
4341
3943
|
|
|
4342
3944
|
---
|
|
4343
3945
|
|
|
4344
|
-
## Production demo build—formal retire
|
|
3946
|
+
## Production demo build—formal retire
|
|
4345
3947
|
|
|
4346
3948
|
`npm run build` is library-mode only—it produces the `dist/glass-ui.{js,css,d.ts}`
|
|
4347
3949
|
bundle plus the per-subpath dist artefacts. There is NO `vite.demo.config.ts`
|
|
4348
3950
|
that produces a static demo build artefact.
|
|
4349
3951
|
|
|
4350
|
-
**Disposition
|
|
4351
|
-
deploy target. Rationale:
|
|
3952
|
+
**Disposition**: the demo is retired as a production deploy target. Rationale:
|
|
4352
3953
|
|
|
4353
3954
|
- The demo storybook is dev-mode-only—the canonical workflow is `npm run dev`
|
|
4354
3955
|
→ Vite dev server.
|
|
4355
3956
|
- Lighthouse audits run against the dev server with the documented dev-mode
|
|
4356
|
-
caveat.
|
|
3957
|
+
caveat.
|
|
4357
3958
|
- Consumer-deploy concerns (CloudFlare Pages, Vercel, GitHub Pages hosting,
|
|
4358
3959
|
cache-TTL, etc.) are out of glass-ui scope—they belong to consumer repos
|
|
4359
3960
|
(speedtest is the canonical reference for demo build chains).
|
|
@@ -4399,7 +4000,7 @@ rg '"@mkbabb/glass-ui/(pagination|virtual)"' src/
|
|
|
4399
4000
|
|
|
4400
4001
|
---
|
|
4401
4002
|
|
|
4402
|
-
## reka-ui 2.x — Combobox `searchTerm` → `ComboboxInput` v-model
|
|
4003
|
+
## reka-ui 2.x — Combobox `searchTerm` → `ComboboxInput` v-model
|
|
4403
4004
|
|
|
4404
4005
|
> Downstream-consumer note. glass-ui's own `Combobox*` wrappers are ALREADY on
|
|
4405
4006
|
> the canonical 2.x shape — this note is for consumers who hand-wired the reka
|
|
@@ -4410,8 +4011,7 @@ reka-ui 2.x moved the search/filter term OFF `ComboboxRoot` and ONTO
|
|
|
4410
4011
|
`ComboboxInput`'s `v-model`. The pre-2.x `<ComboboxRoot v-model:search-term>`
|
|
4411
4012
|
binding **silently no-ops** on 2.x (the prop no longer exists on the root) — and
|
|
4412
4013
|
because a stale reka model binding is a no-op, neither `vue-tsc` nor a unit test
|
|
4413
|
-
catches it; only a
|
|
4414
|
-
note + glass-ui's own `proof:reka-binding-idiom` render guard).
|
|
4014
|
+
catches it; only a test that checks the rendered effect does.
|
|
4415
4015
|
|
|
4416
4016
|
```vue
|
|
4417
4017
|
<!-- BEFORE (pre-2.x) — the filter term on the root -->
|
|
@@ -4434,20 +4034,9 @@ reka usage. Sweep on every reka major bump.
|
|
|
4434
4034
|
|
|
4435
4035
|
## Reference
|
|
4436
4036
|
|
|
4437
|
-
- **CHANGELOG**:
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
(root-barrel curation, api/ discovery, subpath flatten).
|
|
4441
|
-
- **Wire-or-retire proofs**: `docs/tranches/L/audit/W3-{A,B}-*.md`
|
|
4442
|
-
(composables + primitives).
|
|
4443
|
-
- **Cross-repo verification**: `docs/tranches/L/coordination/speedtest-Y.md`
|
|
4444
|
-
(re-link ledger, before/after deltas).
|
|
4445
|
-
- **Research basis**: `docs/tranches/L/research/Rε-architectural-transpositions.md`
|
|
4446
|
-
(HEADLINE rationale).
|
|
4447
|
-
- **Speedtest re-link diff**: speedtest commit `98f88325`
|
|
4448
|
-
(`feat(deps): adopt glass-ui v1.0`).
|
|
4449
|
-
|
|
4450
|
-
## 3.13.0 — the constellation kVis floor (R5-8, additive)
|
|
4037
|
+
- **CHANGELOG**: the v1.0 entry in `CHANGELOG.md`.
|
|
4038
|
+
|
|
4039
|
+
## 3.13.0 — the constellation kVis floor (additive)
|
|
4451
4040
|
|
|
4452
4041
|
The constellation gains a visual-size draw-scale FLOOR: `kVis = max(k, kFloor)` applied by
|
|
4453
4042
|
`drawNodes`/`drawEdges`/`drawPointerWeb`/`drawRipples` to SIZES (dot radii, line widths, the
|
|
@@ -4457,27 +4046,25 @@ cursor dot, the ripple ring) while TRUE `k` keeps positions and reach. On a 390p
|
|
|
4457
4046
|
`/constellation`: `DEFAULT_K_FLOOR` (0.72) + `kVisOf(field)` (for `drawOverlay` skins to floor
|
|
4458
4047
|
their own marks); new optional `ConstellationField.kFloor` member, tokenable per instance via
|
|
4459
4048
|
`--constellation-k-floor` (read by `<Constellation>` from the canvas). No API changes to the
|
|
4460
|
-
existing exports
|
|
4049
|
+
existing exports. If you floored your own marks with a local constant, read `kVisOf` instead.
|
|
4461
4050
|
|
|
4462
|
-
##
|
|
4051
|
+
## 4.0.0 — coming from the 3.11.x / 3.12.0 registry versions
|
|
4463
4052
|
|
|
4464
|
-
The
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
new shape is below and the consumer migrates. The full old→new table is in
|
|
4468
|
-
`docs/tranches/BA/audit/W-ATLAS-RECONCILE-cut-notes.md`.
|
|
4053
|
+
The 3.11.x and 3.12.0 versions on the registry were published from a separate line. 4.0.0
|
|
4054
|
+
brings their surfaces back to the main line with no legacy shims and no compatibility
|
|
4055
|
+
re-exports: where an idiom was superseded, the new shape is below and you migrate to it.
|
|
4469
4056
|
|
|
4470
4057
|
### A-1 — the post-flip settle seam (ADDITIVE, no migration)
|
|
4471
4058
|
|
|
4472
|
-
`useGlobalDark().onFlipSettled(cb)` returns
|
|
4059
|
+
`useGlobalDark().onFlipSettled(cb)` returns unchanged —
|
|
4473
4060
|
register ONE post-flip post-paint callback (`(isDark: boolean) => void`) that batches N
|
|
4474
4061
|
expensive re-theme ops (palette memo + chart retint + aurora re-derivation) into a single
|
|
4475
4062
|
coalesced `requestAnimationFrame` beat per flip. On `/dark` + `/api`
|
|
4476
|
-
(`DarkFlipSettledCallback`). No call-site change
|
|
4063
|
+
(`DarkFlipSettledCallback`). No call-site change.
|
|
4477
4064
|
|
|
4478
4065
|
### A-4a — `PAPER_WASH_GROUND` (ADDITIVE, no migration)
|
|
4479
4066
|
|
|
4480
|
-
The
|
|
4067
|
+
The recessive-ground crayon calibration partial returns unchanged. On
|
|
4481
4068
|
the `/aurora` barrel + `/api`. Spread it over a consumer's pole-derived pigment:
|
|
4482
4069
|
`const cfg = { ...consumerBase, ...PAPER_WASH_GROUND }`.
|
|
4483
4070
|
|
|
@@ -4503,55 +4090,45 @@ capability gate. The mutation itself always runs.
|
|
|
4503
4090
|
|
|
4504
4091
|
The silver structure metal (`--silver`/`-light`/`-dark`/`-deep` + `--color-silver*` aliases,
|
|
4505
4092
|
gold's cool mirror) + the `<InstrumentChassis variant="structure">` register (the cool
|
|
4506
|
-
milled-metal housing).
|
|
4507
|
-
|
|
4093
|
+
milled-metal housing). A structure surface adopts `variant="structure"` (or reads the
|
|
4094
|
+
`--color-silver*` tokens) for the precision-instrument register.
|
|
4508
4095
|
|
|
4509
|
-
### A-5 — `MetricBadge` `amount`→`value` (
|
|
4096
|
+
### A-5 — `MetricBadge` `amount`→`value` (one-line rename; shipped at 3.13.0)
|
|
4510
4097
|
|
|
4511
|
-
`<MetricBadge :amount="…">` → `<MetricBadge :value="…"
|
|
4512
|
-
intentional; see the AZ.W-METRIC-UNIFY row above (`MIGRATION.md` §3.x amount→value).
|
|
4098
|
+
`<MetricBadge :amount="…">` → `<MetricBadge :value="…">`; see §3.13.0.
|
|
4513
4099
|
|
|
4514
|
-
##
|
|
4100
|
+
## 4.0.0 — the rebuilt dark register (the clean breaks)
|
|
4515
4101
|
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
removal+re-add for a live 3.12.0 fork consumer, AND BA carries its own breaks below. Each row
|
|
4520
|
-
names the wave, the break, and the consumer re-pin action. **The value.js-impacting rows
|
|
4521
|
-
(tabs, Dialog, menu-row, Select, Slider) are flagged `[value.js]` by name** — value.js is the
|
|
4522
|
-
live 3.13.0 registry consumer owed the named cut-notes (the atlas register-D discipline — by
|
|
4523
|
-
name, never silently; the full value.js adopt is `docs/tranches/BA/audit/valuejs-adopt-book.md`).
|
|
4102
|
+
4.0.0 collects these clean breaks (no aliases, no compat shims; a clean break is a major).
|
|
4103
|
+
Each row names the break and what to change. **The rows that touch value.js (tabs, Dialog,
|
|
4104
|
+
menu-row, Select, Slider) are flagged `[value.js]`.**
|
|
4524
4105
|
|
|
4525
|
-
### The disco retirement
|
|
4106
|
+
### The disco retirement — gold survives CALM
|
|
4526
4107
|
|
|
4527
4108
|
The audacious disco-grain recipe family RETIRES (clean break, no alias): the `@utility
|
|
4528
4109
|
btn-audacious` / `btn-audacious-gold` recipes, the `@keyframes sparkle-sweep` /
|
|
4529
4110
|
`btn-gold-bg-sweep`, and the disco-grain knobs (`--duration-sparkle`,
|
|
4530
|
-
`--glass-grain-opacity-disco`) are GONE. Gold survives in the
|
|
4111
|
+
`--glass-grain-opacity-disco`) are GONE. Gold survives in the calm register:
|
|
4531
4112
|
the static `.gold-shimmer` text gradient + the `--glass-specular` edge catch-light registers
|
|
4532
4113
|
STAY (the FENCE held — only the ANIMATED sweeps die). The dock-tab primary tier collapses onto
|
|
4533
4114
|
the plain glass hover register (no grain / `--phase-color` radial halo). **Consumer re-pin:**
|
|
4534
4115
|
drop any `<Button variant="primary-audacious">` / `gold-audacious` binding (the variant rides
|
|
4535
|
-
the retired recipe) or accept the calm register
|
|
4536
|
-
`variant="primary-audacious"` is the named live break site (see the slides adopt book).
|
|
4116
|
+
the retired recipe) or accept the calm register.
|
|
4537
4117
|
|
|
4538
|
-
### The tone-on-glass recompose
|
|
4118
|
+
### The tone-on-glass recompose
|
|
4539
4119
|
|
|
4540
|
-
Toast
|
|
4541
|
-
see §8.0.0. Toast and Notification are not measured by this strike and stand.] tone
|
|
4542
|
-
variants render TINTED-GLASS over the floating rung (ONE
|
|
4120
|
+
Toast and Notification tone variants (and Alert's, until 8.0.0; see §8.0.0) render TINTED-GLASS over the floating rung (ONE
|
|
4543
4121
|
`.feedback-tone` `color-mix` recipe, α < 0.92 both modes), NOT an opaque saturated slab. The
|
|
4544
4122
|
three independent tone maps collapsed onto the ONE recipe. **Consumer re-pin:** a consumer that
|
|
4545
4123
|
hardcoded a tone-slab color re-points to the house tone token; the slab look is gone.
|
|
4546
4124
|
|
|
4547
|
-
### The static scroll-fade retirement
|
|
4125
|
+
### The static scroll-fade retirement
|
|
4548
4126
|
|
|
4549
4127
|
The static `.scroll-fade-*` utilities RETIRE (clean break). **Consumer re-pin:** migrate to the
|
|
4550
4128
|
`<FadingScroll>` primitive (`@mkbabb/glass-ui/fading-scroll`) — a native `scroll(self)`-driven
|
|
4551
|
-
edge-fade with a JS fallback. A
|
|
4552
|
-
on the bump.
|
|
4129
|
+
edge-fade with a JS fallback. A local FadingScroll prototype of your own can be deleted.
|
|
4553
4130
|
|
|
4554
|
-
### PresetEditorField retires onto the Configurator chassis
|
|
4131
|
+
### PresetEditorField retires onto the Configurator chassis
|
|
4555
4132
|
|
|
4556
4133
|
The gear PresetEditor recomposes on the Configurator chassis; `PresetEditorField` is REMOVED
|
|
4557
4134
|
(clean break). **Consumer re-pin:** the migration is the `<ConfiguratorRow>` composition shape
|
|
@@ -4560,7 +4137,7 @@ COLOR moved off the inline `border-border/30` alpha to the dark-adaptive
|
|
|
4560
4137
|
`--configurator-divider` token, keyed by the `data-dividers` attribute (the `border-t` WIDTH
|
|
4561
4138
|
arm stays).
|
|
4562
4139
|
|
|
4563
|
-
### The shared `surface` axis
|
|
4140
|
+
### The shared `surface` axis — incl. the Dialog break `[value.js]`
|
|
4564
4141
|
|
|
4565
4142
|
The shared `{glass · veil · opaque}` `surface` axis is adopted across
|
|
4566
4143
|
Card / GlassPanel / Dialog / Sheet / Drawer / Popover / Command / ExpandableContainer / Skeleton
|
|
@@ -4568,15 +4145,13 @@ Card / GlassPanel / Dialog / Sheet / Drawer / Popover / Command / ExpandableCont
|
|
|
4568
4145
|
a consumer re-pins:
|
|
4569
4146
|
- **The Dialog `variant`→`surface` move `[value.js]`** — Dialog's prior `variant` discriminant
|
|
4570
4147
|
is the `surface` axis now. A consumer setting `<Dialog variant="…">` re-points to `surface="…"`.
|
|
4571
|
-
(value.js DeckGate sets no `variant` on its Dialog → a NO-OP for slides specifically; the
|
|
4572
|
-
value.js consumer of `/dialog` re-pins.)
|
|
4573
4148
|
- **The GlassPanel↔Card axis reconciliation** — the two surfaces share the ONE `surface` axis;
|
|
4574
4149
|
a consumer relying on the prior divergent prop shape re-pins to the unified `surface` prop.
|
|
4575
4150
|
- **`<Skeleton surface="glass">`** is the named downstream register for value.js's bespoke
|
|
4576
4151
|
`PaletteCardSkeleton.vue` (`bg-foreground/[0.04]` over `bg-card` — the "too black" composite)
|
|
4577
4152
|
re-author at the pin.
|
|
4578
4153
|
|
|
4579
|
-
### The tabs taxonomy cut
|
|
4154
|
+
### The tabs taxonomy cut `[value.js]`
|
|
4580
4155
|
|
|
4581
4156
|
ONE tab engine: `<SegmentedTabs>` (`@mkbabb/glass-ui/tabs`, pill-glass + underline-paper on
|
|
4582
4157
|
`.paper-ink-mark`). The clean breaks (no alias):
|
|
@@ -4589,49 +4164,44 @@ ONE tab engine: `<SegmentedTabs>` (`@mkbabb/glass-ui/tabs`, pill-glass + underli
|
|
|
4589
4164
|
(the independent-toggles surface; Tabs is panel-nav only).
|
|
4590
4165
|
- **`overflow` responsive-collapse** retired (the prior `:responsive` collapse arm).
|
|
4591
4166
|
The indicator paints ONE elastic register (the oval-blob default-ON `TabsIndicator` plate is dead).
|
|
4592
|
-
`proof:tabs-unified` re-pointed to `proof:tabs-std`.
|
|
4593
4167
|
|
|
4594
|
-
### The menu-row glass default flip
|
|
4168
|
+
### The menu-row glass default flip `[value.js]`
|
|
4595
4169
|
|
|
4596
4170
|
Select and Combobox use `.glass-menu-row` through one private row-class owner. The former
|
|
4597
4171
|
flat-accent alternative is removed; consumers needing product-specific flat paint own that
|
|
4598
4172
|
composition. DropdownMenu and Command keep their component-local row classes, while
|
|
4599
4173
|
`.glass-menu-section` remains the section caption/hairline register.
|
|
4600
4174
|
|
|
4601
|
-
### The `/underline`→`/handmark`
|
|
4175
|
+
### The `/underline`→`/handmark` fold
|
|
4602
4176
|
|
|
4603
|
-
The
|
|
4177
|
+
The hand-drawn family re-lands on `@mkbabb/glass-ui/handmark` (`HandMark`/`InkMark`/`BRUSHES`).
|
|
4604
4178
|
The prior `GlassUnderline` + `custom/underline/` + the `/underline` subpath RETIRE (clean break,
|
|
4605
4179
|
grep-negative survivor). **Consumer re-pin:** a consumer importing `@mkbabb/glass-ui/underline` /
|
|
4606
|
-
`GlassUnderline` re-points to `/handmark` (`<HandMark>`).
|
|
4607
|
-
red pen-underlines on its intro/closer slides are deck-LOCAL CSS/SVG glyphs, never the library
|
|
4608
|
-
component; a NO-OP for slides — see the slides adopt book.)
|
|
4180
|
+
`GlassUnderline` re-points to `/handmark` (`<HandMark>`).
|
|
4609
4181
|
|
|
4610
|
-
### The `CarouselDots`→`PagerDots` retirement
|
|
4182
|
+
### The `CarouselDots`→`PagerDots` retirement
|
|
4611
4183
|
|
|
4612
4184
|
`CarouselDots` RETIRES onto the unified `<PagerDots>` + `.glass-pager-ring` register
|
|
4613
|
-
(`@mkbabb/glass-ui/pager`) — the carousel counter off the dark `bg-card` slab.
|
|
4614
|
-
slides `DeckPager` were ALREADY one recipe (≥2 consumers by construction). **Consumer re-pin:**
|
|
4185
|
+
(`@mkbabb/glass-ui/pager`) — the carousel counter off the dark `bg-card` slab. **Consumer re-pin:**
|
|
4615
4186
|
a `CarouselDots` consumer re-points to `<PagerDots>`.
|
|
4616
4187
|
|
|
4617
|
-
### Dark-material token-identity NOTEs (
|
|
4188
|
+
### Dark-material token-identity NOTEs (token re-points, not API breaks)
|
|
4618
4189
|
|
|
4619
4190
|
The dark register is rebuilt on the EXISTING `--glass-tint-*` seam (no new compositing seam):
|
|
4620
4191
|
the page→card L-point split (page L6→L4, card L10→L16), the transmissive dark `saturate`/
|
|
4621
4192
|
`brightness` arm + edge α 0.22, the dark tint LIFT 12%, and the `--primary` →
|
|
4622
4193
|
legendre-violet (`oklch(0.739 0.134 318.1)`, fg 7.15:1). These are TOKEN re-resolutions on the
|
|
4623
4194
|
inheriting axis — a consumer overriding a `--glass-*` / `--primary` token re-checks its value
|
|
4624
|
-
against the rebuilt register, but there is no API/prop break
|
|
4625
|
-
|
|
4626
|
-
composited — a consumer's content card un-grays at the bump with ZERO consumer edit).
|
|
4195
|
+
against the rebuilt register, but there is no API/prop break. The light content card no
|
|
4196
|
+
longer composites a gray slab, so it un-grays at the bump with no edit.
|
|
4627
4197
|
|
|
4628
|
-
### Warm-chroma-floor NOTEs (
|
|
4198
|
+
### Warm-chroma-floor NOTEs (token re-saturation, not API breaks)
|
|
4629
4199
|
|
|
4630
4200
|
The neutral ladder + light glass plates + borders are re-saturated onto the warm identity (the
|
|
4631
4201
|
achromatic-48 ladder lifted above the C 0.020 chroma floor). TOKEN re-resolution; no API break.
|
|
4632
4202
|
A consumer overriding a neutral token re-checks its chroma.
|
|
4633
4203
|
|
|
4634
|
-
### The `--glass-blur-*` dial-back (
|
|
4204
|
+
### The `--glass-blur-*` dial-back (token re-point, not API break)
|
|
4635
4205
|
|
|
4636
4206
|
The six `--glass-blur-*-radius` primitives dialed back ~15-20% within the 8-15px band
|
|
4637
4207
|
(`10/12/16/15/11` → `8/10/13/13/9`; wash unchanged at 1px; the dock radius 11px→9px). TOKEN
|
|
@@ -4639,21 +4209,21 @@ re-resolution; no API break. The per-spring `--spring-<name>-duration` vocabular
|
|
|
4639
4209
|
analytic 2%-band settle envelope, GENERATED from `SPRING_PRESETS`) — a consumer that rode a
|
|
4640
4210
|
`--spring-*` easing on a generic `--duration-*` clock gains the matched per-spring duration.
|
|
4641
4211
|
|
|
4642
|
-
### The `@source` re-point (
|
|
4212
|
+
### The `@source` re-point (consumer-wiring fix, not an API break)
|
|
4643
4213
|
|
|
4644
4214
|
The dead `@source` in `index.css` re-points to the real `dist/` surface so glass-ui's compiled
|
|
4645
4215
|
utilities reach a consumer's Tailwind content-scan again. The Select collision-bound + inner-
|
|
4646
4216
|
scroll ship as PRECOMPILED CSS; the Slider `size` axis now renders REAL track geometry in every
|
|
4647
4217
|
consumer (no rename, but the rendered behaviour changes — a consumer relying on the silently-6px
|
|
4648
4218
|
track now gets the real `size` track) `[value.js — the A-3 Slider size axis]`. The
|
|
4649
|
-
`SelectTrigger` `size` gained a font-rung prop writing `--dropdown-text` `[value.js
|
|
4219
|
+
`SelectTrigger` `size` gained a font-rung prop writing `--dropdown-text` `[value.js]`.
|
|
4650
4220
|
|
|
4651
|
-
### `MetricBadge` `amount`→`value` (
|
|
4221
|
+
### `MetricBadge` `amount`→`value` (shipped at 3.13.0; repeated here)
|
|
4652
4222
|
|
|
4653
|
-
|
|
4654
|
-
|
|
4223
|
+
A one-line `amount=`→`value=` rename per call site, listed here so a consumer adopting 4.0.0
|
|
4224
|
+
sees it with the other breaks.
|
|
4655
4225
|
|
|
4656
|
-
### `Drawer*` moves to the `/drawer` subpath (
|
|
4226
|
+
### `Drawer*` moves to the `/drawer` subpath (clean break, no alias)
|
|
4657
4227
|
|
|
4658
4228
|
The Drawer family is re-built on reka `DialogRoot` + the house `useDrawerSnap` engine (a
|
|
4659
4229
|
`@mkbabb/keyframes.js` `SpringProgress` consumer), abrogating vaul-vue (the lone `@vueuse/core
|
|
@@ -4674,11 +4244,11 @@ hand-styled `[data-vaul-snap-points]` re-points to `[data-glass-drawer-snap-poin
|
|
|
4674
4244
|
direction-aware default snap ladder is now native (`resolveDefaultSnapPoints(direction)` — no more
|
|
4675
4245
|
`:snap-points="[]"` workaround for a full-slide left/right drawer).
|
|
4676
4246
|
|
|
4677
|
-
### `.glass-refract` → `.glass-lens` (
|
|
4247
|
+
### `.glass-refract` → `.glass-lens` (clean break, no alias)
|
|
4678
4248
|
|
|
4679
4249
|
The refractive-glass opt-in class is renamed `.glass-refract` → `.glass-lens` (the iOS-26
|
|
4680
4250
|
edge-lensing vocabulary). The class now composes the EVOLVED squircle bevel-profile displacement
|
|
4681
|
-
filter (the
|
|
4251
|
+
filter (the old uniform-radial map is gone) + the typed inheriting `--glass-refract`
|
|
4682
4252
|
magnitude axis (the `:active` lens-swell). The `--glass-refract*` AXIS/token names are KEPT (only the
|
|
4683
4253
|
opt-in CLASS renames). One-line rename per call site:
|
|
4684
4254
|
|
|
@@ -4693,7 +4263,7 @@ opt-in CLASS renames). One-line rename per call site:
|
|
|
4693
4263
|
the un-gated blur+tint base (PRESERVED — see the runtime-latch note below, which replaces the
|
|
4694
4264
|
former `@supports` gate).
|
|
4695
4265
|
|
|
4696
|
-
### `.glass-lens` Chromium refraction now rides a runtime latch — arm it once
|
|
4266
|
+
### `.glass-lens` Chromium refraction now rides a runtime latch — arm it once
|
|
4697
4267
|
|
|
4698
4268
|
> **VOID at 8.0.0.** The latch, `armGlassRefract()`, `supportsBackdropRefract()`, and
|
|
4699
4269
|
> `.glass-lens` itself are DELETED — see §8.0.0. The "required consumer action" below is
|
|
@@ -4728,7 +4298,7 @@ surface you author yourself.
|
|
|
4728
4298
|
contract. The lens degrades to its documented blur floor (the same floor Safari holds) until an app
|
|
4729
4299
|
root calls `armGlassRefract()`; on Chromium the refraction garnish is simply absent.
|
|
4730
4300
|
|
|
4731
|
-
### Refraction gains a Tier-1 WebGL2 FLOOR — the SOTA degrade ladder (
|
|
4301
|
+
### Refraction gains a Tier-1 WebGL2 FLOOR — the SOTA degrade ladder (additive, no consumer break)
|
|
4732
4302
|
|
|
4733
4303
|
The `.glass-lens` refraction now sits on a three-rung SOTA degrade ladder, so the depth-refraction reads
|
|
4734
4304
|
on EVERY engine — not just Chromium:
|
|
@@ -4751,7 +4321,7 @@ and leaves it 0 for the depth-only lens. The `--glass-chromatic-strength` float
|
|
|
4751
4321
|
Tier-0 `--glass-edge-dispersion` box-shadow rung (they do NOT collide — one is a GL-uniform float, the
|
|
4752
4322
|
other a CSS box-shadow).
|
|
4753
4323
|
|
|
4754
|
-
### `popover-animate` / `slide-in-from-side` → `.glass-reveal` (
|
|
4324
|
+
### `popover-animate` / `slide-in-from-side` → `.glass-reveal` (clean break, no alias)
|
|
4755
4325
|
|
|
4756
4326
|
The reka-overlay enter `@utility popover-animate` (the fixed-bezier `zoom-in-95` + `fade-in-0`) AND
|
|
4757
4327
|
`@utility slide-in-from-side` are RETIRED, replaced by the spring-clocked LIQUID-ENTER recipe
|
|
@@ -4777,20 +4347,19 @@ bloom JS leaf (the dialog-from-button / dock-from-pill case), composing the kf `
|
|
|
4777
4347
|
`springTimingFunction`. The CSS `.glass-reveal` recipe is the zero-JS everywhere floor; the JS leaf is
|
|
4778
4348
|
the source-rect refinement.
|
|
4779
4349
|
|
|
4780
|
-
##
|
|
4350
|
+
## 5.0.0 — the glass standardization (clean breaks)
|
|
4781
4351
|
|
|
4782
|
-
### The `--glass-blur-dock` chain RETIRES (
|
|
4352
|
+
### The `--glass-blur-dock` chain RETIRES (clean break, no alias)
|
|
4783
4353
|
|
|
4784
4354
|
The dock-own blur register — `--glass-blur-dock` (light + dark composite), `--glass-saturate-dock`
|
|
4785
4355
|
(light + dark), `--glass-blur-dock-radius`, and the `--blur-dock` `@theme` bridge (→ the `blur-dock` /
|
|
4786
|
-
`backdrop-blur-dock` Tailwind utility) — is RETIRED wholesale.
|
|
4787
|
-
which re-pointed the dock's backdrop onto the ONE unified glass material via `--dock-surface-blur:
|
|
4356
|
+
`backdrop-blur-dock` Tailwind utility) — is RETIRED wholesale. The dock's backdrop now reads the ONE unified glass material via `--dock-surface-blur:
|
|
4788
4357
|
var(--glass-blur-resting)` (the 8px resting peer). The dock now paints its blur through that peer; there
|
|
4789
4358
|
is no dock-own rung.
|
|
4790
4359
|
|
|
4791
4360
|
**Consumer impact:** none for the token cascade (the chain had zero external readers — the dock reads
|
|
4792
4361
|
the resting peer, and the `blur-dock` Tailwind utility had zero consumers). A consumer who authored
|
|
4793
|
-
`class="blur-dock"` / `class="backdrop-blur-dock"` directly
|
|
4362
|
+
`class="blur-dock"` / `class="backdrop-blur-dock"` directly re-points
|
|
4794
4363
|
to `backdrop-blur-glass-resting` (the 8px material) or overrides the `--glass-blur-resting-radius` primitive.
|
|
4795
4364
|
A consumer who overrode `:root { --glass-blur-dock-radius: … }` to retune the dock blur now overrides
|
|
4796
4365
|
`--glass-blur-resting-radius` (the substitution-vs-composite discipline — the dock shares the resting
|
|
@@ -4799,30 +4368,24 @@ material).
|
|
|
4799
4368
|
```css
|
|
4800
4369
|
/* before (v4.2.0) — retune the dock blur */
|
|
4801
4370
|
:root { --glass-blur-dock-radius: 12px; }
|
|
4802
|
-
/* after (
|
|
4371
|
+
/* after (5.0.0) — the dock reads the unified resting material */
|
|
4803
4372
|
:root { --glass-blur-resting-radius: 12px; }
|
|
4804
4373
|
```
|
|
4805
4374
|
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
the sole in-repo witness now that the sibling-probe gate `proof:retired-token-consumers`
|
|
4809
|
-
is KILLED (ruling #3). A consumer overriding `--glass-blur-dock`/`-radius`/`--glass-saturate-dock`
|
|
4810
|
-
drops the dead override on its own bump; there is no glass-ui gate probing the sibling
|
|
4811
|
-
tree. See `docs/tranches/BH/coordination/asks-and-consumes.md` (row 4) + `proof:crossrepo-asks:bh`
|
|
4812
|
-
(the `>=4` covered-floor).
|
|
4375
|
+
A consumer overriding `--glass-blur-dock`/`-radius`/`--glass-saturate-dock` drops the dead
|
|
4376
|
+
override when it upgrades.
|
|
4813
4377
|
|
|
4814
|
-
### `ladder.css` / `shell.css` carves (
|
|
4378
|
+
### `ladder.css` / `shell.css` carves (no-god-module, no consumer impact)
|
|
4815
4379
|
|
|
4816
4380
|
`glass/ladder.css`'s grain `::after` overlay tail carves into `glass/grain-overlay.css`, and `dock/shell.css`'s
|
|
4817
4381
|
`#persistent` region + vertical layer-stack tail carves into `dock/shell-regions.css` (each @import-ed
|
|
4818
4382
|
IMMEDIATELY AFTER its parent in the SAME `@layer components`, cascade-order-invariant → the `/styles`
|
|
4819
4383
|
draw is unchanged). Internal carves to hold the 500-line no-god-module bound; zero API/paint delta.
|
|
4820
4384
|
|
|
4821
|
-
### The dead-composable cut (
|
|
4385
|
+
### The dead-composable cut (clean break, no alias)
|
|
4822
4386
|
|
|
4823
|
-
Five
|
|
4824
|
-
|
|
4825
|
-
forbids. They are DEFINITION-ABSENT (a clean cut; there is no replacement primitive because there
|
|
4387
|
+
Five motion composables (and their paired CSS) had at most one real consumer, so they are
|
|
4388
|
+
removed (a clean cut; there is no replacement primitive because there
|
|
4826
4389
|
was no real consumer to serve). The dead `useMorphField()` WELD (zero callers) is GUTTED to its
|
|
4827
4390
|
motion-named SIGNATURE DATA.
|
|
4828
4391
|
|
|
@@ -4835,4 +4398,4 @@ motion-named SIGNATURE DATA.
|
|
|
4835
4398
|
| `useDockContextSilhouette` (+ `AppSwitcher`'s stale reference) | never exported (`custom/dock/composables/`) | REMOVED — no live consumer (the founding demo reads `useBloomUp`); a future dock context→silhouette need re-enters through the shipped dock-morph family. |
|
|
4836
4399
|
| `useMorphField()` (the weld function + `MorphTier`/`MorphSilhouette`/`MorphFieldRect`/`BodySpec`/`MorphFieldOptions`/`MorphFieldHandle`) | root barrel · `/motion-core` | GUTTED — the weld body had ZERO callers. Its live surface — `MORPH_SIGNATURES` + `MorphSignature`/`MorphSignatureName`/`MorphVector` — MOVES to `composables/motion/morphSignatures.ts` and STAYS on the barrel (byte-identical DATA). |
|
|
4837
4400
|
|
|
4838
|
-
**Consumer re-pin (`MORPH_SIGNATURES`):** none — the import path is unchanged (the root barrel + `/motion-core` still re-export `MORPH_SIGNATURES` and the three signature types). Only the `useMorphField` function symbol + its function-domain types leave the surface.
|
|
4401
|
+
**Consumer re-pin (`MORPH_SIGNATURES`):** none — the import path is unchanged (the root barrel + `/motion-core` still re-export `MORPH_SIGNATURES` and the three signature types). Only the `useMorphField` function symbol + its function-domain types leave the surface.
|