c5375e200adcc57d40bee9a93d48470fa322f9ee
The per-peer volume slider had no .step(), so iced's default step of 1.0 on a 0.0..=2.0 range meant it could only snap to 0%, 100%, or 200% — it felt like hard-left/hard-right only. Add .step(0.01) for smooth 1%-increment control (matching the Pan slider below it, which already set its own step). Also persist per-peer volume across sessions, mirroring peer_pan/peer_eq: - new AppConfig.peer_volume map (keyed by peer id string, serde default for back-compat; never sent over the wire) - replace the in-memory peer_volumes map with config-backed storage via a new set_peer_volume_config helper (clamps to range, drops at-unity entries so the config stays tidy) - replay saved volumes to core on startup alongside pan/eq - the slider writes to disk on release (AppMessage::PersistConfig) +1 unit test for the config helper; +1 config back-compat assertion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>