https://gitlab.synchro.net/main/sbbs/-/commit/26a0e93afbed863f171c74a9
Modified Files:
src/doors/syncdoom/syncdoom.c src/doors/termgfx/OPUS_TRANSITION.md audio.c audio.h audio_mgr.c caps.h
Log Message:
termgfx: gate music on client Opus support; fix CTerm PPM version
Two related SyncTERM-capability fixes.
Opus gate (audio): termgfx switched music to Ogg-Opus unconditionally on 2026-07-01, carrying a known "silent music" risk on clients whose
libsndfile lacks Opus (e.g. Ubuntu 22.04's 1.0.31) -- the coarse
"libsndfile present?" probe couldn't tell Opus apart from bare
libsndfile. SyncTERM's new Q;libsndfileFormat query (feature 101) reports per-codec support, so use it: once the digital audio tier is confirmed,
probe libsndfileFormat 32;100 (SF_FORMAT_OGG>>16 ; SF_FORMAT_OPUS) and,
when the reply is 0, suppress music uploads -- no render, no undecodable
bytes on the wire. SFX (raw WAV) are unaffected. No regression: a client
that reports Opus behaves exactly as before, and one that never answers
(older SyncTERM) is treated as capable, i.e. unchanged. The gate lives in termgfx, so all three door families get it.
CTerm PPM version (caps): TERMGFX_CTERM_VER_PPM was 1002 -- which is
cterm.c CVS revision 1.2, the file's ~second revision, with no multimedia
at all. That conflated a SyncTERM release number with the cterm.c CVS
revision the field actually encodes (major*1000 + minor). APC PPM landed
at cterm.c 1.315 (bare DrawPPM) / 1.316 (C;LoadPPM + copy buffers,
Dec 2022), so the constant is now 1316 -- and since that's newer than
Sixel (1189), any PPM-capable SyncTERM also has Sixel. The one user, syncdoom.c, wasn't gating PPM at all: it used the constant as a "this is SyncTERM" floor (which is why the bogus-low 1002 worked -- any real
SyncTERM cleared it). A parsed CTerm version already implies SyncTERM, so
set g_is_syncterm unconditionally there instead. No behavior change for
real clients.
Co-Authored-By: Claude Opus 4.8 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net