• src/doors/syncscumm/PROVE

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sunday, July 19, 2026 05:16:00
    https://gitlab.synchro.net/main/sbbs/-/commit/376833125e840f4a0a19b2ee
    Modified Files:
    src/doors/syncscumm/PROVENANCE.md build.sh src/doors/syncscumm/msvc/Directory.Build.props src/doors/syncscumm/scummvm/base/main.cpp src/doors/syncscumm/scummvm/gui/browser.cpp
    Log Message:
    syncscumm: compile out the ScummVM launcher and file browser

    A game that failed to launch dropped to the ScummVM launcher, from which
    a remote BBS user could reach Add Game -> the filesystem browser and
    read or write arbitrary host files -- a serious hole for a door. The
    launcher is also reachable from the F5 Global Main Menu's "Return to
    Launcher".

    Compile both out, gated on a new SYNCSCUMM_NO_LAUNCHER define (set by build.sh's DEFINES on the *nix build and by msvc/Directory.Build.props on
    the Win32 build):

    - base/main.cpp: launcherDialog() returns without selecting a game, so
    scummvm_main() proceeds to a clean exit instead of ever presenting
    the launcher (Add Game, options, path pickers).
    - gui/browser.cpp: BrowserDialog::runModal() returns "cancelled"
    without browsing -- a belt-and-suspenders guarantee that no dialog
    can expose the host filesystem.

    A door user can now never reach the launcher, nor browse/read/write
    arbitrary host files. PROVENANCE.md records the two new modified upstream files.

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Thursday, July 23, 2026 02:18:00
    https://gitlab.synchro.net/main/sbbs/-/commit/596369dcc45b8352c6ed3c0c
    Modified Files:
    src/doors/syncscumm/PROVENANCE.md build.sh src/doors/syncscumm/scummvm/engines/dialogs.cpp
    Log Message:
    syncscumm: identify the door and its build on the Global Main Menu

    SyncSCUMM identified itself nowhere. No version, no build stamp, no site --
    a player saw stock ScummVM's name and version and nothing to say which door,
    or which build, they were talking to. Every sibling door has carried that
    for a long time: syncdoom and syncduke in the corners of their menus, syncconquer appended to the engine's own version line, syncretro on its
    splash.

    That is not only cosmetic. Seven of the eight ScummVM game installs on this system were quietly running a binary four days and several batches old, and nothing on screen could have revealed it.

    The GMM's two heading lines now carry the door's identity instead of
    ScummVM's:

    SyncSCUMM v0.1
    ~c6d429e940 synchro.net

    Nothing is lost. The About button on that same menu still shows ScummVM's
    full version and attribution, and since the launcher is compiled out of the door (SYNCSCUMM_NO_LAUNCHER) the GMM was already the only route to it.

    NO BUILD DATE ON THAT LINE, deliberately. The widget is 160px in the lowres layout and 210 highres -- roughly 26 characters -- and hash + date + site
    ran to 36, so the GUI ellipsized it and ate the middle. The hash alone identifies the build exactly; the date only made it approximately
    informative, and a truncated stamp is worse than a short one.

    The hash and date come from the SHARED Synchronet stamp
    (build/gitinfo.cmake) rather than a hand-rolled git call, so this door
    reports its build exactly like the siblings -- including the part that
    matters most for the staleness problem above: a dirty tree reads "~hash" and dates itself to the build, so a stamp never names a commit the binary does
    not contain.

    Bridging that across this door's two-stage build took one line each: stage-1 CMake builds the door libraries, but stage 2 is ScummVM's own
    configure/make, which never sees CMake. build.sh runs gitinfo.cmake in
    script mode and appends the generated header's directory to config.mk's INCLUDES, the same mechanism already used to reach termgfx and xpdev.

    PROVENANCE.md records engines/dialogs.cpp as the sixth modified upstream
    file.

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Saturday, July 25, 2026 23:10:00
    https://gitlab.synchro.net/main/sbbs/-/commit/a1cd2df930e3e9ab1c1b9487
    Modified Files:
    src/doors/syncscumm/PROVENANCE.md src/doors/syncscumm/door/help_term.cpp src/doors/syncscumm/scummvm/engines/dialogs.cpp src/doors/syncscumm/scummvm/gui/themes/default.inc src/doors/syncscumm/scummvm/gui/themes/scummclassic/classic_layout.stx classic_layout_lowres.stx
    Log Message:
    syncscumm: one way out of the Global Main Menu, named for where it goes

    The GMM offered "Return to Launcher" and "Quit" as if they were a choice.
    They were not: the launcher and file browser are compiled out of the door,
    so both pushed the session to an end and dropped the caller back at the
    BBS. The milder-sounding one cost a player their session.

    "Return to Launcher" is gone and "Quit" now reads "Quit to BBS", which
    says what actually happens.

    Removing it takes a layout change as well as a code change: this layout
    engine reserves a widget's space whether or not the widget is ever instantiated, so dropping only the button would have left a hole in the
    menu. The ReturnToLauncher slot comes out of the built-in theme's
    GlobalMenu dialog (both the highres and lowres classic layouts), and default.inc is regenerated from them -- no theme .zip is deployed, so the built-in theme is the one the door renders with. Regeneration is
    deterministic: rebuilding it from unmodified sources reproduces the
    committed file byte for byte, so the diff here is only this change.

    Quit is now created unconditionally where upstream conditions it on gui_return_to_launcher_at_exit. With no launcher to return to, that
    setting could otherwise leave the menu with no way out at all.

    The key card no longer has to explain the two buttons, so that note goes
    away with them.

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

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