Resources
Changelog
Release notes for changes that affect installation, APIs, styling, behavior, performance, or upgrades.
A human-readable record of the changes that affect how Velvet is installed, composed, styled, or experienced. Internal refactors appear only when they change reliability, bundle size, or extension points.
0.2.2 · 2026-08-05
Packaging
- Replaced semantic internal JavaScript chunk names with opaque content hashes while preserving every public import path, ESM tree-shaking boundary, CommonJS entry, type declaration, stylesheet, and runtime behavior.
- Extended package verification to recursively reject exposed internal chunk names and stale annotations.
0.2.1 · 2026-08-05
Fixed
- Replaced the jagged Settings glyph in the gallery examples with a clean, balanced cog that stays legible at small sizes.
0.2.0 · 2026-08-04
Documentation
- Moved every guide to its own server-rendered route.
- Added a Markdown response for every page at
/docs/<slug>.md. - Added View as Markdown and Copy Markdown controls.
- Added complete nested-modal navigation recipes for plain CSS and Tailwind CSS v4.
- Added a bring-your-own-components guide covering custom actions, surfaces, Views, visual parts, layouts, refs, and event precedence.
- Added Bun alongside npm, pnpm, and Yarn in installation examples.
- Documented label ownership, native scrollbar placement, swipe-back through content, button semantics, and mobile verification.
- Documented framework-free motion, React motion hooks, interruption, failure behavior, focused CSS, and the complete Depth contract.
Library
Sheet.PortalandSheet.Panelnow accept a React ref directly as their container.Sheet.Paneland every styled composition now accept a customviewelement while retaining gesture, focus, and modal behavior.- Backdrop, handle, and bleeding-background slots accept custom elements;
falseornullremoves an optional part. Sheet.Panel asChildand compositionContent asChildsupport fully custom, ref-forwarding surface components.- Persistent Sheet exposes an optional backdrop slot while remaining non-modal and backdrop-free by default.
- Added a development diagnostic for a presented View without a registered Title.
- Split the sheet runtime into state, motion, gesture, modal, and focus controllers.
- Added document-scoped managers so multiple documents and embedded previews remain isolated.
- Added framework-free
motion, React-onlymotion/react, and focusedutilitiesentry points. - Added interruptible WAAPI playback, safe spring sampling, travel interpolation, and lifecycle-owned motion hooks.
- Renamed the Depth contract to
depthSheetVariables,depthSheetDefaultTokens, anddepthSheetStackingAnimation. - Added focused
sheet.css,toast.css, andtoast-theme.cssentries alongside the convenience bundles. - Added tree-shakable entry points for the supplied compositions.
- Added per-toast
swipeDirectionsoverrides and a duplicate-Toaster runtime diagnostic. - Minified published JavaScript with repeated standards-safe Terser passes and every CSS entry with Lightning CSS, without property-name mangling or unsafe transforms.
Fixed
- Removed stale pure annotations from published chunks so consumer Rollup builds remain warning-free.
- Fixed
Sheet.View asChildforwarding and custom Panel/composition surfaces with injected mechanics. - Preserved custom View children and composition backdrop travel when replacing visual parts.
- Made opener capture and focus restoration deterministic for custom triggers, including motion-skipped exits.
- Kept horizontal swipe-back available when a gesture starts over vertically scrollable sheet content.
- Prevented non-text focus and sheet action clicks from resetting coordinated content to the top.
- Hardened Toast swipes against duplicate fallback events, touch streams reporting
buttons: 0, coalesced pointer-up coordinates, pointer-capture loss, direction reversal, and secondary-pointer takeover. - Made Toast dismissal bidirectional on its natural placement axis, allowed swipes to begin on action controls without firing them, and stopped non-dismissible toasts from blocking mobile page panning.
- Reconciled focus and hover ownership after swipe removal so the remaining stack collapses and paused timeout countdowns resume.
- Floated the built-in Toast close control outside the content row, added left/right placement plus low-specificity CSS/Tailwind button and icon hooks, and clarified the macOS Option shortcut.
- Added a clear development error for invalid
asChildchildren. - Restored the shared trigger-geometry helper after the controller split.
- Removed the obsolete SPA entry that could override TanStack Start SSR during development.
0.1.0 · Initial preview
Added
- Headless Sheet primitives with native scroll-snap gestures and spring-driven programmatic travel.
- Snap points, controlled and uncontrolled state, modal focus management, and nested Sheet Stack coordination.
- Bottom Sheet, Depth Sheet, Card Expansion, Persistent Sheet, and Lightbox compositions.
- Viewport-fixed toast stacks with variants, promises, actions, and flick dismissal.
Upgrade notes
This is the first published contract. Import structural CSS explicitly and prefer the focused package entry points shown in each guide.