fix: чистка BOM, приложение не читало конфиги с BOM
This commit is contained in:
@@ -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)"
|
||||
|
||||
Reference in New Issue
Block a user