#!/bin/bash
# «Безопасный» — установка настольного окна-приложения для macOS.
# Создаёт «Безопасный.app» в ~/Applications (видно в Launchpad/Spotlight), открывает живой сайт
# в режиме приложения. Содержимое всегда свежее — грузится с сервера, мессенджер сам
# «следит за обновлениями». Запуск: двойной клик (если «не открывается» — правый клик → Открыть).
set -u
QUIET=0
[ "${1:-}" = "--quiet" ] && QUIET=1

BASE="https://panel-pergament.tail3fbf17.ts.net:8448"
APP="$HOME/Applications/Безопасный.app"
SUP="$HOME/Library/Application Support/Svoi"

say() { [ "$QUIET" = "1" ] || printf '%s\n' "$*"; }

mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources" "$SUP/profile"

say ''
say '  ============================================'
say '     Установка настольного «Безопасный» (macOS)'
say '     Пульт сервера: управление, антивирус, чат с Claude.'
say '  ============================================'
say ''

# Иконка
curl -fsSL --max-time 30 "$BASE/app/icons/bezopasny.icns" -o "$APP/Contents/Resources/bezopasny.icns" 2>/dev/null || true

# Версия оболочки
ver="1.0.0"
json="$(curl -fsSL --max-time 15 "$BASE/app/desktop.json" 2>/dev/null || true)"
r="$(printf '%s' "$json" | sed -n 's/.*"shell_version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)"
[ -n "$r" ] && ver="$r"
printf '%s' "$ver" > "$SUP/version.txt"

# Info.plist
cat > "$APP/Contents/Info.plist" <<'PLIST'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleName</key><string>Безопасный</string>
  <key>CFBundleDisplayName</key><string>Безопасный</string>
  <key>CFBundleIdentifier</key><string>md.claude-fast.bezopasny</string>
  <key>CFBundleVersion</key><string>1.0</string>
  <key>CFBundleShortVersionString</key><string>1.0</string>
  <key>CFBundlePackageType</key><string>APPL</string>
  <key>CFBundleExecutable</key><string>bezopasny</string>
  <key>CFBundleIconFile</key><string>bezopasny</string>
  <key>LSMinimumSystemVersion</key><string>10.12</string>
  <key>NSHighResolutionCapable</key><true/>
</dict>
</plist>
PLIST

# Updater — фоновое слежение за обновлениями оболочки
cat > "$SUP/update.sh" <<'UPD'
#!/bin/bash
set -u
BASE="https://panel-pergament.tail3fbf17.ts.net:8448"
SUP="$HOME/Library/Application Support/Svoi"
local_v="$(cat "$SUP/version.txt" 2>/dev/null || true)"
json="$(curl -fsSL --max-time 15 "$BASE/app/desktop.json" 2>/dev/null || true)"
remote_v="$(printf '%s' "$json" | sed -n 's/.*"shell_version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)"
[ -z "$remote_v" ] && exit 0
[ "$remote_v" = "$local_v" ] && exit 0
tmp="$(mktemp)"
curl -fsSL --max-time 30 "$BASE/app/bezopasny-mac.command" -o "$tmp" 2>/dev/null || exit 0
bash "$tmp" --quiet >/dev/null 2>&1 || true
rm -f "$tmp"
UPD
chmod +x "$SUP/update.sh"

# Исполняемый файл приложения
cat > "$APP/Contents/MacOS/bezopasny" <<'EXE'
#!/bin/bash
URL="https://panel-pergament.tail3fbf17.ts.net:8448"
PROFILE="$HOME/Library/Application Support/Svoi/profile"
# фоновая проверка обновлений
( "$HOME/Library/Application Support/Svoi/update.sh" >/dev/null 2>&1 & ) 2>/dev/null || true
CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
EDGE="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge"
BRAVE="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"
VIVALDI="/Applications/Vivaldi.app/Contents/MacOS/Vivaldi"
for b in "$CHROME" "$EDGE" "$BRAVE" "$VIVALDI"; do
  if [ -x "$b" ]; then
    exec "$b" --app="$URL" --user-data-dir="$PROFILE" --no-first-run --no-default-browser-check
  fi
done
# нет Chromium-браузера — откроем в браузере по умолчанию
exec open "$URL"
EXE
chmod +x "$APP/Contents/MacOS/bezopasny"

# Освежить иконку в Finder/Dock
touch "$APP" 2>/dev/null || true

say "  Готово. «Безопасный» — в Launchpad и в папке ~/Applications."

if [ "$QUIET" != "1" ]; then
  say ''
  say '  Запускаю «Безопасный»...'
  open "$APP" 2>/dev/null || open "$BASE"
  say '  Готово — пульт сервера под рукой.'
  say ''
fi
