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)