Skip to content

Releases: BeamLabEU/phoenix_kit_boards

0.4.3 - 2026-08-11

Choose a tag to compare

@ddon ddon released this 11 Aug 19:40

Fixed

  • Live cursors, in-flight drags and stored preferences never arrived (#6). 0.4.1 fixed bundle delivery; this fixes what delivering late does to the join handshake.

    A push_event from the connected mount rides the join reply and is dispatched the moment it lands — safe only while hooks were registered on the host's LiveSocket at construction time. Under runtime-hook delivery the real BoardSync.mounted runs hundreds of milliseconds after the shim starts its ~40 KB fetch, so the channel token and the prefs both dispatched to nobody. The board rendered, edited and saved while the collaborative half silently never started.

    Both hooks now push board:ready as the last thing their mounted does and the LiveView answers; mount_connected pushes nothing.

0.4.2 - 2026-08-11

Choose a tag to compare

@ddon ddon released this 11 Aug 19:23

Dependency refresh against phoenix_kit 2.2.0 and the transitive set it carries (phoenix 1.8.10, hackney 4.7.3). No source changes in this package; the gate was re-run against the new set.

0.4.1 - 2026-08-11

Choose a tag to compare

@ddon ddon released this 11 Aug 11:59

Fixes the 403 that made every hook-bundle load fail, so boards were never collaborative (#5). Failed loads are no longer memoized and now report the actual cause. See CHANGELOG.md.

v0.4.0 - 2026-08-10

Choose a tag to compare

@ddon ddon released this 10 Aug 16:19

⚠️ Requires phoenix_kit ~> 2.0

Core 2.0.0 refuses to migrate a database below its squashed V135 floor — check mix phoenix_kit.status before upgrading.

Added — collaboration works on any host, with no JS setup (#4)

Hooks were delivered only via js_sources/0, which only core's :phoenix_kit_js_sources compiler consumes. A host that bundles dependency JS its own way got nothing: window.PhoenixKitBoardsHooks was never defined while the board rendered phx-hook names the LiveSocket had never heard of.

The expensive part was the shape of the failure — the canvas renders and local edits persist, because only the inbound half needs the hook. So it presented as "collaboration is broken" rather than "the JS never loaded", with nothing in the console or the log.

The board page now delivers its own hooks as LiveView runtime hooks (since LiveView 1.1, getHookDefinition/1 resolves a name at element mount and falls back to script[data-phx-runtime-hook="Name"]), and serves the bundle from a module route with a content digest in the URL and immutable caching.