# Changelog

## 0.4.1 · Unreleased

### Fixes

- 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

### Breaking changes

- 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%.

### Features

- `@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.

### Fixes

- 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.

### Docs

- Docs pages are prerendered and served as static files, so they no longer wait for a server render on a cold visit or after an in-app link.
- Docs pages load about a quarter less JavaScript up front. Search and notifications load once the page is idle, and Cmd/Ctrl+K still opens search right away.
- Google Fonts load only on Fonts, Theme Studio, and Themes, or when a saved font or theme uses them.
- The GitHub star count in the docs sidebar updates on each deploy.
- Docs sidebar links open on mouse press instead of release.
- The blurred fades at the page edges, under pinned sidebar labels, and under the catalog search row ease in instead of ending in a hard line.
- New homepage: a centered hero over a wall of live components that any built-in theme restyles in place, an index of every component group, side-by-side code and result for composed components, the live demos, and install steps.
- New docs layout: one borderless sidebar on the page color replaces the dark frame, icon rail, and panel.
- The sidebar holds the brand, GitHub, the theme toggle, and a search field at its top.
- Docs groups are marked with colored stickers in the sidebar, page headers, and previous and next links.
- Page headers show their group and a soft tint of its color instead of a breadcrumb.
- The docs, Themes, Fonts, and Theme Studio share the same sidebar, so the brand and search stay in one place.
- Theme Studio's settings moved to a panel on the right, so the docs sidebar stays on the left.
- Components, Theme Studio, Themes, and the Changelog are plain links at the top of the sidebar.
- The docs default to the system font; the font picker and live themes still change it.
- Moving between the homepage and the docs fades between pages and glides the logo, except under reduced motion.
- The docs use a near-black page with lighter cards in dark mode and a neutral grey page with white cards in light mode.
- The page outline at the right edge is larger and easier to hit.
- The tab dock at the bottom of docs pages is gone, along with Cmd/Ctrl-click to open a page in a background tab.
- The docs sidebar has a fixed width, and the article is centered on the window when there is room.
- Theme Studio's settings panel matches the sidebar: a sticker for the preset, sidebar-style group titles, and a slim export strip with the number of changes.
- Theme Studio opens on seven essential settings with no tabs. Every other setting sits under one All settings disclosure, grouped by tabs, and the settings search still finds all of them.
- The Studio preview tools and preview switch float as borderless clusters, like Copy page.
- The Themes page shows each theme as a tile with its specimen inside, a white Apply button, and a quieter Details button.
- The browser toolbar color follows the light or dark mode chosen on the site and any live theme, not only the system setting.
- Hover highlights in the docs sidebar, links, and page chrome appear instantly, and sidebar links give a slight press.
- A new Theme Studio draft starts on the default theme's fonts, so Font and Mono no longer show a reset button before anything changes.
- On phones, the docs navigation unfolds in place from a button named after the current page, and scrolls inside itself so part of the page stays in view.
- Opening Theme Studio without changing anything no longer replaces the site's colors and font on every page.
- The current page in the docs sidebar sits on a soft wash in the foreground color instead of a lit pill.
- Theme Studio's Edge highlight is off by default and turns on at 30%.
- The Form page shows how to enable remote functions in SvelteKit 3, in the `sveltekit()` plugin options in `vite.config.ts`.

## 0.3.0

### Breaking changes

- 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`.

### Features

