https://gitlab.synchro.net/main/sbbs/-/commit/8e2346c6b7f187a540674757
Modified Files:
exec/load/syncretro_lobby.js src/doors/syncretro/GAMES_INI.md syncretro_games.c syncretro_games.h test_games.c xtrn/syncarcade/.gitignore README.md games.ini xtrn/syncivision/tests/test_syncretro_lobby.js
Log Message:
syncretro: games.local.ini, so a sysop's entries survive an upgrade
games.ini is the one door config a sysop is meant to edit that is also shipped and tracked, so an upgrade replaces it wholesale and a source install gets either lost edits or a merge conflict in a data file. Every other door config sidesteps this by not being tracked at all -- syncdoom.ini, syncduke.ini, syncretro.ini and the rest are gitignored copies the installer seeds from a tracked <name>.example.ini. games.ini cannot use that pattern: it is not a template with defaults but ~200 curated sections that keep growing, and a
sysop who copied it once would never see a title added later.
So it takes an overlay. games.local.ini, beside it and gitignored, is read second and wins. It holds only the differences, so a retitled cabinet survives every upgrade AND the titles added upstream still arrive.
Resolution is as if the local file's lines were appended to the shipped one: a key wins at the SAME SCOPE, so a local root default does not reach past a shipped section key. Specificity before locality -- otherwise the local file's behavior would depend on which keys the shipped file happens to carry this release. A section present in only one file resolves from that file, either file may be absent, and both get the same unknown-button.* validation, with
the warning naming which file carried the bad key.
Both readers layer the two: the door for the control labels and boot_frames, the lobby for the picker's titles. They have to agree, or a retitled cabinet would show one name on the menu and another on the who's-online line.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net