Changelog

Release notes for each @sivir-ui/svelte version, generated by an LLM.

0.3.3

Fix

  • Make the Scroll Area edge-cue blur optional. blur defaults to true and keeps the current look; set it to false to keep the fade and chevrons while dropping the backdrop-filter, which is expensive over large or animated content and smears text behind the cue on some GPUs.
  • Stop the Color Picker stranding a divider hairline across its rounded bottom edge. The channel-slider block drew a bottom border unconditionally, so without preset swatches it was the last block in the surface and its border had nothing to divide.

0.3.2

Breaking

  • Remove the Dropdown Menu inverted prop. Menus always follow the active theme's panel, border, and foreground tokens.

Docs

  • Widen the Popover documentation hero example for more spacious content previews while preserving a narrow-screen maximum width.
  • Align the error page with the homepage's bottom-left content treatment and responsive action layout.
  • Refresh the Sheet examples with controlled open state, footer keyboard shortcuts, active-filter counts, and semantic navigation and form groupings.
  • Note that Code Block and File Diff syntax colors follow theme tokens rather than a built-in hardcoded palette.
  • Add a bare Task Steps documentation example showing the steps rendered without card chrome.

Feature

  • Rebuild the Sheet drawer on the shared panel frame with an inset scroll surface, and restyle the footer with Modal footer spacing in a vertical stacked layout.
  • Drive every component border from the border-width token: border, side, and divider widths now resolve to --border-size, including the control elevation hairlines.
  • Split overlay movement into independent menu and modal controls for offset, start scale, and blur, plus a shared movement start opacity.
  • Rework the Theme Studio sidebar: a grouped Feel section offers Radius, Density, and Movement preset selects with an Advanced entry opening the Spacing or Motion modal, the tabbed advanced dialog becomes three independent modals, and export controls move to the bottom.
  • Give Composer.Toolbar a variant prop: chrome keeps the toolbar in the frame chrome outside the input well, and inset merges it into the same inset surface as the input.
  • Give Card an inset variant on the shared Modal frame: content sits on the inset surface while Footer renders in the frame chrome below it.
  • Add a --color-button-foreground token for secondary, ghost, outline, and panel Button text, with a Button text control in the Theme Studio Color section.
  • Add the Functional built-in theme: a rounded, subtle-motion ledger system with a blue accent, Inter and Roboto Mono type, per-mode foundation colors, compact radii, fast animation tokens, flat controls, no traveling highlight, and a pointer cursor.
  • Add an inset Card variant and composable step content to Question, with a multi-step docs example that preserves answers when navigating back.

Fix

  • Rebuild Composer on the shared panel frame with the prompt input on the inset surface and toolbar chrome in the frame, and drive the Send button through the Button loading state with content-sized example triggers.
  • Match Composer focus to Input/Textarea with a solid primary border plus the focus glow, and raise the prompt input resting height to 128px.
  • Route syntax highlighting and chrome edges through semantic color tokens so components follow the active theme instead of hardcoded light/dark palettes.
  • Give Reorder List rows hover and press feedback, with a primary tint and float elevation while a row is grabbed or dragging that deepens on hover and press.
  • Route the remaining fixed 1px borders (Input, Button panel, Badge outline, Checkbox, Toggle outline) through the border-width token so the Studio stroke slider affects them.
  • Re-baseline the distributable CSS budget for the new movement and syntax-token contracts, and update the modal exit-motion expectation to the independent modal controls.
  • Correct Reorder List grabbed, hover, and pressed styling, keep dragged rows aligned while scrolling, and prevent touch capture changes from cancelling a reorder.
  • Keep inset Card footers synchronized when their actions are changed or removed.
  • Keep Question content static during navigation so the answer surface remains calm and readable.
  • Restore the Dropdown Menu outside-root error so content rendered without a root names <DropdownMenu.Root> instead of the underlying popover.
  • Make Tag Input required actually constrain form submission. The per-tag inputs are type="hidden", which the HTML spec bars from constraint validation, and they render at all only once a tag exists โ€” so the one case required is for, submitting with no tags, was unguarded. The constraint now rides on the visible text input through setCustomValidity, so the browser blocks the submit and anchors its bubble on the real field, with the message overridable via requiredMessage (default "Add at least one tag."). A typed but uncommitted draft does not satisfy it.
  • Stop Tag Input swallowing every Enter press. Enter only commits when there is a draft to commit, so an enclosing form submits normally on an empty draft instead of doing nothing.
  • Keep a Tag Input label as the field's accessible name. The input set aria-label from its placeholder unconditionally, which outranks the <label for> and dropped the visible text out of the accessible name (WCAG 2.5.3, breaking voice control). The placeholder is used only when no label is rendered.
  • Announce refused Tag Input candidates. Duplicate, invalid, and max-tag rejections now reach the same polite live region that reports additions and removals, instead of only firing onReject.
  • Restore the collection highlight on touch devices. travelingHighlight bailed out entirely on coarse pointers, so menu items on a touchscreen lost the highlight for keyboard focus too โ€” including on hybrid machines with both a touchscreen and a keyboard. The action mounts everywhere again and its per-event touch guards do the work, which is what the highlight was documented to do.

