Changelog

Changelog

Release notes and upcoming changes for @mielui/svelte.

0.4.1

Unreleased
  • Dark-mode colors from a theme, such as Background and On brand in the Theme Studio, now apply instead of being overridden by the default dark palette.

0.4.0

  • The default theme is flat. Primary, secondary, and destructive buttons, switch and slider thumbs, checked checkboxes and radios, selected tabs, toggles, pagination pages, and calendar days take one solid fill held by a hairline, with no gradient, inner light, or drop shadow.
  • chrome.edgeHighlight defaults to 0 instead of 0.33. Set it above 0 to light every filled control again; 0.33 restores the previous look.
  • chrome.controlShadows defaults to off, so fields, outline buttons, keycaps, and toolbar keys are held by their hairline without an edge light or contact shadow.
  • Flat filled controls change tone on hover at once and darken further on press, instead of fading in a light.
  • The glow button variant stays lit in every theme, including flat ones. Add the new mielui-glow-lit class to light any other .mielui-glow control.
  • The glow variant is now lit in Ink, Console, and Daydream, which set the edge highlight to 0.
  • The Magic, Open, Functional, Honey, Forest, Ocean, Lilac, Profitable, Raven, Clawd, Inspiration, and Government presets now render flat. Bitsy and Ember keep their lit look.
  • The panel button variant no longer carries a resting elevation.
  • Tooltips wait 500ms for a resting pointer instead of 125ms. Keyboard focus opens them at once, and delay applies to the pointer only.
  • The default radius scale is rounder: 10/12/16/20px, 28px plates and 14px controls, up from 8/10/14/18px, 26px and 12px. Pick the sharp scale or set the radius tokens to keep the old shape.
  • The glow variant and .mielui-glow-lit light at 30% when the theme is flat, down from 33%.
  • @mielui/svelte accepts SvelteKit 3 as a peer dependency, alongside SvelteKit 2. Mielui imports no SvelteKit runtime, so package installs work in either version.
  • Source copied by the Mielui CLI still imports from $lib/mielui, which SvelteKit 3 no longer provides. In a SvelteKit 3 app, install the package or add a $lib alias until the CLI supports #lib imports.
  • Fixed docs pages going partly or fully blank while scrolling the sidebar in Chrome. Pinned sidebar labels now fade without a blur.
  • Component pages appear complete after an in-app link, so scrolling down quickly no longer reaches examples that are still loading.
  • A docs page opened from an in-app link no longer flashes at the previous scroll position or jumps back to the top after scrolling starts.
  • Scrolling the docs no longer restyles the whole page on every frame, so it stays smooth on long pages.
  • An open docs tab picks up a new deploy on the next link instead of running the old version until a reload.
  • Scrolling a docs page quickly in Chrome no longer leaves parts of it blank.
  • The component catalog renders every preview with the page, so scrolling quickly no longer reaches empty cards that fill in afterwards.
  • Hover colors on Button, Badge, table rows, calendar days, breadcrumbs, disclosure rows, and other hover-only controls change instantly instead of fading in.
  • The press scale on buttons and menu items settles in 120ms instead of 160ms, and no longer delays hover colors.
  • Closing a Sheet or Dialog while it opens, or reopening it while it closes, turns it around from where it is instead of jumping or snapping into place.
  • Reopening a Popover, DropdownMenu, ContextMenu, HoverCard, or DatePicker while it closes turns it around from where it is instead of restarting its entrance.
  • Clicking a DropdownMenu trigger while its menu closes reopens the menu instead of being swallowed.
  • In light mode, checked Checkbox and Radio fills and the on Switch track are slightly darker, so the default brand color reaches 3:1 against the page.

