Skip to content

chore(deps): update dependencies to latest (safe batch) - #2333

Merged
vitbokisch merged 4 commits into
mainfrom
chore/dependency-updates
Jul 16, 2026
Merged

chore(deps): update dependencies to latest (safe batch)#2333
vitbokisch merged 4 commits into
mainfrom
chore/dependency-updates

Conversation

@vitbokisch

@vitbokisch vitbokisch commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Update dependencies to latest — safe batch (patch/minor, range-allowed)

~140 declaration bumps across ~90 package.json files + lockfile. All bumps are patch/minor within already-declared caret ranges. A second PR (#2335, green) covers the riskier range-blocked set (oxc family, oxfmt, codemirror overrides). vite was attempted and HELD BACK after a CI bisect — see below.

Updated (highlights)

Dep From → To Class Where
vitest / @vitest/{browser,browser-playwright,coverage-v8} 4.1.9 → 4.1.10 patch all test workspaces
oxlint 1.72.0 → 1.74.0 minor root (see note below)
rolldown 1.1.3 → 1.2.0 minor build tooling
@tiptap/{core,pm,starter-kit,react} 3.27.x → 3.28.0 minor @pyreon/rich-text runtime deps
@codemirror/lang-markdown NOT here (codemirror family → riskier PR)
ws 8.21.0 → 8.21.1 patch @pyreon/sync runtime dep
shiki 4.3.0 → 4.3.1 patch @pyreon/zero-content runtime dep
@clack/prompts 1.6.0 → 1.7.0 minor @pyreon/create-zero runtime dep
@types/node, @changesets/cli, unhead family, beasties, markdown-it, @types/chrome, @sveltejs/vite-plugin-svelte, hono, next, react-router, vue-router, @tanstack/react-router patch/minor dev various

Vite coherence override: stays at 8.0.16 (byte-equal to main) — see the held-back table below.

Competitor/bench deps (fair-benching wants latest): solid-js 1.9.14, svelte 5.56.5, vue 3.5.40, preact 10.29.7, jotai 2.20.2, xstate 5.32.5, i18next 26.3.6, arktype 2.2.3, @tanstack/{react-form,form-core} 1.33.2, react-hook-form 7.81.0, @casl/ability 7.0.1, mobx-state-tree 7.3.1, @preact/signals-core 1.14.4. ⚠️ Benchmark standings may shift on the next full bench run — correctness gates are green; full benches deliberately NOT re-run here (out of scope).

oxlint 1.74 fallout (fixed here): the new import/namespace rule flagged 7 lines in server-only-stubs.types.test.ts — a file that deliberately accesses ABSENT namespace members (the absence IS the assertion, paired with @ts-expect-error). Suppressed file-scoped with rationale; lint ratchet back to 0.

Held back after CI bisect (the real culprit — corrected attribution)

Dep Attempted Verdict
vite 8.0.16 → 8.1.5 HELD at 8.0.16. vite (rolldown-vite) 8.1.x deterministically breaks @pyreon/zero-content's compiled-JSX test pipeline in BOTH happy-dom and real Chromium (8 specs: <Example> async-loader mount, share-key signal contract, <Callout> rich children) — the two red required checks. Clean-layout bisect (fresh install per step, vitest→vite link verified via readlink): 8.1.5+vitest4.1.9 FAIL / 8.0.16+4.1.9 PASS / 8.0.16+4.1.10 PASS. Only zero-content is affected; root-causing the vite 8.1 transform interaction is a tracked follow-up. Override + declarations byte-equal to main.
vitest family 4.1.9 → 4.1.10 RESTORED — innocent. The interim commit blamed vitest; that bisect was confounded by bun's incremental-install stale layout (the on-disk vitest kept linking vite 8.0.16 while the lockfile said 8.1.5, so the vite variable never flipped locally). Verified clean: vitest 4.1.10 + vite 8.0.16 = 743/743 node + 37/37 Chromium.

Bisect-hygiene lesson (recorded in the commit): never trust an incremental bun layout during a version bisect — bun leaves stale peer-hash dirs in node_modules/.bun; verify the resolved link (readlink) or clean-install per step.

Pinned — verified, deliberately NOT bumped

Pin Value Why it holds
typescript >=5.0.0 <7.0.0 (6.0.3 installed) TS7 removed the classic Compiler API (createSourceFile/ScriptTarget) — the ESNext-crash class; cap verified in compiler/mcp/cli ranges
@tanstack/query-core override 5.101.2 Adapters must wrap the SAME core; 5.101.2 IS current latest — nothing forgone
@tanstack/virtual-core override 3.17.4 Same class; already latest
zod override 4.4.3 Tree-wide single zod; already latest
NPM_PIN (scripts/publish.ts) 11.16.0 Proven OIDC+provenance publisher; bump requires a deliberate dry-run rehearsal — untouched
.bun-version 1.3.14 = current latest stable bun (verified against npm dist-tags + GitHub releases) — nothing to flag
peerDependencies ranges all Left permissive (>=, *) — narrowing a peer is a breaking change for consumers
contrib/krausest/pyreon-keyed ^8.0.0 Staged upstream submission; range already admits latest — no churn

Deferred to the riskier follow-up PR

Dep From → To Why deferred
oxc-parser / oxc-transform / @oxc-project/types 0.138.0 → 0.140.0 0.x minor of the compiler/lint parser — breaking-capable AST changes; needs the compiler fuzz + native-equivalence + lint suites as its own gate
oxfmt 0.57.0 → 0.59.0 0.x minor of the formatter; potential formatting-output drift
@codemirror/state / view overrides 6.6.0/6.43.0 → 6.7.1/6.43.6 The coherence override held these back in #1959; bumping the override is now structurally coherent but needs @pyreon/code's suite as its own gate

Verification

  • bun run validate-fast15/15 gates (incl. changeset + both lint ratchets)
  • bun run typecheck — tree-wide clean (exit 0, zero TS errors)
  • bun run verify-modes27/27 example × mode cells (re-run on the final tree, vite 8.0.16)
  • Tests: reactivity 726, core 602, compiler 1944 (native-equivalence + differential fuzz), validate 711 (arktype 2.2.3 differential fuzz green), query 246, table 69, rich-text 18, sync 142 (one ws-relay parallel-load flake, clean on rerun); full zero cell on the final combination: zero 1679, zero-cli 21, create-zero 103, zero-content 743 node + 37 real-Chromium
  • Full lib build (bootstrap) green — 69 packages under rolldown 1.2.0
  • Changeset added (patch) for the 6 published packages with runtime-dep bumps

🤖 Generated with Claude Code

Range-allowed patch/minor bumps across 93 package.json files + lockfile:

- vite 8.0.16 -> 8.1.5 (tree-wide coherence override bumped too;
  vitest 4.1.10 accepts vite ^8.0.0 so the pairing stays coherent)
- vitest family 4.1.9 -> 4.1.10 (vitest, @vitest/browser,
  @vitest/browser-playwright, @vitest/coverage-v8)
- oxlint 1.72 -> 1.74 (one new import/namespace finding suppressed
  with rationale in server-only-stubs.types.test.ts — the file
  deliberately accesses absent namespace members; that absence IS
  the assertion)
- rolldown 1.1.3 -> 1.2.0 (full 69-package lib build green)
- runtime deps of published packages (changeset added): @tiptap/*
  3.28.0, ws 8.21.1, shiki 4.3.1, @clack/prompts 1.7.0, vite ^8.1.5
- competitor/bench deps to latest for fair benching: solid-js,
  svelte, vue, preact, jotai, xstate, i18next, arktype,
  @tanstack/{react-form,form-core,react-router}, react-hook-form,
  @casl/ability, mobx-state-tree, @preact/signals-core, hono, next,
  react-router, vue-router. Bench standings
  may shift on the next full bench run (correctness gates green;
  full benches out of scope here).

NOT bumped (deliberate pins, verified still in force):
- typescript >=5.0.0 <7.0.0 (TS7 removed the classic Compiler API)
- @tanstack/query-core 5.101.2 override (already latest)
- @tanstack/virtual-core / zod overrides (already latest)
- NPM_PIN 11.16.0 in scripts/publish.ts (deliberate publisher pin)
- .bun-version 1.3.14 (= current latest stable; nothing to flag)
- oxc-parser/oxc-transform/@oxc-project/types 0.138 -> 0.140 and
  oxfmt 0.57 -> 0.59 and codemirror overrides: split to a separate
  riskier PR
- contrib/krausest/pyreon-keyed left untouched (staged upstream
  submission; its ^8.0.0 already admits latest)
- peerDependencies ranges untouched (narrowing a peer is breaking)

Verified: validate-fast 15/15; typecheck tree-wide clean;
verify-modes 27/27; tests: reactivity 726, core 602, compiler 1944
(native-equivalence + fuzz), validate 711 (arktype 2.2.3 differential
fuzz green), query 246, table 69, rich-text 18, sync 142 (one
ws-relay parallel-load flake, clean on rerun), zero 1679.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vitbokisch
vitbokisch enabled auto-merge (squash) July 16, 2026 08:20
@github-actions

Copy link
Copy Markdown
Contributor

📦 Bundle size diff

No packages changed size.

64 packages measured · diff against base /tmp/base.json.

vitbokisch and others added 3 commits July 16, 2026 10:42
… <Example>

vitest 4.1.10 (+ @vitest/browser, @vitest/browser-playwright,
@vitest/coverage-v8) deterministically fails 8 @pyreon/zero-content
specs in BOTH the happy-dom suite (components.test.tsx Callout
rich-children, example.browser.test.tsx Example mount + all share-key
specs) AND the real-Chromium harness — the exact two red required
checks on this PR (test (zero) + Test (browser)).

Bisect-verified in both directions:
- vite 8.0.16 + vitest 4.1.10 -> FAIL (8 specs)  [vite exonerated]
- vite 8.0.16 + vitest 4.1.9  -> PASS
- vite 8.1.5  + vitest 4.1.9  -> PASS 743/743 node + 37/37 Chromium

v4.1.10 ships exactly two fixes; the VM deps-optimizer
encoded-URI module-resolve change (vitest-dev/vitest#10661) is the
plausible interaction with <Example>'s dynamic loader registry.
Root-causing vitest internals is out of scope for a deps PR — the
single bump is reverted (declarations restored to origin/main
values), everything else in the batch stays.

Re-verified on the final combination: zero cell green (zero 1679,
zero-cli 21, create-zero 103, zero-content 743 + 37 browser),
validate-fast 15/15.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The previous commit blamed vitest 4.1.10 — that bisect was CONFOUNDED
by bun's incremental-install stale layout: during every local "pass"
the on-disk vitest instance still linked vite@8.0.16 while the
lockfile said 8.1.5 (verified via readlink on the .bun peer-hash
dirs), so the vite variable never actually flipped. CI installs
fresh from the lockfile, which is why test (zero) + Test (browser)
stayed red on the vitest-hold head.

Clean-layout bisect (node_modules moved aside + fresh install per
step, vitest->vite link verified via readlink each time):
- vite 8.1.5  + vitest 4.1.9  -> FAIL (zero-content 8 specs)
- vite 8.0.16 + vitest 4.1.9  -> PASS 743/743
- vite 8.0.16 + vitest 4.1.10 -> PASS 743/743 node + 37/37 Chromium

Culprit: vite (rolldown-vite) 8.1.x breaks @pyreon/zero-content's
compiled-JSX test pipeline in BOTH happy-dom and real Chromium
(<Example> async-loader mount, share-key signals, <Callout> rich
children) — the only package affected; root-causing the vite 8.1
transform interaction is a follow-up, out of scope for a deps PR.

This commit: vite override + declarations restored to 8.0.16
(byte-equal to main), vitest family bump RESTORED to 4.1.10
(innocent), changeset narrowed (zero/zero-cli no longer carry a
runtime dep change).

Re-verified on the final tree with a CLEAN install: zero-content
743 node + 37 Chromium, zero 1679, zero-cli 21, create-zero 103,
validate-fast 15/15, verify-modes 27/27.

Lesson recorded: never trust an incremental bun layout during a
version bisect — verify the RESOLVED link (readlink into
node_modules/.bun) or clean-install per step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The vite-vs-vitest misattribution on this PR is exactly the class the
rules files exist to prevent recurring: bun's incremental install left
stale peer-hash dirs so the on-disk resolution disagreed with the
lockfile, and every local bisect data point silently tested the wrong
version. Recipe: clean layout per step + readlink-verify the resolved
link before trusting a run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vitbokisch
vitbokisch merged commit 30e0b0e into main Jul 16, 2026
98 checks passed
@vitbokisch
vitbokisch deleted the chore/dependency-updates branch July 16, 2026 10:22
vitbokisch added a commit that referenced this pull request Jul 16, 2026
The range-blocked 0.x bumps split out of the safe batch (#2333):

- oxc-parser / oxc-transform / @oxc-project/types 0.138.0 -> 0.140.0
  (the compiler + lint parser; 0.x minor = breaking-capable AST
  changes, hence its own PR gated on the compiler's dual-backend
  equivalence + differential fuzz suites)
- oxfmt 0.57.0 -> 0.59.0 (formatter is NOT a CI gate; --check reports
  ~2170 files under BOTH versions, so the bump is style-neutral)
- @codemirror/state 6.6.0 -> 6.7.1 + @codemirror/view 6.43.0 ->
  6.43.6 + @codemirror/lang-markdown 6.5.1 — held back in #1959 for
  ecosystem coherence; the tree-wide overrides now bump in LOCKSTEP
  with @pyreon/code's direct deps, so dual-version type conflicts
  are structurally impossible (lockfile resolves a single copy;
  every lang-* caret range admits 6.7.x)

Changeset (patch): @pyreon/compiler, @pyreon/lint, @pyreon/code —
runtime dependency bumps in published packages.

Verified: validate-fast 15/15; typecheck tree-wide clean; full
69-package lib build green; tests: compiler 1944 (native-equivalence
+ fuzz under oxc 0.140), lint 1122, native-compiler 2037, code 172
node + 23 real-Chromium browser (codemirror load-bearing gate).

Note: an in-place bump in a live worktree can leave stale
peer-hash dirs in node_modules/.bun (transient dual-version
typecheck noise) — a clean install from this lockfile resolves a
single codemirror copy; CI is unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
vitbokisch added a commit that referenced this pull request Jul 16, 2026
…2335)

## Update oxc family + codemirror overrides (riskier, range-blocked set)

Companion to #2333 (safe batch). These bumps were **range-blocked** (0.x
carets don't admit the next minor) and are breaking-capable by nature,
so they get their own PR with their own gates.

⚠️ **Merge order:** this PR and #2333 both touch `bun.lock` + root
`package.json` — merge **sequentially** and rebase the second one.

### Updated

| Dep | From → To | Where | Gate that proves it |
|---|---|---|---|
| oxc-parser | 0.138.0 → 0.140.0 | `@pyreon/compiler`, `@pyreon/lint`,
`@pyreon/native-compiler` (private), root dev, examples/experiments |
compiler **1944** tests incl. cross-backend native-equivalence
(byte-identical oracle) + 300-seed differential fuzz; lint **1122**;
native-compiler **2037** |
| @oxc-project/types | 0.138.0 → 0.140.0 | `@pyreon/lint` | lint suite +
tree typecheck |
| oxc-transform | 0.138.0 → 0.140.0 | root dev | tree typecheck + full
build |
| oxfmt | 0.57.0 → 0.59.0 | root dev | style-neutral: `--check` reports
~2170 files under BOTH 0.57 and 0.59 (formatter is not a CI gate) |
| @codemirror/state | 6.6.0 → 6.7.1 | override + `@pyreon/code` dep |
code **172** node + **23 real-Chromium** browser tests |
| @codemirror/view | 6.43.0 → 6.43.6 | override + `@pyreon/code` dep |
same |
| @codemirror/lang-markdown | 6.5.0 → 6.5.1 | `@pyreon/code`
optionalDependency | same |

### Why codemirror is safe to bump now

#1959 held codemirror back: bumping only direct deps produced
dual-version `SelectionRange`/`EditorView` type conflicts against the
~18 transitive `lang-*` pins. This PR bumps the **tree-wide coherence
overrides in lockstep** with the direct deps — the lockfile resolves
exactly ONE `@codemirror/state`/`view` copy (verified), and every
`lang-*` caret range (`^6.0.0` state / `^6.17.0` view) admits the new
versions. Dual-version conflicts are structurally impossible.

(Local footnote: an in-place bump in a live worktree can leave stale
peer-hash dirs in `node_modules/.bun`, producing transient dual-version
typecheck noise until a clean re-install — CI installs fresh from the
lockfile and never sees it.)

### Verification

- `bun run validate-fast` — **15/15 gates**
- `bun run typecheck` — tree-wide clean (exit 0)
- Full lib build — **73/73** package build invocations exit 0
- Compiler **1944** (native-equivalence + differential fuzz under
oxc-parser 0.140 — the byte-identical dual-backend oracle is the
load-bearing gate for a parser bump)
- Lint **1122**, native-compiler **2037**, code **172 node + 23
real-Chromium** (the browser suite is the codemirror load-bearing gate
per anti-patterns: `foldAll`/minimap classes only surface in real
Chromium)
- Changeset (patch) for `@pyreon/compiler`, `@pyreon/lint`,
`@pyreon/code`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
vitbokisch added a commit that referenced this pull request Jul 16, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @pyreon/hooks@0.47.0

### Minor Changes

- [#2344](https://github.com/pyreon/pyreon/pull/2344)
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Add
`useBiometrics()` — a biometric authentication gate (Face ID / Touch ID
on iOS `LAContext`, BiometricPrompt on Android, feature-detected on the
web). The FIRST hook with an ASYNC RESULT: `authenticate(reason)`
returns a `Promise<boolean>` you `await`. Under PMTC it lowers to the
native biometric APIs and the async-await lowering wraps the awaiting
handler in a Swift `Task { … }` / Kotlin `pyreonAsyncScope.launch { …
}`. On the web v1 a real assertion is a WebAuthn ceremony (needs a
server-issued challenge + a registered credential), so `authenticate`
resolves `false` and `isAvailable()` feature-detects
`window.PublicKeyCredential` — native is the primary target.

- [#2325](https://github.com/pyreon/pyreon/pull/2325)
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Add
`useAppState()` — a reactive app-lifecycle phase hook (`'active'` |
`'inactive'` | `'background'`).

On the web it tracks `document` visibility + focus; it also compiles to
native via the Pyreon Multi-Target Compiler — `const state =
useAppState()` lowers to a `PyreonAppState` container (SwiftUI
`@Observable` on iOS via `UIApplication` lifecycle notifications,
Compose `MutableState` on Android via an app-injected
`ProcessLifecycleOwner` source), read as `state()` from one shared
source. Use it to pause a live poll while backgrounded or dim UI while
inactive.

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
## @pyreon/testing@0.47.0

### Minor Changes

- [#2351](https://github.com/pyreon/pyreon/pull/2351)
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - feat(testing):
library-specific helper subpaths — `/form`, `/ui`, `/router`, `/store`,
`/i18n`, `/toast`, `/query` — each gated on its library as an OPTIONAL
peer (the main entry stays dependency-light).

- `@pyreon/testing/form` — `renderForm(() => useForm(...))`
(renderHook-style headless harness: `fill` via setFieldValue+touched,
`submit` awaits the full handleSubmit pipeline), `fillForm(scope,
values)`/`submitForm(scope)` (REAL rendered forms, fields located by
accessible LABEL, driven through real input/blur/submit events),
`expectForm(form)` fluent assertions
(`toBeValid`/`toBeInvalid`/`toHaveFieldError`/`toHaveNoFieldError`/`toBeDirty`/`toBePristine`/`toHaveValues`).
- `@pyreon/testing/ui` — `renderWithTheme(ui, { theme, mode })`
(PyreonUI wrap + reactive `setMode`, no remount),
`expectComputedStyle(el, decls)` + `normalizeCssValue`
(computed-serialization value normalization —
`'red'`/`'#ff0000'`/`'rgb(255, 0, 0)'` compare equal in a real browser;
happy-dom limits documented honestly).
- `@pyreon/testing/router` — `await renderWithRouter(ui, { routes, route
})` (initial route SETTLED before mount: lazy components + loaders
pre-resolved via `router.preload`, so `useLoaderData()` is populated on
first render; `navigate()` resolves after guards+loaders+DOM commit with
the `NavigationResult`), `expectRouter(router).toBeAt('/posts/:id')`
(pattern OR concrete path).
- `@pyreon/testing/store` — `installStoreReset()` (afterEach
`resetAllStores`) + `withFreshStore(useStore, fn)` (scoped
guaranteed-fresh singleton, disposed after — sync/async/throw-safe) +
re-exported `resetStore`/`resetAllStores`.
- `@pyreon/testing/i18n` — `renderWithI18n(ui, { locale, messages })`
with reactive `setLocale` + a bound `t()`.
- `@pyreon/testing/toast` —
`expectToast`/`findToast`/`getToasts`/`clearToasts` (store-level: work
headless or with a mounted `<Toaster>`; type filter + soft-dismiss
awareness).
- `@pyreon/testing/query` — `renderWithQueryClient(ui, { client? })` +
`createTestQueryClient()` (fresh isolated client per test, `retry:
false`, `gcTime: Infinity` — the TanStack testing convention) +
`setQueryData` passthrough.

Every render harness accepts a `wrapper` option so providers COMPOSE
(theme+router+query together) — deliberately no mega `renderApp`.
Assertions follow the package's fluent convention (`expectSignal`
precedent), never `expect.extend`.

`@pyreon/store` fix (load-bearing for the isolation helpers, and a
standalone leak fix): `resetStore(id)` / `resetAllStores()` now DISPOSE
the store — stop its effectScope (setup/plugin computeds + effects) and
run plugin cleanups — before dropping the registry entry. Previously a
reset orphaned the entry while its scope kept firing on external signals
forever (leak class B). Foreign registry values (custom
`setRegistryProvider`) degrade to the old plain delete.

### Patch Changes

- [#2341](https://github.com/pyreon/pyreon/pull/2341)
[`6a3fc45`](https://github.com/pyreon/pyreon/commit/6a3fc45ac6cb94e02066a3a0de8bd518564bd5ab)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Fix the
`/matchers` and `/vitest` entries shipping broken:

- `lib/matchers.js` was an EMPTY module — the library build's
`treeshake.moduleSideEffects: false` silently dropped the bare
side-effect `import '@testing-library/jest-dom/vitest'`, so `import
'@pyreon/testing/matchers'` registered nothing. Registration is now an
explicit `expect.extend` on bindings imported from `vitest` +
`@testing-library/jest-dom/matchers` (bound imports cannot be
tree-shaken), and a missing optional peer now fails loudly at module
resolution instead of silently no-opping.
- `@pyreon/testing/vitest` registered cleanup via
`globalThis.afterEach`, which silently no-ops for projects running
without `globals: true` (the vitest default) — containers leaked across
tests and surfaced as confusing "Found multiple elements" failures.
`afterEach` is now imported from `vitest`, which works regardless of the
`globals` setting.
- Both entries' shipped `.d.ts` were a bare `export {}` — the jest-dom
`Assertion` type augmentation never reached published consumers. Each
entry now declares the vitest module augmentation explicitly, and it
survives into the built types.
- `package.json` `sideEffects` now lists the two registration entries so
consumer bundlers don't drop the bare imports either; `vitest` is
declared as an optional peer.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7),
[`577f40f`](https://github.com/pyreon/pyreon/commit/577f40fc3282672818c8b31a4f595b1dbb295d19)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/store@0.47.0
  - @pyreon/toast@0.47.0
  - @pyreon/form@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/router@0.47.0
  - @pyreon/i18n@0.47.0
  - @pyreon/query@0.47.0
  - @pyreon/ui-core@0.47.0
## @pyreon/compiler@0.47.0

### Patch Changes

- [#2335](https://github.com/pyreon/pyreon/pull/2335)
[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update
parser/editor runtime dependencies: oxc-parser + @oxc-project/types
0.138.0 → 0.140.0 (compiler dual-backend equivalence + differential fuzz
green), @codemirror/state 6.6.0 → 6.7.1 / @codemirror/view 6.43.0 →
6.43.6 / @codemirror/lang-markdown 6.5.1 (tree-wide coherence overrides
bumped in lockstep; real-Chromium editor suite green). No API changes.
## @pyreon/core@0.47.0

### Patch Changes

- [#2342](https://github.com/pyreon/pyreon/pull/2342)
[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Widen the
reactive-accessor form of 8 ARIA attribute types to permit an
`undefined` return — `aria-label` (the reported gap) plus `aria-hidden`
/ `aria-disabled` / `aria-expanded` / `aria-selected` / `aria-checked` /
`aria-required` / `aria-readonly`. The runtime already removes the
attribute when a dynamic value resolves to `undefined`, and
`aria-x={cond ? 'true' : undefined}` is the documented recommended shape
— but these accessors were typed `() => T` (no undefined),
inconsistently with the neighbouring `role` / `aria-describedby` /
`aria-current` / `aria-invalid`, forcing `?? ''` workarounds for a
purely type-level gap. Type-only; no runtime change.

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
## @pyreon/head@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/runtime-server@0.47.0
## @pyreon/primitives@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/router@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/runtime-dom@0.47.0

### Patch Changes

- [#2347](https://github.com/pyreon/pyreon/pull/2347)
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Fix the
compiled-template attribute path stringifying a function-valued
attribute into the DOM: `aria-selected={active}` — a bare identifier
holding an accessor — rendered the literal closure source
(`aria-selected="() => …"`), because `_setAttr`/`applyAttrProp` had no
function branch while the `h()` path (`applyProp`) treats callables as
reactive accessors and SSR resolves them (also an SSR↔client hydration
mismatch). `applyAttrProp` now resolves function values first; when the
compiler emits the usual `_bind(() => _setAttr(…))` wrapper the call
runs inside the tracked frame, so signal reads inside the accessor stay
fully live.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/runtime-server@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/server@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/head@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/router@0.47.0
  - @pyreon/runtime-server@0.47.0
## @pyreon/a11y@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/router@0.47.0
## @pyreon/charts@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/code@0.47.0

### Patch Changes

- [#2335](https://github.com/pyreon/pyreon/pull/2335)
[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update
parser/editor runtime dependencies: oxc-parser + @oxc-project/types
0.138.0 → 0.140.0 (compiler dual-backend equivalence + differential fuzz
green), @codemirror/state 6.6.0 → 6.7.1 / @codemirror/view 6.43.0 →
6.43.6 / @codemirror/lang-markdown 6.5.1 (tree-wide coherence overrides
bumped in lockstep; real-Chromium editor suite green). No API changes.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/dnd@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/document@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/feature@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@0.47.0
  - @pyreon/table@0.47.0
  - @pyreon/store@0.47.0
  - @pyreon/form@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/query@0.47.0
  - @pyreon/validation@0.47.0
## @pyreon/flow@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/form@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/validation@0.47.0
## @pyreon/hotkeys@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/i18n@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/machine@0.47.0

### Patch Changes

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
## @pyreon/permissions@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/query@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/rich-text@0.47.0

### Patch Changes

- [#2333](https://github.com/pyreon/pyreon/pull/2333)
[`30e0b0e`](https://github.com/pyreon/pyreon/commit/30e0b0e7bad325bd12cacb2331a93f1968657a57)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update external
runtime dependencies to latest (safe batch): @tiptap/\* 3.28.0, ws
8.21.1, shiki 4.3.1, @clack/prompts 1.7.0. No API changes. (vite stays
held at 8.0.16 tree-wide — 8.1.x breaks the zero-content compiled-JSX
test pipeline; see PR for the bisect.)

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/rx@0.47.0

### Patch Changes

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
## @pyreon/state-tree@0.47.0

### Patch Changes

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
  - @pyreon/validation@0.47.0
## @pyreon/storage@0.47.0

### Patch Changes

- [#2328](https://github.com/pyreon/pyreon/pull/2328)
[`0f6e3b3`](https://github.com/pyreon/pyreon/commit/0f6e3b3dba9758f0fc9eaf1a896a986d87d21d9a)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Benchmark
correction (no runtime change): the previously-documented "~1.4×
behind Zustand on the reactive-layer write" was a bench bug, not a real
loss —
the bench's Pyreon cell passed a localStorage-shaped shim to
`createStorage`
(which takes `StorageBackend {get,set,remove}`), so every write threw a
silently-swallowed TypeError and the row measured throw/catch machinery
(~600ns) instead of the real ~35ns write path. With the wiring fixed and
the
correctness gate now asserting write-through-to-storage,
`@pyreon/storage`
wins every row: write 12× / write→subscriber 9× / create 2.1× faster
than
Zustand persist, 9–50× vs Jotai `atomWithStorage`, read CI-tied at the
~3ns
  floor.
- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
## @pyreon/store@0.47.0

### Patch Changes

- [#2351](https://github.com/pyreon/pyreon/pull/2351)
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - feat(testing):
library-specific helper subpaths — `/form`, `/ui`, `/router`, `/store`,
`/i18n`, `/toast`, `/query` — each gated on its library as an OPTIONAL
peer (the main entry stays dependency-light).

- `@pyreon/testing/form` — `renderForm(() => useForm(...))`
(renderHook-style headless harness: `fill` via setFieldValue+touched,
`submit` awaits the full handleSubmit pipeline), `fillForm(scope,
values)`/`submitForm(scope)` (REAL rendered forms, fields located by
accessible LABEL, driven through real input/blur/submit events),
`expectForm(form)` fluent assertions
(`toBeValid`/`toBeInvalid`/`toHaveFieldError`/`toHaveNoFieldError`/`toBeDirty`/`toBePristine`/`toHaveValues`).
- `@pyreon/testing/ui` — `renderWithTheme(ui, { theme, mode })`
(PyreonUI wrap + reactive `setMode`, no remount),
`expectComputedStyle(el, decls)` + `normalizeCssValue`
(computed-serialization value normalization —
`'red'`/`'#ff0000'`/`'rgb(255, 0, 0)'` compare equal in a real browser;
happy-dom limits documented honestly).
- `@pyreon/testing/router` — `await renderWithRouter(ui, { routes, route
})` (initial route SETTLED before mount: lazy components + loaders
pre-resolved via `router.preload`, so `useLoaderData()` is populated on
first render; `navigate()` resolves after guards+loaders+DOM commit with
the `NavigationResult`), `expectRouter(router).toBeAt('/posts/:id')`
(pattern OR concrete path).
- `@pyreon/testing/store` — `installStoreReset()` (afterEach
`resetAllStores`) + `withFreshStore(useStore, fn)` (scoped
guaranteed-fresh singleton, disposed after — sync/async/throw-safe) +
re-exported `resetStore`/`resetAllStores`.
- `@pyreon/testing/i18n` — `renderWithI18n(ui, { locale, messages })`
with reactive `setLocale` + a bound `t()`.
- `@pyreon/testing/toast` —
`expectToast`/`findToast`/`getToasts`/`clearToasts` (store-level: work
headless or with a mounted `<Toaster>`; type filter + soft-dismiss
awareness).
- `@pyreon/testing/query` — `renderWithQueryClient(ui, { client? })` +
`createTestQueryClient()` (fresh isolated client per test, `retry:
false`, `gcTime: Infinity` — the TanStack testing convention) +
`setQueryData` passthrough.

Every render harness accepts a `wrapper` option so providers COMPOSE
(theme+router+query together) — deliberately no mega `renderApp`.
Assertions follow the package's fluent convention (`expectSignal`
precedent), never `expect.extend`.

`@pyreon/store` fix (load-bearing for the isolation helpers, and a
standalone leak fix): `resetStore(id)` / `resetAllStores()` now DISPOSE
the store — stop its effectScope (setup/plugin computeds + effects) and
run plugin cleanups — before dropping the registry entry. Previously a
reset orphaned the entry while its scope kept firing on external signals
forever (leak class B). Foreign registry values (custom
`setRegistryProvider`) degrade to the old plain delete.

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
  - @pyreon/validation@0.47.0
## @pyreon/sync@0.47.0

### Patch Changes

- [#2333](https://github.com/pyreon/pyreon/pull/2333)
[`30e0b0e`](https://github.com/pyreon/pyreon/commit/30e0b0e7bad325bd12cacb2331a93f1968657a57)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update external
runtime dependencies to latest (safe batch): @tiptap/\* 3.28.0, ws
8.21.1, shiki 4.3.1, @clack/prompts 1.7.0. No API changes. (vite stays
held at 8.0.16 tree-wide — 8.1.x breaks the zero-content compiled-JSX
test pipeline; see PR for the bisect.)

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
## @pyreon/table@0.47.0

### Patch Changes

- [#2345](https://github.com/pyreon/pyreon/pull/2345)
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Bench-only: both
wall-clock benches now measure the REAL compiled path (`pyr-tpl` — the
fixture compiled through `transformJSX` + esbuild automatic JSX runtime,
what vite-plugin apps ship) alongside the hand-`h()` transparency
column, with untimed real-DOM correctness gates on every cell. No
shipped runtime code changed. Measured outcome: virtual's steady-state
scroll is 1.3× faster than react-virtual on the compiled path; table's
~2× mount gap is confirmed as per-cell reactive-binding setup (the
compiled fixture closes only ~10% of it), not an h() harness artifact.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/toast@0.47.0

### Patch Changes

- [#2349](https://github.com/pyreon/pyreon/pull/2349)
[`577f40f`](https://github.com/pyreon/pyreon/commit/577f40fc3282672818c8b31a4f595b1dbb295d19)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Bench-only: the
`bench:commit` create-throughput row is relabeled to what it actually
measures — COLD-START ingest (fresh process + 10-call warmup runs
JIT-untired code; measured decay ~3.5µs → ~0.22µs deep-warm). A warmed
cross-lib burst is structurally impossible (sonner has no synchronous
hard-reset → accumulation skew), so Pyreon's steady-state create is
printed as a disclosure line via a new `tp:pyreon-warm` worker, never as
a verdict. No shipped runtime code changed.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/url-state@0.47.0

### Patch Changes

- [#2327](https://github.com/pyreon/pyreon/pull/2327)
[`13a4910`](https://github.com/pyreon/pyreon/commit/13a49102851145f10e0b49b04947d1218c7efe59)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - perf(url-state):
leaner number deserialize + a fairer, statistically-honest nuqs bench

- The inferred number serializer's `deserialize` drops both call sites
on the hot
path — `+raw` (the same strict ToNumber as `Number(raw)`) and the `n ===
n`
self-compare NaN check (NaN is the only value that `!==` itself).
Behavior is
byte-identical: `'' → 0`, whitespace/hex per ToNumber, `NaN → default`.
- The nuqs head-to-head bench is upgraded to the repo's strongest
protocol:
per-(op × impl) process isolation (×3 pooled), bootstrap CI95 + 🤝 tie
markers,
and a parser-class disclosure — the old bench compared nuqs's
`parseAsInteger`
(a cheaper integer-prefix scan) against Pyreon's float parser. Both
peers are
now measured: vs `parseAsInteger` (the `?page=1` use-case peer) the
scalar rows
are statistical ties; vs `parseAsFloat` (the semantics-matched peer)
Pyreon
    wins outright. Array/boolean rows remain 2.3–6.2× wins.

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
## @pyreon/validate@0.47.0

### Patch Changes

- [#2334](https://github.com/pyreon/pyreon/pull/2334)
[`bfaa59d`](https://github.com/pyreon/pyreon/commit/bfaa59df337af89ebf2a8521f6de4e6a294a9984)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - JIT-compile
discriminated-union roots. `tryCompileJit` now accepts a plain
`s.discriminatedUnion(...)` root (and inlines nested DU
fields/elements): the discriminant dispatch compiles to a raw-value
`switch` when every tag is literal-bakeable (`===` is exactly the
interpreter's `Map.get` SameValueZero for everything except NaN — a NaN
tag keeps the captured-`Map` small-int dispatch), the matched member's
object body inlines through the object codegen with the already-read
discriminant preset (single read, no re-check), and non-inlinable
members (own checks / strict / catchall) fall back to their `_runInto`
closures per case, async members included. Additionally,
all-inline-primitive object bodies now construct their strip-clone as
ONE object literal (final shape in a single allocation — no empty-object
+ per-key structure transitions). Interpreter-identical semantics locked
by a new DU differential suite (NaN tags, enum discriminants,
`__proto__` fields, fallback members, async members, nested DUs) plus
DU-root arms in the partial-inline and async differential fuzzers.

- Updated dependencies []:
  - @pyreon/reactivity@0.47.0
  - @pyreon/validation@0.47.0
## @pyreon/virtual@0.47.0

### Patch Changes

- [#2345](https://github.com/pyreon/pyreon/pull/2345)
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Bench-only: both
wall-clock benches now measure the REAL compiled path (`pyr-tpl` — the
fixture compiled through `transformJSX` + esbuild automatic JSX runtime,
what vite-plugin apps ship) alongside the hand-`h()` transparency
column, with untimed real-DOM correctness gates on every cell. No
shipped runtime code changed. Measured outcome: virtual's steady-state
scroll is 1.3× faster than react-virtual on the compiled path; table's
~2× mount gap is confirmed as per-cell reactive-binding setup (the
compiled fixture closes only ~10% of it), not an h() harness artifact.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/cli@0.47.0

### Patch Changes

- Updated dependencies
[[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec)]:
  - @pyreon/compiler@0.47.0
  - @pyreon/lint@0.47.0
## @pyreon/lint@0.47.0

### Patch Changes

- [#2335](https://github.com/pyreon/pyreon/pull/2335)
[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update
parser/editor runtime dependencies: oxc-parser + @oxc-project/types
0.138.0 → 0.140.0 (compiler dual-backend equivalence + differential fuzz
green), @codemirror/state 6.6.0 → 6.7.1 / @codemirror/view 6.43.0 →
6.43.6 / @codemirror/lang-markdown 6.5.1 (tree-wide coherence overrides
bumped in lockstep; real-Chromium editor suite green). No API changes.

- Updated dependencies
[[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec)]:
  - @pyreon/compiler@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/mcp@0.47.0

### Patch Changes

- Updated dependencies
[[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec)]:
  - @pyreon/compiler@0.47.0
## @pyreon/preact-compat@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/react-compat@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/solid-compat@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/storybook@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/svelte-compat@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/typescript@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
## @pyreon/vite-plugin@0.47.0

### Patch Changes

- Updated dependencies
[[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/compiler@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/vue-compat@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/attrs@0.47.0

### Patch Changes

- [#2340](https://github.com/pyreon/pyreon/pull/2340)
[`b6e51ae`](https://github.com/pyreon/pyreon/commit/b6e51aebee2a509867f5b9a987717cda814f845b)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Fix dev-mode
`data-attrs` attachment freezing every reactive prop: the debug
attribute was merged with an object spread (`{ ...filteredProps,
'data-attrs': name }`), which fires compiler-emitted getter props once
and collapses them to static snapshots — so attrs-wrapped components had
live props in production but dead props in dev/test. The merge now
copies descriptors via `mergeProps` from `@pyreon/core`, making dev
behavior identical to production plus the debug attribute.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/ui-core@0.47.0
## @pyreon/connector-document@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/document@0.47.0
## @pyreon/coolgrid@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
  - @pyreon/unistyle@0.47.0
## @pyreon/document-primitives@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/document@0.47.0
  - @pyreon/connector-document@0.47.0
  - @pyreon/elements@0.47.0
  - @pyreon/rocketstyle@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
  - @pyreon/unistyle@0.47.0
## @pyreon/elements@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/ui-core@0.47.0
  - @pyreon/unistyle@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/kinetic@0.47.0

### Patch Changes

- [#2350](https://github.com/pyreon/pyreon/pull/2350)
[`dfe2641`](https://github.com/pyreon/pyreon/commit/dfe2641aed4e595d580799b31b30e2392f3b8130)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - `nextFrame` now
batches all same-burst callbacks into ONE shared double-rAF (2 rAF
registrations for a 1000-child stagger instead of 2000) — measured −24%
wall on stagger-1000 in real Chromium, flipping it from a 1.27× loss vs
Motion One to a statistical tie, and widening the enter-500/stagger-300
wins. A callback registered after the batch's outer frame opens a NEW
batch (its "from" state still paints before the transition state
applies), the batch is identity-keyed to the scheduling
`requestAnimationFrame` (a swapped stub/polyfill can't strand
callbacks), and cancel now removes the callback from its batch —
effective in every phase, never touching batch siblings,
SSR/post-teardown safe by construction.

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/rocketstyle@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/styler@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
## @pyreon/ui-core@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/unistyle@0.47.0
## @pyreon/unistyle@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715)]:
  - @pyreon/core@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
## @pyreon/zero-cli@0.47.0

### Patch Changes

- Updated dependencies
[[`30e0b0e`](https://github.com/pyreon/pyreon/commit/30e0b0e7bad325bd12cacb2331a93f1968657a57)]:
  - @pyreon/create-zero@0.47.0
  - @pyreon/server@0.47.0
  - @pyreon/cli@0.47.0
  - @pyreon/zero@0.47.0
## @pyreon/create-zero@0.47.0

### Patch Changes

- [#2333](https://github.com/pyreon/pyreon/pull/2333)
[`30e0b0e`](https://github.com/pyreon/pyreon/commit/30e0b0e7bad325bd12cacb2331a93f1968657a57)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update external
runtime dependencies to latest (safe batch): @tiptap/\* 3.28.0, ws
8.21.1, shiki 4.3.1, @clack/prompts 1.7.0. No API changes. (vite stays
held at 8.0.16 tree-wide — 8.1.x breaks the zero-content compiled-JSX
test pipeline; see PR for the bisect.)
## @pyreon/meta@0.47.0

### Patch Changes

- Updated dependencies
[[`b6e51ae`](https://github.com/pyreon/pyreon/commit/b6e51aebee2a509867f5b9a987717cda814f845b),
[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`dfe2641`](https://github.com/pyreon/pyreon/commit/dfe2641aed4e595d580799b31b30e2392f3b8130),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e),
[`0f6e3b3`](https://github.com/pyreon/pyreon/commit/0f6e3b3dba9758f0fc9eaf1a896a986d87d21d9a),
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7),
[`577f40f`](https://github.com/pyreon/pyreon/commit/577f40fc3282672818c8b31a4f595b1dbb295d19),
[`13a4910`](https://github.com/pyreon/pyreon/commit/13a49102851145f10e0b49b04947d1218c7efe59)]:
  - @pyreon/attrs@0.47.0
  - @pyreon/code@0.47.0
  - @pyreon/hooks@0.47.0
  - @pyreon/kinetic@0.47.0
  - @pyreon/storage@0.47.0
  - @pyreon/table@0.47.0
  - @pyreon/virtual@0.47.0
  - @pyreon/store@0.47.0
  - @pyreon/toast@0.47.0
  - @pyreon/url-state@0.47.0
  - @pyreon/form@0.47.0
  - @pyreon/state-tree@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/charts@0.47.0
  - @pyreon/dnd@0.47.0
  - @pyreon/document@0.47.0
  - @pyreon/feature@0.47.0
  - @pyreon/flow@0.47.0
  - @pyreon/hotkeys@0.47.0
  - @pyreon/i18n@0.47.0
  - @pyreon/machine@0.47.0
  - @pyreon/permissions@0.47.0
  - @pyreon/query@0.47.0
  - @pyreon/rx@0.47.0
  - @pyreon/validation@0.47.0
  - @pyreon/connector-document@0.47.0
  - @pyreon/coolgrid@0.47.0
  - @pyreon/document-primitives@0.47.0
  - @pyreon/elements@0.47.0
  - @pyreon/kinetic-presets@0.47.0
  - @pyreon/rocketstyle@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
  - @pyreon/unistyle@0.47.0
## @pyreon/zero@0.47.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/compiler@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/meta@0.47.0
  - @pyreon/head@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/router@0.47.0
  - @pyreon/runtime-server@0.47.0
  - @pyreon/server@0.47.0
  - @pyreon/vite-plugin@0.47.0
  - @pyreon/sized-map@0.47.0
## @pyreon/zero-content@0.47.0

### Patch Changes

- [#2333](https://github.com/pyreon/pyreon/pull/2333)
[`30e0b0e`](https://github.com/pyreon/pyreon/commit/30e0b0e7bad325bd12cacb2331a93f1968657a57)
Thanks [@vitbokisch](https://github.com/vitbokisch)! - Update external
runtime dependencies to latest (safe batch): @tiptap/\* 3.28.0, ws
8.21.1, shiki 4.3.1, @clack/prompts 1.7.0. No API changes. (vite stays
held at 8.0.16 tree-wide — 8.1.x breaks the zero-content compiled-JSX
test pipeline; see PR for the bisect.)

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/head@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/router@0.47.0
  - @pyreon/zero@0.47.0
## @pyreon/compiler-darwin-arm64@0.47.0


## @pyreon/compiler-darwin-x64@0.47.0


## @pyreon/compiler-linux-arm64-gnu@0.47.0


## @pyreon/compiler-linux-arm64-musl@0.47.0


## @pyreon/compiler-linux-x64-gnu@0.47.0


## @pyreon/compiler-linux-x64-musl@0.47.0


## @pyreon/compiler-win32-x64-msvc@0.47.0


## @pyreon/reactivity@0.47.0


## @pyreon/sized-map@0.47.0


## @pyreon/validation@0.47.0


## @pyreon/kinetic-presets@0.47.0


## @pyreon/create-multiplatform@0.47.0


## @pyreon/example-chat@0.0.32

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`0f6e3b3`](https://github.com/pyreon/pyreon/commit/0f6e3b3dba9758f0fc9eaf1a896a986d87d21d9a),
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28),
[`577f40f`](https://github.com/pyreon/pyreon/commit/577f40fc3282672818c8b31a4f595b1dbb295d19),
[`13a4910`](https://github.com/pyreon/pyreon/commit/13a49102851145f10e0b49b04947d1218c7efe59)]:
  - @pyreon/core@1.0.0
  - @pyreon/hooks@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/storage@1.0.0
  - @pyreon/virtual@1.0.0
  - @pyreon/toast@1.0.0
  - @pyreon/url-state@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/state-tree@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-app@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-app-preact@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/preact-compat@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-app-react@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/react-compat@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-app-solid@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/solid-compat@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-app-vue@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/vue-compat@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-blog@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cpa-pw-dash@0.0.33

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/table@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/document@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/connector-document@1.0.0
  - @pyreon/document-primitives@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-cssvars-bench@0.0.20

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/ui-components@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/elements@1.0.0
  - @pyreon/rocketstyle@1.0.0
  - @pyreon/styler@1.0.0
  - @pyreon/ui-core@1.0.0
  - @pyreon/unistyle@1.0.0
  - @pyreon/perf-harness@0.13.2
  - @pyreon/ui-theme@0.13.34
## @pyreon/example-docs-pyreon@0.0.22

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`30e0b0e`](https://github.com/pyreon/pyreon/commit/30e0b0e7bad325bd12cacb2331a93f1968657a57),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@1.0.0
  - @pyreon/zero-content@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/vite-plugin@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-form-bench@0.0.14

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/validation@1.0.0
## @pyreon/example-hn-clone@0.0.32

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`a5163c8`](https://github.com/pyreon/pyreon/commit/a5163c8f2cedd56fe37a4fce0b1f87fe7f4061ec),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`dfe2641`](https://github.com/pyreon/pyreon/commit/dfe2641aed4e595d580799b31b30e2392f3b8130),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`0f6e3b3`](https://github.com/pyreon/pyreon/commit/0f6e3b3dba9758f0fc9eaf1a896a986d87d21d9a),
[`17dbb42`](https://github.com/pyreon/pyreon/commit/17dbb42544f53a553bde5e8fcb57a7a99888cc28),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7),
[`577f40f`](https://github.com/pyreon/pyreon/commit/577f40fc3282672818c8b31a4f595b1dbb295d19),
[`13a4910`](https://github.com/pyreon/pyreon/commit/13a49102851145f10e0b49b04947d1218c7efe59)]:
  - @pyreon/core@1.0.0
  - @pyreon/code@1.0.0
  - @pyreon/hooks@1.0.0
  - @pyreon/kinetic@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/storage@1.0.0
  - @pyreon/table@1.0.0
  - @pyreon/virtual@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/toast@1.0.0
  - @pyreon/url-state@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/state-tree@1.0.0
  - @pyreon/meta@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/server@1.0.0
  - @pyreon/charts@1.0.0
  - @pyreon/dnd@1.0.0
  - @pyreon/document@1.0.0
  - @pyreon/feature@1.0.0
  - @pyreon/hotkeys@1.0.0
  - @pyreon/i18n@1.0.0
  - @pyreon/machine@1.0.0
  - @pyreon/permissions@1.0.0
  - @pyreon/query@1.0.0
  - @pyreon/rx@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/connector-document@1.0.0
  - @pyreon/coolgrid@1.0.0
  - @pyreon/document-primitives@1.0.0
  - @pyreon/elements@1.0.0
  - @pyreon/kinetic-presets@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-kanban@0.0.32

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`0f6e3b3`](https://github.com/pyreon/pyreon/commit/0f6e3b3dba9758f0fc9eaf1a896a986d87d21d9a),
[`577f40f`](https://github.com/pyreon/pyreon/commit/577f40fc3282672818c8b31a4f595b1dbb295d19),
[`13a4910`](https://github.com/pyreon/pyreon/commit/13a49102851145f10e0b49b04947d1218c7efe59)]:
  - @pyreon/core@1.0.0
  - @pyreon/hooks@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/storage@1.0.0
  - @pyreon/toast@1.0.0
  - @pyreon/url-state@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/state-tree@1.0.0
  - @pyreon/head@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/runtime-server@1.0.0
  - @pyreon/dnd@1.0.0
  - @pyreon/i18n@1.0.0
  - @pyreon/permissions@1.0.0
  - @pyreon/rx@1.0.0
  - @pyreon/validation@1.0.0
  - @pyreon/zero@1.0.0
## @pyreon/example-native-finance@0.0.18

### Patch Changes

- Updated dependencies
[[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e)]:
  - @pyreon/hooks@1.0.0
## @pyreon/example-native-router-demo-web@0.0.31

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/primitives@1.0.0
## @pyreon/example-native-tasks@0.0.20

### Patch Changes

- Updated dependencies
[[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e)]:
  - @pyreon/hooks@1.0.0
## @pyreon/example-native-tasks-web@0.0.20

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`bf658a0`](https://github.com/pyreon/pyreon/commit/bf658a0eb6495dc9bd7724997bdd6471043a6fe7)]:
  - @pyreon/core@1.0.0
  - @pyreon/hooks@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/store@1.0.0
  - @pyreon/form@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/router@1.0.0
  - @pyreon/primitives@1.0.0
## @pyreon/example-native-todomvc-web@0.0.31

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2),
[`0f6e3b3`](https://github.com/pyreon/pyreon/commit/0f6e3b3dba9758f0fc9eaf1a896a986d87d21d9a)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/storage@1.0.0
  - @pyreon/reactivity@1.0.0
  - @pyreon/primitives@1.0.0
## @pyreon/example-real-bench@0.0.24

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@1.0.0
  - @pyreon/runtime-dom@1.0.0
  - @pyreon/reactivity@1.0.0
## @pyreon/test-utils@0.13.35

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/rocketstyle@0.47.0
  - @pyreon/ui-core@0.47.0
## @pyreon/ui-components@0.37.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e)]:
  - @pyreon/core@0.47.0
  - @pyreon/hooks@0.47.0
  - @pyreon/ui-primitives@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/coolgrid@0.47.0
  - @pyreon/elements@0.47.0
  - @pyreon/rocketstyle@0.47.0
  - @pyreon/styler@0.47.0
  - @pyreon/ui-core@0.47.0
  - @pyreon/unistyle@0.47.0
  - @pyreon/ui-theme@0.13.34
## @pyreon/ui-primitives@0.37.0

### Patch Changes

- Updated dependencies
[[`9799d6b`](https://github.com/pyreon/pyreon/commit/9799d6bfa1c3f99fa38f4375eebd330c2df0a715),
[`ea704c5`](https://github.com/pyreon/pyreon/commit/ea704c55e23818dc187b703f072ffa1d60e000d8),
[`8820d2f`](https://github.com/pyreon/pyreon/commit/8820d2ffe144a60e4df3db9e15e6228ea714ac1e),
[`34d68e1`](https://github.com/pyreon/pyreon/commit/34d68e1e00088c589b8362468144951d648527f2)]:
  - @pyreon/core@0.47.0
  - @pyreon/hooks@0.47.0
  - @pyreon/runtime-dom@0.47.0
  - @pyreon/reactivity@0.47.0
  - @pyreon/elements@0.47.0
## @pyreon/ui-theme@0.13.34

### Patch Changes

- Updated dependencies []:
  - @pyreon/rocketstyle@0.47.0
  - @pyreon/unistyle@0.47.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant