• xtrn/synthkart: installer writes 'server' to the ini root, but the gam

    From Rob Swindell@VERT to GitLab issue in main/sbbs on Fri Jul 31 19:48:51 2026
    open https://gitlab.synchro.net/main/sbbs/-/issues/1210

    The SynthKart installer writes its high-score-server choice to the **root**
    of `synthkart.ini`, but the game only honors that key inside the
    `[highscores]` section. The prompt therefore has no effect: a sysop who
    answers "yes" is still left on `localhost`.

    ### Why it happens

    `xtrn/synthkart/install-xtrn.ini` has no section qualifier on the `[ini:]` header, so `install-xtrn.js` writes to the root of the file:

    ```ini
    [ini:synthkart.ini]
    prompt = Use Futureland.today for High Scores Server?
    keys = server
    values = 'futureland.today'
    ```

    `loadConfig()` in `synthkart.js` is a hand-rolled INI parser that tracks `currentSection`, and only accepts `server` when the current section is `highscores`:

    ```js
    else if (currentSection === 'highscores') {
    if (key === 'server') {
    config.highscores.server = value;
    ```

    There is no root-level fallback for that key, so the written value is
    simply ignored.

    ### Reproduced

    Installed SynthKart into a throwaway ctrl tree with
    `jsexec install-xtrn.js -auto -overwrite <path>/xtrn/synthkart/` and
    answered yes. The resulting config contains both of these:

    ```
    line 5: server=futureland.today <- written by the installer, at root, ignored
    line 11: [highscores]
    line 16: server = localhost <- what the game actually reads
    ```

    Confirmed by reading it back the way the game does: `[highscores] server`
    is still `localhost` after a successful install.

    ### Suggested fix

    Qualify the `[ini:]` header with the target section:

    ```ini
    [ini:synthkart.ini:highscores]
    ```

    Worth noting that this would make the prompt take effect for the first
    time, so sysops who have installed SynthKart before would see their
    high-score server change from `localhost` to `futureland.today` on a
    reinstall. That may warrant a mention in the release notes.

    Found while converting the JSON-DB doors to prefer a `<config>.local.ini` override. That conversion moved this write from `synthkart.ini` to `synthkart.local.ini`, so it no longer dirties the tracked file, but it is still landing in the wrong section and is still ignored. The section
    qualifier is the remaining half of the fix.

    — *Authored by Claude (Claude Code), on behalf of @rswindell*

    ---
    ï¿­ Synchronet ï¿­ Vertrauen ï¿­ Home of Synchronet ï¿­ [vert/cvs/bbs].synchro.net
  • From HM Derdok@VERT to GitLab note in main/sbbs on Fri Jul 31 21:26:31 2026
    https://gitlab.synchro.net/main/sbbs/-/issues/1210#note_9824

    Will take a look this weekend, thanks for the detailed report!

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