0.3.0

  • The default theme is redesigned. Surfaces are white plates on a grey stage, every neutral is derived from the foreground color, every control shares one radius, and filled buttons are lit. Explicit themes keep their colors, and every theme picks up the new shapes and motion.
  • The default fonts are Inter Tight and Geist Mono instead of Manrope and JetBrains Mono. ui.css imports them from @fontsource/inter-tight and @fontsource/geist-mono, and the package no longer depends on the old two.
  • Text weight stops at 500. font-semibold and font-bold resolve to 500, and --font-weight-header is 500. Build hierarchy from size and color, or set --font-weight-semibold and --font-weight-bold back to 600 and 700.
  • --color-border, --color-border-strong, and --color-input are translucent mixes of the foreground instead of opaque greys. A theme that sets foundation.border keeps its own color.
  • Two-layer surfaces swap their layers. The frame is now the card color and the inner surface is the page background, so content in an inset Card, a Dialog, a CodeBlock, or a Composer sits on the recessed stage color with white fields on top.
  • The default edge highlight is 33% instead of 50%. Borders stay single and cards and menus stay without shadows, as before.
  • The radius scale changes. --radius-xl is 18px instead of 20px, plates use the new --radius-2xl (26px), and controls use the new --radius-control: 4px in the sharp scale, 12px in the default scale, and a pill in the rounded scale. Buttons were 14px before.
  • Primary, secondary, and destructive buttons are lit like glow. Outline is flat: a hairline on the field color with no inset shading.
  • The primary button's text is dark on the default brand in light mode as well as dark, so it passes contrast. --color-on-primary is #21151e in both.
  • Text fields, native selects, select and combobox triggers, and number fields take --radius-control like buttons. Textarea and TagInput use --radius-xl.
  • The focus ring is 3px at half the primary color instead of 2px at 80%.
  • Menus, selects, and popovers spring open in 220ms from their trigger's side and close on a 100ms fade. Dialogs pop from 96% scale in 400ms and leave in 150ms. The blur on both is gone. --motion-duration-panel-in, --motion-duration-modal-in, and the menu and modal offset tokens have new defaults.
  • ToggleGroup sits in a segmented track, so it is two spacing units taller and wider. Its selected item is a lit fill that glides between items.
  • Table's default variant has no outer frame or header fill. variant="inset" and DataTable put the header and footer on the frame and the rows on a recessed surface.
  • Alert is one notice strip. Status variants tint the icon only, with no colored fill or border.
  • ScrollArea no longer shows chevrons at an edge with more content. showCues fades the edge instead, and the thumb stays hidden until hover, focus, or scroll.
  • Composer is a recessed frame holding a white writing surface. Its focus ring shows only while the textarea is focused.
  • The default Toolbar paints a grey track behind its keys.
  • Badges take --radius-control instead of a pill, and status variants have no colored border.
  • Tag Input renders its tags as secondary badges instead of outline badges.
  • The Checkbox card row (variant="card", formerly primary) no longer tints with the primary color.
  • Collapsible content is muted and inset to line up with its trigger text.
  • Breadcrumb items are padded, so the trail's text starts one item padding further in.
  • Tooltips reposition instantly when the pointer moves to the next trigger instead of gliding there.
  • Switch thumbs no longer stretch while pressed.
  • Calendar, RangeCalendar, DatePicker, DateRangePicker, and OTPField parts expose their DOM node as bind:element, like every other component. bind:ref on those parts no longer works. HugeiconsIcon's ref prop is element too.
  • The exported PopoverState type loses focusedInside, trigger, focusedElement, onclick, and hovering. Nothing read them.
  • closeMenuLayers is no longer exported from @mielui/svelte/utils. No component used it.
  • The internal overlay module no longer exports useOverlay, OverlayOptions, or parentOverlayDepth. Dialog and Sheet stopped using them when Bits UI took over focus and dismissal.
  • Tabs, CodeBlock, FileDiff, and the labels of every family share state under private keys. Code that read them with getContext('tabs') or a similar string key gets undefined.
  • Button takes a labels object (ButtonLabels) instead of loadingLabel, successLabel, and errorLabel. Menu items, select and combobox options, dialog buttons, Form.Submit, and other parts built on Button follow.
  • CopyButton takes labels instead of label and copiedLabel. CodeBlock.Copy drops both props and reads copy and copied from the labels on CodeBlock.
  • ShowMore takes labels (more, less, region) instead of moreLabel, lessLabel, and label.
  • Command.Content drops label. Name the palette with labels.palette on Command.Root.
  • TaskSteps takes labels instead of label. The same object translates the summary sentence.
  • FolderCard.Count drops unit. Set the count text with labels.count on FolderCard.Root, which now says "1 file" for one.
  • DataTable's labels.rows and labels.selected return the whole phrase and receive the counts, so a translation can place the number. selected also receives the total.
  • Composer.Root drops errorMessage, and Composer.Submit drops label, queueLabel, stopLabel, and loadingLabel. Pass labels to Composer.Root instead.
  • Question.Root drops errorMessage, and Question.Submit drops label and loadingLabel. Use labels.submitError, labels.submit, and labels.submitting on Question.Root.
  • Conversation.ScrollButton drops label. Pass labels to Conversation.Root instead.
  • Reasoning's labels.thought applies only without a duration. With a duration, labels.thoughtFor sets the whole status line.
  • AccordionContext, AlertDialogState, CollapsibleState, ContextMenuCheckboxItemState, TabsState, and ToggleGroupContext are no longer exported.
  • ContextMenu.Item and DropdownMenu.Item accept only variant="destructive". Menu rows no longer accept size or unstyled, which they ignored.
  • DropdownMenu.SubTrigger no longer accepts Button props it ignored, such as icon, variant, size, and unstyled.
  • Select.Trigger no longer accepts icon, Select.Item no longer accepts unstyled, Select.Value accepts only placeholder and class, and Slider no longer accepts children. None of them were used.
  • DatePicker.Root renders a wrapping div so it can expose bind:element.
  • Dialog and Alert Dialog no longer accept orientation, and DialogOrientation is no longer exported. size on Content is now the only width control, and it accepts a new xs step.
  • Popover and Combobox no longer accept stateKey or state_key, and Dialog.Content no longer accepts role, contentClass, or panelIdPrefix. Combobox Content no longer accepts focusTrap, which it ignored.
  • Select.Item and Combobox.Item no longer accept variant, size, or unstyled, which they ignored.
  • TagInput's requiredMessage is replaced by labels.required.
  • AlertDialog.Exit is renamed AlertDialog.Close, matching Dialog.
  • Sheet.Header takes showClose in place of close, matching Dialog.Content.
  • TagInput takes invalid and issues in place of error, matching Field.Root.
  • Hover Card takes placement on Root in place of side and align on Content, and delay in place of openDelay, matching Popover and Tooltip.
  • Checkbox's variant="primary" is renamed variant="card".
  • Spinner's curved is renamed eased.
  • Composer has a Footer part: a strip on the frame under the writing surface for hints, connected apps, or message-wide settings.
  • Button has a glow variant: a lit fill for a page's headline action, with --mielui-glow-color and --mielui-glow-light to change its color and brightness.
  • ui.css ships four class contracts: mielui-plate for a resting surface, mielui-float-frame for a floating panel, mielui-glow for the lit fill of filled actions, and mielui-glow-neutral for the white selected fill on a track.
  • --color-wash is the one hover and selected-row fill.
  • --mielui-glow-ring sets the outer edge of a lit control.
  • Four spring curves are theme tokens: --ease-spring-panel, --ease-spring-layout, --ease-spring-pop, and --ease-spring-flick, with --motion-duration-spring, --motion-duration-pop, and --motion-duration-flick. springEase in @mielui/svelte/transition builds the same curves for Svelte transitions.
  • Plates and frames use continuous-curvature corners where the browser supports corner-shape: squircle.
  • The theme's edge highlight now scales the light on every lit control.
  • Tabs, ToggleGroup, Toggle, and Pagination mark selection with a lit fill. Tabs and ToggleGroup indicators glide between items.
  • Switch and Slider thumbs, the checked Checkbox and Radio, and the selected Calendar day are lit.
  • DropdownMenu.Item and ContextMenu.Item render variant="destructive" as an error-colored row with a tinted highlight. Radio items show a dot.
  • A direct button or link inside Alert becomes its one action, at the end on wide layouts and last when stacked.
  • SkeletonSwap lines sweep out of phase, and arriving content sharpens from a slight blur.
  • Composer's send button becomes a lit stop control while streaming.
  • Reasoning's label shimmers while thinking.
  • Chart, pie, and heatmap tooltips and the crosshair follow the pointer on the layout spring.
  • Calendar days take the control radius with a dot under today, and a selected range is a continuous wash.
  • Date and color pickers open as floating panels.
  • Kbd is a mono keycap and takes an inverse look inside tooltips.
  • Spinner is a thin ring.
  • A selected Question option takes the neutral wash instead of a primary tint, and its radio or check mark is lit.
  • FolderCard is a single plate with the cover flush to its edge and a card-colored body.
  • The theme's motion feel scales the spring, pop, flick, item, panel, and dialog durations together, and --ease-drawer is a theme token.
  • A second agent skill, mielui-design, teaches coding agents to lay out whole pages with Mielui: app shells, dashboards, data tables, settings, chat workspaces, and marketing sites. Install it with npx skills add mielsense/mielui --skill mielui-design.
  • Slider, NumberField, Dialog, Sheet, Notch, Toaster, Command, ColorPicker, Question, and Gauge take a labels prop that translates their built-in text and accessible names. Each exports its <Name>Labels type; Toaster's is ToastLabels.
  • TagInputLabels adds added, removed, and required. FileUploadLabels adds uploadFailed. DataTableLabels adds removeFilter, done, previous, and next. ChartLabels adds noData, and HeatmapLabels adds summaryPending.
  • createContext from @mielui/svelte/utils returns find() next to get() and set(). find() returns undefined outside the root instead of throwing.
  • @mielui/svelte/utils exports the WithElement type, which swaps a primitive's ref prop for a bindable element.
  • Button, Kbd, Form.ErrorSummary, SkeletonSwap, CopyButton, ShowMore, TaskSteps, FolderCard, Composer, and Conversation take a labels prop. Each exports its <Name>Labels type.
  • CommandLabels adds palette and available. ToastLabels adds count. ColorPickerLabels adds the trigger name and a name for each channel slider. DataTableLabels adds row, selectPage, and the filter summary keys. QuestionLabels adds submit, submitting, answer, and placeholder. ReasoningLabels adds title.
  • Chart, Heatmap, Table, Group, and NativeSelect export a prop type for every part. Select adds SelectTriggerProps, SelectContentProps, and SelectLabelProps, and HoverCard adds HoverCardTitleProps and HoverCardDescriptionProps.
  • The root entry exports every public prop, labels, and variant type, including the PieChart, EmptyState, and Notch types.
  • DatePicker.Root supports bind:element, like DateRangePicker.Root.
  • Outline buttons inside a Group use the same border color as the inputs, text, and dividers beside them. They kept a lighter border, so the frame changed color partway around.
  • Composer gives the input and its joined toolbar more padding.
  • Outline buttons wrapped in a Tooltip or another trigger inside a Group take the group's border color too, so the frame no longer changes color at the wrapped button.
  • The traveling highlight in menus and the command palette is measured correctly while its panel is still scaling in, so the first highlighted row is no longer too narrow after a keyboard open.
  • The traveling highlight snaps to the active row for arrow keys and selection changes, and only glides for a pointer.
  • Combobox results no longer animate their height on every keystroke.
  • An indeterminate Progress pulses under reduced motion instead of freezing as a one-third bar.
  • Tooltips scale from their trigger instead of their center.
  • Toasts fade in as they rise instead of appearing at full opacity.
  • Nested corners share a centre. Dialog, Sheet, Drawer, inset Card, Table, and Composer frames take their radius from the control radius plus their two-unit strip padding, menus and popovers from their rows, and CodeBlock, Toolbar, and the Reorder List handle follow the same rule.
  • A closed Select or Combobox no longer intercepts clicks on whatever sits below its trigger.
  • Dropdown menus, context menus, their submenus, and Select and Combobox lists keep an 8px margin from the window edge instead of sitting flush against it.
  • Collapsing an Accordion, Collapsible, Reasoning, or Tool no longer logs an "Invalid keyframe value for property height" warning.
  • Message.Content caps assistant and system text at 65 characters per line, as intended. The cap was losing to a full-width class.
  • Closing a Dialog or Sheet from a menu item or confirmation inside it, in the same tick, no longer logs Svelte's derived_inert warning.
  • The info status color and the accent tint follow --color-primary, so setting that one token rebrands them too.
  • Command.Header leaves the palette when it is removed instead of staying until the page reloads.
  • Popover.Trigger renders the chevron its icon prop describes. It is off by default and turns while the popover is open.
  • CodeBlock keeps its gutter beside the code when theme="custom" is combined with line numbers or an inline copy button.
  • Toolbar.Group stacks its items in a vertical toolbar, and vertical items share one width.
  • Calendar, Range Calendar, Date Picker, and Date Range Picker keep the visible month when their props change, which also stops a crash in the month and year selects when props are spread onto the root.
  • Long weekday names are cut with an ellipsis instead of overlapping in the calendar header.
  • A date field with granularity="hour" no longer shows a stray "(second: 00)" after the hour.
  • Select.Trigger accepts aria-invalid in its type.
  • The placeholder and chevron on primary, destructive, and glow Select and Combobox triggers take the button's text color, so they are readable on the fill.
  • A Combobox search field keeps the typed query after a pick instead of showing the picked label.
  • A Textarea with a footer no longer shows the browser's resize grip inside its frame.
  • Group.Text matches the height of the controls beside it in a vertical group.
  • Checked task items in Markdown show a tick instead of a dash.
  • The Conversation scroll button no longer catches clicks while it is hidden.
  • User messages are capped at 90% of the transcript width and system messages at their own measure. Both caps were losing to a full-width class.
  • A selected radio and a selected Toggle Group item keep their lit edge while focused, instead of showing only the focus ring.
  • A disabled radio's label shows the not-allowed cursor.
  • The Reorder List handle darkens while its row is lifted.
  • A tabbed CodeBlock scrolls in one place. Its panels no longer carry a second, competing height limit.
  • Tabs.List accepts id, aria-label, and aria-labelledby in its type, and Combobox.Trigger accepts aria-labelledby.
  • A standalone Label uses the same line height as the labels built into fields.
  • mielui add kbd installs the two modules Kbd imports. Its manifest left them out, so a CLI install could not compile.
  • mielui add data-table lists the shared context helper its parts use.
  • A part of Accordion, Radio Group, Toggle Group, Hover Card, Tooltip, or File Upload used outside its root throws an error that names the missing root.
  • Combobox.Label no longer copies its own props onto the paragraph as HTML attributes.
  • FileUpload.Trigger shows labels.choose when it has no children. It ignored the label before.
  • Chart tooltips, the crosshair, and the line marker appear at the hovered point instead of sliding in from the chart's corner.
  • Chart, Pie Chart, and Heatmap tooltips move instantly when the keyboard drives them, and glide only for the pointer.
  • Chart axes keep as many decimals as their ticks need, so 0.25 no longer reads as 0.3.
  • The chart's screen-reader data table formats dates and numbers the same way as the visible chart.
  • Gauge and Pie Chart read a unitless motion duration token as milliseconds instead of seconds.
  • Reasoning no longer renders data-streaming="false" while idle, so [data-streaming] selectors match only a live trace.
  • The Composer error notice uses the accessible error text color.
  • Closed popovers no longer recompute their position on every scroll and resize.
  • DropdownMenu.Trigger draws its chevron when icon is set instead of writing an icon attribute onto the button.
  • File Upload adds files on pages served over plain HTTP. It threw because it relied on crypto.randomUUID().
  • Group.Text renders at the label size.
  • Button stays a non-submit button when type={undefined} is passed.
  • Checkbox keeps the native input in sync when an oninput handler cancels the change, and after a form reset.
  • Checkbox items inside a ContextMenu.Sub keep their checked state after the menu closes and reopens.
  • Alert Dialog's Exit and Confirm buttons sit on the correct sides in right-to-left layouts.
  • Link badges show the shared focus ring and use the theme's interactive cursor.
  • The highlight in menus, Select, and Combobox no longer sits a fraction of a pixel off its row.
  • SkeletonSwap stops its loading sweep once the placeholder is hidden, offscreen, or in a background tab.
  • Tag Input tags use the theme's interactive cursor instead of always showing a pointer.
  • Folder Card titles keep the same id between server and client render.
  • The Toast position counter is announced to screen readers.
  • mielui add installs the peers and shared modules that Command, Data Table, Toast, Popover, Select, Radio Group, and the date pickers import, and no longer copies files they do not use.
  • Manifests declare the Svelte version Mielui actually requires, ^5.56.0, so mielui add no longer accepts an older Svelte that cannot compile the copied files.
  • Select.Trigger binds its node with bind:element, as its docs said.
  • CopyButton's oncopy accepts a (text) => void handler without a type error.
  • Server-rendered inset cards, code blocks, and other two-layer surfaces put their header or footer strip on the theme's inset edge from the first paint, instead of moving it once scripts load.
  • Tabs show the selected tab's indicator in server-rendered HTML, before scripts measure it.
  • The Toast close button uses the small control size, the control radius, the shared hover wash, and press feedback.
  • Data Table filter options hover with the shared wash instead of the secondary fill.
  • OTP Field cells take the control radius, so the sharp and rounded radius scales apply to them.
  • The Hover Card trigger shows the shared focus ring.
  • An empty Data Table shows "No pages" without a page button beside it.
  • The File Upload dropzone's default description starts in lowercase, so it reads as one sentence with its title.
  • Heatmap reads the theme's motion once per chart instead of once per cell, so year-long heatmaps mount faster.
  • The Toast stack computes each toast's offset once per change instead of re-summing every height for each toast.
  • Copied component folders name their context module context.ts instead of context.svelte.ts. Re-adding a component leaves the old file behind; delete it.

