You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
diag(20.3): A/B test build for multi-peer CPU-spike regression
This is a DIAGNOSTIC build, not a shipping fix. Two suspect code paths
are neutralized so we can confirm whether they are the regression source.
Investigation tracked in .planning/debug/cpu-spikes-beta12-regression.md.
ABTEST 1 (src/core/njclient.cpp):
Revert DecodeMediaBuffer's SpscRing<DecodeChunk, N> from 256 back to 32.
Confirms whether the 1 MB per-buffer × N peers × per-interval heap
allocation introduced by 0e9cbae (in beta.20.1+) is the cause of the
audible CPU spikes that grow with peer count.
Side effect: re-introduces the original interval-overflow cutoff bug at
high bitrates (decbuf_drops will climb in /rcmstats).
ABTEST 2 (juce/JamWideJuceEditor.cpp):
Stub the broadcastBeatHeartbeat() call from timerCallback.
Confirms whether ~1.5 Hz JSON build + wsMutex_ acquisition + WebSocket
send (introduced in beta.12 by 755257d) is the source of the baseline
CPU bump users have reported since beta.12.
Side effect: video companion sync indicator stops updating.
How to use:
- A/B compare against beta.20.2 under same load (4+ peers, 30+ min)
- Watch audible-glitch cadence, Activity Monitor CPU% baseline,
/rcmstats decbuf_drops
- Each ABTEST can be toggled independently for symptom attribution
(search for "=== ABTEST" markers in source)
DO NOT ship as a normal beta. download.md still points to beta.20.2.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
10
10
The 1.1 line is a complete JUCE rewrite (1.0 was CLAP/ImGui). Per-beta release notes for `1.1-beta.1` through `1.1-beta.20` are on the [GitHub Releases page](https://github.com/mkschulze/JamWide/releases) and are not duplicated here. Entries are tracked below starting with `1.1-beta.20.1`.
> **⚠ This is not a regular beta.** It is a diagnostic build for the multi-peer CPU-spike investigation tracked in `.planning/debug/cpu-spikes-beta12-regression.md`. Two suspect code paths are temporarily neutralized to confirm whether they are the regression source. Do **not** use this build for normal jamming — at high bitrates the original audio-cutoff bug that beta.20.1 fixed is intentionally re-introduced. Use beta.20.2 for normal use.
15
+
16
+
### Diagnostic changes (NOT shipping fixes)
17
+
-**ABTEST 1**: `DecodeMediaBuffer`'s SPSC ring temporarily reverted from 256 → 32 chunks. Confirms whether per-peer-per-interval 1 MB heap allocation churn (introduced by beta.20.1's ring bump) is the cause of audible CPU spikes that grow with peer count. Side effect: original interval-overflow cutoff bug returns at high bitrates (≥192 kbps stereo on 12 s intervals); `decbuf_drops` will climb in `/rcmstats`.
18
+
-**ABTEST 2**: `broadcastBeatHeartbeat` call in `JamWideJuceEditor::timerCallback` is stubbed. Confirms whether ~1.5 Hz JSON build + WebSocket send on the message thread is the source of the baseline CPU bump that started showing in beta.12. Side effect: video companion sync indicator stops updating; no other functional impact.
19
+
20
+
### Notes for testers
21
+
- A/B compare baseline (beta.20.2) against this build under the same load (4+ peers, 30+ min session)
0 commit comments