Releases: vuetifyjs/0
Releases · vuetifyjs/0
v1.0.0-beta.3
🔧 Bug Fixes
- declare sideEffects, expose web-types, and correct the temporal and peer contracts (#347) (93d32a3)
- Carousel: measure slideStep from first slide's index, not literal 1 (#286) (a5cd0c4)
- createDataGrid: stabilise pinned-column borders in PinnedGrid example (#348) (0dd9bbb), closes #322 #323
- createPlugin: defer factory call to install time to prevent resource leaks (#343) (e77e7b4), closes #338
- createRegistry: remove spurious non-null assertions in seek() (#282) (22815fc), closes #281
- Snackbar: stop non-modal snackbars triggering the global scrim (#352) (54a3994)
- useStack: exclude non-modal overlays from isActive and top (#354) (f87fe22)
v1.0.0-beta.2
🚀 Features
🔧 Bug Fixes
- AlertDialog: expose Close onClick in slot attrs for renderless mode (#295) (700325a)
- AlertDialog,Dialog: expose action handlers in slot attrs for renderless mode (#297) (9136d44)
- Avatar: select the highest-priority image, not the last to load (#308) (46bbe65)
- Carousel: clamp next() at the perView edge in non-circular mode (#290) (3c44763)
- Checkbox,Switch,Select: expose handlers in slot attrs for renderless mode (#298) (a2cc97d)
- components: forward renderless to Atom and expose element contracts in slot attrs (#327) (3e8097b)
- composables: repair frozen size getters and drop the ES2025 Set dependency (#333) (62a313a)
- composables: verify factory returns with satisfies and correct surfaced drift (#325) (ea896db)
- createCombobox: trim the query in the client filter adapter (#307) (45c80cf)
- createFocusTraversal: check every position in circular step() (#303) (52570c8)
- createKanban: preserve item id when transferring across columns (#299) (6fa4e3f)
- createModel: keep the selection when apply writes a ref-valued ticket (#317) (12d634f)
- createNested: guard every tree walk against circular references (#316) (2cf12a9)
- createRegistry: keep iteration cache and index directory consistent (#331) (904e953)
- createTimeline: sanitize size to an integer >= 1 (#301) (f7b3506)
- createVirtual: bootstrap variable-height mode and preserve measurements (#324) (2c0bca9)
- ExpansionPanel: don't toggle a disabled panel via the Activator (#310) (91d4479)
- NumberField: expose Scrub pointer handlers in slot attrs for renderless mode (#296) (f8b77a4)
- Portal: don't forward the Teleport disabled toggle into the stack ticket (#304) (ae701d6)
- Rating: make size and half props reactive (#312) (18161f0)
- Scrim,Snackbar: forward renderless through the teleport hosts and expose the element contract in slot attrs (#335) (b7d2cf8)
- Select,Combobox: genericize v-model — the model carries values, not IDs (#319) (7288a83)
- Selection,Single,Group,Step: don't toggle a disabled item off on click (#311) (3db42e8)
- useLocale: resolve repeated token references in one message (#293) (61d4f2c)
- useNotifications: no-op lifecycle methods on unknown notification id (#292) (456aaac)
- useRtl,useTheme: adopt leak-safe adapter lifecycle (#342) (53fafaf)
🔥 Performance Improvements
🔬 Code Refactoring
v1.0.0-beta.1
🔧 Bug Fixes
- harden composables against prototype pollution, CSS injection, and unbounded allocation (#271) (62c1a3e)
- createForm: submit(0) validated all fields instead of field id 0 (#288) (2ca233e)
- createNested: exclude disabled children from the ancestor all-selected test (#306) (75d7347)
- createSingle: force single selection, ignore caller multiple:true (#291) (69c3458)
- createSlider: enforce minStepsBetweenThumbs in apply() for 3+ thumbs (#309) (90df292)
- createTokens: guard flatten against prototype pollution and unsafe keys (#300) (e029eff)
- createValidation: no-rules validate must invalidate in-flight runs (#294) (9de152e)
- Input,NumberField: eager validation must wait for the first error (#305) (61d8be8)
- isElement: guard against ReferenceError when Element is undefined under SSR (#285) (cee6ea2)
- overflow: isolate ResizeObserver mock per-instance (#275) (bd66ff0), closes #250
- playground: replace calc(100% + 1px) with height: 100% on .editor-container (#277) (818b913)
- useDragDrop: don't leak a zone's effect scope on duplicate-id registration (#302) (9dd92d5)
🔥 Performance Improvements
v1.0.0-beta.0
🚀 Features
- Avatar: add Avatar.Group and Avatar.Indicator (#245) (437585f)
- Tooltip: headless tooltip component with region coordination (#226) (dd1f0df)
- createDataGrid: add new composable (#174) (f4dda67)
- genesis: add @paper/genesis docs design system (#240) (a45b574)
- useLogger: scoped key for per-caller message prefix (#255) (6964572)
🔧 Bug Fixes
- remove duplicate type re-exports causing TS2308 (f550d72)
- createOverflow: derive isOverflowing from registered count in uniform mode (2c2fc2e)
- Overflow: guard element measurement against non-finite width (#264) (6126209)
🔬 Code Refactoring
v1.0.0-alpha.5
v1.0.0-alpha.4
🚀 Features
- createKanban: add headless two-level sortable board primitive (#234) (0569e4f)
- createRegistry: add reorder bulk primitive (51c1d13)
- createRegistry: offboard returns removed inputs for cross-registry transfer (de40e30)
- createSortable: add headless ordered-list primitive (#231) (7371c8c)
- useDragDrop: add headless drag-and-drop primitive (#225) (748dc1c)
- utilities: add isThenable type guard (b55ede7)
🔧 Bug Fixes
- components: propagate reactive disabled/indeterminate to registry tickets (996c1e3)
- components: propagate reactive mandatory/enroll/multiple to selection composables (67b991b)
- createCombobox: re-export Client/ServerComboboxAdapter from barrel (4d8789c)
- createOverflow: return false from isOverflowing when width is 0 (b45aa47)
- createQueue: preserve remaining duration in resume() (fbd68a6)
- createRegistry: reject duplicate ids in reorder (1f47dd6)
- createRegistry: preserve ticket identity, fix lazy reindex hazards, tighten event payloads (509b117)
- createSelection: respect mandatory in apply() multiple-mode (787de6f)
- NumberField: stop spin-on-hold on document pointerup (c610754)
- Progress: allow v-model with prop-driven segment values (a3a5e16)
- SplitterRoot: emit layout exactly once per pointer drag (04634ac)
- useStorage: always unwrap __v0 envelope on read (6ec7b70)
🔥 Performance Improvements
- createSortable: use registry reorder, drop O(n²) per-id loop (9043be8)
🔬 Code Refactoring
- createCombobox: remove legacy ComboboxClient/ServerAdapter aliases (6100ea0)
- createCombobox: rename adapters with composition noun and promote interface to abstract (e25afa1)
- createDataTable: rename mode adapters with composition noun, collapse interface (355f4cc)
- useDate: rename Vuetify0DateAdapter to V0DateAdapter and promote interface to abstract class (e62d504)
- useDragDrop: use isThenable for accept-predicate thenable check (6317698)
- useFeatures: pluralize provider adapter classes, collapse interface into abstract base, flatten provider folders (f53ee7d)
- useLocale: rename Vuetify0LocaleAdapter to V0LocaleAdapter, flatten vue-i18n adapter, promote interface to abstract (a24a5e9)
- useLogger: rename Vuetify0LoggerAdapter to V0LoggerAdapter and promote interface to abstract class (e82db8b)
- useNotifications: convert factory adapters to classes, add abstract NotificationsAdapter base (6befea5)
- usePermissions: rename to plural PermissionsAdapter family with V0 prefix and collapse interface (bc8f097)
- useRtl: rename Vuetify0RtlAdapter to V0RtlAdapter and promote interface to abstract (21a0a3e)
- useStorage: rename MemoryAdapter to MemoryStorageAdapter and promote interface to abstract class (2f7f3c4)
- useTheme: collapse ThemeAdapterInterface into abstract ThemeAdapter (50e80ee)
v1.0.0-alpha.3
🚀 Features
🔧 Bug Fixes
- ButtonRoot: always emit boolean aria-disabled covering both states (b09444c)
- Checkbox: always emit boolean aria-disabled (a50a4b2)
- clamp: return min for non-finite values (1ce67ff)
- ComboboxControl: always emit boolean aria-disabled (741bf05)
- ComboboxItem: always emit boolean aria-disabled (015aa86)
- createNumberField: re-init when value is NaN or Infinity (1f038b3)
- createSlider: preserve snap symmetry under inverted (68e95f4)
- createValidation: return false from stale async results (4abcd85)
- leonardo: guard extractColors against non-array values (bd34ec1)
- PaginationStatus: clear pending live-region timer on unmount (949c0f0)
- RadioRoot: always emit boolean aria-disabled (5051552)
- SelectItem: always emit boolean aria-disabled (5ed8d2c)
- SplitterHandle: always emit boolean aria-disabled (2c950e9)
- Switch: always emit boolean aria-disabled (21f6476)
- Tabs: always emit boolean aria-disabled (d5d45d4)
- toElement: pass through raw Elements before ref-like checks (3c3c171)
- ToggleGroup: always emit boolean aria-disabled (f6a5b3d)
- ToggleRoot: always emit boolean aria-disabled (1523745)
- Treeview: always emit boolean aria-disabled across the family (e4b1abf)
- useClickOutside: resolve bounds at pointerdown to survive mid-gesture scroll (5b68b17)
🔬 Code Refactoring
- Carousel: drop legacy HTMLElement casts on ticket el (6bc6865)
- CarouselViewport: drop legacy HTMLElement cast on viewport el (27123f5)
- Image: drop misleading HTMLElement cast on rootEl (3f8d004)
- leonardo: use isObject guard over raw typeof check (e8da9dd)
- Radio: drop legacy HTMLElement cast on ticket el (baafb5f)
- Splitter: drop legacy HTMLElement cast on rootEl (7ed9e20)
- Tabs: drop legacy HTMLElement cast on ticket el (f8d4e2c)
- Treeview: drop legacy HTMLElement cast on ticket el (5b4f002)
v1.0.0-alpha.2
🚀 Features
- SplitterPanel: widen size props to number | string (#215) (e426ed7)
- useLocale,useFeatures: enable reactive registry by default (#211) (e61744a)
- useTheme: enable reactive registry by default (#210) (3785be9), closes #208
🔧 Bug Fixes
- Carousel: auto-mirror viewport padding to scroll-padding (#201) (bdc1b02)
- createRegistry: skip values/keys/entries cache when reactive (#209) (2b7cf9d)
- SplitterPanel: restore overflow:hidden to prevent layout feedback loop (dd7fed8)
🔬 Code Refactoring
- canonicalize data-open across activators (7c8eefc)
- remove COMMON_ELEMENTS dead export (462d642)
- mark pure exports with /* #NO_SIDE_EFFECTS */ (70c5da7)
- createDataTable: rename enroll option to openAll (6006a7a)
- createNested: drop stale // Factories import comment (4de550a)
- helpers: hoist mid-file imports to top of file (8f958d9)
- Locale: remove as-any casts for vue-i18n interop (4263c00)
- notifications: barrel-export useNotifications (72a3782)
- palettes/leonardo: swap as-never casts for ts-expect-error (7e6577f)
- PopoverRoot: drop deprecated isSelected context field (df9d708)
- SplitterPanel: remove overflow:hidden visual opinion (5f8cedd)
- tests: remove unnecessary as-any casts (46766f2)
- types: remove GenericObject duplicate alias (7ec0404)
- useDate: use isFunction guard over raw typeof check (017517d)
- useDate: replace double cast with typed interface (1cbd0cb)
- useDate: rename DateAdapter.isNull to isNullish (6c7ae7c)
v1.0.0-alpha.1
🚀 Features
- Carousel: add new component (#190) (bab3f65)
- createDataTable: support recursive column definitions with children (c6172b9)
- createDataTable: add column tree utilities (extractLeaves, computeDepth, resolveHeaders) (fc6ddc0)
- createImage/Image: create new composable and component (#191) (25ec8b7)
🔧 Bug Fixes
- security audit fixes across foundational composables (30cc5e1)
- Carousel: more responsive scroll for vertical orientation (#203) (6d72128)
- Carousel: intercept shift+wheel for discrete slide navigation (#197) (fbfed3a), closes #193
- createDataTable: remove unused App import (082a9a4)
- createPlugin: stop passing fallback as inject default (b5cc848), closes #184
- InputRoot: emit focused state via v-model:focused (#195) (25c378d)
- NumberField: sync display text when value changes while focused (51882e1), closes #189
- Portal: add close event, disabled passthrough, tune examples (#188) (84867f5)
- useTheme: sanitize theme names and color values in CSS generation (cbf22d7)
🔬 Code Refactoring
- annotate module-level allocations with /* @PURE */ (5fb19b5)
- gate DOM probes behind IN_BROWSER (d45f7f3)
- use isUndefined guard over raw === undefined (9018aec)
- components: route aria labels through locale.t() (9823d09)
- components: import useId from #v0/utilities (010cd2d)
- components: merge attrs with mergeProps at compound boundaries (307b279)
- components: use onBeforeUnmount for deregistration (92a81a6)
- composables: stop exposing reactive:true registries to templates (8ca8557)
- createDataTable: pattern compliance, performance, and naming (e630b78)
- createNested: remove deprecated openStrategy API (b7b247d)
- createSelection: remove redundant re-implementations (5f65593), closes #186
- createTrinity: add string-key overload, simplify all callers (9d9818e), closes #185
- createTrinity: remove redundant provideContext wrappers (591cfdc)
- SplitterPanel: tighten expose types to Readonly<Ref> (71512b1)
- useResizeObserver: wrap useElementSize width/height readonly (860dcdd)
v1.0.0-alpha.0
- Documentation: https://0.vuetifyjs.com
- Blog Post: https://vtfy.link/announcing-the-vuetify0-alpha
- Community: https://community.vuetifyjs.com/