0.2.1

  • Composer.Toolbar renames and swaps its two looks. variant is now 'default' | 'inset' and chrome is gone. The default joins the toolbar to the input on one surface. variant="inset" puts the input on its own inset surface with the toolbar in the frame under it, like an inset Card. To keep the look you had, add variant="inset" where you set nothing or chrome, and remove it where you set inset.
  • DataTable.ColumnHeader sorts on click instead of opening a menu. Each click moves to the next state: ascending, descending, then unsorted. Shift-click adds the column to a multi-column sort. Three new optional labels cover its tooltips: sortAscending, sortDescending and clearSorting.
  • Data Table's inset variant frames only the table and its footer. DataTable.Toolbar now floats above the frame instead of sitting inside it.
  • DropdownMenu.Item, ContextMenu.Item, ContextMenu.CheckboxItem, Select.Item and Combobox.Item no longer accept href. These rows always rendered a button and ignored it. Navigate from callback instead.
  • Surfaces are solid by default. Menus, dialogs, popovers, toasts and the Composer were frosted glass unless a theme said otherwise. To get glass back, set --mielui-surface: glass on :root, turn it on in Theme Studio, or pass surface="glass" to one component. Built-in presets that do not set a surface are solid now too.
  • The default theme's font is Manrope instead of Inter. ui.css now imports @fontsource/manrope, and the package no longer depends on @fontsource/inter. To keep Inter, install @fontsource/inter, import its CSS, and set --font-sans: 'Inter', sans-serif.
  • Card accepts surface="glass", which frosts the card frame so a backdrop shows through while the content stays on a solid surface.
  • Slider accepts variant="field", a bar with the label and value inside that you drag anywhere to scrub, and format to control how the value reads.
  • Slider's field variant takes editable, so people can click the value or press Enter and type an exact number, with parse for custom formats.
  • Slider reports finished changes through onValueCommit, once per drag and after each keyboard or typed change.
  • Hold Shift with an arrow key to move a Slider ten steps.
  • Folder Card takes onclick without href to make the whole card a button, named by its title, with disabled to block it.
  • Label takes required to show a required mark after its text. Input and Textarea show the same mark on their built-in label when they are required, and Field.Label shows it when Field.Root is required.
  • HoverCard.Content accepts sideOffset to set the gap between the trigger and the card.
  • Color Picker shows a pipette button that picks a color from anywhere on screen, in browsers with the EyeDropper API.
  • Press 1 to 9 inside a Question to pick that option. Each option shows its number key.
  • Add seven built-in theme presets: Honey, Forest, Ink, Ocean, Console, Ember, and Lilac.
  • Add five theme presets from Sivir UI: Profitable, Raven, Clawd, Inspiration, and Government.
  • Rework the Magic preset with cool gray surfaces and a brighter indigo, and the Bitsy preset with a coral accent on cream surfaces.
  • Make the Open preset neutral monochrome with Geist Mono, and darken the Functional preset's text for contrast.
  • Group the Studio settings into Color, Type, Shape, Surface, and Motion tabs.
  • Show every Studio token inline as a row in place of the Advanced dialogs. Numeric settings are scrub fields you can drag or type into.
  • Undo and redo any Studio edit, preset switch or reset from the top bar or with Cmd/Ctrl+Z and Shift+Cmd/Ctrl+Z.
  • Click any element in the Studio preview to edit the tokens it uses, in a panel anchored to it.
  • Export a Studio theme from a side sheet with CSS, JSON and CLI tabs.
  • Copy a share link from the Studio that opens your theme for someone else.
  • Reset a single Studio setting to the preset with the button that appears beside its label once it changes.
  • Studio drafts take the name of the preset they start from.
  • Drawer floats a small gap from the edge it opens from, with all corners rounded. Top and bottom drawers are centered at a readable width instead of spanning the viewport; class on Drawer.Content sizes the panel.
  • Drawer footer actions line up with the panel's content instead of drifting past it.
  • Opening a Drawer focuses the panel instead of its first control, so no control looks selected and touch keyboards stay closed. Use onOpenAutoFocus to focus something else.
  • Drawer.Handle sits at the bottom of a top drawer and becomes a vertical bar on the inner edge of left and right drawers.
  • Drawer no longer flashes back into view for a frame as it closes, and neither does its backdrop.
  • Data Table, Composer, Toast and Code Block follow the single or double border setting. They kept a gutter in single mode before.
  • Scroll Area contains overscroll only when its content overflows. An area with nothing to scroll no longer swallows the wheel, which also fixes a short Conversation blocking page scroll.
  • Card no longer doubles the gap when a Footer follows a Header directly, and a Header that ends a card has no trailing margin.
  • Glass cards frost dark in dark mode, where they used a pale white veil.
  • Keep the divider between grouped controls visible after one of them is clicked. A focused control now rises above its neighbors only while its focus ring shows.
  • Switch and Radio Group items without a description center inside their touch-height box on small screens. They sat at the top of it, out of line with neighboring controls.
  • Radio Group leaves more room between options, so each description sits closer to its own label than to the next option.
  • Composer's toolbar and send button use the small control size, so the strip under the input is shorter.
  • Stop descenders such as g and p being cut off in Select triggers, in truncated text inside buttons, and in truncated menu, select, combobox and command rows.
  • Classes passed to Command.Header now override its default padding and text color.
  • Keep the Command search row at its full height when the results are long.
  • Color Picker no longer outlines its color area when opened with the mouse. The focus ring shows for keyboard focus only.
  • File Diff rows no longer draw a red or green bar on their leading edge; the tint and the plus or minus sign mark the change.
  • File Diff added and removed rows keep their full tint in dark mode.
  • Number Field steppers use minus and plus icons instead of text glyphs. Source-copy installs now need @hugeicons/core-free-icons.
  • Opening Theme Studio no longer changes the default theme's colors. It applied its own defaults on top, which turned primary button text white and flattened input borders across the site.
  • A theme applied on the Themes page stays applied when you open Theme Studio, which now opens on that theme. It used to put its old draft back.
  • The default theme's primary button text is white in light mode and stays dark in dark mode. It was dark in both.

