Releases: vuetifyjs/0
Releases · vuetifyjs/0
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/
v0.2.1
🚀 Features
- AlertDialog: add confirmation dialog with deferred close pattern (1fb751d)
- Collapsible: add Collapsible disclosure component (7cecf6c)
- createNumeric/createInput: add new composables (#181) (e11bb01)
- createRating: add rating composable and compound component (56867fe)
- ExpansionPanel: add Cue and rename Root/Item to Group/Root (bc2058a)
- NumberField: add new component/composables (#183) (193a2a5)
- Portal: add renderless teleport wrapper with useStack integration (c62eefb)
- Presence: add usePresence composable and Presence component (1888840)
- Progress: add new component/composable (#180) (d8ec512)
- Slider: expose createSlider methods via slot props (e88d4fb)
- Toggle: add dual-mode toggle button with group support (52f280c)
🔧 Bug Fixes
- alpha readiness review fixes (b0bc54a)
- resolve 7 bugs from automated audit (699b083)
- Button: conditionally render Content and Loading sub-components (e2113b3)
- createModel, createGroup: restore generics used by downstream consumers (fa5c882)
- createRating: rename RatingItem to RatingItemDescriptor to avoid export collision (47e0578)
- createVirtual: guard cancelAnimationFrame in onScopeDispose for SSR (bec0fbc)
- InputControl: include event handlers in controlAttrs for renderless mode (d82043c)
- Selection: add onClick to attrs in item components (e2371c6)
- useAsk: extend benchmark regex to match create* composable directories (37309f8)
- useBreakpoints: correct SSR hydration, guard matchMedia, remove unsafe casts (066b700)
- useBreakpoints, useHydration: replace app.mixin with app.mount wrapper (a355342), closes #177
- useMediaQuery: read matchMedia synchronously to prevent FOUC (#175) (fd98517)
- useProxyModel: sync model back when apply rejects (8e88a6e)
- useProxyRegistry: update cleanup test for reindex:registry listener (7b055c9)
- useStorage: prevent shared default mutation, preserve empty strings, fix has() (21f0f3c), closes #171
🔬 Code Refactoring
- remove explicit any types, add ESLint enforcement (bf87611)
- downgrade as unknown as to as where types overlap (910db18)
- replace raw type checks with #v0/utilities type guards (1f9447a)
- createGroup, createQueue, useStack, useFeatures, createValidation: remove unused generics (2c18ca6)
- useLocale, useLogger, usePermissions, createForm, createModel: remove unused generics (901f9c8)
- useTheme, useNotifications, createNested: remove unused generics (c7a85de), closes #176
- utilities: add resolveIds and resolveIndexes helpers (7a5f9d5)
v0.2.0
🚀 Features
- Combobox/createCombobox: addnew composable/component (#172) (716a687)
- createPlugin: add persist/restore lifecycle hooks (debbd99)
- Theme: use Atom, optional theme prop, full context override (e601c19)
- useTheme: split adapters into V0StyleSheetThemeAdapter and V0UnheadThemeAdapter (faf8b3b)
🔧 Bug Fixes
- Button,Tabs,Slider,Splitter: use mergeProps to preserve user event handlers (4eec0a8)
- createPlugin: cast unknown saved values in restore callbacks (9d05ff4)
- date: add fallback minimalDays lookup for runtimes missing Intl data (942c644)
- Select: show pending model value in SelectValue before items register (8e34ce6)
- Splitter: smooth drag-expand and persist tree panel width (d3f991c)
- Theme: set text color on scoped [data-theme] selectors (6715d76)
- useTheme: use single atomic patch in V0UnheadThemeAdapter (ec5a2b2)
- useTheme: ensure colors computed tracks selectedId for reactivity (a1ee13a)
🔥 Performance Improvements
🔬 Code Refactoring
- Combobox: add Description, Error, rename Input to Control (3243543)
v0.1.13
v0.1.12
🔧 Bug Fixes
- Atom: add inheritAttrs false to prevent double attr application (b16831a)
- Avatar,Popover: replace rest spread from defineProps with named destructuring (4f61486)
- Checkbox,Switch: restore reactive props in SelectAll components (d97cde6)
- createDataTable: consistent comparator for null vs undefined (813a1cf)
- createFilter: iterate all queries in some/every modes (b3979f7)
- createPagination: auto-clamp page when total pages shrinks (99b7945)
- createPlugin: guard provide() against double-install (4f492ca)
- createSlider: fix floating-point precision in snap() (e9f8999)
- createTokens: cache negative resolve lookups (ce5bdbd)
- date: align Vuetify0DateAdapter with Vuetify behavioral expectations (100caca)
- ExpansionPanel,Pagination: use tuple syntax in defineEmits (3224b12)
- Input: suppress re-validation after reset (8029dc8)
- LaunchDarklyFeatureAdapter: prevent double onUpdate on setup (9de59c2)
- Locale: scope translations to the overridden locale (634bf71)
- mergeDeep: replace special objects instead of recursing into them (9ec1e17)
- PostHogFeatureAdapter: prevent double onUpdate on setup (ca35e9d)
- Tabs: respect manual activation mode for arrow key navigation (c9afe4c)
🔄 Reverts
- Atom: remove inheritAttrs false — Vue already deduplicates (a930044)
v0.1.11
🚀 Features
- add Locale component and Theme/Locale docs examples (679f002)
- add Theme component for scoped theme context (a209a1a)
- add APCA contrast algorithm and foreground utility (3bdf1c9)
- add hexToRgb and rgbToHex color utilities (e3f80a0)
- Splitter: add drag-to-collapse and pixel maxSize support (77990bb)
- theme: add rgb and foreground options (209d7d2)
- Treeview: add new component (#144) (4937a35)
🔧 Bug Fixes
- resolve type errors in mergeDeep bench and test (6a4e1d4)
- remove incorrect #NO_SIDE_EFFECTS annotation from mergeDeep (37385c8)
- prevent mergeDeep recursive call from being tree-shaken (55cad25)
- Button: prevent internal onClick from overwriting user click handlers (469acea)
- useDate: move firstDayOfWeek to adapter-level property (928b87a), closes #106
🔬 Code Refactoring
- make mergeDeep non-mutating (returns new object) (f8b4331)
- Theme: move imports to regular script block (b212ada)
BREAKING CHANGES
- useDate: startOfWeek, endOfWeek, getWeekdays, getWeekArray,
and getWeek no longer accept firstDayOfWeek as a parameter. Set
adapter.firstDayOfWeek property instead.
v0.1.10
v0.1.9
🚀 Features
- useLocale: change t() to variadic signature (7918961)
- useLocale: add VueI18nLocaleAdapter (68fb1f1)
- useNotifications: add new plugin composable (#146) (e6dcb42)
- useRaf: add new composable (#165) (aac766c)
- useTimer: add new composable (655d859)
🔧 Bug Fixes
- createSlider: override onboard to route through custom register (c1dc661)
- createTimeline: enforce size limit during redo operations (97ab067)
- createTokens: invalidate resolution cache on all mutation paths (9ab9fcd)
- mergeDeep: skip undefined source values to preserve defaults (164ef73)
- playground: register missing menu and chevron-right icons (75ebd6a)
- playground: fix TDZ crash when toggling file tree (2bb4658)
- Splitter: preserve user styles on Root, Panel, and Handle (1361a3d)
- useBreakpoints: align fallback boolean flags with default breakpoint name (f1028f1)
- useBreakpoints: remove redundant xxlAndUp and xxlAndDown flags (0faa9cd), closes #156
- useBreakpoints: use matchMedia for zoom-accurate breakpoint detection (0d71916), closes #157
- useLocale: fix ID type in adapter test helper (7754fd9)
- useProxyModel: replace Array.from().includes() loop with Set (e0ac0ca)
🔬 Code Refactoring
- replace computed with toRef for cheap derivations (a912fd8)
- playground: clarify excludes JSDoc comment (2a266c1)
- playground: extract disableAddon helper, add excludes to AddonDefinition (f8ff797)
- useLocale: simplify createLocale to delegate to adapter (154f8f3)
- useLocale: move resolution logic into Vuetify0LocaleAdapter (2898ff8)
- useLocale: update LocaleAdapter interface to own full translation pipeline (53eb8f2)
BREAKING CHANGES
- useBreakpoints: xxlAndUp and xxlAndDown properties removed from
useBreakpoints context. Use xxl instead of xxlAndUp, and remove
xxlAndDown checks (they were always true). - useLocale: t() signature changed from
t(key, params?, fallback?) to t(key, ...params).
Consumers using the fallback parameter should use the
fallback locale mechanism or provide default messages.