v0.3.1
Nullgate v0.3.1
A stability release focused on connection reliability.
Fixed
- Intermittent connection drops to remote peers. Two root causes in the engine:
- The maintenance tick re-dialed every member — including unreachable ones — on every
roster-sync and presence tick, minting permanent entries in iroh's unbounded mapped-address
cache (iroh#4293). Daemon memory grew until
the watchdog restarted it, dropping every connection at once. Re-seeding is now throttled to
reachable members, while a membership change still re-seeds everyone immediately so
additions/removals keep propagating within seconds. - A duplicate-connection race: when both peers dialed each other at once, the orphaned
connection's close-watcher could evict the live connection — a spurious per-peer drop. Both
ends now apply a deterministic tie-break and the close-watcher only evicts the entry that
actually closed.
- The maintenance tick re-dialed every member — including unreachable ones — on every
- A freshly created (or rotated) network briefly rejected joiners with "this invite code is no
longer valid," because the creator hadn't folded its own genesis entry into its in-memory roster
yet. The roster is now refreshed immediately after creation/rotation.
Added
- Mesh connection lifecycle logging in the daemon log — connections log when they're
established, replaced by a duplicate, and closed (with the QUIC close reason), so intermittent
drops are diagnosable from the default log.
Changed
- Refreshed the app + tray icon artwork — a new circular "gate" mark across every platform.
Install: Windows MSI, Linux tarball (curl … | sh), macOS .app tarball, and an Android APK
(auto-updates via Obtainium). Desktop apps auto-update to this release.