- 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`.

### Fixes

- 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.

### Docs

- The docs, Theme Studio, Themes, and Changelog share a new shell: a near-black frame with an icon rail, around one panel that holds the sidebar and the page. The frame is the same in light and dark mode.
- The rail holds the brand and the sidebar toggle at the top, Docs, Components, Theme Studio, Themes, and Changelog in the middle, and search, the theme toggle, and GitHub at the bottom. One highlight marks the current page and slides to the next.
- The docs shell drops the status line under the page.
- Sidebar navigation is a plain text list with more space between groups. Search moves to the rail, or the header on small screens, and stays on Cmd/Ctrl+K.
- The sidebar's current page is marked by a highlight sized to its label that slides between pages.
- Pinned section titles in the sidebar stay fully legible while their section scrolls.
- Open pages are tabs in a floating dock at the bottom of the page, styled like a toggle group.
- Documentation pages center the article in a column at most 60rem wide, with more space between sections and a larger page title.
- Docs text runs the full width of the article, level with previews and code.
- The docs page outline is a minimap of dashes at the right edge instead of an "On this page" list. Dashes grow toward the pointer and the nearest one shows its heading.
- Copy page sits at the top end of the page and is smaller, with less space around its buttons.
- The fade at the bottom edge of the page and the sidebar is shorter and no longer blurs far into the text.
- Every component page opens with a playground. Pick a variant in the toolbar, change the other props in the Props menu, and the code under the preview follows.
- Every example frame keeps its preview in view: the Code button slides the source open under it, long sources start collapsed and expand with the same motion, and Full screen opens the preview on its own.
- Slider, Number Field, Dialog, Sheet, Notch, Toast, Command, Color Picker, Question, and Gauge pages have a Labels section.
- The calendar and date picker pages say that days outside the month are disabled by default, and the API tables list that default.
- The Data Table `variant` description says what each variant frames.
- Theme Studio shows its preview on the panel, with its tools in a floating menu at the top end.
- Theme Studio switches preview modes with a floating segmented control at the bottom center of the preview instead of tabs in the top bar.
- Theme Studio no longer has a Primary button border setting. Lit buttons draw their own edge, so it had no effect.
- Theme Studio undo keeps recording after the page settles, and separate edits stay separate steps.
- Theme Studio counts a brand color edit as one changed setting.
- A share link request that fails late no longer clears a link built from a newer draft.
- A live theme saved by an earlier version of the docs is rebuilt from the Studio draft instead of being applied as stale CSS, which left the page and the content plate the same color in light mode.
- The Workspace address field in the Studio preview has a divider between the `mielui.dev/` prefix and the slug, so the two no longer read as one field with a gap in it.
- The Markdown theming guide at `/docs/theming.md` now carries the full guide: token overrides, the public token table, presets, theme JSON, and selectors.
- Component Markdown references include the modules their examples import, such as the Data Table and Heatmap `data.ts` files.
- The Markdown references for Alert, Badge, Button, and Toolbar no longer list sixteen example files that no docs page showed.
- The agent skill explains `bind:element` and the `labels` prop.
- Usage snippets on component pages are complete Svelte files with a `<script lang="ts">` block and every import they use.
- Component pages no longer document props that parts do not accept, such as `style` on parts, `children` on Checkbox and Radio Group items, and `icon={false}` on Select.
- The Card page gives the correct `chrome.borders` default, `single`.
- The Tabs page says that an unset or unmatched `value` selects the first enabled tab.
- Field and Form examples no longer print a second "(required)" beside the label's built-in required mark.
- The Theming guide names the current Theme Studio controls and lists every Theme JSON field.
- The Markdown changelog uses the same section names as the changelog page.
- Docs examples render with the page instead of mounting once they scroll into view, so they no longer pop in.
- The docs load Theme Studio's optional Google Fonts without blocking the first paint.
- Playground selects, the current sidebar page, and installation tabs look the same before and after scripts load.
- The Accordion, Breadcrumb, Pagination, and Radio Group examples use realistic content instead of placeholder labels.
- Numeric playground options name their control, so Folder Card's tone reads "Tone 1" instead of "1".
- Dialog examples use sentence case for their trigger labels.
- The docs apply your saved Theme Studio theme and docs font before the first paint, instead of showing the default theme until scripts load.
- Unit tests pass on Node 25 and newer, whose built-in `localStorage` used to shadow jsdom's.

## 0.2.1

### Breaking changes

- `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`.

### Features

- 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.

### Fixes

- 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.

### Docs

- Redesign Docs and Studio as one app shell that fills the window: an icon rail, a collapsible sidebar and a full-width content column, divided by hairlines, with a slim status line under the content.
- Add page tabs to the docs top bar so several pages stay open at once. Each tab is as wide as its label and shows an icon for its component group or guide. Tabs persist across reloads, Cmd or Ctrl-click a sidebar link to open one in the background, and drag tabs or press Alt with an arrow key to reorder them.
- Show the package version, the install command for the current component, and previous and next links in the status line.
- Pin sidebar group labels while their group scrolls, mark pages that are open in another tab, and show the current page's position in the docs as a row of bars with the page count.
- Drag the edge of the docs or Studio sidebar to resize it. Each keeps its own width between visits, and a double click resets it.
- Redesign search as a compact palette with page icons, open tabs, and quick actions. It finds section headings and prop names, so "placement" or "closeDelay" lead to the right page.
- Show each page's breadcrumb, title, and summary at the top of the page. The top bar names the section you are reading and jumps back to its start.
- Give Blocks, AI components and Chart components their own catalog pages, like Inputs and the other component types.
- Fade and softly blur the edges of every scrolling region in Docs and Studio while more content lies beyond them.
- Open navigation and the Studio inspector in a sheet on small screens, and show Themes and Changelog without the docs sidebar.
- The docs site uses Manrope by default, matching the default theme.
- Add an Agent skill icon to the rail, under Changelog. The Agent skill page fills the panel without the docs sidebar.
- The changelog lists Docs notes last in each version. Every section is collapsible, and Docs starts collapsed.
- Rebuild the API reference as rows with each prop's name, type, description, and default, and describe every prop of every component.
- Explain every prop in prose on its component page, in 91 feature sections added to 62 pages, with 41 new live examples.
- Show each prop's description in the Markdown API tables used by Copy page and `llms.txt`.
- Move the copy button for example source into the preview's top bar, and keep links inside previews from leaving the page.
- Example previews, install commands, code blocks and API lists follow the theme's single or double border setting.
- Rewrite Card's examples as small realistic tasks: a project summary, notification settings, a revenue figure, an invitation, deploy details, a member list and a weekly digest.
- Add a Footer position section to the Card page, with a live example of `--mielui-inset-position` moving an inset card's footer to the top.
- Date Range Picker examples show the start field, end field and calendar button as separate controls. The two-month example no longer caps the range at 14 days, and length limits have their own example.
- Replace the single-element Avatar, Badge, and Toggle previews with small realistic examples, and add a Placement and timing section to the Hover Card page.
- Folder Card examples show paper sheets tucked into the folder that lift and fan out on hover and keyboard focus.
- Rewrite the Introduction, Installation, Agent skill, and Actions pages around label and value rows, and bring their Markdown versions in line.
- Show each component's summary under its catalog preview instead of behind a hover card.
- Add three live demos to the homepage under the hero: a coding agent workspace, a support chat, and an issue editor, each behind a tab.
- Rework the homepage hero preview: a composer with example prompts, notification settings, and a weekly visits chart with its total. It follows dark mode and keeps one height across tabs.
- Redesign the Themes page with a specimen of each preset's colors, type, and corners that follows light and dark mode.
- Add a search field to the Studio inspector that filters settings by name, and show each preset's brand color in the preset picker.
- Rebuild the Studio demos as composed cards in a centered grid. The AI tab shows the coding agent and chat demos, and the App preview is a sidebar app in one card.
- Simplify the Studio top bar: preview width and the glass backdrop sit behind one options button.
- In the Studio the top bar, the preview page and the sidebar share one background in both themes.

## 0.2.0

### Breaking changes

- 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"`.

