Page:
Changelog
Pages
Accordion
AccordionItem
Alert
Avatar
Badge
BarChart
Button
ButtonGroup
Card
Changelog
ChartLegend
Checkbox
CodeEditor
Collapsible
Combobox
CommandPalette
ContextMenu
CopyButton
DatePicker
Dialog
DonutChart
Drawer
Field
FileInput
FileList
Forms
Gauge
Getting started
Heatmap
Home
Image
InlineEdit
Input
Kbd
Label
LineChart
Menu
MultiSelect
NumberInput
Overlays
Pagination
Popover
Progress
RadioGroup
Scroller
Select
Separator
ShareBar
Sheet
Skeleton
Slider
Sparkline
Spinner
StatCard
Switch
Table
Tabs
TagsInput
Textarea
Theming
Toaster
Toggle
Tooltip
Tree
No results
18
Changelog
L4stIdi0t edited this page 2026-10-09 22:01:06 +02:00
Table of contents
- Changelog
- v0.24.0 — 2026-10-09
- v0.23.1 — 2026-10-06
- v0.23.0 — 2026-10-06
- v0.22.0 — 2026-10-06
- v0.21.0 — 2026-10-05
- v0.20.0 — 2026-10-01
- v0.19.0 — 2026-09-29
- v0.18.0 — 2026-09-21
- v0.17.0 — 2026-09-21
- v0.16.0 — 2026-09-14
- v0.15.2 — 2026-09-09
- v0.15.1 — 2026-09-09
- v0.15.0 — 2026-09-09
- v0.14.0 — 2026-09-08
- v0.13.0 — 2026-09-08
- v0.12.0 — 2026-09-08
- v0.11.0 — 2026-09-03
- v0.10.0 — 2026-09-03
- v0.9.0 — 2026-09-03
- v0.8.0 — 2026-09-03
- v0.7.0 — 2026-09-03
- v0.6.0 — 2026-09-03
- v0.5.0 — 2026-09-02
- v0.4.1 — 2026-09-02
- v0.4.0 — 2026-09-02
- v0.3.0 — 2026-09-02
- v0.2.1 — 2026-09-02
- v0.2.0 — 2026-09-02
- v0.1.5 — 2026-09-01
- v0.1.4 — 2026-09-01
- v0.1.3 — 2026-09-01
- v0.1.2 — 2026-09-01
- v0.1.1 — 2026-09-01
- v0.1.0 — 2026-09-01
Changelog
Generated from the git history by pnpm changelog; edit a commit subject, not
this file.
Two blocks per release are computed from the source rather than remembered, and they are the ones an upgrade turns on:
- API — components and props that came or went, read out of the barrel and
the
type Propsblocks at each tag. A lost prop is a compile error; a new one is usually why you are upgrading. - Tokens — added, removed and changed values in
tokens.css. This is the quiet one: an app with its own palette will not define a token a release added,var(--new-thing)resolves to nothing, and a surface renders unstyled with no error. Check yours withnode node_modules/@l4st/driftwood/scripts/contrast.mjs src/app.css— see docs/theming.md.
v0.24.0 — 2026-10-09
API.
- new components:
DatePicker,ShareBar
Other
- 0.24.0 (
8937a74) - Agent skill: ShareBar in the roster and the which-chart guidance (
a205887) - Tree: a loading folder shows a "Loading" row where its children will appear instead of text spilling over the folder's name, and a tree wider than its box scrolls sideways rather than cutting names short (
af7d39b) - ShareBar: parts of a whole as one bar with its list; hovering a segment lights its row, a row lights its segment, and a row can pick its part (
10442c9) - DatePicker: new date field with a YYYY-MM-DD value; a calendar under the trigger, a bottom sheet with swipe on a phone, and year and month lists for jumping far (
cefe6cc) - 0.23.1 changelog (
cbaeb2a)
v0.23.1 — 2026-10-06
API.
LineChartgainedcategoriesLabelBarChartgainedcategoriesLabelDonutChartgainedpartsLabel
Other
- 0.23.1 (
34bf45e) - LineChart, BarChart, DonutChart: the hidden data table no longer widens a phone page, and its first header is a prop (categoriesLabel, partsLabel) (
16f12fa) - 0.23.0 changelog (
045c82f)
v0.23.0 — 2026-10-06
API.
Buttongainedhref,disabledHeatmapgainedrowsLabel
Other
- 0.23.0 (
a044aa5) - driftwood-ui skill: a navigating button is Button href, a text action in a row is variant="link" (
c6c8e53) - Button: variant="link" for a text action in a row of buttons, and href renders an in any variant (2ef960b)
- Heatmap: the hidden data table names its corner header (rowsLabel, default 'Row') and no longer widens a phone page (4531d94)
- 0.22.0 changelog (f6ed7b1)
v0.22.0 — 2026-10-06
API.
- new components:
CommandPalette Kbdgainedreactive
Other
- 0.22.0 (3245fc4)
- CommandPalette: the ⌘K box — grouped rows, results from async sources as you type, modes, filter chips, recent picks, and a shortcut you can set (415724f)
- Kbd: a keycap goes down while its key is held, and keys can be one string ('mod+shift+p') (ff1f957)
- 0.21.0 changelog (8a7b603)
v0.21.0 — 2026-10-05
API.
Tablegainedgroup
Other
- 0.21.0 (d0c8039)
- Table: rounded row hover, and group for a row with a detail row (a225f10)
- Progress: the indeterminate fill spans the whole track (8d19821)
- 0.20.0 changelog (f4e1255)
v0.20.0 — 2026-10-01
API.
- new components:
CopyButton
Verification
- fail on any uncaught page error, and mount an InlineEdit already open (c344d54)
Other
- 0.20.0 (161bc29)
- InlineEdit: the field opens around the text without moving it, and closes onto it (58ca19e)
- Slider: the thumb grows a little while held and springs back on release (6d1e776)
- CopyButton: copies text to the clipboard, animates to a check or a cross, and announces the result (dbc2c5e)
- 0.19.0 changelog (7205e6f)
v0.19.0 — 2026-09-29
API.
- new components:
TagsInput,ContextMenu
Other
- 0.19.0 (ae200bb)
- TagsInput: type and press Enter to add a tag; with options it is a multi-select that can also take new values (39bec60)
- ContextMenu: replaces the browser's menu over a region, opened by right-click, Shift+F10 or a long-press (f4b14ce)
- Menu: right-clicking an open menu no longer opens the browser's menu over it (19a4044)
- 0.18.0 changelog (61ee93d)
- Changelog: the first release is compared with itself, not with HEAD (6ca27e0)
v0.18.0 — 2026-09-21
API.
- new components:
InlineEdit
Other
- 0.18.0 (67c0d51)
- InlineEdit: a value shown as plain text that becomes a field when you click it (7a35670)
- Probe: fetch the Image server render from the page, not from Node (081a629)
- Probe: the Image probes poll for the file they expect instead of sleeping a guess (ae0c7ce)
- 0.17.0 changelog (6e40414)
v0.17.0 — 2026-09-21
API.
- new components:
Image
Other
- 0.17.0 (f692a26)
- Image: an with a ThumbHash placeholder, a dark variant, and no broken-image glyph (8a69f2b)
- 0.16.0 changelog (73b5b37)
v0.16.0 — 2026-09-14
API.
ScrollergainedshowButtons
Other
- 0.16.0 (237e590)
- Scroller: the buttons float over the strip at every width, and showButtons can drop them (c1ce7d4)
- a prefers-color-scheme rule for dark-mode extensions to find (aef9ff1)
v0.15.2 — 2026-09-09
Other
- 0.15.2 changelog (3ee12c3)
- 0.15.2 (f3d6339)
- MultiSelect: emit called itself, so one pick fired the callback until the stack gave out (491e476)
v0.15.1 — 2026-09-09
Other
- 0.15.1 (31dc821)
- Dialog and Sheet: closing plays the entrance backwards instead of deleting the node (174b0f6)
v0.15.0 — 2026-09-09
API.
- new components:
Sheet,Drawer
Other
- 0.15.0 (74d3905)
- Sheet and Drawer: a panel anchored to an edge, and one that settles at more than one height (13d392e)
v0.14.0 — 2026-09-08
API.
ScrollergainedyieldWheel; lostwheel
Other
- 0.14.0 (1f7a48b)
- Scroller: a vertical wheel is the page's, so a strip moves only sideways (cdd655e)
- Docs: the kit stands on its own, so the notes stop pointing at the apps it came from (2eea436)
v0.13.0 — 2026-09-08
API.
- new components:
Scroller
Other
- 0.13.0 (1f718fd)
- Scroller: a strip that scrolls either way, with buttons, a hidden scrollbar and a load-more channel (4976d2c)
v0.12.0 — 2026-09-08
API.
TreegainedloadChildren,onLoadError,loadingLabel,retryLabel
Other
- 0.12.0 (241f52a)
- Tree: folders that fetch their own children, so the whole filesystem need not be walked (e999147)
v0.11.0 — 2026-09-03
API.
CodeEditorgainedreadonly
Other
- 0.11.0 (8ffb211)
- CodeEditor: a readonly mode that is a reader, not a disabled control (24fd88c)
- Probe: the comment probes put the document back, and the caret is read a frame later (64f2174)
v0.10.0 — 2026-09-03
API.
CodeEditorgainedcomments
Other
- 0.10.0 (ddb3018)
- CodeEditor: comments close and carry on, and Enter keeps the line's shape (ed81408)
v0.9.0 — 2026-09-03
Other
- 0.9.0 (9c044bf)
- CodeEditor: the Customizer is syntax, not grey (8de6753)
v0.8.0 — 2026-09-03
API.
- new components:
FileInput,FileList
Other
- FileInput and FileList: files off the user, as a line or as a drop area (e7e6314)
v0.7.0 — 2026-09-03
API.
- new components:
Sparkline,LineChart,BarChart,DonutChart,Gauge,Heatmap,ChartLegend StatCardgaineddelta,deltaLabel,goodDirection,trend,class
Tokens. An app with its own palette must update it before taking this release.
- changed
--chart-1:oklch(0.52 0.13 var(--hue))→light-dark(oklch(0.53 0.13 var(--hue)), oklch(0.58 0.14 var(--hue))) - changed
--chart-2:oklch(0.62 0.12 200)→light-dark(oklch(0.75 0.16 77), oklch(0.66 0.15 77)) - changed
--chart-3:oklch(0.7 0.13 160)→light-dark(oklch(0.62 0.13 165), oklch(0.56 0.13 165)) - changed
--chart-4:oklch(0.6 0.14 300)→light-dark(oklch(0.74 0.12 var(--hue)), oklch(0.66 0.11 var(--hue))) - changed
--chart-5:oklch(0.45 0.11 270)→light-dark(oklch(0.68 0.12 346), oklch(0.58 0.13 346))
Other
- Charts: six of them and a legend — hover, arrows, and numbers a screen reader can actually read (3c9bf3f)
- The chart palette is re-stepped, so adjacent series stay apart under colour blindness (18f3903)
v0.6.0 — 2026-09-03
Other
- CodeEditor: region names in green, and the end of one says what it ends (0fc61b8)
- CodeEditor: regions fold, and a region name is not another @param (b29f672)
- CodeEditor: a hover's arguments are a table, not a paragraph (cf65c4d)
- CodeEditor: OpenSCAD, as a language set an app can import (ff037f6)
v0.5.0 — 2026-09-02
Other
- Screenshots: the CodeEditor's swatch, caret and wrapped default (a0bf6ef)
- CodeEditor: a list that opens under the pointer keeps its own selection (f11dd16)
- CodeEditor: aligned in every engine, fast in every file size (7a855c1)
- CodeEditor: the colour square sits before the #, not on top of it (c053f25)
- CodeEditor: the active line is one band, gutter to code (c251dd9)
- CodeEditor: draw our own caret, and leave the gutter alone (2c7a041)
- CodeEditor: the gutter reads left to right (1ba218b)
- CodeEditor: put every glyph back under the caret (0d2d351)
- CodeEditor: a lucide chevron for the fold control (229833a)
- Changelog for v0.4.1 (0e338ec)
v0.4.1 — 2026-09-02
API.
CodeEditorgainedlineWrapping,highlightActiveLine,complete
Other
- CodeEditor: suggestions, wrapping, the active line, and a tooltip that reads (9aac2c4)
- Popover: a click in a layer stacked above the panel is not an outside click (8d92c7f)
v0.4.0 — 2026-09-02
API.
CodeEditorgainedbackground
Other
- CodeEditor: JetBrains' 2026 Light and Dark schemes, and a
backgroundprop (5231856)
v0.3.0 — 2026-09-02
API.
- new components:
CodeEditor
Components
- CodeEditor, from webSCAD (60e5489)
Docs
- stop prose from being parsed as HTML, and audit for it (d6dd57c)
- publish the component docs to the wiki (779eba1)
Other
- check the published pages in a browser, not just the markdown (5f395a4)
v0.2.1 — 2026-09-02
Docs
- rebuild the component pages, document every prop, and make the changelog answer upgrades (568bdef)
v0.2.0 — 2026-09-02
API.
- new components:
Alert,Avatar,Separator,Textarea,Field,RadioGroup,Combobox,Tabs,Table,Pagination,Popover Switchgainedname,valueCheckboxgainedname,valueSlidergainednameTogglegainedname,valueTooltipgaineddelayMultiSelectgainedid,name,aria-labelledby,onValuesChange
Tokens. An app with its own palette must update it before taking this release.
- changed
--primary:light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue)))→light-dark(oklch(0.49 0.13 var(--hue)), oklch(0.78 0.14 var(--hue))) - changed
--muted-foreground:light-dark(oklch(0.55 0.012 var(--hue)), oklch(0.655 0.012 var(--hue)))→light-dark(oklch(0.5 0.012 var(--hue)), oklch(0.68 0.012 var(--hue))) - changed
--destructive-foreground:oklch(0.985 0 0)→light-dark(oklch(0.985 0 0), oklch(0.2 0.03 27.325)) - changed
--success:light-dark(oklch(0.58 0.14 150), oklch(0.68 0.15 150))→light-dark(oklch(0.5 0.13 150), oklch(0.68 0.15 150)) - changed
--success-foreground:oklch(0.985 0.015 150)→light-dark(oklch(0.985 0.015 150), oklch(0.2 0.03 150)) - changed
--ring:light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue)))→light-dark(oklch(0.49 0.13 var(--hue)), oklch(0.78 0.14 var(--hue))) - changed
--sidebar-primary:light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue)))→light-dark(oklch(0.49 0.13 var(--hue)), oklch(0.78 0.14 var(--hue))) - changed
--sidebar-ring:light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue)))→light-dark(oklch(0.49 0.13 var(--hue)), oklch(0.78 0.14 var(--hue)))
Components
- the ten primitives an app reached for and did not find (c4c4593)
- portal, place and inert — and make the controls submittable (45e7dc5)
Theming
- compute palette contrast, and stop the hover washing out (b500dee)
Verification
- audit the ARIA this kit hand-writes, and prove the form contract (77d9b87)
Agent bundle
- ship a bundle a consuming app copies into its own .claude/ (7750d3d)
Tooling
- run the job the change implicates, not all six every time (1e956e7)
- one command to regenerate every image and the docs (d8c33d5)
Docs
- regenerate the changelog for the contrast tooling (bf9f069)
- a generated 16:9 hero, both themes in one frame (50c4b9e)
- explain the system theme, and put it in the agent workflows (5788ca0)
- both apps consume the package now (4cf38ab)
- install the peers explicitly, and say why (6b8be94)
- reading the registry needs no credentials (07137d8)
- the registry install is live (671cbd2)
Other
- a changelog that says which tokens moved (c0b8bb5)
v0.1.5 — 2026-09-01
Tooling
- publish with the FORGEJO_USER / FORGEJO_API secrets (4cc5529)
v0.1.4 — 2026-09-01
Tooling
- authenticate to the package registry with Basic, not Bearer (1fbb80c)
v0.1.3 — 2026-09-01
Tooling
- upload the publish log, drop --access (d0fc554)
v0.1.2 — 2026-09-01
Tooling
- publish through pnpm, behind an auth preflight (6766840)
v0.1.1 — 2026-09-01
API.
- new components:
NumberInput SlidergainedonValueCommitAccordiongaineddefaultValue
Tokens. An app with its own palette must update it before taking this release.
- changed
--background:oklch(0.165 0.006 var(--hue))→light-dark(oklch(1 0 0), oklch(0.165 0.006 var(--hue))) - changed
--foreground:oklch(0.97 0.003 var(--hue))→light-dark(oklch(0.19 0.008 var(--hue)), oklch(0.97 0.003 var(--hue))) - changed
--card:oklch(0.205 0.008 var(--hue))→light-dark(oklch(1 0 0), oklch(0.205 0.008 var(--hue))) - changed
--card-foreground:oklch(0.97 0.003 var(--hue))→light-dark(oklch(0.19 0.008 var(--hue)), oklch(0.97 0.003 var(--hue))) - changed
--popover:oklch(0.205 0.008 var(--hue))→light-dark(oklch(1 0 0), oklch(0.205 0.008 var(--hue))) - changed
--popover-foreground:oklch(0.97 0.003 var(--hue))→light-dark(oklch(0.19 0.008 var(--hue)), oklch(0.97 0.003 var(--hue))) - changed
--primary:oklch(0.78 0.14 var(--hue))→light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue))) - changed
--primary-foreground:oklch(0.18 0.03 var(--hue))→light-dark(oklch(0.99 0.01 var(--hue)), oklch(0.18 0.03 var(--hue))) - changed
--secondary:oklch(0.25 0.009 var(--hue))→light-dark(oklch(0.96 0.004 var(--hue)), oklch(0.25 0.009 var(--hue))) - changed
--secondary-foreground:oklch(0.97 0.003 var(--hue))→light-dark(oklch(0.25 0.01 var(--hue)), oklch(0.97 0.003 var(--hue))) - changed
--muted:oklch(0.25 0.009 var(--hue))→light-dark(oklch(0.96 0.004 var(--hue)), oklch(0.25 0.009 var(--hue))) - changed
--muted-foreground:oklch(0.655 0.012 var(--hue))→light-dark(oklch(0.55 0.012 var(--hue)), oklch(0.655 0.012 var(--hue))) - changed
--accent:oklch(0.28 0.04 var(--hue))→light-dark(oklch(0.95 0.02 var(--hue)), oklch(0.28 0.04 var(--hue))) - changed
--accent-foreground:oklch(0.85 0.09 var(--hue))→light-dark(oklch(0.33 0.07 var(--hue)), oklch(0.85 0.09 var(--hue))) - changed
--destructive:oklch(0.704 0.191 22.216)→light-dark(oklch(0.577 0.245 27.325), oklch(0.704 0.191 22.216)) - changed
--success:oklch(0.68 0.15 150)→light-dark(oklch(0.58 0.14 150), oklch(0.68 0.15 150)) - changed
--warning:oklch(0.83 0.14 85)→light-dark(oklch(0.8 0.14 85), oklch(0.83 0.14 85)) - changed
--border:oklch(1 0 0 / 11%)→light-dark(oklch(0.92 0.005 var(--hue)), oklch(1 0 0 / 11%)) - changed
--input:oklch(1 0 0 / 15%)→light-dark(oklch(0.92 0.005 var(--hue)), oklch(1 0 0 / 15%)) - changed
--ring:oklch(0.78 0.14 var(--hue))→light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue))) - changed
--sidebar:oklch(0.205 0.008 var(--hue))→light-dark(oklch(0.985 0.002 var(--hue)), oklch(0.205 0.008 var(--hue))) - changed
--sidebar-foreground:oklch(0.97 0.003 var(--hue))→light-dark(oklch(0.19 0.008 var(--hue)), oklch(0.97 0.003 var(--hue))) - changed
--sidebar-primary:oklch(0.78 0.14 var(--hue))→light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue))) - changed
--sidebar-primary-foreground:oklch(0.18 0.03 var(--hue))→light-dark(oklch(0.99 0.01 var(--hue)), oklch(0.18 0.03 var(--hue))) - changed
--sidebar-accent:oklch(0.25 0.009 var(--hue))→light-dark(oklch(0.96 0.004 var(--hue)), oklch(0.25 0.009 var(--hue))) - changed
--sidebar-accent-foreground:oklch(0.97 0.003 var(--hue))→light-dark(oklch(0.25 0.01 var(--hue)), oklch(0.97 0.003 var(--hue))) - changed
--sidebar-border:oklch(1 0 0 / 11%)→light-dark(oklch(0.92 0.005 var(--hue)), oklch(1 0 0 / 11%)) - changed
--sidebar-ring:oklch(0.78 0.14 var(--hue))→light-dark(oklch(0.52 0.13 var(--hue)), oklch(0.78 0.14 var(--hue)))
Fixes
- a git install produced a package with no dist/ (6008b89)
Theming
- follow the system, and tell the browser about it (95a46d4)
Tooling
- assert the tarball with npm's own file list, not tar (9a72d45)
- check every push, publish to the registry on a tag (e24a6b8)
- commit the WebStorm project, add .editorconfig (1f14ed6)
Docs
- warn that v0.1.0 installs without dist/ (a29074f)
- group the component index, document every component, shoot AccordionItem (3d074d3)
- the registry is the install path, and tw-animate-css is a peer (baaafb8)
Other
- generated component docs, screenshots, and the commit channel (ec3895c)
v0.1.0 — 2026-09-01
Theming
- make --hue real, and set the base defaults once (573949e)
Docs
- install over HTTPS (d238043)
Other
- extract the shared Svelte component kit (54a55f8)
driftwood
Layout
Actions
Forms
- Field
- Input
- FileInput
- FileList
- Textarea
- CodeEditor
- Combobox
- RadioGroup
- NumberInput
- InlineEdit
- Label
- Select
- MultiSelect
- DatePicker
- TagsInput
- Checkbox
- Switch
- Slider
Feedback
Charts
Overlays
Navigation
Generated from the source by pnpm wiki · repository · v0.24.0