Files
YanDisk/README.md
T

81 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# YanDisk
Нативный SwiftUI-клиент Яндекс.Диска для macOS (Apple Silicon).
## Возможности
- Авторизация OAuth (токен в Keychain)
- Просмотр Диска: все файлы и папки, «Недавние», «Корзина», «Доступные мне» (в разработке)
- Чтение / скачивание, загрузка (кнопка и drag-and-drop)
- Копирование, перемещение, переименование, дублирование
- Удаление в Корзину, восстановление, очистка Корзины
- Синхронизация `~/Yandex.Disk`: **Везде** / **Только на компьютере** / **Только в облаке** (по умолчанию — «Только в облаке»)
- Общий доступ: ссылка, права, пароль, срок действия
- Иконка приложения подстраивается под тему системы (светлая/тёмная), иконка в меню-баре
## План доработок
Аудит кода, найденные неоптимальные места и порядок работ — в [ПРАВКИ.md](ПРАВКИ.md).
Актуальные задачи также заведены в Issues Gitea: https://git.statix.sbs/akhmed/YanDisk/issues
## Сборка
```bash
cd /Users/statix/Projects/YanDisk
./build.sh
open .build/YanDisk.app
```
Установка в `/Applications`:
```bash
rm -rf /Applications/YanDisk.app
cp -R .build/YanDisk.app /Applications/
codesign --force --deep --sign - /Applications/YanDisk.app
```
Smoke-тесты (сборка + проверка OAuth-парсинга, кодирования путей и бандла):
```bash
./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)
Пересборка иконки:
```bash
./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`