fix: чистка BOM, приложение не читало конфиги с BOM
This commit is contained in:
@@ -100,6 +100,35 @@ if isinstance(d, dict) and d.get("deploymentMode") == "1p":
|
|||||||
PY
|
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 <applied: ollama|zai|default> <routes: ollama|zai|both|none>
|
||||||
merge_meta() {
|
merge_meta() {
|
||||||
local applied="$1" routes="$2"
|
local applied="$1" routes="$2"
|
||||||
@@ -288,6 +317,7 @@ if [ "$MODE" = "restore" ]; then
|
|||||||
say "Откат на родного Claude..."
|
say "Откат на родного Claude..."
|
||||||
if [ ! -f "$LIB/_meta.json" ]; then ok "Конфигов нет, откатывать нечего."; exit 0; fi
|
if [ ! -f "$LIB/_meta.json" ]; then ok "Конфигов нет, откатывать нечего."; exit 0; fi
|
||||||
merge_meta default none
|
merge_meta default none
|
||||||
|
repair_json_bom >/dev/null 2>&1 || true
|
||||||
ok "Применён пустой профиль Default."
|
ok "Применён пустой профиль Default."
|
||||||
echo " Если приложение всё равно открывается на чужом мозге: меню аккаунта внизу слева -> Sign out,"
|
echo " Если приложение всё равно открывается на чужом мозге: меню аккаунта внизу слева -> Sign out,"
|
||||||
echo " затем на экране входа выбери обычный вход по почте или Google."
|
echo " затем на экране входа выбери обычный вход по почте или Google."
|
||||||
@@ -443,6 +473,8 @@ fi
|
|||||||
|
|
||||||
# Активной делаем ту конфигурацию, которая реально готова работать.
|
# Активной делаем ту конфигурацию, которая реально готова работать.
|
||||||
if [ "$HAVE_OLLAMA" = "true" ]; then merge_meta ollama "$BRAIN"; else merge_meta zai "$BRAIN"; 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
|
if [ "$OS" = "mac" ]; then
|
||||||
ok "TLS-фикс песочницы для вкладки Code: $(apply_tls_fix)"
|
ok "TLS-фикс песочницы для вкладки Code: $(apply_tls_fix)"
|
||||||
|
|||||||
Reference in New Issue
Block a user