Release Lunaris 2.0 customization update
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user