Current section

19 Versions

Jump to

Compare versions

6 files changed
+84 additions
-43 deletions
  @@ -11,6 +11,24 @@ not in lockstep yet; entries note which surface they affect.
11 11
12 12 ## [Unreleased]
13 13
14 + ## [0.7.2] — 2026-06-05
15 +
16 + ### Fixed
17 +
18 + - **`@musubi/react`**`useMusubiRootSuspense` no longer double-mounts a
19 + root over the wire on react-router v7 SPA navigation. When the last
20 + render-phase claimer dropped while the mount was still in flight, the
21 + orphan sweep chained teardown inline on the mount promise; that `.then`
22 + ran in the same microtask flush as the mount settle — ahead of React's
23 + MessageChannel-scheduled resumed Suspense render — so the resumed render
24 + found no shared entry and allocated a fresh mount, producing a spurious
25 + `unmount` + `mount` burst right after the first patch. Teardown is now
26 + deferred two macrotask hops past the settle (React's render-phase then
27 + commit-phase) so the resumed render re-claims the entry first and the
28 + existing ref / claimer guards bail. Also tidied the shared-mount
29 + bookkeeping (`key` as a real `SharedRootMount` field, `cancelCleanupTimer`
30 + / `buildMountOptions` helpers) with no behavior change (#70).
31 +
14 32 ## [0.7.1] — 2026-05-31
15 33
16 34 ### Fixed
  @@ -233,7 +251,8 @@ Initial public release of the Musubi runtime (then `Arbor`):
233 251 - TypeScript client and React adapter that materialize the diff stream
234 252 into immutable snapshots.
235 253
236 - [Unreleased]: https://github.com/fahchen/musubi/compare/v0.7.1...HEAD
254 + [Unreleased]: https://github.com/fahchen/musubi/compare/v0.7.2...HEAD
255 + [0.7.2]: https://github.com/fahchen/musubi/compare/v0.7.1...v0.7.2
237 256 [0.7.1]: https://github.com/fahchen/musubi/compare/v0.7.0...v0.7.1
238 257 [0.7.0]: https://github.com/fahchen/musubi/compare/v0.6.1...v0.7.0
239 258 [0.6.1]: https://github.com/fahchen/musubi/compare/v0.6.0...v0.6.1
  @@ -34,7 +34,7 @@ Add Musubi to your Phoenix application:
34 34 ```elixir
35 35 def deps do
36 36 [
37 - {:musubi, "~> 0.7.1"}
37 + {:musubi, "~> 0.7.2"}
38 38 ]
39 39 end
40 40 ```
  @@ -10,7 +10,7 @@ In the Phoenix app:
10 10 ```elixir
11 11 def deps do
12 12 [
13 - {:musubi, "~> 0.7.1"}
13 + {:musubi, "~> 0.7.2"}
14 14 ]
15 15 end
16 16 ```
  @@ -1,6 +1,6 @@
1 1 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/fahchen/musubi">>}]}.
2 2 {<<"name">>,<<"musubi">>}.
3 - {<<"version">>,<<"0.7.1">>}.
3 + {<<"version">>,<<"0.7.2">>}.
4 4 {<<"description">>,
5 5 <<"Server-authoritative, page-scoped runtime library for Elixir/Phoenix applications.">>}.
6 6 {<<"elixir">>,<<"~> 1.18">>}.
  @@ -1,7 +1,7 @@
1 1 defmodule Musubi.MixProject do
2 2 use Mix.Project
3 3
4 - @version "0.7.1"
4 + @version "0.7.2"
5 5 @source_url "https://github.com/fahchen/musubi"
6 6
7 7 def project do
Loading more files…