YanDisk v1.0.1: тёмная иконка по теме системы, вкладки (Скриншоты скрыт, Файлы→Доступные мне), синк по умолчанию 'В облаке', ПРАВКИ.md

- Иконка: AppIconDark.icns + переключение Dock-иконки по effectiveAppearance (KVO)
- Сайдбар: убран 'Скриншоты', 'Файлы' → 'Доступные мне' (заглушка), первая вкладка — все файлы и папки
- SyncPolicyStore.globalMode по умолчанию .cloudOnly ('В облаке')
- build.sh/smoke_test.sh: SDKROOT из Xcode (фикс SDK-конфликта тулчейна 6.3.3/SDK 6.4)
- ПРАВКИ.md: полный аудит и план доработок
This commit is contained in:
2026-09-15 21:16:22 +03:00
commit 9098340f2a
50 changed files with 3100 additions and 0 deletions
Executable
+53
View File
@@ -0,0 +1,53 @@
#!/bin/bash
# Smoke-тесты логики без запуска GUI
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT"
# SDK из CommandLineTools может не совпадать с тулчейном — берём SDK из Xcode.
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path 2>/dev/null || echo "${SDKROOT:-}")"
echo "1) build"
swift build -c release >/dev/null
echo "2) OAuth parse"
swift -e '
import Foundation
func parse(_ input: String) -> String? {
let trimmed = input.trimmingCharacters(in: .whitespacesAndNewlines)
if trimmed.isEmpty { return nil }
if trimmed.contains("access_token=") {
let parts = trimmed.replacingOccurrences(of: "#", with: "&").replacingOccurrences(of: "?", with: "&").split(separator: "&")
for part in parts {
let kv = part.split(separator: "=", maxSplits: 1)
if kv.count == 2, kv[0] == "access_token" { return String(kv[1]) }
}
}
if trimmed.range(of: "^[A-Za-z0-9_\\-]{16,}$", options: .regularExpression) != nil { return trimmed }
return nil
}
assert(parse("0c4181a7c2cf4521964a72ff57a34a07") == "0c4181a7c2cf4521964a72ff57a34a07")
assert(parse("https://oauth.yandex.ru/verification_code#access_token=abc123&token_type=bearer") == "abc123")
print("ok")
'
echo "3) API path encoding"
swift -e '
import Foundation
func diskPath(_ path: String) -> String {
if path.hasPrefix("disk:") || path.hasPrefix("trash:") { return path }
let normalized = path.hasPrefix("/") ? path : "/" + path
return "disk:\(normalized)"
}
assert(diskPath("/Фото") == "disk:/Фото")
assert(diskPath("Фото") == "disk:/Фото")
assert(diskPath("trash:/x") == "trash:/x")
print("ok")
'
echo "4) app bundle"
APP="$ROOT/.build/YandexDisk.app"
test -x "$APP/Contents/MacOS/YandexDiskClient"
plutil -lint "$APP/Contents/Info.plist"
codesign -dv "$APP" 2>&1 | head -5
echo "ALL SMOKE TESTS PASSED"