### Features

- 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.

### Fixes

- 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.

### Docs

- Redesign the landing page with a hero tinted by the active primary color, live component previews in the shared inset frame, and responsive navigation.
- Give Docs and Studio one shell: a black outer canvas, a rounded page frame holding the header and footer, nonmodal glass navigation and inspector panels that dock when pinned, and the page outline in the right column.
- Start with navigation closed on phones and tablets, show the current page name in the phone header, and scroll the sidebar to the current page.
- Remember pinned Docs and Studio sidebars independently across visits.
- Use the Breadcrumb component in the documentation header, with one control height, flat ghost actions, and 16px icons across header and footer.
- Open search in the standard Command palette, and include the Actions overview in search and page-to-page navigation.
- Show copying, copied, and failed states on Copy page without changing its size.
- Add a brief pixel reveal when moving between Home, Docs, and Studio, with reduced-motion support and interruptible navigation.
- Show pnpm, npm, Yarn, and Bun tabs for every install command in the guides.
- Replace manual-install file tabs with a searchable file picker and one code block with copy.
- Keep example source on the preview card surface, and size preview toolbar controls to the small control height.
- Stack each prop above its type in API tables on narrow screens, and keep long prop names on one line on wide ones.
- Give every component and action page the same spacing under its leading preview.
- Use the package import path, `@mielui/svelte/components/<name>`, in every usage snippet.
- Fix missing and extra spaces around inline code and links across the guides and component pages.
- Expand the introduction with a setup comparison, complete package quick start, and guidance for theming and component exploration.
- Say in the installation guide that the Mielui stylesheet already includes Tailwind.
- Update the Theming guide with current presets, the default chart palette, single-border floating panels, and the control, focus, and status-text tokens.
- Add an Actions overview and prop tables for Morph and Number shuffle.
- Render real components in catalog previews, add FolderCard to the catalog, and give each card one link.
- Show color swatches and a font sample for each theme, with details in the standard Dialog.
- Group the fonts page by category and mark the selected font with a check.
- Use one flat segmented control for Studio settings, with shared heights and labels across the inspector.
- Replace full-width gray bars in Studio's Charts and AI previews with section headings, and combine the App preview into one app header.
- Give Studio invoice notifications a separate action strip with a working View invoice action.
- Simplify documentation error pages and hide Copy page and page metadata when content cannot load.
- Give every page one title, add social-card titles and descriptions to the landing page, and refresh the social card image.
- Emit the production origin in the sitemap, `llms.txt`, and the Markdown guides.
- Load web fonts with preconnect instead of chained stylesheet imports.
- Align the agent skill's design guidance with the 0.2.0 defaults for glass surfaces, flat fields, and Toast layout.
- Document milestone-based releases spanning multiple feature and fix pull requests.
- Refresh the README screenshot to show the redesigned homepage.
- Add a Labels section to every component page that has built-in text, a sizes example for ToggleGroup, and custom item content for Combobox.

