Current section
19 Versions
Jump to
Current section
19 Versions
Compare versions
6
files changed
+119
additions
-11
deletions
| @@ -11,6 +11,29 @@ not in lockstep yet; entries note which surface they affect. | |
| 11 11 | |
| 12 12 | ## [Unreleased] |
| 13 13 | |
| 14 | + ## [0.11.0] — 2026-06-24 |
| 15 | + |
| 16 | + ### Fixed |
| 17 | + |
| 18 | + - **`@musubi/client`** — A hard WebSocket drop (iOS Safari backgrounded then |
| 19 | + resumed, network loss, server restart) no longer blanks downstream consumers. |
| 20 | + `handleConnectionDisconnect` now keeps the last-good root/index/streams/ |
| 21 | + snapshots for live roots (only resetting `version` to 0) instead of wiping |
| 22 | + them and clearing the roots map, so mounted `proxy.snapshot()` keeps returning |
| 23 | + complete stale data through the reconnect window rather than collapsing to a |
| 24 | + missing-snapshot stub. On socket reopen, a new `onOpen` hook re-joins the |
| 25 | + connection channel and re-mounts each live root; the server's initial patch |
| 26 | + (whole-root `replace ""`) atomically swaps fresh state in, so consumers |
| 27 | + refresh automatically with no navigation or manual reload. Completes the |
| 28 | + reconnect story from 0.10.0, which only covered the version-mismatch recovery |
| 29 | + path (`The terminal disconnect path still resets`). |
| 30 | + |
| 31 | + ### Changed |
| 32 | + |
| 33 | + - **`@musubi/client`** — `SocketLike` gains a required `onOpen(callback)` method, |
| 34 | + used to drive reconnect recovery. `Phoenix.Socket` already implements it; |
| 35 | + custom `SocketLike` implementations must add it. |
| 36 | + |
| 14 37 | ## [0.10.0] — 2026-06-24 |
| 15 38 | |
| 16 39 | ### Fixed |
| @@ -346,7 +369,8 @@ Initial public release of the Musubi runtime (then `Arbor`): | |
| 346 369 | - TypeScript client and React adapter that materialize the diff stream |
| 347 370 | into immutable snapshots. |
| 348 371 | |
| 349 | - [Unreleased]: https://github.com/fahchen/musubi/compare/v0.10.0...HEAD |
| 372 | + [Unreleased]: https://github.com/fahchen/musubi/compare/v0.11.0...HEAD |
| 373 | + [0.11.0]: https://github.com/fahchen/musubi/compare/v0.10.0...v0.11.0 |
| 350 374 | [0.10.0]: https://github.com/fahchen/musubi/compare/v0.9.2...v0.10.0 |
| 351 375 | [0.9.2]: https://github.com/fahchen/musubi/compare/v0.9.1...v0.9.2 |
| 352 376 | [0.9.1]: https://github.com/fahchen/musubi/compare/v0.9.0...v0.9.1 |
| @@ -34,7 +34,7 @@ Add Musubi to your Phoenix application: | |
| 34 34 | ```elixir |
| 35 35 | def deps do |
| 36 36 | [ |
| 37 | - {:musubi, "~> 0.10.0"} |
| 37 | + {:musubi, "~> 0.11.0"} |
| 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.10.0"} |
| 13 | + {:musubi, "~> 0.11.0"} |
| 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.10.0">>}. |
| 3 | + {<<"version">>,<<"0.11.0">>}. |
| 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.10.0" |
| 4 | + @version "0.11.0" |
| 5 5 | @source_url "https://github.com/fahchen/musubi" |
| 6 6 | |
| 7 7 | def project do |
Loading more files…