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

This commit is contained in:
2026-09-01 19:39:06 +00:00
parent 0944d56dad
commit ccad3bce57
+32
View File
@@ -100,6 +100,35 @@ if isinstance(d, dict) and d.get("deploymentMode") == "1p":
PY
}
# ---------- Чистка BOM ----------
# Приложение падает на BOM: в логе видно
# [managedConfig] Failed to read config library meta: Unexpected token
# и тогда ВСЯ библиотека конфигов не читается. BOM приезжает из Блокнота на
# Windows (он по умолчанию сохраняет UTF-8 именно так) и из старых скриптов.
repair_json_bom() {
[ -n "$PY" ] || return 0
"$PY" - "$LIB" "$C1P" "$C3P" <<'PY'
import os, sys
lib, c1p, c3p = sys.argv[1:4]
targets = []
if os.path.isdir(lib):
targets += [os.path.join(lib, f) for f in os.listdir(lib) if f.endswith(".json")]
for d in (c1p, c3p):
for n in ("developer_settings.json", "claude_desktop_config.json"):
p = os.path.join(d, n)
if os.path.isfile(p): targets.append(p)
fixed = 0
for p in targets:
try:
b = open(p, "rb").read()
if b.startswith(b"\xef\xbb\xbf"):
open(p, "wb").write(b[3:]); fixed += 1
except Exception:
pass
if fixed: print(fixed)
PY
}
# merge_meta <applied: ollama|zai|default> <routes: ollama|zai|both|none>
merge_meta() {
local applied="$1" routes="$2"
@@ -288,6 +317,7 @@ if [ "$MODE" = "restore" ]; then
say "Откат на родного Claude..."
if [ ! -f "$LIB/_meta.json" ]; then ok "Конфигов нет, откатывать нечего."; exit 0; fi
merge_meta default none
repair_json_bom >/dev/null 2>&1 || true
ok "Применён пустой профиль Default."
echo " Если приложение всё равно открывается на чужом мозге: меню аккаунта внизу слева -> Sign out,"
echo " затем на экране входа выбери обычный вход по почте или Google."
@@ -443,6 +473,8 @@ fi
# Активной делаем ту конфигурацию, которая реально готова работать.
if [ "$HAVE_OLLAMA" = "true" ]; then merge_meta ollama "$BRAIN"; else merge_meta zai "$BRAIN"; fi
nbom="$(repair_json_bom || true)"
[ -n "$nbom" ] && ok "Убран BOM у $nbom файлов конфигурации (приложение их не читало)."
if [ "$OS" = "mac" ]; then
ok "TLS-фикс песочницы для вкладки Code: $(apply_tls_fix)"