You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+46Lines changed: 46 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
10
10
11
11
## @wix/splittext
12
12
13
+
### [0.2.0] - unreleased
14
+
15
+
#### Added
16
+
17
+
-`@wix/splittext/plugin` entry points: `splitTextPlugin` for `Interact.use()`, and `splitTextStyle` for `generate()` (#275)
18
+
-`hideUntilReady`: `splitTextStyle` hides the container until the runtime split sets `data-splittext-ready` (#275)
19
+
13
20
### [0.1.2] - 2026-07-14
14
21
15
22
#### Added
@@ -26,6 +33,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
26
33
27
34
## @wix/interact-validate
28
35
36
+
### [0.2.0] - unreleased
37
+
38
+
#### Added
39
+
40
+
- Plugin fields: `$`-prefixed keys on interactions and effects are accepted; every other unknown key is still reported as `SCHEMA_UNRECOGNIZED_KEYS` (#275)
41
+
42
+
#### Changed
43
+
44
+
-`KEYFRAME_PROP_NOT_CAMEL_CASE` (rule category `KEYFRAME_STYLE`) is replaced by `INVALID_CSS_PROPERTY_NAME` (rule category `CSS_PROPERTY_NAME`): both camelCase and kebab-case CSS property names are valid input, so only names that are neither are reported, and the check now covers `transition.styleProperties` / `transitionProperties` names in addition to `keyframeEffect` keyframes
45
+
-`severityOverrides` keyed on `KEYFRAME_STYLE` are now silently ignored. Rename the key to `CSS_PROPERTY_NAME` to keep an override in effect
46
+
29
47
### [0.1.2] - 2026-07-29
30
48
31
49
#### Added
@@ -63,6 +81,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
63
81
64
82
## @wix/interact
65
83
84
+
### [2.6.0] - unreleased
85
+
86
+
#### Added
87
+
88
+
- Generic plugin bridge: `Interact.use(name, plugin)` registers a plugin, and a `$<name>` field on an interaction or effect (#275)
89
+
-`generate()` accepts a `plugins` option — a map of plugin name → build-time style generator (#275)
90
+
91
+
#### Changed
92
+
93
+
-`generate(config, options?)`: the second argument now accepts an options bag — `{ useFirstChild?, plugins? }` — exported as the `GenerateOptions` (#275)
94
+
- CSS property names may be authored in either camelCase or kebab-case in `transition.styleProperties`, `transitionProperties` and `keyframeEffect.keyframes`; state-effect properties are normalized to kebab-case for the generated CSS (state rules and the `transition:` shorthand) and keyframes to camelCase for WAAPI
95
+
96
+
#### Fixed
97
+
98
+
- camelCase property names in `transition.styleProperties` / `transitionProperties` are now normalized to kebab-case
99
+
- CSS custom properties in keyframes (e.g. `--fooBar`) are no longer lower-cased when emitted into `@keyframes`
100
+
- Vendor-prefixed keyframe properties (e.g. `webkitTextStroke`) now emit a valid CSS property name (`-webkit-text-stroke`)
101
+
66
102
### [2.5.5] - 2026-07-29
67
103
68
104
#### Fixed
@@ -275,6 +311,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
275
311
276
312
## @wix/motion
277
313
314
+
### [Unreleased]
315
+
316
+
#### Added
317
+
318
+
-`toCSSPropertyName()`, `toWAAPIPropertyName()` and `normalizeKeyframes()` utilities for converting CSS property names between their CSS and WAAPI forms
319
+
320
+
#### Changed
321
+
322
+
- Keyframe property names may be authored in either camelCase or kebab-case and are normalized to WAAPI's camelCase on every animation path — `keyframeEffect`, presets, and effects registered via `registerEffects()`
> `InteractConfigSchema` carries a `.transform()`, so a successful `.parse()` returns the config augmented with an internal `warnings` array (`validateInteractConfig` consumes that for you). `customEffect` and function-valued `offsetEasing` are accepted as opaque functions and not deep-validated.
128
+
> `InteractConfigSchema` carries a `.transform()`, so a successful `.parse()` returns the config augmented with an internal `warnings` array (`validateInteractConfig` consumes that for you). `customEffect` and function-valued `offsetEasing` are accepted as opaque functions and not deep-validated. Interactions and effects also accept `$`-prefixed plugin fields (e.g. `$splitText`) — config routed to `Interact.use()` plugins. Their schemas use `.catchall(z.unknown())` + a key check rather than `.strict()`: `$`-prefixed fields are accepted with opaque values, while any non-prefixed unknown key is still rejected as `SCHEMA_UNRECOGNIZED_KEYS`.
129
129
130
130
## Severity model
131
131
@@ -147,7 +147,7 @@ Every issue is `'error'` or `'warning'`. `valid` is `true` **iff** no `'error'`
Set a category to `'off'` to drop those issues, or `'warning'` / `'error'` to set their severity. **All other codes** (every `SCHEMA_*`, numeric, effect-source, and referential code) are not in a category and **cannot** be silenced or re-leveled via `severityOverrides` — they always emit at their built-in severity. Precedence: `'off'` first (drops the issue), then a `'warning'`/`'error'` override, then `strict` (forces the rest to `'error'`).
@@ -212,7 +212,7 @@ These encode statically-detectable authoring pitfalls from the trigger rule file
212
212
|`RECOMMENDED_FILL_BOTH`| A scrubbed (`viewProgress`/`pointerMove`) or toggling (`alternate`/`repeat`/`state`) effect omits `fill: 'both'`. |`RECOMMENDED_FILL`|
213
213
|`RECOMMENDED_FILL_BACKWARDS`| A `viewEnter` + `once` named/keyframe effect targeting another element or using a same-element delay omits `fill: 'backwards'` or `'both'`. |`RECOMMENDED_FILL`|
214
214
|`POINTER_AXIS_IGNORED`|`pointerMove``params.axis` set on a `namedEffect`/`customEffect` (axis only applies to `keyframeEffect`). |`POINTER_AXIS`|
215
-
|`KEYFRAME_PROP_NOT_CAMEL_CASE`| A `keyframeEffect`property name is kebab-case (not WAAPI camelCase). |`KEYFRAME_STYLE`|
215
+
|`INVALID_CSS_PROPERTY_NAME`| A keyframe or state-effect property name is neither camelCase nor kebab-case (both are accepted). |`CSS_PROPERTY_NAME`|
216
216
|`INVALID_INSET`|`viewEnter``params.inset` is not 1–4 CSS lengths/percentages. |`VIEW_INSET`|
0 commit comments