Release Lunaris 2.0 customization update

This commit is contained in:
2026-05-26 12:45:46 +03:00
parent 9cff9e5307
commit f65efe7cf7
21 changed files with 514 additions and 189 deletions
+74 -90
View File
@@ -1,117 +1,101 @@
# Lunaris
# Lunaris
Lunaris - локальное Flutter-приложение для просмотра booru/gelbooru/rule34-подобных источников в Pinterest-стиле.
Lunaris - локальное Flutter-приложение для просмотра booru, gelbooru, rule34-подобных источников и artist-архивов в Pinterest-стиле.
Приложение не использует отдельный backend-сервер. Вся логика живет внутри Flutter: API-провайдеры, кэш metadata, избранное, коллекции, история просмотров, настройки, диагностика, фильтры и обновления.
Приложение не использует отдельный backend-сервер. Вся логика живет внутри Flutter: API-провайдеры, локальный кеш metadata, избранное, коллекции, история просмотров, фильтры, диагностика, загрузки и обновления.
## Возможности
## Возможности
- Masonry feed с несколькими провайдерами и перемешанной выдачей All providers.
- Поиск тегов через chip-input: ввел тег, нажал пробел или Enter, тег стал отдельным элементом.
- Подсказки тегов из API активных провайдеров.
- Избранное, коллекции и отдельная вкладка Viewed.
- Smart blacklist/whitelist по тегам, группам тегов, рейтингу, провайдеру, типу файла и score.
- Details viewer для фото, GIF, видео и SWF на Windows.
- Видео-плеер с fullscreen, repeat, mute, half-volume и сохранением выбранных настроек.
- Отдельная вкладка Artists для Kemono/Coomer: поиск авторов и просмотр их работ без смешивания с обычным booru feed.
- Управление провайдерами, health-check и provider diagnostics.
- Экспорт и импорт настроек JSON.
- Автопроверка обновлений через Gitea Releases, скачивание и открытие APK/Windows installer прямо из приложения.
- Masonry feed с несколькими провайдерами и перемешанной выдачей All providers.
- Поиск тегов через chip-input с подсказками из активных API.
- Избранное, Viewed history, коллекции и пакетное добавление в коллекции.
- Smart blacklist/whitelist по тегам, группам тегов, рейтингу, провайдеру, типу файла и score.
- Details viewer для фото, GIF, видео и SWF на Windows.
- Видеоплеер с fullscreen, repeat, mute, half-volume и сохранением настроек.
- Отдельная вкладка Artists для Kemono/Coomer без смешивания с обычным booru feed.
- Управление провайдерами, health-check и provider diagnostics.
- Кастомизация интерфейса: тема, язык, акцентный цвет, видимые вкладки, beta/experimental обновления.
- Экспорт и импорт настроек JSON.
- Автопроверка Gitea Releases, скачивание APK/Windows installer прямо из приложения.
## Скачать
## Скачать
Готовые сборки лежат в Gitea Releases:
Готовые сборки лежат в Gitea Releases:
[Lunaris v1.1.2 Experimental](https://gitea.rardogsynapse.online/RarDog/RuleGelApp/releases/tag/v1.1.2-experimental)
[Lunaris 2.0.0](https://gitea.rardogsynapse.online/RarDog/RuleGelApp/releases/tag/v2.0.0)
- `Lunaris-v1.1.2-experimental.apk` - APK для Android.
- `LunarisSetup-v1.1.2-experimental.exe` - установщик для Windows.
- `LunarisPortable-v1.1.2-experimental.zip` - portable-версия для Windows.
- `Lunaris-v2.0.0.apk` - APK для Android.
- `LunarisSetup-v2.0.0.exe` - установщик для Windows.
- `LunarisPortable-v2.0.0.zip` - portable-версия для Windows.
## Стек
## Провайдеры
- Flutter, Dart, Riverpod, go_router
- Dio, Isar, connectivity_plus
- cached_network_image, flutter_staggered_grid_view
- media_kit для видео
- webview_windows + Ruffle fallback для SWF на Windows
Обычный feed:
## Архитектура
- Gelbooru
- Rule34
- Safebooru
- Konachan
- Yande.re
- e621 / e926
- Xbooru
- CosBooru
- Realbooru отключен по умолчанию, если публичный API недоступен
Lunaris - Flutter-монолит. UI не дублирует backend-логику, а вызывает локальные сервисы через Riverpod.
Artists flow:
- `lib/core` - HTTP, база, кэш, ошибки, Result и утилиты.
- `lib/backend/models` - доменные модели.
- `lib/backend/providers` - API-провайдеры и ProviderManager.
- `lib/backend/repositories` - доступ к локальному Isar-хранилищу.
- Kemono
- Coomer
Kemono/Coomer остаются отдельным разделом Artists и не попадают в общий booru feed.
## Архитектура
- `lib/core` - HTTP, база, кеш, ошибки, Result и утилиты.
- `lib/backend/models` - доменные модели.
- `lib/backend/providers` - API-провайдеры и ProviderManager.
- `lib/backend/repositories` - доступ к локальному Isar-хранилищу.
- `lib/backend/services` - Feed/Search/Favorites/Collections/Settings/Diagnostics/Downloads/Updates.
- `lib/backend/di` - Riverpod providers для backend/core.
- `lib/app` - приложение, роутер, тема и responsive helpers.
- `lib/shared/widgets` - общие UI-компоненты.
- `lib/features` - экраны и контроллеры фич.
- `lib/backend/di` - Riverpod providers для backend/core.
- `lib/app` - приложение, роутер, тема, motion и responsive helpers.
- `lib/shared/widgets` - общие UI-компоненты.
- `lib/features` - экраны и контроллеры фич.
## Экраны
- `/` - главный feed.
- `/search` - РїРѕРёСЃРє Рё recent searches.
- `/post/:providerId/:postId` - details viewer.
- `/favorites` - избранное.
- `/viewed` - история просмотренных постов.
- `/collections` - коллекции.
- `/artists` - поиск авторов Kemono/Coomer.
- `/artists/:providerId/:service/:artistId` - работы автора.
- `/providers` - управление провайдерами.
- `/providers/check` - диагностика провайдеров.
- `/settings` - настройки.
## Провайдеры по умолчанию
- Gelbooru - `https://gelbooru.com`
- Rule34 - `https://api.rule34.xxx`
- Safebooru - `https://safebooru.org`
- Konachan - `https://konachan.com`
- Yande.re - `https://yande.re`
- e621 - `https://e621.net`
- e926 - `https://e926.net`
- Xbooru - `https://xbooru.com`
- CosBooru - `https://cos.lycore.co`
- Kemono - `https://kemono.su` (только Artists)
- Coomer - `https://coomer.su` (только Artists, выключен по умолчанию)
Realbooru оставлен в списке, но выключен по умолчанию, потому что его публичный API сейчас нестабилен.
Поддерживаемые `apiType`: `gelbooru`, `rule34`, `realbooru`, `danbooru`, `moebooru`, `e621`, `kemono`, `coomer`.
Один упавший провайдер не ломает общий feed: ошибка сохраняется в diagnostics, остальные источники продолжают отдавать посты.
## Как добавить провайдера
1. Добавить mapper в `lib/backend/mappers`, если формат ответа отличается.
2. Реализовать `ContentProvider` или artist-only `ArtistProvider` в `lib/backend/providers`.
3. Зарегистрировать новый `apiType` в `ProviderFactory`.
4. Добавить config через Providers UI или seed в `ProviderRepository`.
## Запуск и сборка
## Запуск
```bash
flutter pub get
flutter analyze
flutter test
flutter run -d windows
flutter build windows
flutter build apk
flutter run -d android
```
Windows installer собирается через Inno Setup:
## Сборка
```bash
ISCC installer/Lunaris.iss
flutter analyze
flutter test
flutter build apk
flutter build windows
```
## Безопасность
Windows installer собирается через Inno Setup:
- Feed работает с preview/sample metadata и не скачивает full files автоматически.
- Скачивание фото/видео/SWF выполняется только по явному действию пользователя.
- Приложение уважает rate limits и использует retry/backoff.
- API keys/user data хранятся локально и попадают в export JSON только по действию пользователя.
```powershell
ISCC.exe installer\Lunaris.iss
```
## Как добавить провайдера
1. Создать класс, реализующий `ContentProvider`.
2. Добавить mapper к единой модели `Post`.
3. Зарегистрировать `apiType` в `ProviderFactory`.
4. Добавить seed config в `ProviderRepository`, если провайдер нужен по умолчанию.
5. Добавить тесты parser/provider factory.
## Безопасность
- Feed работает только с metadata/preview, full file не скачивается автоматически.
- Загрузка файлов происходит только по явному действию пользователя.
- Приложение уважает API и rate limits сайтов.
- NSFW/blur/blacklist настраиваются локально.
- API keys/custom headers хранятся локально и экспортируются только через явный export settings.