## 0.1.1

### Breaking changes

- 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.

### Features

- 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.

### Fixes

- 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.

### Docs

- Use pnpm and Node.js for repository setup, development, and release tooling.

- Added a component audit covering behavior, accessibility, composition, and motion.

- Moved Show More into Blocks.

- Toolbar now appears under Blocks. Its import path stays the same.

- Add manual installation instructions with dependency commands, file tabs, copying, and expandable source.
- Add a right-aligned On this page sidebar with smooth section navigation and reduced-motion support.
- Move Gauge into Chart components.
- Use Hugeicons throughout components and examples, with an SSR-safe HugeiconsIcon renderer.
- Use dashed guides in the left documentation navigation.
- Add replay controls to inset chart previews.

- Align the documentation breadcrumb with the article heading.

- Add Copy page actions with Markdown and AI links.
- Replace anatomy summaries with prop tables for every exported component part, including native attributes and events.
- Add the Agent skill guide and a complete llms-full.txt reference.
- Update example identities and project links to mielsense.

- Improve code-example formatting and separate API reference links in the page outline.

- Document every Table and Native Select part and use Table for API references.
- Shorten repetitive documentation copy and update component counts.
- Soften the scrolling edge beneath the documentation toolbar.

- Animate native-attribute disclosures with Collapsible.
- Align Star and theme controls with the page outline and use a home icon in breadcrumbs.
- Document component reuse and accessible interaction motion in the design guidelines.

- Group Reorder List, Command, Color Picker, and Toast under Blocks while preserving their imports and documentation links.

- Include motion actions in the component catalog and keep its counts and search in sync with navigation.

