fix: strip UTF-8 BOM before parsing config.json (#478)

getDefaultMode() parsed the config with JSON.parse and no BOM strip, so a
config.json saved with a UTF-8 BOM (common on Windows) failed to parse and the
user's defaultMode was silently ignored. Strip the BOM first, matching the
existing /^\uFEFF/ pattern in ponytail-activate.js, check-versions.js, and
ponytail-mode-tracker.js.

Closes #375

Co-authored-by: nanaubusiness <195150264+nanaubusiness@users.noreply.github.com>
This commit is contained in:
DietrichGebert 2026-07-02 00:25:27 +02:00 committed by GitHub
parent 7e6eca6e29
commit 9ec4fb8b54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 2 additions and 1 deletions

View File

@ -83,7 +83,8 @@ function getDefaultMode() {
// 2. Config file
try {
const configPath = getConfigPath();
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
// Strip UTF-8 BOM (common on Windows-saved files) so JSON.parse doesn't choke
const config = JSON.parse(fs.readFileSync(configPath, 'utf8').replace(/^\uFEFF/, ''));
if (config.defaultMode && VALID_MODES.includes(config.defaultMode.toLowerCase())) {
return config.defaultMode.toLowerCase();
}