fix: чистка BOM, приложение не читало конфиги с BOM

This commit is contained in:
2026-09-01 19:39:10 +00:00
parent ccad3bce57
commit af2f59330d
+29
View File
@@ -73,6 +73,33 @@ function Clear-DeploymentPin {
} }
} }
# Приложение падает на BOM: в логе видно
# [managedConfig] Failed to read config library meta: Unexpected token 'п»ї'
# и тогда ВСЯ библиотека конфигов не читается. BOM берётся из старых версий
# скрипта и из Блокнота, который по умолчанию сохраняет UTF-8 именно так.
# Поэтому чистим BOM у всех json приложения, а не только у своих.
function Repair-JsonBom {
$files = @()
if (Test-Path $LIB) { $files += Get-ChildItem $LIB -Filter *.json -ErrorAction SilentlyContinue }
foreach ($d in @($C1P, $C3P)) {
foreach ($n in @("developer_settings.json", "claude_desktop_config.json")) {
$f = Join-Path $d $n
if (Test-Path $f) { $files += Get-Item $f }
}
}
$fixed = 0
foreach ($f in $files) {
try {
$b = [IO.File]::ReadAllBytes($f.FullName)
if ($b.Length -ge 3 -and $b[0] -eq 239 -and $b[1] -eq 187 -and $b[2] -eq 191) {
[IO.File]::WriteAllBytes($f.FullName, $b[3..($b.Length - 1)])
$fixed++
}
} catch { }
}
if ($fixed -gt 0) { Ok "Убран BOM у $fixed файлов конфигурации (приложение их не читало)." }
}
function Merge-Meta($applied, $routes) { function Merge-Meta($applied, $routes) {
$p = Join-Path $LIB "_meta.json" $p = Join-Path $LIB "_meta.json"
$old = Read-Json $p $old = Read-Json $p
@@ -159,6 +186,7 @@ if ($Mode -eq "restore") {
Say "Откат на родного Claude..." Say "Откат на родного Claude..."
if (-not (Test-Path (Join-Path $LIB "_meta.json"))) { Ok "Конфигов нет, откатывать нечего."; return } if (-not (Test-Path (Join-Path $LIB "_meta.json"))) { Ok "Конфигов нет, откатывать нечего."; return }
Merge-Meta "default" "none" Merge-Meta "default" "none"
Repair-JsonBom
Ok "Применён пустой профиль Default." Ok "Применён пустой профиль Default."
Write-Host " Если приложение всё равно открывается на чужом мозге: меню аккаунта внизу слева -> Sign out," Write-Host " Если приложение всё равно открывается на чужом мозге: меню аккаунта внизу слева -> Sign out,"
Write-Host " затем на экране входа выбери обычный вход по почте или Google." Write-Host " затем на экране входа выбери обычный вход по почте или Google."
@@ -306,6 +334,7 @@ if ($brain -eq "zai" -or $brain -eq "both") {
} }
if ($haveOllama) { Merge-Meta "ollama" $brain } else { Merge-Meta "zai" $brain } if ($haveOllama) { Merge-Meta "ollama" $brain } else { Merge-Meta "zai" $brain }
Repair-JsonBom
# ---------- Самопроверка ---------- # ---------- Самопроверка ----------
Say "Проверяю, что получилось..." Say "Проверяю, что получилось..."