Skip to content

Commit e4f72f4

Browse files
chore: version packages
1 parent 3e7cb20 commit e4f72f4

9 files changed

Lines changed: 90 additions & 68 deletions

File tree

.changeset/animation-groups.md

Lines changed: 0 additions & 43 deletions
This file was deleted.

.changeset/deprecate-animation-helpers.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

.changeset/fix-animation-serialization.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

apps/docs/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# docs
22

3+
## 0.0.14
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [b650fd8]
8+
- Updated dependencies [12654be]
9+
- Updated dependencies [0dd6440]
10+
- @effex/dom@1.2.0
11+
- @effex/router@1.2.2
12+
313
## 0.0.13
414

515
### Patch Changes

apps/docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "docs",
3-
"version": "0.0.13",
3+
"version": "0.0.14",
44
"private": true,
55
"type": "module",
66
"scripts": {

packages/dom/CHANGELOG.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,73 @@
11
# @effex/dom
22

3+
## 1.2.0
4+
5+
### Minor Changes
6+
7+
- b650fd8: Add animation groups — declarative sequencing across multiple animated blocks. Solves the "chained word-by-word intro" case where each word is its own `each` and word N should only start after word N-1 finishes.
8+
9+
```ts
10+
import { $, Animation, collect, each, stagger } from "@effex/dom";
11+
12+
const App = () =>
13+
Effect.gen(function* () {
14+
const [greeting, name, tagline] = yield* Animation.sequence(3);
15+
return $.div(
16+
{},
17+
collect(
18+
each(greetingLetters, {
19+
key: (l) => l.id,
20+
render: (l) => $.span({}, $.of(l.char)),
21+
animate: {
22+
enter: "letter-in",
23+
stagger: stagger(40),
24+
group: greeting,
25+
},
26+
}),
27+
each(nameLetters, {
28+
key: (l) => l.id,
29+
render: (l) => $.span({}, $.of(l.char)),
30+
animate: { enter: "letter-in", stagger: stagger(40), group: name },
31+
}),
32+
each(taglineLetters, {
33+
key: (l) => l.id,
34+
render: (l) => $.span({}, $.of(l.char)),
35+
animate: {
36+
enter: "letter-in",
37+
stagger: stagger(40),
38+
group: tagline,
39+
},
40+
}),
41+
),
42+
);
43+
});
44+
```
45+
46+
New API:
47+
- `Animation.group()` — creates a group with a gate (unresolved) and a completion signal.
48+
- `Animation.sequence(count)` — returns `count` groups wired end-to-end: group 0's gate is open immediately, group N's gate opens when group N-1's registered animations all complete.
49+
- `Animation.parallel(count)` — returns `count` groups with all gates open (useful nested inside `sequence` for concurrent segments in a follow-up release).
50+
- `animate.group: AnimationGroup` — new option on any animated control (`each`, `when`, `match`, ...). The animation registers with the group synchronously, awaits the gate before starting, and signals completion when finished.
51+
52+
Groups finalize when their pending count returns to zero for the first time after having been non-zero. Late registrations that arrive after finalization run immediately (gate is already open) — intended semantics for one-shot intros where post-sequence additions behave like ordinary animations.
53+
54+
### Patch Changes
55+
56+
- 12654be: Deprecate five under-used animation helpers with `@deprecated` JSDoc tags. All continue to work — they'll be removed in a future major.
57+
- `staggerEased` — compose your own: `(index, total) => easingFn(index / (total - 1)) * totalDurationMs`
58+
- `delay` — use `Effect.delay(effect, ms)` directly
59+
- `sequence` — use `Effect.all([...], { concurrency: 1 })` directly
60+
- `parallel` — use `Effect.all([...], { concurrency: "unbounded" })` directly
61+
- `calculateStaggerDelay` — was only ever an internal helper; not re-exported by anything downstream
62+
63+
These wrapped effect combinators without adding real value beyond a slightly shorter name; the framework should be a thin layer over Effect rather than shadow its stdlib.
64+
65+
- 0dd6440: Fix inline animation serialization in `addSlot` / `removeSlot`. Previously each enter/exit animation was awaited via `yield*`, which serialized the `reconcile` sync loop — for a list of `[a, b, c]` added at once, item `b`'s animation would only start after item `a`'s finished. Made `stagger` configs effectively double-counted (each addSlot's stagger delay applied _after_ the previous animation completed rather than concurrently).
66+
67+
Now enter animations are forked into the slot's scope so multiple slots animate concurrently, and exit animations run in a fiber attached to the parent scope so `removeSlot` returns immediately (letting the reconcile loop continue) while the exit still plays before the DOM node is removed. If a slot is removed mid-enter, closing the slot scope interrupts the enter animation before exit starts. This applies to `ClientControlCtx` and both factories in `HydrationControlCtx`.
68+
69+
`@effex/router` will receive an automatic patch via `updateInternalDependencies` since it depends on `@effex/dom` as a workspace dependency.
70+
371
## 1.1.1
472

573
### Patch Changes

packages/dom/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@effex/dom",
3-
"version": "1.1.1",
3+
"version": "1.2.0",
44
"description": "DOM rendering for Effex - a reactive UI framework built on Effect.ts",
55
"type": "module",
66
"license": "MIT",

packages/router/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# @effex/router
22

3+
## 1.2.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [b650fd8]
8+
- Updated dependencies [12654be]
9+
- Updated dependencies [0dd6440]
10+
- @effex/dom@1.2.0
11+
312
## 1.2.1
413

514
### Patch Changes

packages/router/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@effex/router",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"description": "Router for Effex applications",
55
"type": "module",
66
"license": "MIT",

0 commit comments

Comments
 (0)