- Show headless component props in the main API tables and document props from every discriminated mode.

- Join the publish-date input and calendar trigger with Group in the Date Picker example.

- Keep the Number Field seat-count example compact instead of stretching the control to its container.

- Show Data Table search and filtering as one joined control.

- Replace the Toolbar demo with selectable design tools and keyboard hints.
- Rebuild Studio previews with aligned control states, Charts and AI sections, and an invoice table.
- Separate basic remote form validation from multiple actions and reset.
- Allow unrestricted cross-month selection in the two-month Range Calendar example and show its selected dates.
- Join Date Range Picker inputs and calendar trigger with Group.

- Add a promise-toast demo and use promise notifications in Form examples.

- Organize Studio theme controls into collapsible sections with a tooltip-labelled advanced settings button.

- Give both levels of the nested Drawer example handles and normal dismissal.

- Add Bun install commands with syntax highlighting.
- Add composed examples for File Upload, Reorder List, Toolbar, Separator, and Response Stream.
- Add tooltips to Studio and documentation icon actions.

- Simplify the top navigation to Docs and Studio.

- Replace machine-specific paths in the design-system implementation plans.

- Derive homepage component counts from the catalog and check each catalog entry's category, examples, and API reference.
- Document controlled overlays, upload cancellation and retry, and theme storage limitations.
- Add a live File Diff example and refresh generated component prop tables.
- Use shared border, radius, and elevation tokens in legacy API tables.

- Document shared edge, inset, focus, and motion rules for component contributions.
- Keep Notch and notch notification examples inside their preview frames.
- Make chart state and period-switching examples easier to adapt with named event handlers.

- Chart guides have dedicated type pages, searchable navigation, and matching Markdown references. Tablet documentation navigation remains accessible.
- Split chart examples into focused bar, line, area, mixed, pie, and donut guides with continuous motion, data updates, missing measurements, and loading states.
- Add interactive Gauge capacity and Heatmap reporting-range examples.

- Use flat leading previews and source sections, inset example cards, compact API table headers, and persistent footer page actions.

- Block examples now include contained toast previews, continuous Markdown streaming, recoverable task steps, and visible command and code-action results.

- Component examples now include working local actions, accessible icon controls, upload completion and recovery, and shorter variant comparisons.
- Make AI examples finish, stop, and retry their simulated work; preserve partial responses and clean up pending delivery when previews close.
- Document AI state ownership and add composed tool retries, response cancellation, and interactive Morph and Shimmer examples.

- Rebuild Docs and Studio around fixed headers and footers, thin section dividers, and quieter navigation. Widen the documentation section rail.

- Clarify inherited glass surfaces and keep example action results spaced below their controls.

- Center the homepage cat within a bordered layout with subtle dithering and muted scrolling component names.

- Keep preview toolbars aligned across nested examples and prevent their controls from overlapping pinned section headings.

- Clarify core component setup and form behavior, and make the Group and indeterminate Progress examples interactive.

- Balance section content spacing, keep sticky headings opaque, and center grid intersections across the documentation rails.

- Keep navigation headings and the leading preview toolbar sticky, use text-only hover and selection states, and show API guidance from an info control.

- Align footer actions with the header columns and disable elastic overscroll across the site.

- Match error pages to the documentation grid and provide a retry action when a page fails to load.

- Add visual component catalog cards with descriptions and search across component names and descriptions.

- Present each changelog version as a sticky section and keep catalog descriptions in footer info cards.

- Simplify Studio into aligned control and content previews, unify its tabs, and match footer and header heights.

- Move Studio preview tabs into the header and preview width controls into the footer.

- Keep headers, footers, section headings, and navigation headings at one shared height, with aligned intersection marks.

- Align Studio chart, conversation, and application previews with the shared section layout and keep the composer clear of messages.

- Strengthen section headings and move Button behavior notes into its Usage section.

- Keep component behavior notes inside their relevant sections instead of below standalone previews.

- Remove the trailing divider below Studio’s Typography controls.

