This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
Summary
AI summaryUpdates Fixed — session reliability, Added — auto-update integrity, and Changed — install funnel across a mixed release.
Full changelog
Fixes the user-reported "freezing under load" and view-switch lag found via a dogfood-log RCA, finishes the remaining session-reliability hardening from the v2.14.0 RCA, makes the installer and auto-updater integrity-safe, and wires (inert) OSS code signing.
Fixed — hook-RPC timeout floods / UI freezes (Issue A1, A2)
hooks.signalno longer does a rendererworkspace.listround-trip on every signal. A 2s-TTL coalescing cache collapses a tool-heavy turn's bursts into ~1 round-trip and serves the last-known list when the renderer is throttled — stopping thePostToolUsetimeout floods that froze the UI and, at worst, blocked the daemon event loop into a forced respawn.- The Claude Code bridge retries transient connect-errors within its 2s budget (and never re-fires a request it already wrote), so a brief main-process restart window no longer drops hooks.
Fixed — session reliability (RCA A1/A9, A4, A6)
- Partial-list reconcile now re-queries the daemon before clearing a live
ptyIdabsent from a non-empty session list (2-strike guard), closing the last destructive-session-loss path the v2.14.0 RCA left open. - The daemon health probe tolerates a busy-but-responsive daemon —
daemon.pingreports event-loop lag, thresholds raised to 5 strikes / 5s — instead of mistaking load for a hang and force-respawning. DaemonClient.connectretries transient named-pipe errors (EPERM/ECONNRESET) with backoff; ENOENT still fails fast.- Session-pipe bind retries on
EADDRINUSE, so a pane no longer dies when a prior pipe has not yet released its name.
Fixed — view-switch / multiview performance
- WebGL terminal contexts are no longer disposed the instant a pane is hidden. A short grace period (cancelled on re-show) eliminates the GPU-context create/destroy thrash behind workspace-switch and multiview→single-view lag.
Added — auto-update integrity (fail-closed)
- The updater downloads the
Setup.exeand verifies a CI-published SHA-256 (update-manifest.json) before launching it; a tampered or unverifiable artifact is never run. Previously it opened an unverified URL.
Added — hook-RPC flood observability
- A rolling 30s summary of slow/failed
workspace.listresolutions is logged (escalating to a warning on a flood), so degradation is visible without hand-tallyingbridge.log.
Changed — install funnel
install.ps1now downloads the prebuilt, SHA-256-verifiedSetup.exeby default instead of always compiling from source. Build-from-source is opt-in (-FromSource/WMUX_FROM_SOURCE=1).
Changed — docs & security accuracy
- Corrected the README "RunAsNode disabled" claim and reconciled
SECURITY.md/PROTOCOL.mdwith the actual code (token entropy,icaclsbehavior, intentionally-disabled asar-integrity fuse). Removed the permanently-disabled EditorPanel "Save" affordance.
Added — code-signing pipeline (inert until configured)
release.ymlis wired for SignPath Foundation (OSS) Authenticode signing of the installer, gated on a signing secret so it is a no-op until configured. Binaries remain unsigned (SmartScreen "unknown publisher") until the certificate is provisioned.
PR: #79 — Launch hardening: non-negotiables + dogfood reliability/perf fixes
Full Changelog: https://github.com/openwong2kim/wmux/compare/v2.14.0...v2.15.0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Wmux
All releases →Related context
Beta — feedback welcome: [email protected]