• xtrn/ansiview/.gitignore settings.example.ini xtrn/avatar_chat/.gitign

    From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Sun Jul 26 01:18:34 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/0aa214f366177d90e344706d
    Added Files:
    xtrn/ansiview/.gitignore settings.example.ini xtrn/avatar_chat/.gitignore avatar_chat.example.ini xtrn/bublbogl/.gitignore server.example.ini xtrn/chickendelivery/.gitignore server.example.ini xtrn/dicewarz/.gitignore dice.example.ini xtrn/dicewarz2/.gitignore dice.example.ini server.example.ini xtrn/dpoker/.gitignore dpoker.example.ini xtrn/druglord/.gitignore server.example.ini xtrn/fatfish/.gitignore server.example.ini xtrn/flight_sim/.gitignore xtrn/gooble/.gitignore server.example.ini xtrn/groupie_news_reader/.gitignore xtrn/gttrivia/.gitignore xtrn/jeopardized/.gitignore settings.example.ini xtrn/lemons/.gitignore server.example.ini xtrn/lord/.gitignore lord.example.ini lordsrv.example.ini xtrn/maze/.gitignore server.example.ini xtrn/oneliners/.gitignore settings.example.ini xtrn/starstocks/.gitignore server.example.ini xtrn/startrek/.gitignore server.example.ini xtrn/syncarcade/.gitignore xtrn/synchess/.gitignore xtrn/synchronetris/.gitignore server.example.ini synchronetris.example.ini xtrn/syncmoo1/.gitignore xtrn/syncwall/.gitignore server.example.ini service.example.ini xtrn/synkroban/.gitignore server.example.ini xtrn/synthkart/.gitignore synthkart.example.ini xtrn/thirsty/.gitignore game.example.ini xtrn/uberblox/.gitignore server.example.ini xtrn/utopia/.gitignore xtrn/wordem/.gitignore server.example.ini
    Modified Files:
    exec/install-xtrn.js xtrn/CLAUDE.md xtrn/ansiview/install-xtrn.ini xtrn/avatar_chat/install-xtrn.ini xtrn/betrayedalliance/.gitignore xtrn/bublbogl/install-xtrn.ini sysop.doc xtrn/cascadequest/.gitignore xtrn/chickendelivery/install-xtrn.ini xtrn/dicewarz/install-xtrn.ini xtrn/dicewarz2/install-xtrn.ini sysop.doc xtrn/dpoker/install-xtrn.ini xtrn/druglord/install-xtrn.ini xtrn/fatfish/install-xtrn.ini xtrn/flight_sim/install-xtrn.ini xtrn/gooble/install-xtrn.ini xtrn/groupie_news_reader/install-xtrn.ini xtrn/gttrivia/install-xtrn.ini xtrn/jeopardized/install-xtrn.ini xtrn/lemons/install-xtrn.ini xtrn/lord/install-xtrn.ini xtrn/maze/install-xtrn.ini sysop.doc xtrn/oneliners/install-xtrn.ini xtrn/spacequest0/.gitignore xtrn/starstocks/install-xtrn.ini sysop.doc xtrn/startrek/install-xtrn.ini xtrn/syncalert/.gitignore install-xtrn.ini xtrn/syncdawn/.gitignore install-xtrn.ini xtrn/syncdoom/.gitignore install-xtrn.ini xtrn/syncduke/.gitignore xtrn/synchronetris/install-xtrn.ini sysop.doc xtrn/syncivision/.gitignore xtrn/syncnes/.gitignore xtrn/syncwall/install-xtrn.ini xtrn/synkroban/install-xtrn.ini xtrn/synthkart/install-xtrn.ini xtrn/thirsty/install-xtrn.ini xtrn/uberblox/install-xtrn.ini sysop.doc xtrn/wordem/install-xtrn.ini
    Log Message:
    xtrn: the config a sysop edits is no longer the one git tracks

    A door's stock .ini that the sysop is meant to edit -- a JSONdb host/port,
    a colour scheme, game-balance knobs -- was version-controlled as the live
    file, so configuring a door left a dirty working tree forever and a pull
    could conflict with those edits.

    26 doors now track <name>.example.ini instead (a pure rename), seed the
    live file from a [copy:] step in install-xtrn.ini, and .gitignore it. flight_sim, gttrivia, groupie_news_reader, syncalert and syncdawn already shipped a template but never seeded it; the doors already following the
    pattern get the .gitignore line they lacked. synchess keeps its synchess-dist.ini name -- same purpose -- and only gains the ignore rule.
    Doors with no install-xtrn.ini are left alone: no installer means no
    supported install path to hang the [copy:] step on.

    install-xtrn.js processes sections by type, and [copy:] ran after [ini:].
    17 of these doors have an [ini:server.ini] that sets the upstream host, so
    with the seed running second the file did not exist yet and install() fell
    back to file_cfgname(ctrl_dir, ...), writing ctrl/server.ini instead of
    the door's. Run [copy:] first.

    An unattended (-auto) install also returned an error string when the copy destination existed. ctrl/xtrn.ini is not written until the end, so that discarded every program staged so far: the console printed "<Desc>
    installed successfully" and then "Installed 0 external programs" -- the
    [exec:] non-.js trap's shape exactly. Keep the sysop's file and carry on. Interactive behaviour is unchanged: the sysop is still asked, and
    declining still aborts.

    Both present since e92b4873ff (date-5-goals) added [copy:] support after
    the existing [ini:] loop.

    The documented "required" key on [ini:] and [copy:] sections was dead:
    both loops tested a bare `required`, which resolved to the hoisted-but-unassigned var from the [service:] loop below. Inert today --
    no section in the tree sets it. Present since 72f94e1e90 (seem-3-golf).

    Six mcmlxxix sysop.doc files told the sysop a SERVER.INI was included with
    the game; xtrn/CLAUDE.md documented the opposite .gitignore rule.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)