• exec/load/syncretro_lobby.js xtrn/syncivision/test_lobby_headless.js

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jul 17 02:57:08 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/90df3d16a49a242ce5e905c0
    Modified Files:
    exec/load/syncretro_lobby.js xtrn/syncivision/test_lobby_headless.js Log Message:
    syncretro: page the lobby with '+'/'-', find with 'F'

    '+' pages forward like N and '-' back like P: they sit next to each other on the keyboard -- and on the numeric keypad, under the hand that just typed a cartridge number -- so they read as forward/back without being told. Both are below '0' in ASCII, so neither can be mistaken for the start of a cartridge number.

    Find is now 'F', which names itself the way Next/Prev/Quit already do; '/' stays bound as an alias. The prompt names F and leaves the aliases off, as it already does for Enter/PgUp/PgDn/Home/End -- the row has to stay inside 80 columns.

    Also repairs the headless lobby test, which was red before any of this:

    - Its bbs stub had no logline(), so the play-logging line added by the
    earlier commit in this batch threw on the launch path. Stub it, and cover
    the line it writes.
    - It asserted the board prints "Most played" or "[1-". Neither string has
    ever appeared in the lobby, and the board cannot paint at all on that
    first pass -- the harness refuses to run unless the plays file is absent.
    Assert the footer, which is always drawn.
    - It asserted the door binary is quoted. The lobby deliberately leaves it
    bare: external() only reads the command as an absolute path when it starts
    with the drive letter or '/', and a leading quote defeats that. The check
    also pinned the binary to a flat door path, but the "<os>-<arch>" sub-dir
    is optional -- never present on Windows, and on *nix only when it is
    populated -- so either layout is legal and neither can be hard-coded.
    Assert the contract instead: leading token, absolute, unquoted, ending in
    the binary and its %. specifier.

    The new keys are asserted against the page the lobby draws, so an unbound key would leave the count unmoved and fail. Verified against the live 186-ROM Intellivision install, which paginates; the harness needs the install dir.

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