0.2.0

  • Default to single borders, bottom inset strips, glass surfaces, half-strength edge highlights, and primary button borders, with surface shadows off and control and dialog shadows on.
  • Use rounder default corners: 8, 10, 14, and 20px.
  • Large controls are taller than medium ones, and icon buttons now match the medium button height.
  • Menus, selects, comboboxes, popovers, hover cards, date-picker panels, and chart tooltips always use a single border, regardless of the border setting.
  • Text fields, selection triggers, checkboxes, and radios are flat, with a hairline border and no embossed edge.
  • Sheet and Drawer footers sit on the frame below the content in one row, with a ghost Close at the start; Sheet.Close defaults to ghost.
  • Chart category inspection is one tab stop: arrow keys, Home, and End move between categories instead of Tab.
  • Switch has one bindable state prop, checked. Replace bind:switched and switched with bind:checked and checked; the SwitchState type is removed.
  • Toggle accepts variant="outline" only. Replace variant="outlined".
  • Add FolderCard, a folder-shaped card with a tinted or image cover, a title tab, an index, and an animated file count.
  • Add Composer.Header for content above the input, and a chip variant for Attachment.List and Attachment.Item that shows files as compact pills with file-type icons or image thumbnails.
  • Add an optional inset DataTable layout with compact filters and shared pagination inside the frame.
  • Add an opt-in depth toolbar variant with raised keys and recessed selections; the default remains flat.
  • Add surface to Drawer.Content, with the shared frame kept flush on the edge the drawer opens from.
  • Add the Daydream preset with flat sage-gray cards, soft pink controls, and pastel chart colors in light and dark modes.
  • Choose single or double borders across framed surfaces, including cards, dialogs, Notch, and Toast in themes and Studio.
  • Choose the top or bottom position of inset strips, with local overrides for fixed headers.
  • Customize five pastel chart colors in Studio; chart demos and default series share the same palette, with pink in Chart 2 and blue in Chart 3.
  • Use number shuffle for changing numeric readouts in tables, charts, uploads, commands, Studio, and interactive examples.
  • Organize Studio appearance and interaction settings, with toggle buttons for value choices and a compact Advanced colors action in the Color header.
  • Preview glass against a colored Studio backdrop, with dropdown, popover, and hover-card examples.
  • Use the theme storage helpers in @mielui/svelte/themes/live without SvelteKit; @sveltejs/kit is now an optional peer dependency.
  • Translate or reword built-in text with an optional labels prop on Combobox, TagInput, FileUpload, DatePicker, DateRangePicker, Pagination, DataTable, ReorderList, FileDiff, CodeBlock, Markdown, Attachment, Tool, Reasoning, Message, Chart, PieChart, and Heatmap. Each exports a <Name>Labels type; English stays the default.
  • Set size on ToggleGroup.Root to sm, md, or lg. Every item inherits it; the default stays sm.
  • Render custom content in Combobox.Item by passing children; label still drives search and the trigger text.
  • Keep toasts clickable and announced while a Dialog, Sheet, or Popover is open.
  • Stop Kbd shortcut="enter" and shortcut="space" from taking the key away from a focused button, link, or menu item, so Enter on a focused Cancel no longer confirms.
  • Fire Alt shortcuts in Kbd on macOS.
  • Restore Checkbox and RadioGroup to their initial value when their form is reset.
  • Show Button success and error status colors on every variant.
  • Limit tall popovers to the viewport.
  • Keep line breaks while ResponseStream is streaming, and expose its text to screen readers as text instead of an image.
  • Wrap completed ResponseStream text on whole words.
  • Let a deliberate upward scroll pause Conversation auto-follow, even close to the bottom.
  • Stop Composer from submitting again on Enter while status="submitting".
  • Let text be dragged into fields inside Attachment.Root; only file drops are intercepted.
  • Move Command arrow keys through filtered results in the order they are shown.
  • Stack AlertDialog and Command correctly above a Dialog, with one scrim and the parent hidden from assistive technology.
  • Apply the trigger-width minimum to DropdownMenu panels.
  • Keep the Toast close button clear of its actions when the inset strip is on top.
  • Give Tabs unique trigger and panel IDs for values that differ only by case, punctuation, or non-Latin characters.
  • Wrap Pagination instead of overflowing narrow containers.
  • Keep code clear of the CodeBlock overlay copy button.
  • Show one focus ring in TagInput and NumberField: on the field while typing, on the tag or stepper otherwise.
  • Align NumberField, TagInput, NativeSelect, and date picker triggers to the same height as Input.
  • Mark invalid Checkbox and RadioGroup controls with an error border.
  • Use one disabled opacity across Checkbox, RadioGroup, Switch, Slider, and Combobox, and stop a disabled Field from dimming its control twice.
  • Respect a custom aria-labelledby on Select.Trigger.
  • Give the primary Checkbox card a visible border when unchecked.
  • Announce FileUpload status changes without reading every progress percentage.
  • Keep a DataTable facet's operator when its value is cleared.
  • Reject invalid characters visibly in the ColorPicker hex field, and include the current color in the trigger's accessible name.
  • Show initially expanded ShowMore content in full before its first measurement.
  • Name both line numbers correctly for screen readers in FileDiff rows.
  • Expose the Spinner label to assistive technology.
  • Keep the Table caption clear of the scroll area's rounded corner.
  • Render Gauge when strokeWidth is at least half its size, and use the header weight for its value.
  • Keep the Heatmap entrance from replaying when data changes, keep arrow keys in place at grid edges, and say "1 contribution".
  • Animate PieChart slice dimming and use the shared focus ring on its legend.
  • Mirror chevrons and use logical alignment in right-to-left layouts for menus, Tabs, Command, Breadcrumb, Pagination, Select, CodeBlock, Markdown tables, and ReorderList.
  • Raise the Drawer handle contrast.
  • Extend menu and Command separators across the full inner panel width, including submenus.
  • Keep glass tooltips high contrast by retaining the solid tooltip colors with a hairline edge.
  • Share one single-border tooltip surface across chart, pie, and heatmap tooltips, keep pie tooltips off the inspected slice, and follow the pointer without a trailing animation.
  • Soften live chart highlights, add quiet intervals, and suppress them while inspecting values.
  • Preserve continuous single-border outlines on tables and preview/code cards.
  • Keep glass inset panels visually distinct while allowing backdrop colors through, and keep inset panels white in light glass mode.
  • Align the Native Select chevron with other selection controls without a duplicate native arrow.
  • Retain structural inset gutters on data tables, composers, toasts, and code/preview panels in single-border mode.
  • Soften the dark glass composer input tint so backdrop color stays visible without a heavy grey fill.
  • Preserve custom accessible labels on numbered data-table pagination.
  • Avoid duration-formatting errors for tool status values with excessive decimal precision.
  • Keep file diff signs attached to their animated counts, and keep filenames and change counts above the patch when the theme uses bottom inset strips.
  • Show visible square boxes for unchecked checkboxes and radios in both themes.
  • Align menu item labels and icons to the start instead of spreading them across the row.
  • Highlight only one row at a time in Select.
  • Make status text in badges, alerts, toasts, and forms meet text contrast in light mode.
  • Make keyboard focus rings clearly visible in both themes.
  • Separate dark-mode frames from their inner surfaces and give dark floating panels visible shadows.
  • Keep Switch thumbs light in both themes so the off state is clear against the track.
  • Show CodeBlock code when it is composed without tab triggers.
  • Place Toast titles above their descriptions in the content area, with only actions in the footer.
  • Render Fieldset legends and form section titles semibold, above field labels.
  • Show muted placeholder text in empty DatePicker and DateRangePicker segments.
  • Make pending TaskSteps labels and Markdown links meet text contrast.
  • Share one close button across Dialog, Sheet, and Notch, aligned with the title.
  • Use the 16px header size for AlertDialog, Sheet, Drawer, and Popover titles.
  • Use the shared frame inset in Sheet and Notch.
  • Give Reasoning, Tool, Accordion, and Collapsible one row style with a hover fill, rounded focus ring, and trailing chevron.
  • Show failed tools with an alert icon and text, and keep tool names in the foreground color.
  • Use the shared square checkbox and round radio in Question, with one error message and edge.
  • Make the user message bubble visible in dark mode and use the body weight for message and streamed text.
  • Remove the Conversation empty-state icon tile and keep the scroll button visible in dark mode.
  • Use the primary color for Gauge tone="primary".
  • Remove heatmap cell outlines and raise chart axis and heatmap labels to 12px.
  • Give every Badge variant the same compact pill height with a hairline border.
  • Show the Alert icon and title above the description on one surface.
  • Make H3 and Lead text one step larger than H4 and supporting text.
  • Keep the selected segmented tab lighter than its track in dark mode.
  • Remove faint column seams in inset Table and DataTable.
  • Round the range calendar band at week edges and make it visible in dark mode.
  • Render Breadcrumb as an ordered list with a rounded keyboard focus ring on its links.
  • Size Tabs triggers and Toggle controls with the shared control heights, and show a focus ring on focused tab panels.
  • Match the CodeBlock copy button to its tab height, remove the dark-mode ring around its tabs, and label trigger-less code panels as regions.
  • Use the shared focus ring on Table scroll areas and remove the last-row border notch from row headers.
  • Keep Combobox text clear of its chevron and match the chevron size to Select.
  • Flatten the ColorPicker trigger and show preset names in the interface font.
  • Give the Functional theme preset its own description.
  • Keep generated dark-theme shadows consistent with the built-in stylesheet and respect reduced motion when heatmap tooltips move.
  • Tighten menu highlight corners to fit their panel.
  • Float Composer attachment chips above the frame, slim the bottom action strip, and shorten the initial input height while retaining automatic growth.
  • Compact data-table filter popovers with denser option rows, smaller editor controls, and widths suited to each filter type.
  • Remove gaps around edge-attached notch previews and the border along their attached edge.
  • Preserve preset colors, typography, and token overrides when selecting or exporting a theme in Studio.
  • Update vulnerable transitive dependencies.
  • Style the Calendar month and year selects like other selection controls instead of showing the browser's native select.
  • Name the single-date DatePicker panel "Choose date" instead of "Choose dates".
  • Accept aria-label and aria-labelledby in the RadioGroup.Root, ToggleGroup.Root, and Select.Trigger prop types.

