From 06201a80ad9296a77aea60fbeebb590745d2d629 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 24 Jul 2026 23:54:40 +0000 Subject: [PATCH 1/2] deps: repin MyOwnMesh to v0.3.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.3.2 is the handshake/admission hardening cut, and both halves of it change behaviour the node engine depends on: * The ed25519 auth handshake now folds the DTLS certificate fingerprint into the signed payload (channel binding), so a signaling-path MITM that swaps in its own fingerprint no longer survives mutual auth. The signed payload changed, so a node built against this pin and a daemon older than v0.3.2 do not agree on the handshake. * Inbound frames are gated on peer admission (authenticated + Active/ Shelved). Application, RPC, reliable-delivery, governance, capability and shelve frames are dropped before any state moves, and `Active` now requires `authenticated`. The AllMyStuff side of that boundary already landed here (PR #189 — media-capture offers authorized, unsolicited `Claimed` guarded); this pin moves the daemon under it so the stack is aligned. Two pin sites, as always — only one is a .rev file: * .myownmesh-rev — the bundled/managed daemon sidecar. node/build.rs bakes it as MYOWNMESH_PIN for the runtime version gate (an older daemon on the box is asked to self-update), and gui/src-tauri/build.rs reads the same file to bundle the matching sidecar. * gui/mobile/Cargo.toml — the mobile shell embeds myownmesh-core in-process (iOS can't spawn the daemon), so it carries its own git tags outside .rev; bumped in lockstep. The v0.3.2 tag is already published upstream. gui/mobile/Cargo.lock is left alone per repo convention — it refreshes on the next real mobile build. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_019xdiiiYN3ThDwnuHfqQnEy --- .myownmesh-rev | 2 +- gui/mobile/Cargo.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.myownmesh-rev b/.myownmesh-rev index 937cd78..7becae1 100644 --- a/.myownmesh-rev +++ b/.myownmesh-rev @@ -1 +1 @@ -v0.3.1 +v0.3.2 diff --git a/gui/mobile/Cargo.toml b/gui/mobile/Cargo.toml index f491417..a7e6204 100644 --- a/gui/mobile/Cargo.toml +++ b/gui/mobile/Cargo.toml @@ -88,8 +88,8 @@ allmystuff-protocol = { path = "../../crates/allmystuff-protocol", optional = tr # socket, same wire protocol, inside the app sandbox. Pinned to the merge # that exposed the daemon as a library (which sits atop the system-DNS-SD # discovery backend the phone rides). -myownmesh = { git = "https://github.com/mrjeeves/MyOwnMesh", tag = "v0.3.1", optional = true } -myownmesh-core = { git = "https://github.com/mrjeeves/MyOwnMesh", tag = "v0.3.1", optional = true } +myownmesh = { git = "https://github.com/mrjeeves/MyOwnMesh", tag = "v0.3.2", optional = true } +myownmesh-core = { git = "https://github.com/mrjeeves/MyOwnMesh", tag = "v0.3.2", optional = true } # One-time identity migration: derive the public key from the adapter-era # `device-seed.bin` and write it as the daemon's anchor file, so the phone # keeps its device id across the engine swap. From b3a022ca396968d71622f25f88341b8f9351aaff Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 24 Jul 2026 23:55:08 +0000 Subject: [PATCH 2/2] chore(release): 0.2.48 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version-only bump produced by `scripts/bump-version.sh 0.2.48` — the same edit `just release 0.2.48` makes before tagging (workspace + the three excluded sub-workspaces: gui/src-tauri, node, gui/mobile). Done here so v0.2.48 can be minted from this branch's merge: CEC Support pins the AllMyStuff sidecar and its three linked crates by tag, and release.yml's "verify tag matches manifest versions" gate fails unless the manifests already claim the version being tagged. Cutting the tag stays a maintainer step — `just release 0.2.48` after this merges is a no-op on the manifests and goes straight to tag + push. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_019xdiiiYN3ThDwnuHfqQnEy --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 22 +++++++++++----------- gui/mobile/Cargo.lock | 2 +- gui/mobile/Cargo.toml | 2 +- gui/mobile/package.json | 2 +- gui/mobile/tauri.conf.json | 2 +- gui/package.json | 2 +- gui/src-tauri/Cargo.lock | 2 +- gui/src-tauri/Cargo.toml | 2 +- node/Cargo.lock | 2 +- node/Cargo.toml | 2 +- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a39e0ad..76cdc66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "allmystuff-bridge" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-graph", "allmystuff-inventory", @@ -19,7 +19,7 @@ dependencies = [ [[package]] name = "allmystuff-cec-consent" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-cec-protocol", "serde", @@ -30,7 +30,7 @@ dependencies = [ [[package]] name = "allmystuff-cec-protocol" -version = "0.2.47" +version = "0.2.48" dependencies = [ "serde", "serde_json", @@ -39,7 +39,7 @@ dependencies = [ [[package]] name = "allmystuff-cli" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-bridge", "allmystuff-graph", @@ -52,7 +52,7 @@ dependencies = [ [[package]] name = "allmystuff-graph" -version = "0.2.47" +version = "0.2.48" dependencies = [ "serde", "serde_json", @@ -61,7 +61,7 @@ dependencies = [ [[package]] name = "allmystuff-inventory" -version = "0.2.47" +version = "0.2.48" dependencies = [ "serde", "serde_json", @@ -70,7 +70,7 @@ dependencies = [ [[package]] name = "allmystuff-mobile-core" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-graph", "allmystuff-protocol", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "allmystuff-protocol" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-graph", "serde", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "allmystuff-service" -version = "0.2.47" +version = "0.2.48" dependencies = [ "anyhow", "dirs", @@ -101,7 +101,7 @@ dependencies = [ [[package]] name = "allmystuff-session" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-graph", "allmystuff-protocol", @@ -112,7 +112,7 @@ dependencies = [ [[package]] name = "allmystuff-term" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-protocol", "allmystuff-service", @@ -127,7 +127,7 @@ dependencies = [ [[package]] name = "allmystuff-updater" -version = "0.2.47" +version = "0.2.48" dependencies = [ "dirs", "flate2", diff --git a/Cargo.toml b/Cargo.toml index 055a03f..233b1e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ members = [ exclude = ["gui", "node"] [workspace.package] -version = "0.2.47" +version = "0.2.48" edition = "2021" rust-version = "1.88.0" license = "MIT" @@ -39,16 +39,16 @@ repository = "https://github.com/mrjeeves/AllMyStuff" description = "Map all your stuff, then wire it together across a mesh you own." [workspace.dependencies] -allmystuff-inventory = { path = "crates/allmystuff-inventory", version = "0.2.47" } -allmystuff-graph = { path = "crates/allmystuff-graph", version = "0.2.47" } -allmystuff-protocol = { path = "crates/allmystuff-protocol", version = "0.2.47" } -allmystuff-bridge = { path = "crates/allmystuff-bridge", version = "0.2.47" } -allmystuff-session = { path = "crates/allmystuff-session", version = "0.2.47" } -allmystuff-updater = { path = "crates/allmystuff-updater", version = "0.2.47" } -allmystuff-service = { path = "crates/allmystuff-service", version = "0.2.47" } -allmystuff-mobile-core = { path = "crates/allmystuff-mobile-core", version = "0.2.47" } -allmystuff-cec-protocol = { path = "crates/allmystuff-cec-protocol", version = "0.2.47" } -allmystuff-cec-consent = { path = "crates/allmystuff-cec-consent", version = "0.2.47" } +allmystuff-inventory = { path = "crates/allmystuff-inventory", version = "0.2.48" } +allmystuff-graph = { path = "crates/allmystuff-graph", version = "0.2.48" } +allmystuff-protocol = { path = "crates/allmystuff-protocol", version = "0.2.48" } +allmystuff-bridge = { path = "crates/allmystuff-bridge", version = "0.2.48" } +allmystuff-session = { path = "crates/allmystuff-session", version = "0.2.48" } +allmystuff-updater = { path = "crates/allmystuff-updater", version = "0.2.48" } +allmystuff-service = { path = "crates/allmystuff-service", version = "0.2.48" } +allmystuff-mobile-core = { path = "crates/allmystuff-mobile-core", version = "0.2.48" } +allmystuff-cec-protocol = { path = "crates/allmystuff-cec-protocol", version = "0.2.48" } +allmystuff-cec-consent = { path = "crates/allmystuff-cec-consent", version = "0.2.48" } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/gui/mobile/Cargo.lock b/gui/mobile/Cargo.lock index 95dbf06..3163ff2 100644 --- a/gui/mobile/Cargo.lock +++ b/gui/mobile/Cargo.lock @@ -100,7 +100,7 @@ dependencies = [ [[package]] name = "allmystuff-mobile" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-inventory", "allmystuff-mobile-core", diff --git a/gui/mobile/Cargo.toml b/gui/mobile/Cargo.toml index a7e6204..8b0167a 100644 --- a/gui/mobile/Cargo.toml +++ b/gui/mobile/Cargo.toml @@ -12,7 +12,7 @@ [package] name = "allmystuff-mobile" -version = "0.2.47" +version = "0.2.48" description = "AllMyStuff mobile (iOS/Android) — a Tauri 2 shell around the shared Svelte UI, backed by the phone's embedded viewer/controller core." authors = ["Chris Paul"] license = "MIT" diff --git a/gui/mobile/package.json b/gui/mobile/package.json index 77b572f..2c48b84 100644 --- a/gui/mobile/package.json +++ b/gui/mobile/package.json @@ -1,7 +1,7 @@ { "name": "allmystuff-mobile", "private": true, - "version": "0.2.47", + "version": "0.2.48", "type": "module", "description": "AllMyStuff mobile (iOS/Android) Tauri shell. Reuses the desktop GUI's Svelte frontend (../) verbatim; this package only carries the Tauri CLI and the mobile Rust backend.", "scripts": { diff --git a/gui/mobile/tauri.conf.json b/gui/mobile/tauri.conf.json index 2e209c7..14bfae0 100644 --- a/gui/mobile/tauri.conf.json +++ b/gui/mobile/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "AllMyStuff", - "version": "0.2.47", + "version": "0.2.48", "identifier": "works.allmystuff.mobile", "build": { "frontendDist": "../dist", diff --git a/gui/package.json b/gui/package.json index 2e60492..b749ade 100644 --- a/gui/package.json +++ b/gui/package.json @@ -1,7 +1,7 @@ { "name": "allmystuff-gui", "private": true, - "version": "0.2.47", + "version": "0.2.48", "type": "module", "packageManager": "pnpm@10.33.0", "description": "AllMyStuff — the friendly graph for all your stuff. Tauri + Svelte 5.", diff --git a/gui/src-tauri/Cargo.lock b/gui/src-tauri/Cargo.lock index c571e33..90291e7 100644 --- a/gui/src-tauri/Cargo.lock +++ b/gui/src-tauri/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "allmystuff-gui" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-bridge", "allmystuff-graph", diff --git a/gui/src-tauri/Cargo.toml b/gui/src-tauri/Cargo.toml index 2e87a0d..0e63a96 100644 --- a/gui/src-tauri/Cargo.toml +++ b/gui/src-tauri/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "allmystuff-gui" -version = "0.2.47" +version = "0.2.48" description = "AllMyStuff GUI — Tauri shell: scans this machine and talks to the myownmesh daemon over its control socket." authors = ["Chris Paul"] license = "MIT" diff --git a/node/Cargo.lock b/node/Cargo.lock index 479678a..ff5211e 100644 --- a/node/Cargo.lock +++ b/node/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "allmystuff-node" -version = "0.2.47" +version = "0.2.48" dependencies = [ "allmystuff-bridge", "allmystuff-cec-consent", diff --git a/node/Cargo.toml b/node/Cargo.toml index 8119c4c..241bfd1 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -12,7 +12,7 @@ [package] name = "allmystuff-node" -version = "0.2.47" +version = "0.2.48" description = "AllMyStuff headless mesh node — runs this machine on the mesh (presence + screen/camera/audio/input/terminal/files routes) with no GUI." authors = ["Chris Paul"] license = "MIT"