Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions .changeset/dom-shared-translation-package.md

This file was deleted.

13 changes: 0 additions & 13 deletions .changeset/drop-dead-utils.md

This file was deleted.

16 changes: 0 additions & 16 deletions .changeset/export-compose-handlers.md

This file was deleted.

29 changes: 0 additions & 29 deletions .changeset/machine-notify-and-cleanup-hardening.md

This file was deleted.

22 changes: 0 additions & 22 deletions .changeset/native-modal-aria-modal.md

This file was deleted.

16 changes: 0 additions & 16 deletions .changeset/no-dropped-bases.md

This file was deleted.

22 changes: 0 additions & 22 deletions .changeset/payload-prevent-default-bound.md

This file was deleted.

18 changes: 0 additions & 18 deletions .changeset/solid-effect-deps-untracked.md

This file was deleted.

25 changes: 0 additions & 25 deletions .changeset/solid-integration.md

This file was deleted.

30 changes: 30 additions & 0 deletions packages/core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
# @dunky.dev/state-machine

## 0.3.3

### Patch Changes

- [#65](https://github.com/dunky-dev/state-machine/pull/65) [`b70bedc`](https://github.com/dunky-dev/state-machine/commit/b70bedce257c1fedc0a5a47243ea9f56d211ade1) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Harden the notify and teardown paths across the core, and cut hot-path
allocations:

- A listener removed during a notify pass no longer fires again when a nested
notify (a send from inside a subscriber) rebuilds the iteration snapshot
mid-pass — unsubscribing is now final even under re-entrancy. The same
guarantee now holds for connector and store subscribers, and the mechanism
lives in one shared primitive instead of three near-copies.
- A state cleanup that throws no longer skips the remaining cleanups or leaves
the pass populated: every cleanup runs (timers and subscriptions all
release), the first error is rethrown after the pass, and the next stop
cannot double-run them.
- A `sync()` rule or `combine().subscribe()` disposed by hand now detaches from
the composition's registry — long-lived groups with subscribe/unsubscribe
churn no longer grow it without bound, and `stop()` no longer re-runs
hand-run disposers.
- Computed recompute is allocation-free: dep keys/values live in reused
buffers and are captured at read time, so the old post-pass that re-read
every dep is gone. In the benchmark suite this lands recompute ~1.5× and
4-deep computed chains ~1.6× faster.
- `machine.select` is built once and reused instead of allocating a fresh
facade object on every property access, so its identity is stable (safe for
dependency arrays).
- Dropped the internal write-only `version` counter — bumped on every notify,
read by nothing.

## 0.3.2

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dunky.dev/state-machine",
"version": "0.3.2",
"version": "0.3.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
25 changes: 25 additions & 0 deletions packages/dom/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# @dunky.dev/state-machine-dom

## 0.1.0

### Minor Changes

- [#32](https://github.com/dunky-dev/state-machine/pull/32) [`e6caca8`](https://github.com/dunky-dev/state-machine/commit/e6caca8485fcdbb9b7afd4d5940781d4b1ce82e3) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Add `@dunky.dev/state-machine-dom` — the DOM half of the bindings translation,
shared by every DOM target. The `aria-*` attribute projection and the payload
adapters (`onValueChange`/`onWheel`/`onScroll`/`onScrollEnd` → neutral
payloads, with `preventDefault` bound to its event) were byte-identical in the
React and Solid normalizers; they now live once, in this package, and each
target keeps only what genuinely differs: its handler prop names
(`onChange`/`onDoubleClick` vs `onInput`/`onDblClick`), the `focusable` →
tabindex casing (`tabIndex` vs `tabindex`), and its value serialization
(React passes ARIA booleans through; Solid stringifies them).

No API change for consumers of the React or Solid packages — `normalize`
behaves exactly as before; the shared package becomes a dependency of both.
The motivation is drift-proofing: a payload-adapter fix previously had to be
applied to each DOM target by hand, and had already diverged once.

### Patch Changes

- Updated dependencies [[`c8e94e4`](https://github.com/dunky-dev/state-machine/commit/c8e94e42c2af112c61a4006ffd43a4b85729c258)]:
- @dunky.dev/state-machine-bindings@0.4.1
2 changes: 1 addition & 1 deletion packages/dom/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dunky.dev/state-machine-dom",
"version": "0.0.0",
"version": "0.1.0",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
41 changes: 41 additions & 0 deletions packages/native/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,46 @@
# @dunky.dev/native-state-machine

## 0.4.0

### Minor Changes

- [#62](https://github.com/dunky-dev/state-machine/pull/62) [`caafda4`](https://github.com/dunky-dev/state-machine/commit/caafda465663b2c2a64ce79a7e7c4a11e19f4360) Thanks [@ivanbanov](https://github.com/ivanbanov)! - The `modal` binding now reaches React Native instead of being dropped:
`normalize()` maps it to `aria-modal`, the web-aligned alias RN routes to
`accessibilityViewIsModal`.

```tsx
normalize({ modal: true }); // { 'aria-modal': true }
```

It was dropped on the assumption RN had no element-attr analog. It does —
`aria-modal` sits in the same alias block as `aria-hidden`, which this
normalizer already targets. The effect is iOS-only (VoiceOver stops reading
siblings of the modal surface); Android has no sibling-inerting equivalent, so
it degrades to a no-op there, the same per-platform fan-out `aria-hidden`
already relies on.

Without it, a dialog authored once in core announced as modal on the web and as
an ordinary view on native — the substrate-agnostic contract leaking a hole
exactly where a screen reader user would notice it.

### Patch Changes

- [#60](https://github.com/dunky-dev/state-machine/pull/60) [`c8e94e4`](https://github.com/dunky-dev/state-machine/commit/c8e94e42c2af112c61a4006ffd43a4b85729c258) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Rolls back 0.4.0's translation-contract surface — it shipped by mistake.
`DROPPED_HANDLERS`/`DROPPED_ATTRS` are removed, and `HandlerTargets`/
`AttrTargets` are now the partial rename maps
(`Partial<Record<HandlerKey, string>>`) instead of exhaustive
null-accounting records.

What stays is the part that mattered: maps and drop sets are typed by the
real vocabulary keys (`HandlerKey`/`AttrKey`), so a typo'd or unknown entry
is a compile error instead of a silent leak.

- Updated dependencies [[`e6caca8`](https://github.com/dunky-dev/state-machine/commit/e6caca8485fcdbb9b7afd4d5940781d4b1ce82e3), [`6deab75`](https://github.com/dunky-dev/state-machine/commit/6deab7569ee7854bb5b8b8efca611ef7e5db28ce), [`6deab75`](https://github.com/dunky-dev/state-machine/commit/6deab7569ee7854bb5b8b8efca611ef7e5db28ce), [`b70bedc`](https://github.com/dunky-dev/state-machine/commit/b70bedce257c1fedc0a5a47243ea9f56d211ade1), [`c8e94e4`](https://github.com/dunky-dev/state-machine/commit/c8e94e42c2af112c61a4006ffd43a4b85729c258), [`e6caca8`](https://github.com/dunky-dev/state-machine/commit/e6caca8485fcdbb9b7afd4d5940781d4b1ce82e3)]:
- @dunky.dev/react-state-machine@0.3.4
- @dunky.dev/state-machine-utils@0.4.0
- @dunky.dev/state-machine@0.3.3
- @dunky.dev/state-machine-bindings@0.4.1

## 0.3.3

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/native/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dunky.dev/native-state-machine",
"version": "0.3.3",
"version": "0.4.0",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
18 changes: 18 additions & 0 deletions packages/opentui/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# @dunky.dev/opentui-state-machine

## 0.3.4

### Patch Changes

- [#60](https://github.com/dunky-dev/state-machine/pull/60) [`c8e94e4`](https://github.com/dunky-dev/state-machine/commit/c8e94e42c2af112c61a4006ffd43a4b85729c258) Thanks [@ivanbanov](https://github.com/ivanbanov)! - Rolls back 0.4.0's translation-contract surface — it shipped by mistake.
`DROPPED_HANDLERS`/`DROPPED_ATTRS` are removed, and `HandlerTargets`/
`AttrTargets` are now the partial rename maps
(`Partial<Record<HandlerKey, string>>`) instead of exhaustive
null-accounting records.

What stays is the part that mattered: maps and drop sets are typed by the
real vocabulary keys (`HandlerKey`/`AttrKey`), so a typo'd or unknown entry
is a compile error instead of a silent leak.

- Updated dependencies [[`6deab75`](https://github.com/dunky-dev/state-machine/commit/6deab7569ee7854bb5b8b8efca611ef7e5db28ce), [`6deab75`](https://github.com/dunky-dev/state-machine/commit/6deab7569ee7854bb5b8b8efca611ef7e5db28ce), [`c8e94e4`](https://github.com/dunky-dev/state-machine/commit/c8e94e42c2af112c61a4006ffd43a4b85729c258)]:
- @dunky.dev/state-machine-utils@0.4.0
- @dunky.dev/state-machine-bindings@0.4.1

## 0.3.3

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/opentui/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dunky.dev/opentui-state-machine",
"version": "0.3.3",
"version": "0.3.4",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
Loading
Loading