0.1.1

  • Remove Fullscreen Nav. Use Sheet with navigation links for mobile menus.
  • Rename Modal to Dialog, including its types, package subpath, and CLI command.
  • Replace standalone Toast usage with Toast.Root and its composable parts. Toast progress bars have been removed.
  • Renamed Shortcut to Kbd, including its import path and prop type.
  • Require Svelte 5.33 or newer for attachment support.
  • Card titles default to level-two headings and accept an explicit heading level.
  • Alert announcements are opt-in, with separate polite and assertive modes.
  • Breadcrumb current-page state is explicit instead of inferred from the router.
  • Reorder List dragging starts from its handle; row content remains interactive and accessible.
  • Enforce mode-specific Input, Question, Accordion, and Toggle Group values and branch-specific Button and Badge attributes.
  • Require Svelte 5.56 or newer for modern reactive template declaration syntax.
  • Group components into Components, Blocks, AI components, and Chart components. Existing imports and docs URLs stay available.
  • Toast notifications use an inset content area with a title and action buttons in the footer.
  • Slider adds pill-shaped handles, a two-handle range mode, and right-to-left support.
  • Group connects related controls with separators and optional text, in horizontal or vertical layouts.
  • Add Heatmap with composable calendar, labels, summary, detail, legend, and keyboard navigation.
  • Add Morph for SVG geometry transitions and text changes, including the theme switch.
  • Add optional glass surfaces to overlays, menus, tooltips, selection popups, and toasts.
  • Add a centered component preview and wide or narrow canvases to Theme Studio.
  • Animate Heatmap cells and Gauge arcs on entry, with reduced-motion support.
  • Add Table with default and inset variants, plus Native Select with grouped and multiple options.
  • Add the Shimmer action and a shimmer variant for Skeleton.
  • Add site-wide documentation search with Command-K and Control-K.
  • Add a glass Composer surface and a Thinking text example for Shimmer.
  • Add composable Task Steps rows and summaries, Reorder List handles and content, and Message metadata parts.
  • Add separate Tool trigger/content parts, Color Picker surfaces, and Show More preview/trigger slots.
  • Add Command search/result slots, optional Alert icons, and an optional Sheet header close control.
  • Add controlled Context Menu state and manual tab activation.
  • Add scoped Tooltip providers and noninteractive rich descriptions.
  • Add composable Field, Fieldset, and Form components with accessible errors and SvelteKit remote-form examples.
  • Add Calendar, Range Calendar, Date Picker, and Date Range Picker with keyboard navigation and date constraints.
  • Add Number Field and OTP Field with native form submission and reset support.
  • Add Separator and a public composable Toolbar with keyboard navigation.
  • Add a swipe-dismissable Drawer with modal focus management.
  • Add a composable Data Table powered by TanStack Table v9, with explicit sort menus, editable filter chips, selection, and pagination.
  • Data Table filters accept a search control as children and align filter and sort buttons with inputs.
  • Form error summaries accept validation paths directly and focus after unsuccessful submissions.
  • Add File Upload with validation, progress, cancellation, retries, and animated completion.
  • Initialize Mielui from a Studio JSON preset with init --preset, or apply it with add theme.
  • Set glass surfaces globally from Studio or the --mielui-surface CSS variable.
  • Studio’s AI workspace demonstrates streamed Markdown, reasoning, tool activity, file attachments, and an overlaid composer with stop and replay controls.
  • Studio’s component preview centers interactive mini cards for controls, checklists, team members, and disclosures.
  • Checkbox supports small, medium, and large sizes, with a larger 18px default.
  • Add composable bar, line, area, mixed, pie, and donut charts powered by LayerChart, with tooltips, legends, and animated data updates.
  • Charts offer entry reveals and ongoing live highlights that respect reduced motion and pause offscreen.
  • Add a composable Empty State for first-use screens, empty search results, and completed work.
  • Add Notch for custom activities at any screen edge, with solid and glass surfaces and animated expansion.
  • Toast notifications can use a shared Notch surface through the Toaster variant.
  • Notch offers a persistent peek rail, timed notifications, and swipe dismissal, with timers paused during interaction.
  • Heatmap includes a shared tooltip for hovered and keyboard-focused days, with an optional Tooltip part for custom layouts.
  • Adjust edge highlight strength in Studio or theme presets. Controls, keycaps, and raised surfaces now use half strength by default.
  • Notch supports detached side actions that unfold on hover or focus. Notch notifications show one item at a time with previous and next controls.
  • Place counters or custom content outside a Notch with Accessory; notification counts now use this separate part.
  • Add built-in live motion to Gauge and Heatmap through their animation props.
  • Add built-in loading and empty-data states to Gauge and Heatmap.
  • Select and Combobox support multiple selection with array values and menus that stay open while choosing options.
  • Add the Number shuffle action and animate Gauge values with rolling digits.
  • Replace the logo and favicons with the approved compact cat silhouette.
  • Tag Input values have visible badge borders and backgrounds.
  • Toast timers pause during keyboard interaction, and close buttons remain visible.
  • Toast descriptions have more room above a compact title and action row.
  • Tag Input badges use stronger borders and a contrasting fill.
  • Homepage navigation uses equal button heights and spacing, with the redundant Components button removed.
  • Tag Input uses the standard transparent outline Badge styling.
  • Restore Changelog and Studio pages after TypeScript preprocessing and component path errors.
  • Preserve Group outer borders with single-pixel separators and composed Input, menu, and popup examples.
  • Match Alert to the inset Toast layout, with the description above the status row.
  • Render Tag Input tags as transparent outline badges.
  • Keep the darker inset panel inside frosted glass overlays.
  • Match Alert text size, vertical centering, and status-row spacing to Toast.
  • Use a minus indicator for checked checkboxes.
  • Keep morph visuals in place while updating SVG geometry without a delayed icon swap.
  • Keep the theme icon color synchronized with the active theme during morph transitions.
  • Align Switch labels with the pill-shaped control.
  • Keep Accordion borders between items only.
  • Restore original SVG visibility when Morph is removed or its child icon changes.
  • Respect the theme’s disabled-motion setting in chart entrances and motion actions.
  • Preserve checkbox state while disabled and forward accessible names to the native input.
  • Size Composer submission controls to their visible content and respect custom action labels.
  • Preserve fractional Gauge ranges and normalize invalid numeric values.
  • Fix preview deployment type checks for icon imports, native controls, table captions, and documentation examples.
  • Use Bits UI for dialogs, sheets, popovers, menus, selection controls, tabs, disclosures, switches, and toggles while retaining Mielui styling and motion.
  • Add menu keyboard navigation, typeahead, nested dismissal, and touch long-press behavior.
  • Preserve canceled events, optional overlay labels, and conditional dialog actions.
  • Keep option labels and disabled selections synchronized as collections change.
  • Prevent obsolete streams, clipboard requests, and canceled reorder gestures from overwriting newer state.
  • Reconcile toast persistence, durations, paused timers, and visible notification limits.
  • Connect field and tooltip descriptions to their controls, and ignore inactive or composing shortcuts.
  • Update scroll cues after content changes and support fractional progress ranges.
  • Preserve preview state when switching to source code and reduce redundant status animation.
  • Reset Avatar loading state on source changes and preserve native image callbacks.
  • Keep skeleton placeholders inert, normalize pagination bounds, and prevent silent inset Card footer replacement.
  • Add keyboard navigation to Toolbar and improve Color Picker labels, pointer ownership, and reduced motion.
  • Preserve Slider handle identity while adopting Bits UI keyboard behavior and adding named form values and reset support.
  • Use Bits UI for Combobox navigation and selection while preserving fuzzy search and Mielui styling.
  • Show submission errors without losing Composer drafts or Question answers, and ignore obsolete completions.
  • Keep disabled Button links from navigating and preserve native Input checkbox, radio, and file semantics.
  • Repair active tabs after removal or disabling, and keep Command results synchronized during collection changes.
  • Keep IME confirmation and canceled click handlers from activating commands or opening selection popups.
  • Give toasts one visual exit and stop long response streams from animating every character.
  • Preserve Group variant styling with a single joined divider.
  • Forward overlay action refs and keep cancel actions from stealing focus after opening.
  • Defer offscreen documentation previews while preserving mounted preview state.
  • Remove the resting shadow from outline buttons while retaining their border and keyboard focus indicator.
  • Show invalid input borders and reveal field errors with interruptible, reduced-motion-aware transitions.
  • Restore pointer hover and selection in menus and floating panels by keeping their content above dismissal layers.
  • Keep top and bottom drawers full width in the examples and give nested drawers separate backdrops and focus boundaries, with cancelled swipes returning to rest.
  • Prevent date segments from overlapping on narrow screens and keep calendar popups above surrounding navigation.
  • Keep advanced Studio spacing and motion overrides until their corresponding preset changes.
  • Match date-picker trigger heights to their inputs and keep hover feedback distinct.
  • Position Toast dismiss buttons at the top-right without covering the message.
  • Use round send and stop icons in Composer without changing its toolbar variants.
  • Show rejected attachments in compact error cards without decoding oversized image previews.
  • Animate promise toast resizing in 50 ms and place title-only messages inside a fitted inset panel.
  • Preserve Studio color, typography, spacing, and motion choices in CLI-compatible theme exports.
  • Keep tab highlights aligned while their dialog or other parent animates in.
  • Studio places advanced colors below the color controls and groups shape and motion presets with labeled advanced-settings buttons.
  • Studio previews share one surface, with dedicated Charts and AI tabs and flush joins on advanced-setting controls.
  • Studio uses full-width previews, a denser component gallery, and joined preset and copy controls.
  • Studio shows a year of heatmap activity and pairs a full-width conversation with the narrower Composer layout used in its documentation.
  • Fix TypeScript errors in composed controls, upload and toast motion, and documentation examples while preserving native event handlers and refs.
  • Update the docs and installer workspace to Svelte 5.57.1 and SvelteKit 2.70.3, with svelte-check 4.7.6.
  • Honor a consumer project's declared package manager and recognize Bun lockfiles in the CLI.
  • Keep theme editing usable when browser storage is blocked or full, and report failed theme saves.
  • Keep upload image previews stable as progress changes.
  • Keep Dialog, Sheet, Popover, and File Diff state synchronized with their bound values and current props.
  • Restore nested dialog stacking, single-layer dismissal, focus return, and shared background scroll locks.
  • Cache the GitHub star count and retain the last valid count during temporary API failures.
  • Preserve invoice-preview state when switching Studio tabs.
  • Buttons, fields, selects, and floating surfaces share subtle light-catching edges that follow the theme’s shadow settings.
  • Gauge defaults to a larger 120px display with proportional arcs and labels, and smoothly animates value changes.
  • Pie chart tooltips use opaque inset surfaces.
  • Menus, overlays, tooltips, conversation scrolling, and response text respect reduced motion and the theme’s disabled-motion setting.
  • Accordion triggers retain their content relationships, and focus traversal includes editable text regions.
  • Joined inputs, selects, and buttons share one control height across sizes. Table badges fit their labels instead of filling the cell.
  • Segmented tabs keep even rail padding at fractional spacing and inside scaled containers.
  • Keep inset Cards stable when their footer is removed during a state change.
  • Studio groups edge highlight strength under its switch and restores the previous strength when re-enabled.
  • Data Table uses the shared inset Table surface with a compact header.
  • Alert dialogs announce their title and description. Select triggers and option lists now expose linked combobox semantics and accessible names.
  • Combobox results collapse smoothly when filtered and stop locking page scroll as soon as the menu closes.
  • Give Notch content more padding and keep its detached actions close to the panel.
  • Dialogs restore focus when removed while open without interrupting a newly opened dialog.
  • Escape closes only the deepest open dropdown or context submenu, keeping its parent menu available.
  • Notch side actions unfold with synchronized shape and button motion, including interrupted hover changes.
  • Morph and Shimmer stop active effects when inherited theme motion is disabled and clean up their theme observers on removal.
  • Stopping a controlled Composer response no longer submits the preserved prompt again when the control returns to Send.
  • Let Show More content fade into its surrounding surface without a mismatched background strip.
  • Rework live chart motion with stationary pie highlights, area-fill sweeps, and staggered bar highlights; keep offscreen effects paused without trapping visible sweeps.
  • Keep Reasoning duration labels spaced, respect reduced motion in copy feedback, and keep notch notification text wrapped during morphs.
  • Guard font preference storage and isolate font state between server renders.
  • Keep Accordion accessibility relationships valid when content is omitted and honor disabled Tag Input controls.
  • Keep disabled Popover triggers closed and dismiss empty tooltips.
  • Preserve invoice draft validation and reset stale filters when creating or locating an invoice in Studio.
  • Scale Heatmap entrance timing with the theme motion setting.
  • Keep page-outline jumps aligned after lazy previews load and track section headings by their document position.
  • Remove content and icon morphing from Toast notifications, including stacked Notch notifications.
  • Prevent hidden chart data tables from creating extra scroll space inside previews.
  • Give chart loading and empty messages the shared inset card appearance.
  • Match Heatmap tooltips to the shared chart surface and inset the Gauge arc inside a thicker track.
  • Give Gauge arc ends a subtle corner radius.
  • Keep Gauge loading and empty states compact without a nested card.
  • Preserve the Heatmap calendar layout while loading or showing no activity.
  • Match the Gauge background track to its colored arc thickness.
  • Restore the Color Picker hue slider’s rainbow track.
  • Match catalog preview button text colors to the active theme.
  • Place Switch edge highlights on the thumb, keep passive surfaces flat, and preserve control edges when fields and buttons receive focus.
  • Restrict the native file picker to one file when maxFiles is one.
  • Keep File Upload removal animations inside the file list instead of jumping toward the viewport corner.
  • Preserve the Gauge loading ring while using theme colors for its mask.
  • Keep slider dragging focused without rescheduling focus on every pointer movement, and clear stale tab hover indicators when tabs disappear or become disabled.
  • Honor motion settings and visibility for spinner, progress, and shimmer animations; update traveling highlights when theme motion settings change.
  • Restore Notch swipe position and release pointer capture when gestures reverse or are cancelled.
  • Handle large chart datasets without argument-limit failures and avoid rebuilding number formatters for every tick or slice.
  • Parse small percentage color alpha and repeated CSS variable references correctly in Studio.
  • Keep Studio header sizing within supported limits and reject font values that can break generated CSS declarations.
  • Show indeterminate attachment progress for nonfinite values and refresh Morph text colors after theme changes.
  • Evaluate nested Studio length calculations with correct arithmetic precedence and root-relative units.
  • Include upstream license and attribution notices with CLI source installations without replacing the application's own license.
  • Remove unused bundled documentation fonts that lacked accompanying license notices.
  • Keep theme registry schema normalization compatible with its Elysia runtime.
  • Avoid false tab-alignment test failures caused by browser subpixel rounding.
  • Prevent dependency discovery from reloading browser tests during fresh CI runs.

0.1.0