• ctrl/text.dat exec/load/cterm_lib.js text.js userdefs.js exec/user_set

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thursday, September 24, 2026 21:22:48
    https://gitlab.synchro.net/main/sbbs/-/commit/5af65d06212dd11a878a4317
    Modified Files:
    ctrl/text.dat exec/load/cterm_lib.js text.js userdefs.js exec/user_settings.js src/sbbs3/atcodes.cpp con_out.cpp sbbsdefs.h text.h text_defaults.c text_id.c
    Log Message:
    Add a user setting to suppress BBS-initiated sound

    New NO_SOUND bit in user.misc covering both the terminal bell and the
    terminal audio @-codes added in a following change. Negative polarity, so
    a default of zero preserves today's behavior for every existing user.
    Bits 25 and 30 were the only two free, which is the argument for one flag rather than separate bell and audio bits.

    The bell is gated in cp437_out(), the one point where a BEL byte reaches
    the terminal, so @BELL@, text.dat strings and message text are all
    covered by a single check. @SOUND@ reports the setting; user_settings.js toggles it on 'V', the mnemonic letter still free in that menu.

    cterm_lib.js honors the flag by reading user.settings directly, so a
    script respects the user's choice without needing a newer Synchronet, and
    takes console.audio_files as a fast path when the terminal server has
    already detected it. A false reading there cannot distinguish "no
    libsndfile" from "no audio APC at all", so that case still queries.

    user_settings.js guards the new text string on the running binary having
    it: bbs.text() returns undefined for an unknown id, and the exec tree can
    be updated ahead of the binary.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net