4 Commits

Author SHA1 Message Date
bl 9c89cfbe9c chore: Release cnats version 0.2.3
Release / build (x86_64, ubuntu-latest) (push) Successful in 7m5s
Release / docker (push) Successful in 3m54s
Release / build (aarch64, aarch64) (push) Successful in 13m37s
Release / update-aur (push) Successful in 11s
2026-07-29 10:50:09 +02:00
bl 9326f93576 Fix hydration mismatch in CallPanel that crashed room switching
The SSR branch rendered an empty call-panel div while the hydrate
branch expected a child button node. On any full load/refresh of the
lobby room, the mismatched hydration cursor hit tachys's
unreachable!() panic path, trapping the wasm instance and killing all
reactivity (routing, room switching, SSE) for the rest of the page
load, while the already-rendered SSR HTML stayed visually intact.

SSR now renders the same default join-button markup hydrate expects.
2026-07-29 10:50:02 +02:00
bl 9858460696 chore: Release cnats version 0.2.2
Release / build (x86_64, ubuntu-latest) (push) Successful in 7m10s
Release / docker (push) Successful in 3m59s
Release / build (aarch64, aarch64) (push) Successful in 15m24s
Release / update-aur (push) Successful in 12s
2026-07-28 12:03:23 +02:00
bl 9550fa1f72 CI: install cargo-leptos via cargo-binstall instead of building from source
Building cargo-leptos from source pulls in swc/lightningcss/rhai and was
OOM-killing the aarch64 (Raspberry Pi) runner. cargo-leptos publishes
prebuilt aarch64-unknown-linux-gnu binaries, so binstall sidesteps the
compile entirely.
2026-07-28 12:02:26 +02:00
5 changed files with 24 additions and 5 deletions
+8 -1
View File
@@ -36,8 +36,15 @@ jobs:
~/.cargo/bin
key: ${{ runner.os }}-${{ matrix.arch }}-cargo-leptos-${{ hashFiles('Cargo.lock') }}
- name: Install cargo-binstall
run: |
command -v cargo-binstall || \
curl -L --proto '=https' --tlsv1.2 -sSf \
https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh \
| bash
- name: Install cargo-leptos
run: command -v cargo-leptos || cargo install cargo-leptos --locked
run: command -v cargo-leptos || cargo binstall cargo-leptos --locked --no-confirm
- name: Build
run: cargo leptos build --release
Generated
+1 -1
View File
@@ -345,7 +345,7 @@ dependencies = [
[[package]]
name = "cnats"
version = "0.2.1"
version = "0.2.3"
dependencies = [
"anyhow",
"async-nats",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "cnats"
version = "0.2.1"
version = "0.2.3"
edition = "2021"
[lib]
+1 -1
View File
@@ -1,6 +1,6 @@
# Maintainer: Bendik Aagaard Lynghaug <bendik.lynghaug@gmail.com>
pkgname=cnats
pkgver=0.2.1
pkgver=0.2.3
pkgrel=1
pkgdesc="Web chat over NATS subjects with Kanidm SSO (Leptos SSR)"
arch=('x86_64' 'aarch64')
+13 -1
View File
@@ -495,10 +495,22 @@ fn CallPanel(room: Memo<String>, me: String) -> impl IntoView {
}
.into_any()
}
// Must mirror the hydrate branch's default (not-in-call) markup exactly -
// hydration reconciles this SSR output against what the hydrate branch
// above expects to find, and an empty div here (vs. the button hydrate
// wants) is a hydration mismatch that panics and traps the whole wasm
// instance, killing all reactivity on the page.
#[cfg(not(feature = "hydrate"))]
{
let _ = (room, me);
view! { <div class="call-panel"></div> }.into_any()
view! {
<div class="call-panel">
<button class="call-join" disabled=true>
"☎ join call"
</button>
</div>
}
.into_any()
}
}