YanDisk

Нативный SwiftUI-клиент Яндекс.Диска для macOS (Apple Silicon).

Возможности

  • Авторизация OAuth (токен в Keychain)
  • Просмотр Диска: все файлы и папки, «Недавние», «Корзина», «Доступные мне» (в разработке)
  • Чтение / скачивание, загрузка (кнопка и drag-and-drop)
  • Копирование, перемещение, переименование, дублирование
  • Удаление в Корзину, восстановление, очистка Корзины
  • Синхронизация ~/Yandex.Disk: Везде / Только на компьютере / Только в облаке (по умолчанию — «Только в облаке»)
  • Общий доступ: ссылка, права, пароль, срок действия
  • Иконка приложения подстраивается под тему системы (светлая/тёмная), иконка в меню-баре

План доработок

Аудит кода, найденные неоптимальные места и порядок работ — в ПРАВКИ.md. Актуальные задачи также заведены в Issues Gitea: https://git.statix.sbs/akhmed/YanDisk/issues

Сборка

cd /Users/statix/Projects/YanDisk
./build.sh
open .build/YanDisk.app

Установка в /Applications:

rm -rf /Applications/YanDisk.app
cp -R .build/YanDisk.app /Applications/
codesign --force --deep --sign - /Applications/YanDisk.app

Smoke-тесты (сборка + проверка OAuth-парсинга, кодирования путей и бандла):

./smoke_test.sh

Иконка

Исходники: icons/Icon-iOS-*.png (1024×1024).
Собранные ресурсы:

  • Resources/AppIcon.icns — Dock/Finder (светлая тема)
  • Resources/AppIconDark.icns — Dock/Finder (тёмная тема)
  • Resources/Assets.xcassets/AppIcon.appiconset — варианты light/dark (HIG)

Пересборка иконки:

./scripts/generate_icons.sh

Темы

Настройки → Основные → Тема: Как в системе / Светлая / Тёмная.
Значение хранится в AppStorage("Appearance"). Иконка Dock переключается автоматически по effectiveAppearance (AppDelegate.updateAppIcon()).

Структура

Sources/YanDisk/
  App/     точка входа, AppDelegate, окна
  Core/    API, OAuth, Keychain, модели, AppStore
  Sync/    движок синхронизации
  UI/      меню-бар, браузер, шаринг, настройки, вход
icons/     исходные PNG иконки
Resources/ Info.plist, AppIcon.icns, AppIconDark.icns, Assets.xcassets

Авторизация

  1. Иконка облака → Добавить аккаунт
  2. Войти через Яндекс
  3. Вставить access_token
S
Description
macOS-клиент Яндекс.Диска (SwiftUI, REST API): файлы, синхронизация, общий доступ
Readme
5.9 MiB
2026-09-15 22:34:27 +03:00
Languages
Swift 94.4%
Shell 5.6%