• xtrn/syncdoom/lobby.js sy

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Saturday, June 20, 2026 14:04:00
    https://gitlab.synchro.net/main/sbbs/-/commit/5fd15b6f13ad1f3dccd16cce
    Modified Files:
    xtrn/syncdoom/lobby.js syncdoom.ini syncdoom_lib.js
    Log Message:
    syncdoom lobby: page nodes to join, fix join-race & stale games, cap at 4 players

    When creating a multi-player game, offer to page other active nodes whose users can run the door (User.compare_ars against the door's execution_ars), delivered via the sysop-configurable NodeMsgFmt so it matches normal inter-node messages. The page prompt now runs before the server is spawned, so it no longer sits in the spawn->connect window where a browse-joiner could connect first and steal the
    host/controller slot. Hide games with zero connected players from the Join list,
    so a match everyone has left doesn't linger until the server's idle-timeout. Cap
    players at Doom's MAXPLAYERS (4) rather than NET_MAXPLAYERS (8) -- the game has only four player slots/colors/starts.

    Co-Authored-By: Claude Opus 4.8 <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, June 20, 2026 14:04:00
    https://gitlab.synchro.net/main/sbbs/-/commit/4a4076b7d664e96402b5ba17
    Modified Files:
    xtrn/syncdoom/lobby.js syncdoom_lib.js
    Log Message:
    syncdoom lobby: per-host advertise, WAD-set default/note, per-WAD .msg

    Multi-host: overlay a hostname-keyed [net:<hostname>] section onto [net]
    (keyed by system.local_host_name) and pass [net] advertise to the dedicated server as -advertise, so one shared install can give each host its own
    joinable address. Blank advertise still means loopback / same-host only.

    WAD picker: pre-select the [wads] default set, show a [wadset:*] note
    (with a pause) before launch, and display any "<wadname>.msg" readme sitting beside a WAD in the selected set (paged, before launch).

    Co-Authored-By: Claude Opus 4.8 <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 Sunday, June 21, 2026 15:31:00
    https://gitlab.synchro.net/main/sbbs/-/commit/5d2f1bcd0d6ed9c3580ab651
    Modified Files:
    xtrn/syncdoom/lobby.js syncdoom.example.ini syncdoom_lib.js
    Log Message:
    syncdoom lobby: optional full-screen DOOM ANSI attract on entry

    Show a full-screen DOOM ANSI splash once when a player enters the lobby,
    before the menu. A random *.ans/*.asc from the [lobby] art_dir (default an "art" sub-dir of the door dir) is paged; any key drops into the menu. Silent and skipped when no art is installed or [lobby] attract = false, so it costs nothing out of the box.

    The art is sysop-provided -- nothing ships in the repo (the classic ~48-row DOOM scene portraits are fan art of id's monsters; a sysop drops their own
    into the art dir). The waiting-room bespoke logo splash is unchanged.

    - syncdoom_lib.js: cfg.lobby, sd_attract_dir(), sd_attract_files() (filters by
    extension case-insensitively -- classic art is often upper-case *.ANS and
    directory() is case-sensitive on *nix).
    - lobby.js: sd_attract() called once at the top of sd_main().
    - syncdoom.example.ini: documented [lobby] attract / art_dir.

    Co-Authored-By: Claude Opus 4.8 <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 Wednesday, July 01, 2026 23:24:00
    https://gitlab.synchro.net/main/sbbs/-/commit/e4be037a9e1065a3553a5276
    Modified Files:
    xtrn/syncdoom/lobby.js syncdoom_lib.js
    Log Message:
    syncdoom: converge lobby onto shared game_lobby.js

    Rewrite syncdoom_lib.js as a thin DOOM-specific layer over the shared exec/load/game_lobby.js (as SyncDuke already is), deleting its own copies of logic the shared lib provides -- string/time helpers, [net] config overlay + defaults, UDP port allocation, address resolution, the game-registry read, node paging, the live who's-online panel primitives, and events.jsonl read/prune -- and repointing lobby.js's call sites at gl.*. Only genuinely DOOM-specific code stays (the wad-set catalog, map-warp args, the frag/level/death event taxonomy, and the panel/activity composition), its internals rewired to gl.*.

    Two intended behavior changes come with adopting the shared registry/prune: a game entry with no heartbeat now ages by file mtime (gl.entry_age) instead of being reaped immediately, and the events-log prune round-trips lines through JSON
    (normalizing malformed lines) instead of copying raw text. game_lobby.js itself is unchanged, so SyncDuke is unaffected.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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