0.3.1

Breaking

  • Rename PromptComposer to Composer: import from @sivir-ui/svelte/components/composer, use Composer.Root, Composer.Input, Composer.Toolbar, Composer.Actions, Composer.Submit, and the Composer* prop, state, and context types. The prompt-composer docs route and CLI name move to composer.
  • Default Composer.Submit to a text Send button with an Enter shortcut hint (Stop while stopping) instead of an icon-only button, default the input to the taller min-h-20 height and the toolbar to its roomier spacing, and change the default submit accessible name from Send message to Send.

Docs

  • Refresh the Composer examples to plain usage with no ! overrides: Mode and Permission are Select controls on fixed-width menus, and the model/effort menu, input, toolbar, and Send button render from component defaults.
  • Size the Composer example triggers to their widest option (mode, permission, model/effort) so switching selections never resizes the toolbar.
  • Add Dynamic width examples to Select and Dropdown Menu showing menus and submenus sized to their longest item.

Feature

  • Add a dedicated Svelte grammar to the Code Block highlighter: markup, { โ€ฆ } expressions, {#if} / {#each} / {#await} / {#snippet} blocks, {@html} / {@render} / {@const} tags, and bare top-level import / let statements in snippets that omit <script> tags highlight correctly instead of falling back to TypeScript or rendering plain. All docs examples already declare lang="svelte", so they pick it up automatically. The grammar lives in the shared _internal/highlight module so File Diff rows highlight Svelte identically.
  • Broaden syntax-highlighting coverage to every major language: diff, Dockerfile, GraphQL, HTTP, INI/TOML, Kotlin, Swift, Dart, Lua, R, Scala, Perl, Elixir, Haskell, PowerShell, shell sessions, protobuf, Make, SCSS/Less, and more, in both Code Block and File Diff. Python additionally scopes function-call names and operators, and diff output paints additions/deletions green/red.
  • Remove the Code Block single-line tab roller: tabbed snippets now render syntax-highlighted like everything else instead of rolling plain text, and code-block-roll.svelte is gone (tabbed panels render through Content). The @scritto packages stay for Tooltip and Response Stream, but Code Block no longer requires them.
  • Decompose the File Diff top bar into Filename and PlusMinus subcomponents: TopBar without children renders both by default, and passing children takes over the row so filename, counts, and actions compose freely. Previously the header fused all three regions with no way to omit, reorder, or restyle them.
  • Add Command.Header: a frame-level bar above the search that renders its children, so the title and trailing hints compose freely. Declared inside Command.Content like Modal.Footer, it renders outside the scroll surface so it stays pinned while results scroll.
  • Restyle Popover.Content on the Modal inset architecture: the panel is now the padded frame and the surface an inset card, so menus and popovers layer like Modal and Command. Inverted menus pin --color-secondary to the panel tone so the frame stays dark.

Fix

  • Keep the collection item highlight when travelingHighlight is off; only the slide is disabled.
  • Fix Tag Input TypeScript types for forwarded input events and non-removable tags.
  • Accept theme schema v4 in the theme registry API.
  • Default Attachment.Trigger to md instead of sm, so every button-backed trigger (Button, Select, Dropdown Menu, Popover, Modal, Sheet, Alert Dialog, Combobox) renders at the default button size unless a size is passed. The docs examples drop their sm-height overrides, including the Prompt Composer Plan, Ask first, model, and Send controls.
  • Fix Theme Studio radius customization going stale: custom corner values no longer pin the radius after switching the Sharp/Default/Rounded scale, and a custom spacing unit no longer pins the density preset. Custom values still persist across reloads until the scale changes.
  • Fix the Code Block frame rendering transparent in dark mode: its background referenced the removed --color-muted surface, so the tab strip showed whatever sat behind the block. It now uses the near-background fill from the modal frame, keeping the code body on the card surface.
  • Move the Modal border to the outer frame: the frame keeps its border in dark mode instead of going transparent, and the inner surface drops its border while keeping its background and concentric radius.
  • Make Tag Input tags visible in dark mode: the tag fill matched the field exactly, so tags get a subtly lifted fill in dark mode while light mode keeps its gray-on-white look.
  • Align Tag Input tags with the field's top padding and give the textbox a touch more left padding.
  • Tighten the gap between Tag Input tags and soften the tag hover so it barely shifts.

0.3.0

Breaking

  • Remove the foundation.muted theme token and Studio Muted surface control. Use foundation.foregroundMuted for muted text; controls now use the secondary surface for hover states.

Docs

  • Document Badge shapes: pill, circular, square-ish, and a rounded square with a 1px border.

Feature

  • Add the File Diff component: a unified diff viewer with a file top bar, auto-derived addition/deletion counts, dual old/new line-number gutters, and per-row syntax highlighting. Use the high-level diff prop or compose Root, TopBar, Content, Row, and LineNumber by hand.
  • Add the Tag Input component: a tokenized tag entry field with bind:tags, Enter and delimiter commits, paste splitting, duplicate and max-tag guards, validate with onReject reasons, and a polite live region for additions and removals. Each tag is a Button with click-to-remove behavior. Compose Root, List, Tag, and Input by hand.
  • Expand theme chrome to per-surface shadow control: surfaceShadows (cards, menus, popovers), controlShadows (inputs, buttons, alerts), and dialogShadows (modals, sheets) join the shadows master, and travelingHighlight: false keeps the item fill but skips the slide. Cards pick up their elevation from the shared surface shadow.
  • Extend theme JSON with foreground and onPrimary foundation colors per mode, and let the Theme Studio set Brand per light/dark mode, On-brand text, Foreground, each shadow group, and the traveling highlight from the main options.
  • Make motion: "none" disable every animation, not just the themed durations: dialog and panel transitions, press feedback, and the traveling highlight now settle instantly.
  • Give CopyButton an optional children label rendered after the Copyโ†”Check icon; pair it with a text size.
  • Refresh the Composer hero: a text Send button with an Enter shortcut hint, fixed-width mode and permission triggers, a Configuration-style model/effort submenu, a taller input, and no status line. The Idle, Submitting, and Error examples match with the same Send button and taller input.
  • Add the Open built-in theme: a rounded warm-neutral system with a graphite accent, Geist and Roboto Mono type, 500-weight roles, flat surfaces and controls, and an inverted light primary in dark mode.
  • Give Fullscreen Nav a larger close control, press-scale link rows, and a short haptic pulse on tap.

Fix

  • Fix Escape with a Select open inside a Modal: the menu now closes first and the dialog stays open, instead of the dialog closing from under the menu. The Modal docs gain a With Select example covering the nesting.
  • Stop the traveling menu highlight from following touch pointers: on coarse-pointer devices it only tracks keyboard focus, so scrolling a menu no longer flings the highlight between items.
  • Size Modal titles with the shared header token instead of a hardcoded size, so dialog headings match Card titles.
  • Drive the text-entry border token from the Border foundation color, so changing Border in the Theme Studio now recolors Input, Textarea, and Tag Input outlines in both modes.
  • Lighten the modal and code-block inset frame 3% toward white in both modes.
  • Drop the Theme Studio header crumb and restyle the Copy JSON / Copy CSS buttons as full-width outline buttons with copy-to-copied feedback.
  • Size the Color Picker trigger swatch to its container inset and derive its radius as outer radius minus border minus padding, so the preview is exactly concentric at any trigger height.
  • Color the Switch thumb with the on-primary token instead of hardcoded white, so an "On brand" text color restyles the thumb too.
  • Swap the dark-mode Modal layering: the inner dialog surface now uses the card color over a background-toned frame, instead of a darker dialog on a lighter frame.
  • Drop the border on the Code Block and File Diff inner surface in both modes, so it reads as the reference: a bordered frame with a borderless, darker code card inside.
  • Give Code Block and File Diff the GitHub syntax palette (light in light mode, dark in dark mode) instead of monochrome gray, so highlighted code reads against the card in both themes. The docs code previews follow the same palette.
  • Fix the Code Block docs examples rendering bare and width-capped outside the preview card: they render inside the standard preview box again and stretch full width.
  • Let Code Block and File Diff skip the built-in token colors with theme="custom", so any highlight.js/styles/* theme stylesheet can paint the tokens instead.
  • Remove the docs site's dead syntax highlighters: the unreferenced Shiki setup with its custom light/dark themes, the regex tok-* highlighter nothing rendered, and the shiki dependency.
  • Animate the CopyButton icon morph's rotate and scale instead of snapping them: Tailwind v4 drives those as their own properties, so they now join transform and opacity in the transition. Code Block and File Diff copy buttons pick this up automatically.
  • Document Code Block custom themes with two live examples: a theme="custom" block painted by stock-style hljs-* rules, and a built-in-palette block recolored through --code-block-token-* variables on a wrapper.
  • Render the Code Block header for single-snippet blocks with the default copy="actionbar": the copy button no longer silently disappears when there are no language tabs or custom actions.
  • Tighten the Code Block header vertical padding a step so the tab row sits closer to the code surface.
  • Route every docs copy action through CopyButton: the theme detail Copy CSS/JSON buttons, the theme card Copy Code button, and the message example Copy response button now share the morph animation, tooltip feedback, clipboard fallback, and auto-reset instead of hand-rolled copies.
  • Paint the syntax tokens GitHub paints but the mapping missed: tag/component names and selector pseudos get a green entity token, operators and selector ids/classes/attrs join the property token, and doctags join the keyword token โ€” in Code Block and File Diff alike. Brackets, punctuation, and template substitutions stay plain, matching GitHub.
  • Size the PromptComposer submit button and every button in the docs examples at md instead of sm, so examples show the default button size.
  • Highlight InstallCommand tabs (runner, subcommand, flags, package) instead of rendering them monochrome, and fix bun add โ€ฆ commands generating broken bunx bun add โ€ฆ variants for other package managers.
  • Let dropdown and context submenus overlap their parent menu slightly instead of sitting beside it with a gap.
  • Size the remaining docs buttons at md: the landing nav, themes list and detail actions, components index clear-search, and the dropdown share/user/sort triggers plus the popover invite button now use the default button size.

0.2.9

Breaking

  • Response Stream drops the mode, fadeDuration, and segmentDelay props along with the Mode and Segment types: rolling is now the only behavior, paced by speed, and the text renders medium by default.

Docs

  • Add a nested Modal example that opens a second same-size dialog from the first.
  • Narrow the Show More hero so the two-line clamp hides real content, and rebuild the Task Steps and Tooltip heroes on the standard Card surface with no shadow.
  • Match Installation heading-to-command spacing with Usage on every docs page.
  • Render keyboard hints with Shortcut instead of muted text or raw kbd in Tooltip, Command, Prompt Composer, and the Dropdown Menu usage snippet.
  • Tighten the Theme Studio notifications preview with a compact header, aligned rows, and tabular details.
  • Keep the home page to a single viewport on mobile: the header swaps its link pills for the fullscreen navigation menu, the hero stays bottom-anchored with tighter padding, and the page no longer scrolls.
  • Rebuild the Components gallery around live search and category groups, with a Scritto-rolled result count, staggered card entrances, and a height-capped results menu.
  • Document the new Response Stream roll mode with a live example next to the word blur-fade hero.

Feature

  • Response Stream rolls each arrival in with the Scritto roller from Copyโ†’Copied, with speed driving the roll duration and the height easing open as lines wrap, in medium body text.
  • Enter Toast by sharpening from a 2px blur instead of fading opacity in.
  • Nest Modal inside Modal: the earlier dialog scales to 0.925, the new scrim uses less blur, and dismiss peels only the top layer.
  • Give Spinner an optional curved rotation that varies speed without ever stalling, defaulting to the continuous spin.
  • Give Spinner a speed multiplier prop and a slightly faster default spin.
  • Roll Tooltip in-place re-labels such as Copyโ†’Copied with Scritto instead of swapping the label instantly.
  • Roll single-line Code Block tabs (install commands) with Scritto; multi-line language switches keep highlighted source and ease panel height.
  • Ease the Code Block panel height through language switches so taller snippets open the block smoothly instead of snapping.
  • Stretch the Switch thumb on press so the toggle feels like a physical control.
  • Give Shortcut chips a hair more vertical padding so the glyphs arenโ€™t tight to the border.
  • Hide Shortcut chips below the sm breakpoint: keyboard hints are noise where there is no keyboard, and the keybinding still fires.
  • Extend themes to v3 with optional studio blocks (per-mode foundation colors, raw token overrides, typography, and chrome flags), so anything built in the Theme Studio round-trips as Theme JSON and copy-pasted CSS. v2 themes keep parsing unchanged.
  • Give Combobox.Trigger an appearance="input" mode: a field-styled, always-editable trigger that opens on focus or typing instead of click-toggle, with no chevron and an optional trailing adornment snippet. The Theme Studio invoice search now uses it.
  • Add the Magic built-in theme: a compact, subtle-motion indigo system on warm-neutral surfaces with flat chrome, alongside Default.
  • Add the Bitsy built-in theme: a comfortable, expressive rounded system with a graphite accent, DM Sans type, and flat stroked chrome.

Fix

  • Bump @sivir-ui/svelte to 0.2.9.
  • Keep a nested Modal above its parent when both open together, so Cancel, click-outside, and Escape peel only the top layer.
  • Keep Modal open when a nested Select, Combobox, or Dropdown Menu dismisses: one pointer gesture peels only the top layer.
  • Bundle the default Inter and JetBrains Mono faces as self-hosted Fontsource stylesheets in ui.css, so package and CLI installs render the intended typefaces with no Google Fonts request and no runtime network access.
  • Round the ScrollArea edge-fade cues to the container radius, and put the docs chat-list example on the panel surface so the fade melts into its background in dark mode instead of reading as a blurred strip.
  • Stop tailwind-merge from dropping font-mono/font-sans where they share a class string with font-label, which left rolling code blocks (and masked inline code, code panels, and shortcut chips) on the wrong typeface.
  • Size the Theme Studio preset menu to its four options with max-h-56 instead of a fixed h-56, so Default, Graphite, Grove, and Linen render without empty scroll space.
  • Stop unstyled menu Buttons from advertising data-variant=primary, which made Shortcut chips inside Dropdown Menu, Context Menu, and Command rows render as white-on-white.
  • Scope Theme Studio light-mode color overrides to :root:not(.dark) so they no longer leak into dark mode, and re-resolve the Advanced colors swatches once the deferred theme class lands, so the picker buttons update when switching light/dark.
  • Measure the Tabs active indicator with fractional rects instead of rounded offsets, so the segmented pill sits evenly in its track at fractional densities.
  • Update the default "Sivir blue" brand color from #1f9be6 to #1e78e6 across the theme, base stylesheet, Studio swatches, and tests.
  • Keep the shared Tooltip bubble glued to its trigger across scroll, resize, and layout shifts, so it stays on top of the button instead of freezing mid-viewport.
  • Space the Theme Studio Color pickers row-by-row like the Typography controls instead of cramming them into one tight grid.
  • Fix the warm-neutral dark ramp emitting a near-white --sivir-neutral-10, which leaked a light token into dark mode.
  • Keep the input-style Combobox trigger clickable while its menu is open by lifting it above the popover dismiss layer (mirroring Popover.Trigger), and preserve the selected label as the editable query when reopening, so clicking a selection refines it instead of clearing it.
  • Show esc and enter shortcut hints on the Theme Studio replace-draft dialog actions, matching the other dialogs.
  • Clean up the Theme Studio preview topbar: the view switcher uses segmented tabs while the sidebar and dialog controls use the ghost variant, the workspace trigger drops its padding, search sits beside the tabs, and the profile menu gains account context, shortcuts, and a wider layout.
  • Derive the primary-button hover from the brand color everywhere instead of the hardcoded #1270ad, so hover reads as a darker version of the same hue rather than shifting teal.
  • Rebuild Theme Studio notification rows on unstyled buttons and give both badges solid fills, so rows keep their own layout and the count and New markers stay legible in dark mode.
  • Close the mobile fullscreen navigation whenever the route changes, so going to a page never leaves the menu open behind it.
  • Cap Select, Combobox, and Dropdown Menu lists at max-h-* without requiring an explicit h-*: ScrollArea now sizes its viewport with flex and inherits the menu's max-height, so max-h-56 shrinks to short lists and scrolls long ones with edge cues.
  • Guard ResponseStream's height animation when matchMedia is unavailable, so unit tests render without a browser API.
  • Add the missing dark --sivir-neutral-10 token to ui.css, restoring computed-style parity with generated themes.
  • Update the registry theme expectations to the current built-ins (bitsy, default, magic).

0.2.8

Docs

  • Rebuild Theme Studio advanced options with color pickers, sliders, and named easing menus, plain-language labels, filled defaults, and a three-column wide modal.
  • Add Ease in, Standard, Decelerate, Accelerate, Snappy, Soft, and Emphasized to the Theme Studio easing menu.
  • Rebuild the Theme Studio preview as a working ledger of Sivir components, with real search, filters, paging, and invoice actions.
  • Frame the Theme Studio preview with a full-height bordered canvas and leave the configuration rail unboxed.
  • Add Escape and Enter shortcuts to the New invoice modal, use a compact segmented range control, and pin a small unread count on notifications.
  • Remove cards around Theme Studio sidebar controls so the rail stays inset.
  • Expand the Theme Studio ledger with Command, Combobox, context menus, copy, accordion settings, and collection steps.
  • Simplify the home hero to a bottom-left, left-aligned heading and description, without a component-count badge or install command.
  • Group the home navbar links beside a plain wordmark on the left, styled like the docs outline buttons and sharing the hero's horizontal padding so their edges align.
  • Add a dark and light mode toggle to the home navbar.
  • Add a GitHub star button to the home hero and move it with the theme toggle to the far right of the navbar.
  • Add an oversized component-name marquee to the right of the home hero, with each row drifting at its own speed and direction.
  • Give the Theme Studio mobile sidebar wider horizontal padding.
  • Match the docs mobile menu to the main navbar menu and raise the docs toolbar.
  • Pair the home hero heading and description tightly at a matching size and weight, with breathing room before the buttons.
  • Give the home hero the same staggered fade-and-blur entrance as docs content.

Feature

  • Theme Studio can flatten component shadows without losing inset borders, add a mode-aware primary-button stroke, and switch the hover cursor between default and pointer.

Fix

  • Bump @sivir-ui/svelte to 0.2.8.
  • Density, type, and status tokens now drive component chrome instead of leftover Tailwind defaults and hardcoded lengths.
  • Color Picker and other portaled layers stay interactive inside Modal.
  • Refresh release and Tabs tests for the simplified hero copy and the hairline token.
  • Refresh Combobox and menu-item browser tests for the density-driven spacing scale, and make the reorder drag test land off the midpoint boundary.

0.2.7

Docs

  • Cap Theme Studio preset and font select menus at a fixed height so long lists scroll like the Select docs example.
  • Give the Theme Studio advanced-token modal the same Cancel/Done footer shortcuts as Modal docs.
  • Group Theme Studio font menus with Sans serif, Serif, and Mono labels.
  • Serve versioned changelogs at /changelog/<version>.md so they can coexist with /changelog/<version>/llm.md.

Feature

  • HoverCard side and align now set placement.
  • Combobox accepts bind:value and onValueChange.
  • ColorPicker value is bindable and still reports onValueChange.
  • Prop types are exported from @sivir-ui/svelte (ButtonProps, InputProps, and the rest).
  • Select, Tabs, DropdownMenu, Modal, Sheet, AlertDialog, Command, and Checkbox accept onOpenChange / onValueChange / onCheckedChange alongside bindable state.
  • Checkbox checked defaults to false.
  • stateKey aliases state_key, Toggle outline aliases outlined, and Switch checked aliases switched.
  • Input and Textarea render a naked control unless label or description is set.
  • Tooltip.Content class styles the shared bubble.
  • Command.Item accepts value as well as name.

Fix

  • Bump @sivir-ui/svelte to 0.2.7.
  • Select and Combobox menus scroll when Content is capped with max-h-*, not only an explicit h-*.
  • Fix bun audit advisories by overriding mysql2 to 3.23.1 and fast-uri to 3.1.6.
  • Remove the Modal and Alert Dialog frame border in dark mode.
  • Restore focus to the overlay trigger after close instead of leaving it on the document body.
  • Keep the Popover trigger clickable above the dismiss layer.

0.2.6

Docs

  • Add a Studio link to the documentation sidebar and toolbar.
  • Add a Changelog docs page that renders compiled release notes with Markdown.
  • Add per-release LLM changelog pages for upgrades that need composition or migration context.
  • Expand the XML sitemap to include Markdown references, llms.txt, the Sivir skill, and design-language pages.
  • Publish the Sivir skill workflow in llms.txt so agents can follow package and source-copy guidance without installing the skill.
  • Refine Theme Studio inspector hierarchy: drop the unused Publish action and change counters, move advanced options into header icon buttons, tighten horizontal padding, increase vertical spacing, enlarge group headings, mute item labels, and scroll both sidebars with hidden scrollbars.
  • Add height-capped Select and Combobox examples whose long lists scroll inside ScrollArea with edge-blur cues.
  • Widen Alert Dialog examples to size="lg" so titles and actions are not cramped.

Feature

  • Show a waiting caret on Response Stream until the first live chunk arrives.
  • Change the default Sivir and generated-app font from Inter to DM Sans.
  • Select and Combobox menus now use ScrollArea by default so long option lists scroll inside the panel.
  • Restyle Modal and Alert Dialog as an inset frame: larger title, quieter close control, and footer actions outside the inner card.
  • Restyle Code Block to the same inset frame as Modal: tabs and actions sit in the outer chrome, and the snippet uses the concentric inner surface.
  • Restyle Shortcut as a bordered key chip that inverts on primary and destructive buttons.

Fix

  • Bump @sivir-ui/svelte to 0.2.6.
  • Fix bun audit high-severity advisory by overriding mysql2 to 3.22.0 (GHSA-3f6p-5ww8-9rcr) with no application code changes.
  • Soften secondary Button hover and open fills so they still darken without going so gray.
  • Invert Modal's inset surface in dark mode so the inner well is darker than the frame.
  • Make Popover, Modal, Sheet, Alert Dialog, Command, and Fullscreen Nav inert the page, trap focus, and lock nested overflow containers while open.
  • Import Lucide icons from per-icon paths in Select, Dropdown Menu, and Context Menu instead of the package barrel.
  • Derive Segmented Tabs pill and trigger radii from the track radius minus the 3px inset so nested corners stay concentric across radius scales.
  • Show Select and Combobox placeholders in muted foreground, and always render a selected value's label in foreground text.
  • Darken secondary Button hover and open fills instead of lightening them.
  • Make ScrollArea honor a parent's max-height so Select and Combobox menus can cap and scroll.
  • Scroll overflowing Dropdown Menu, Select, and Combobox lists inside ScrollArea so edge-blur cues appear.
  • Equalize Modal inset padding, darken the outer frame, and size the inner radius as outer minus border minus padding.
  • Give Modal's inner surface a border, reduce the frame inset, and add vertical padding to footer actions.

0.2.5

Breaking

  • Popover now makes outside document content inert by default for non-hover interactions, including non-portaled content. Set inert={false} on Popover.Root to preserve the previous non-modal outside interaction behavior.

Docs

  • Redesign the documentation shell with an inset navigation rail, responsive mobile navigation, aligned breadcrumbs, and a centered reading column.
  • Refresh the home page around a clearer component-library introduction, direct documentation links, and a copyable package install command.
  • Link directly to Theme Studio from the primary navigation.

Feature

  • Add non-interactive leading and trailing snippet adornments to text-entry Input controls, with support for icons, units, and short text inside both visual variants.
  • Add a complete document and interface typography family with H1 through H6, role-based Text, InlineCode, Title, Description, and Metadata. Documentation pages and Markdown now share these primitives, while Card, Modal, and Message consume the compact interface recipes.
  • Add a responsive Theme Studio with a rounded, bordered Sivir-native ledger example, consistent right-aligned workspace actions, seamless navbar transition, a background-matched, bordered, and padded configuration sidebar with softly elevated theme controls, sidebar-based publish and export actions, globally persisted live themes and preset reset baselines, app-synchronized light and dark modes, foundational surface colors, content-sized scrollable font menus, role-based typography weights, segmented theme controls, and a height-capped advanced editor with internally scrolling color, spacing, and animation token lists and an equal-width outlined/primary action footer. The workspace includes invoice search and filtering, selectable rows, account and collection status, pagination, menus, alerts, and portable CSS and JSON export, plus a mobile configuration sheet.
  • Add the documentation entrance sequence to Theme Studio, with reduced-motion preferences respected.
  • Add Popover.Root inert, defaulting to true, so open non-hover popovers make outside document content inert. Nested popovers preserve prior inert states, and inert={false} provides an explicit opt-out.

Fix

  • Remove the red outline from destructive Alert Dialog surfaces while retaining destructive action styling and browser chrome signaling.
  • Reduce the default Alert Dialog width while preserving explicit size overrides.
  • Make an open Color Picker modal to focus and pointer interaction, blocking selects, dropdowns, popovers, and text selection elsewhere while keeping the hex field selectable.
  • Fix Theme Studio font menus failing Svelte compilation because their calculated heights used a component directive instead of a supported style prop.
  • Fix Advanced Theme Options token lists not scrolling by constraining the editor to a viewport-capped height while keeping its header and footer fixed.
  • Fix Theme Studio segmented controls, color pickers, and invoice selection labels to use their supported component contracts so the documentation app passes Svelte validation without changing interaction behavior.
  • Restore release-contract homepage copy and make typography recipes pass design-token enforcement without changing their rendered size scale.
  • Preserve Theme Studio preset identity across reloads, avoid nested main landmarks, expose purpose-specific control labels, and include generated CSS in copied JSON drafts.
  • Keep Popover triggers and nested floating layers interactive while unrelated page branches are inert.

0.2.4

Feature

  • Add an installable sivir coding-agent skill with live llms.txt API discovery, version-aware package and source-copy workflows, AI component composition guidance, and Sivir design principles. Install it with npx skills add aidan-neel/sivir-ui --skill sivir.

Fix

  • Include ScrollArea when installing Conversation through the source-copy CLI so fresh transcript installations resolve their internal component import.
  • Bump @sivir-ui/svelte to 0.2.4.

0.2.3

Breaking

  • Remove ApprovalRequest, its @sivir-ui/svelte/components/approval-request entrypoint, and the sivir add approval-request CLI target. Compose AlertDialog directly for approval workflows.

Docs

  • Expand agent-facing Markdown with Brand Mark usage, package-only Toolbar installation guidance, and migration notes for removed Approval Request, Marquee, Panel, and Separator components.

Fix

  • Fix bun audit high-severity advisories by overriding deepmerge-ts to 8.0.2 (GHSA-ggr8-5vv4-36mx) and nanoid to 3.3.18 (GHSA-2v37-7h3g-55p8) with no application code changes.
  • Bump @sivir-ui/svelte to 0.2.3.
  • Restore orientation-aware modal and alert-dialog width classes and the destructive alert ring.
  • Remove redundant non-interactive combobox wrapper click handling to eliminate Svelte accessibility warnings.

0.2.2

Docs

  • Add repository-wide Sivir design guidance for composition, typography, rhythm, restraint, responsive behavior, and visual review.
  • Track changelog source files while ignoring generated output, caches, local tooling state, test artifacts, and temporary workspaces consistently.
  • Restore missing per-component subtitle/description copy on all component docs pages and the components index header in the docs section.
  • Refresh the docs-facing copy on Introduction, Installation, and Theming pages with concise, human-readable wording for consistency with the docs narrative.
  • Re-add Back / Next pager buttons opposite the header title on every docs page (/docs/introduction, /docs/installation, /docs/theming, /docs/components, and all /docs/components/* pages) via DocsPager in apps/docs/src/lib/components/docs/docs-pager.svelte:1.
  • Update the package metadata version for @sivir-ui/svelte to 0.2.2 for the next release.

Fix

  • Add the new approval-request and question components to the docs component registry so package, route, and docs sync checks remain aligned.
  • Resolve token-lint violations in modal and spinner internals by moving size and blur values to inline-safe style declarations.
  • Clean up lint useTemplate concatenations in modal, alert-dialog, and sheet title/description/content and drop unused attachment context and stale question/select imports.

0.2.1

Breaking

  • Remove ScrollArea's cueRadius prop; its edge-cue blur is now clipped by the component's container.

Docs

  • Preserve user-run development servers and use them for local verification.
  • Remove decorative border rails and dividers from the home page.
  • Simplify the full-width docs app into inset surfaces with GitHub stars and theme controls.
  • Replace docs navigation with an in-frame breadcrumb bar and GitHub and theme controls.
  • Place the component navigation sidebar outside the inset docs surface.
  • Use the same background color for the canvas and inset home and docs surfaces.
  • Keep the docs frame fixed while documentation content scrolls inside it.
  • Keep the Sivir UI logo in the scrolling docs sidebar.
  • Widen the documentation reading column by 2rem.
  • Show only the GitHub mark and star count in the docs toolbar.
  • Increase the docs breadcrumb label weight for clearer hierarchy.
  • Require Tailwind CSS for styling unless raw CSS is absolutely necessary.
  • Require confirmation of component public APIs and enforce strict component typing and documentation standards.
  • Limit automatic verification to formatting and linting; reserve type checks, tests, builds, and package artifact verification for explicit requests.
  • Change the default Sivir and generated-app font from DM Sans to Inter.
  • Migrate repository linting, formatting, editor tooling, and Git hooks from Prettier and ESLint to Biome.
  • Add an interactive Spinner completion-state example to the component docs.
  • Add bottom padding to every documentation page for more comfortable reading.
  • Hide the scrollbar on the documentation sidebar without disabling scrolling.
  • Replace mobile documentation breadcrumbs with a Fullscreen Nav menu.
  • Keep repository source, scripts, styles, and tests clean under Biome's recommended rules.
  • Update the default ScrollArea example to demonstrate its standalone clipping behavior.
  • Add interactive native validation examples to the Input documentation.
  • Match the Input validation example's error ring and motion to PromptComposer.
  • Place Input validation errors immediately below their fields.
  • Refine Input validation error emphasis and motion.
  • Preserve the documentation redesign while adopting the latest component microinteraction refinements.

Feature

  • Add a versioned Markdown changelog at /changelog/0.2.1, aggregating release notes for LLM and developer integrations.
  • Add Spinner's ready state, which animates loading into a checkmark, holds it briefly, then blurs and collapses the indicator.
  • Add root-level orientation presets to Modal and Alert Dialog, with compact vertical and wider horizontal sizing. Modal defaults to horizontal; Alert Dialog defaults to vertical.
  • Make Alert Dialogs non-dismissible by backdrop, remove their top-right close control, and add a subtle two-layer destructive ring.
  • Blur popovers, menus, and select panels by 4px as they enter and leave.
  • Add a project-level OpenCode feature workflow that plans, implements, and independently reviews changes.

Fix

  • Fade ScrollArea edge-cue blur into content, keep cues flush with scrollport boundaries, and clip the blur within the container.
  • Make the ScrollArea viewport inherit the shell radius so blurred edge cues cannot square off rounded corners.
  • Place the Combobox search field above results when it is rendered inside the menu.
  • Restore Svelte component type checking for approval requests and command palettes.
  • Refine the home-page headline hierarchy with an intentional two-line layout.
  • Reduce the default width of horizontal and vertical modals, and show the vertical alert-dialog layout in its base example.
  • Ensure documentation pages retain bottom scroll room after overflowing content, and improve vertical alert-dialog icon spacing.
  • Apply the documentation entrance animation to the home-page hero.
  • Allow commits containing only Biome-ignored generated package artifacts to pass the pre-commit hook.
  • Fix Tailwind CSS processing for SvelteKit development and test builds by ordering the Vite plugins correctly.