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