chore(deps): update dependencies to latest (safe batch) - #2333
Merged
Conversation
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
enabled auto-merge (squash)
July 16, 2026 08:20
Contributor
📦 Bundle size diffNo packages changed size. 64 packages measured · diff against base |
… <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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
@pyreon/rich-textruntime deps@pyreon/syncruntime dep@pyreon/zero-contentruntime dep@pyreon/create-zeroruntime depVite 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/namespacerule flagged 7 lines inserver-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)
@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 viareadlink): 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.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
>=5.0.0 <7.0.0(6.0.3 installed)createSourceFile/ScriptTarget) — theESNext-crash class; cap verified in compiler/mcp/cli ranges>=,*) — narrowing a peer is a breaking change for consumers^8.0.0Deferred to the riskier follow-up PR
Verification
bun run validate-fast— 15/15 gates (incl. changeset + both lint ratchets)bun run typecheck— tree-wide clean (exit 0, zero TS errors)bun run verify-modes— 27/27 example × mode cells (re-run on the final tree, vite 8.0.16)🤖 Generated with Claude Code