-
fix(bridge/ui): live own-cluster filter, HTTP clipboard fallback, persist cluster id
Release / version (push) Canceled after 0sRelease / frontend (push) Canceled after 0sRelease / linux (amd64) (push) Canceled after 0sRelease / linux (arm64) (push) Canceled after 0sRelease / windows (push) Canceled after 0sRelease / macos (push) Canceled after 0sRelease / release (push) Canceled after 0sBuild and Push Docker Image / build-and-push (push) Canceled after 0sreleased this
2026-06-21 10:34:00 +03:00 | 121 commits to main since this releaseThree issues:
-
Bridge shipped its uplink to a same-cluster node. The picker filtered own
cluster only by the constructor-time cluster id, which could be stale/empty,
so a sibling node (lowest LAN RTT) won Pick and the sender POSTed
/raft/bridge/replicate at it → 404 'bridge receiving is not enabled'. The
picker now refreshes the local cluster id LIVE from the Raft layer each probe
(WithLocalClusterFn) and excludes it in both probe and Pick, so an uplink
never targets our own cluster regardless of build-time state. -
Copy buttons did nothing over plain HTTP: navigator.clipboard only exists in
a secure context (HTTPS/localhost), and self-hosted nodes are opened by IP
over HTTP. New shared copyToClipboard() falls back to a hidden textarea +
execCommand('copy'); wired into the Raft/connect command blocks + secret
inputs, the user invite link, the .env preview, the success screen and the
log viewer. -
Cluster id/name 'jumped' to a fresh random default after recovery: it was
regenerated on read whenever the env value was missing and never persisted.
activation now persists RAFT_CLUSTER_ID + RAFT_NODE_ID to the env (only when
missing/changed), so the name is durable across restarts and wipe-state
recovery.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01U3LvJu9qZfspPr21TW9ptvDownloads
-