July 8, 2026
π New Features
- update command β routstrd update downloads and installs new binaries for both routstrd and cocod, then gracefully restarts running daemons so updates take effect immediately. Skips daemons that aren't running or when using a
remote routstrd instance. Failures are reported without rolling back the update.
π Bug Fixes
-
Periodic Nostr event refresh β The daemon now calls refreshNostrEvents() on startup and every 21 minutes, keeping provider discovery (kind 38421) and LGTM reviews (kind 38425) fresh without manual intervention.
-
Fixed renderToday crash on missing usage summary β Stats variables now initialize with sensible defaults instead of being used before assignment when stats.summary is absent.
-
Fixed stale usage-summary test fixtures β Hardcoded May 2026 timestamps aged out of the 30-day rolling window; tests now compute timestamps relative to now.
π SDK Upgrade: @routstr/sdk 0.3.12 β 0.3.15
- Tinfoil EHBP attestation β Encrypted transport for tinfoil-* models via enclave attestation and HPKE.
- Auto-discovery in fetchAIResponse β Callers can pass adapters directly; the SDK bootstraps discovery, ranking, and routing internally.
- xcashu refund robustness β Refund token tried before original in error path; 404s retried 3Γ with 2-minute intervals; 425 Too Early handled without throwing; orphaned IOU tokens cleaned up after successful refunds.
- apikeys failover β Transient "ongoing requests" errors now trigger provider failover instead of throwing.
- Stale model cleanup β Models from disappeared Nostr providers no longer leak into rankings.
- ProviderRegistry removed β Consumers use DiscoveryAdapter directly; β107 lines across the SDK.
- Nostr event store now treated as persistent source of truth β the erroneous 210-minute TTL on cached events is gone.
π§Ή Internal
- Daemon synced with SDK's DiscoveryAdapter API after the ProviderRegistry removal.