# Whisper 1.0.15 ## Summary - Settings now use clearer progressive disclosure, with stronger group notification controls, channel reordering, diagnostics previews, and a per-conversation media panel. - Connectivity is more resilient across network changes through invite republishing, relay/DCUtR lifecycle hardening, and improved route-progress handling. - Release quality improved with GitHub-native candidate/publish pipelines, faster and more reliable Wisp checks, broader Echo/WAN evidence, and expanded visual coverage. - Android gained end-to-end packaging, device smoke coverage, safer release behavior, and updater isolation. ## Changes ### Performance - Fail compile bench before Cargo when rustc identity is unusable - Keep compile benchmark paths Windows-safe - Measure Rust compile scenarios in Echo - Fix(bench): harden accept-wan-pool against host misuse - Fix(bench): reject expired WAN barriers - Bench(voice): align WAN measurement windows - Feat(bench): speed up WAN-lab rebuild loop - Fix(bench): make WAN worker coordination atomic - Test(ui): expand visual contract to 201 targets, stabilize + speed up suite - Perf(tests): hybrid in-process lib lane + single vault open per test client - Perf(tests): fast suite by default — slow lane opt-in, 2.4x faster wall ### Groups & Sync - Refresh README and docs for current GitHub/Wisp reality - Docs(plans): record compile stop and Echo baseline roadmap - Feat(echo): count noisy rows in grouped compare summaries - Docs(group): clarify reorder coverage - Feat(group): expose channel reordering - Feat(ui): channel mute + mentions-only group notification controls - Fix(settings): remove group metrics notice - Fix(ui): preserve message callback memoization - Feat(settings): group application settings navigation - Docs(plans): add settings and device sync roadmaps - Fix(net): arm relay reservation cooldown on async denial ### Release & Updates - Key Rust caches by compiler identity - Feat(echo-ui): default release comparisons to a shared platform - Fix(echo): attach four-part hotfix tags to releases - Fix(echo-ui): keep release base chronological - Feat(echo-ui): add releases timeline - Feat(echo): expose releases and run dimensions - Feat(ui): add seeded mock development mode - Fix(mobile): harden Android authority and release CI - Docs(plans): 057 clean break — no legacy key fallback (maintainer decision) - Docs(plans): unblock 057 — approved domain-tagged chunk record keys - Fix(mobile): compile out in-app updater - Fix(invite): harden network-change republish - Add GitHub release and PR pipelines - Test(invite): make empty-address republish guard test load-bearing - Fix(invite): republish live invite records on network change ### Benchmarks & Observability - Fix(echo): canonicalize host os and arch naming in build info - Fix(echo): treat empty filter query params as absent - Fix(echo-ui): honor multi-select filters on metric detail - Fix(echo-ui): compare metric deltas by platform - Fix(echo): ingest only numeric WAN BMF metrics - Docs(plans): record Echo overhaul completion - Fix(echo-ui): show sparse platform points - Feat(echo-ui): add dimension filters and compare pickers - Test(echo): pin producer provenance - Feat(echo): ingest build provenance - Docs(plans): Echo platform/version overhaul batch (099-102) - Docs(plans): refresh compile plan with live Echo - Fix(settings): load diagnostics preview separately ### Documentation - Docs(plans): add elastic AI workspace pool plan - Docs(plans): add dependency and libp2p upgrade plans - Record clean compile proof - Docs(plans): wispd job-level timeout enforcement (plan 104) - Docs(skills): vendor Whisper domain skills in-repo for multi-PC checkout - Docs(skills): refresh Wisp agent skills and add Codex staleness guard - Docs(plans): complete Rust compile-time plan - Docs(wan-lab): record live Docker proof - Docs(wan-lab): integrate plans 032 through 036 - Feat(wan-lab): reuse warm Docker labs - Docs(voice): record unreliable lane spike findings - Docs(plans): align combined PR status - Docs(plans): record media and channel execution - Docs(testing): list conversation attachment service - Docs(plans): security audit batch 3 (013-019) + execution status - Docs(plans): mark notification controls complete - Docs(plans): security audit batch 3 (013-019) + execution status - Docs(plans): reconcile implementation backlog - Docs(plans): reconcile backlog after Batch 6 networking merges - Docs(plans): reconcile plan 086 mobile build support to DONE - Docs(mobile): document Wisp and iOS build paths ### Other - Stop claiming a public-source refresh the preflight no longer does - Sweep stale staged job launchers on daemon startup - Stop repeated cold compile samples - Fix(audit): honor --no-fail-fast, drop dead legacy env plumbing - Fix(audit): isolate wisp-app-tauri in the clippy --fix plan too - Fix Wisp audit reliability in fresh worktrees - Revert "test: consolidate wisp-cli integration targets" - Consolidate wisp-cli integration targets - Isolate Wisp daemon job launchers on Windows - Fix(wan-lab): scrub stale repeat artifacts, drop dead wait helper - Fix(wan-lab): stabilize rapid voice reuse - Fix(chat): populate conversation attachment index - Fix(wan-lab): reset warm runs safely - Feat(chat): add per-conversation media panel - Add Solo project config - Refresh local agent config and plans - Fix(pi): persist network config across reruns - Fix(ui): keep visual runner below contention threshold - Test(settings): stabilize visual snapshot capture - Fix(mock): createPoll enforces read-only and slow-mode gates - Fix(settings): stack network essentials - Fix(settings): remove redundant vault status - Fix(settings): remove storage limits notice - Fix(settings): list process memory below metrics - Fix(settings): remove stale links and duplicate copy - Test(settings): complete progressive disclosure coverage - Test(settings): cover progressive disclosure journeys - Feat(settings): simplify specialist settings pages - Feat(settings): simplify common settings pages - Feat(settings): add progressive disclosure primitives - Tighten Wisp build output - Fix(build): harden shared vcpkg preflight - Make invite retry count overflow-safe - Cache Windows OpenSSL with vcpkg - Drop regenerated ts-rs binding drift from the branch - Test(net): harden relay reachability regression coverage - Fix Android smoke resume sequence - Fix Android invite discovery and resume unlock - Fix(net): stop treating relay circuit addresses as direct-reachability proof - Feat(mobile): add device smoke and Play validation - Fix(build): ignore blank Cargo build-dir overrides - Fix Wisp test repair edge cases - Add resumable Wisp test repair flow - Fix(mobile): respect Android insets and enable vaults - Feat(wisp): add Android build target - Fix(mobile): make Android packaging build end to end - Fix(net): harden relay route lifecycle - Style: format CI workflow guardrails - Run build support checks only when relevant - Eliminate cold contract and tool builds - Parse console filter and forbid sub-error directives - Match console filter intent in build_flags - Eliminate repeated cold GitHub builds - Fix(net): gate peer connect/disconnect diagnostics on connection count - Support CMake 4 on Windows runners - Feat(net): allow 2 connections per peer for DCUtR direct upgrade - Fix(net): preserve dial origins across network resets - Fix(invite): close route progress lifecycle gaps - Fix(net): cover stale network-change dial completions - Fix(voice): make receiver feedback drive RED correctly - Fix(net): checked_add for reservation cooldown deadline (clippy) - Test(net): 3-node loopback relay round-trip integration test - Feat(net): append circuit relay hint to invite locators and peer records - Feat(net): relay reservation policy on a 30s timer tick - Feat(net): relay/dcutr event arms and RelayCircuit candidate source - Feat(net): thread relay toggles and reservation-check timer config - Feat(invite): invite-scoped route progress events + UI surface - Feat(voice): split late-drop and concealment in receiver reports - Fix(net): reset dial breakers and backoff on network change - Feat(net): add relay/dcutr libp2p features and behaviour fields ## Notes - Detailed changes are derived from `git log v1.0.14..HEAD` and grouped by subsystem.