- Widen Studio’s conversation preview and place its simulation note below the composer.

- Let the Studio conversation span the preview and scroll behind a narrower floating composer.
- Add matching grid junction markers at the Studio header and footer.

- Clarify block and AI component usage, state ownership, and Markdown link and image handling.

- Review every component’s usage, examples, and API coverage; add chart loading, empty-data, and animation examples to each chart-type guide.
- Keep documentation scrolling available over Toast previews and show section descriptions in information hover cards.

- Remove excess space below the final documentation sidebar item.

- Use warm pastel red and yellow series colors in chart examples.


- Add loading, empty, and live-motion controls to Gauge and Heatmap examples.

- Show a larger invoice dataset in Studio using the shared Data Table, with sorting, selection, and pagination.
- Arrange Studio component cards in compact responsive stacks, with a smaller calendar and label and sharing examples.

- Remove the repository’s OpenCode setup and skill lockfile.

- Show the Markdown preview directly on the canvas without a card or nested scroll area.

- Group components by type in the sidebar, with a preview catalog for each group.
- Make documentation search more compact, with quick destinations and a scrollable results list.

- Add space between catalog cards and use consistent parent-label styling and spacing for all nested sidebar groups, including charts, while keeping standalone links compact.

- Keep the expanded Notch export example clear of its trigger and show its file count in a compact badge.

- Nest catalog categories under Components in the page outline.

- Increase the space between component catalog sections.

- Clarify the homepage description of component theming.

- Match the Code tab background and rounded corners to its example preview.
- Add a single-file upload example that replaces the dropzone with the selected file.

- Gently snap sidebar groups and page sections to the top while preserving free scrolling within long sections and reduced-motion preferences.

- Snap sidebar group headings to the top without snapping to the bottom edges of long groups.

- Give consecutive documentation examples more separation while keeping their headings and previews together.

- Prevent sidebar settling from targeting offscreen groups; only visible headings approaching the top can catch.

- Align page-outline link gutters and nested indentation with the navigation sidebar.

- Use the same bounded top-only magnetic settling in the content column and sidebar.
- Give the page-outline hook a full outer gutter and more space before its labels.

- Align the footer info icon with the navigation button inset and distinguish outline hover previews with a dashed gray hook.

- Move the page-outline hook directly to a clicked section without pausing on headings passed during smooth scrolling.

- Keep catalog search pinned in a header-height row, with section headings and outline jumps positioned below it.

- Slow the page-outline hook’s glide while retaining direct section targeting and reduced-motion behavior.

- Remove the doubled divider between catalog search and the first section.

- Match article, toolbar, and footer side gutters to the page-outline header.

- Align the leading Preview / Code tabs with the shared content gutter.

- Give documentation content a moderate side gutter while keeping tabs, headings, toolbar, and footer aligned.

- Scale magnetic catch distances to neighboring section heights and settle only once per downward scroll gesture, preventing short sections from oscillating.

- Match the Copy page control height to the adjacent-page arrows in the docs footer.
- Keep Form and keyboard-shortcut demo feedback inside their previews and dispose unfinished toast demos on navigation.
- Separate page-outline state and Studio token parsing from presentation while reducing unnecessary outline work during preview updates.
- Update the agent skill and package guides for Mielui's current APIs, independent release history, and retained Sivir UI and COSS attribution.
- Refresh the README screenshot with the current homepage.
- Clarify current documentation sources and distinguish the historical Sivir UI changelog from Mielui releases.

- Document npm publishing authorization and the GitHub release steps for maintainers.

- Add agent release guidance and clarify first-publication setup before enabling trusted publishing.

## 0.1.0

### Docs

- Initialize Mielui from Sivir UI with renamed packages and docs, preserved MIT attribution, and sleeping-cat branding.
- Start Mielui releases at 0.1.0, independently of upstream Sivir UI versions.
- Simplify the sleeping-cat favicon and matching logo to a single outline.
- Use a mauve default accent with dark button labels and a lighter hover state.
- Restore the README’s overview, preview, documentation link, and agent-skill instructions.
