Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d0eac4481 | ||
|
|
4c9813b37b | ||
|
|
105b32bf76 |
@@ -46,25 +46,3 @@ jobs:
|
||||
files: ${{ env.ZIP_NAME }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload Windows Zip to Gitea Release
|
||||
shell: pwsh
|
||||
run: |
|
||||
$tag = "${{ github.ref_name }}"
|
||||
if (-not $tag) { $tag = "v3.0.0" }
|
||||
$token = "1c744d6044d756759d7b1f693c94c80cf70d75fa"
|
||||
$giteaUrl = "https://gitea.rardogsynapse.online"
|
||||
$repo = "RarDog/Lunaris"
|
||||
$zipName = $env:ZIP_NAME
|
||||
|
||||
Write-Host "Fetching Gitea release info for tag $tag..."
|
||||
$relUrl = "$giteaUrl/api/v1/repos/$repo/releases/tags/$tag"
|
||||
$headers = @{ "Authorization" = "token $token" }
|
||||
$rel = Invoke-RestMethod -Uri $relUrl -Headers $headers -Method Get
|
||||
$releaseId = $rel.id
|
||||
Write-Host "Found Gitea release ID: $releaseId"
|
||||
|
||||
$uploadUrl = "$giteaUrl/api/v1/repos/$repo/releases/$releaseId/assets?name=$zipName"
|
||||
Write-Host "Uploading $zipName to $uploadUrl..."
|
||||
curl.exe -X POST -H "Authorization: token $token" -F "attachment=@$zipName" $uploadUrl
|
||||
Write-Host "Successfully uploaded Windows build to Gitea!"
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/RarDog/Lunaris/releases"><img src="https://img.shields.io/badge/Version-3.0.0-8A2BE2?style=for-the-badge&logo=semver&logoColor=white" alt="Version 3.0.0" /></a>
|
||||
<a href="https://github.com/RarDog/Lunaris/releases"><img src="https://img.shields.io/badge/Version-3.0.1-8A2BE2?style=for-the-badge&logo=semver&logoColor=white" alt="Version 3.0.1" /></a>
|
||||
<img src="https://img.shields.io/badge/Flutter-3.47+-02569B?style=for-the-badge&logo=flutter&logoColor=white" alt="Flutter" />
|
||||
<img src="https://img.shields.io/badge/Platform-Android%20%7C%20Linux%20%7C%20Windows-00C853?style=for-the-badge" alt="Platforms" />
|
||||
<a href="https://gitea.rardogsynapse.online/RarDog/Lunaris"><img src="https://img.shields.io/badge/Gitea-RarDog%2FLunaris-FC6D26?style=for-the-badge&logo=gitea&logoColor=white" alt="Gitea" /></a>
|
||||
<a href="https://github.com/RarDog/Lunaris/wiki"><img src="https://img.shields.io/badge/Wiki-Documentation-FF6F00?style=for-the-badge&logo=gitbook&logoColor=white" alt="Wiki" /></a>
|
||||
<img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="License MIT" />
|
||||
</p>
|
||||
|
||||
@@ -41,6 +41,21 @@
|
||||
|
||||
---
|
||||
|
||||
## 📚 Документация и Вики (Руководство пользователя)
|
||||
|
||||
Подробные иллюстрированные руководства доступны в **[Lunaris Wiki](https://github.com/RarDog/Lunaris/wiki)** и прямо в репозитории:
|
||||
|
||||
- 🚀 **[Быстрый старт и установка](docs/wiki/Getting-Started.md)** — выбор правильного APK под процессор, запуск на Linux.
|
||||
- 🌐 **[Провайдеры контента](docs/wiki/Providers.md)** — особенности Booru (Gelbooru, Rule34, Realbooru, e621) и архивов Pawchive.
|
||||
- 🔍 **[Умный поиск и теги](docs/wiki/Search-and-Tags.md)** — оператор `and`, общие модификаторы и подсказки за 0 мс.
|
||||
- 🐾 **[Интеграция с Pawchive](docs/wiki/Pawchive-Sync.md)** — вход по паролю/куки, двусторонняя синхронизация и выгрузка авторов.
|
||||
- 🎬 **[Медиаплеер и просмотр](docs/wiki/Media-Viewer.md)** — жесты, автоповорот видео, разрешение 1920×1080 и Action Dock 2.0.
|
||||
- 💾 **[Офлайн-режим и загрузки](docs/wiki/Offline-and-Downloads.md)** — Sync Hub, шаблоны папок и сохранение оригиналов.
|
||||
- 🛡️ **[Черный список и фильтрация](docs/wiki/Safety-and-Blacklist.md)** — настройка Blacklist, Safe Mode и очистка кэша.
|
||||
- ❓ **[Часто задаваемые вопросы (FAQ)](docs/wiki/FAQ.md)** — автообновление, звук в видео и решение проблем.
|
||||
|
||||
---
|
||||
|
||||
## ✨ Ключевые возможности
|
||||
|
||||
- **📱 Плавная лента в стиле Pinterest**: Masonry-сетка с переключением режима отображения (Masonry, 1:1 Сетка, Компактный список).
|
||||
@@ -66,7 +81,7 @@
|
||||
|
||||
## 📥 Загрузка (Скачать сборки)
|
||||
|
||||
Релизы доступны на **[GitHub Releases](https://github.com/RarDog/Lunaris/releases)** и в личном репозитории **[Gitea Releases](https://gitea.rardogsynapse.online/RarDog/Lunaris/releases)**.
|
||||
Релизы доступны на странице **[GitHub Releases](https://github.com/RarDog/Lunaris/releases)**.
|
||||
|
||||
| Платформа | Архитектура | Формат | Описание |
|
||||
|---|---|---|---|
|
||||
@@ -145,6 +160,13 @@ lib/
|
||||
|
||||
---
|
||||
|
||||
## 👥 Разработчики
|
||||
|
||||
<p align="center">
|
||||
Разработано с ❤️ командой Lunaris.
|
||||
<strong>Разработчики:</strong> <a href="https://github.com/RarDog">RarDog</a> & <a href="https://deepmind.google/technologies/gemini/">Antigravity (Gemini)</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/RarDog"><img src="https://img.shields.io/badge/Developer-RarDog-blue?style=for-the-badge&logo=github&logoColor=white" alt="RarDog" /></a>
|
||||
<a href="https://deepmind.google/technologies/gemini/"><img src="https://img.shields.io/badge/AI%20Pair-Antigravity%20(Gemini)-8A2BE2?style=for-the-badge&logo=google&logoColor=white" alt="Antigravity" /></a>
|
||||
</p>
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# ❓ Часто задаваемые вопросы (FAQ)
|
||||
|
||||
### 1. Как обновить приложение?
|
||||
Lunaris проверяет наличие свежих версий автоматически при запуске.
|
||||
Вы также можете нажать **«Проверить обновления»** в Настройках.
|
||||
Приложение определит архитектуру вашего Android-устройства и скачает оптимальный APK напрямую из репозитория.
|
||||
|
||||
---
|
||||
|
||||
### 2. Почему видео воспроизводится без звука?
|
||||
По умолчанию звук в плеере приглушен, чтобы избежать неожиданно громкого воспроизведения. Нажмите на значок динамика в плеере, чтобы включить звук. Приложение запомнит ваш выбор для текущей сессии.
|
||||
|
||||
---
|
||||
|
||||
### 3. Где сохраняются скачанные файлы?
|
||||
- **На Android**: В стандартную папку `Pictures/Lunaris` или `Download/Lunaris` (в зависимости от настроек системы). Файлы сразу видны в стандартной Галерее телефона.
|
||||
- **На Linux**: В директорию `~/Pictures/Lunaris` или папку загрузок.
|
||||
|
||||
---
|
||||
|
||||
### 4. Безопасно ли вводить логин и пароль от Pawchive?
|
||||
Абсолютно безопасно. Lunaris не отправляет ваши учетные данные никуда, кроме официального защищенного API Pawchive по HTTPS. Пароли не логируются и сохраняются в зашифрованном системном хранилище. Для дополнительного спокойствия вы можете использовать вход через **Session Cookie**.
|
||||
|
||||
---
|
||||
|
||||
### 5. Что делать, если посты перестали загружаться?
|
||||
1. Проверьте стабильность интернет-соединения или работу VPN (некоторые провайдеры Booru могут быть заблокированы региональными провайдерами).
|
||||
2. Зайдите в **«Настройки» ➔ «Хранилище и кэш»** и нажмите **«Очистить кэш сети»**.
|
||||
3. Проверьте доступность источника через браузер (иногда Booru-серверы уходят на техническое обслуживание).
|
||||
@@ -0,0 +1,53 @@
|
||||
# 🚀 Быстрый старт и установка
|
||||
|
||||
### 📥 1. Установка на Android
|
||||
|
||||
Релизы приложения публикуются на странице **[GitHub Releases](https://github.com/RarDog/Lunaris/releases)**.
|
||||
|
||||
Начиная с версии **Lunaris 3.0**, APK разделены по архитектуре процессора, чтобы уменьшить размер скачиваемого файла:
|
||||
|
||||
| Файл APK | Для каких устройств |
|
||||
|---|---|
|
||||
| **`app-arm64-v8a-release.apk`** | **Рекомендуется.** 99% современных смартфонов и планшетов (64-битные процессоры ARM). |
|
||||
| **`app-armeabi-v7a-release.apk`** | Старые 32-битные Android-смартфоны или бюджетные ТВ-приставки. |
|
||||
| **`app-x86_64-release.apk`** | Эмуляторы Android на ПК (Bluestacks, Android Studio) или планшеты с процессорами Intel/AMD. |
|
||||
|
||||
> [!TIP]
|
||||
> **Умное автообновление:** При проверке обновлений прямо внутри Lunaris приложение **самостоятельно определит архитектуру** вашего процессора и автоматически скачает правильный файл!
|
||||
|
||||
#### Шаги установки:
|
||||
1. Скачайте нужный `.apk` файл на устройство.
|
||||
2. Откройте файл через менеджер файлов и подтвердите установку («Разрешить установку из этого источника»).
|
||||
3. Запустите **Lunaris**.
|
||||
|
||||
---
|
||||
|
||||
### 🐧 2. Установка на Linux
|
||||
|
||||
Lunaris распространяется для 64-битных Linux в виде готового автономного архива:
|
||||
|
||||
1. Скачайте **`Lunaris-v3.0.0-linux-x64.tar.gz`**.
|
||||
2. Распакуйте архив в любую удобную папку:
|
||||
```bash
|
||||
tar -xzf Lunaris-v3.0.0-linux-x64.tar.gz -C ~/Lunaris
|
||||
```
|
||||
3. Запустите приложение:
|
||||
```bash
|
||||
cd ~/Lunaris
|
||||
./lunaris
|
||||
```
|
||||
|
||||
*Системные требования Linux:* GTK-3, GLibc 2.31+, поддержка OpenGL/Vulkan для аппаратного ускорения видео.
|
||||
|
||||
---
|
||||
|
||||
### 🎨 3. Первый запуск и базовая настройка
|
||||
|
||||
После первого запуска рекомендуем заглянуть в раздел **Настройки**:
|
||||
- **Тема оформления**:
|
||||
- *Системная*: следует за темой устройства.
|
||||
- *Светлая / Тёмная*.
|
||||
- *AMOLED Pure Black*: истинно черный фон (`#000000`) для экономии заряда на экранах OLED.
|
||||
- *Динамические цвета (Material You)*: адаптация акцентных цветов под ваши системные обои Android.
|
||||
- **Интерфейс**: выбор языка (Русский / Английский).
|
||||
- **Провайдер по умолчанию**: выберите сервис, лента которого будет открываться первой при старте.
|
||||
@@ -0,0 +1,28 @@
|
||||
# 🌙 Добро пожаловать в Lunaris Wiki!
|
||||
|
||||
**Lunaris** — это современный, быстрый и функциональный кроссплатформенный клиент для Booru-борд и архивов независимых авторов (Creator Archives).
|
||||
|
||||
Приложение разработано на Flutter для **Android**, **Linux** и **Windows** с акцентом на плавный интерфейс в стиле Pinterest, глубокую кастомизацию, приватность и удобную работу с медиа.
|
||||
|
||||
---
|
||||
|
||||
## 🧭 Разделы документации
|
||||
|
||||
| Раздел | Описание |
|
||||
|---|---|
|
||||
| 🚀 **[Быстрый старт и установка](Getting-Started)** | Как выбрать правильный APK под ваш процессор Android, установка на Linux и первый запуск. |
|
||||
| 🌐 **[Провайдеры контента](Providers)** | Подключение Booru (Gelbooru, Rule34, Realbooru, e621) и архивов Pawchive. |
|
||||
| 🔍 **[Умный поиск и теги](Search-and-Tags)** | Оператор `and`, мультипоиск, общие модификаторы, подсказки тегов со скоростью отклика 0 мс. |
|
||||
| 🐾 **[Синхронизация Pawchive](Pawchive-Sync)** | Вход по логину или куки, двусторонняя синхронизация избранного, экспорт авторов. |
|
||||
| 🎬 **[Медиаплеер и просмотр](Media-Viewer)** | Управление жестами, автоповорот в полный экран, определение разрешения 1920x1080. |
|
||||
| 💾 **[Офлайн-режим и загрузки](Offline-and-Downloads)** | Локальный архив, шаблоны папок скачивания, пакетный экспорт. |
|
||||
| 🛡️ **[Черный список и фильтрация](Safety-and-Blacklist)** | Защита от нежелательного контента по тегам, категориям и рейтингу. |
|
||||
| ❓ **[Частые вопросы (FAQ)](FAQ)** | Автообновление приложения, решение проблем с сетью и кэшем. |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Философия проекта
|
||||
|
||||
1. **Никакой телеметрии и слежки**: Все ваши закладки, история поиска и избранные авторы хранятся локально на вашем устройстве.
|
||||
2. **Максимальная скорость**: Локальное кэширование метаданных и тегов позволяет интерфейсу летать без сетевых задержек.
|
||||
3. **Современная эстетика**: Дизайн 2.0 с динамическими цветами Material You, истинно черной AMOLED-темой и мягкими squircle-формами.
|
||||
@@ -0,0 +1,41 @@
|
||||
# 🎬 Медиаплеер и просмотр
|
||||
|
||||
Экран просмотра в Lunaris оптимизирован для быстрого, плавного и естественного взаимодействия с контентом.
|
||||
|
||||
---
|
||||
|
||||
## 👆 Управление жестами
|
||||
|
||||
| Жест | Действие |
|
||||
|---|---|
|
||||
| **Свайп влево / вправо** | Листание к следующему или предыдущему посту в текущей ленте. |
|
||||
| **Двойной тап по экрану** | Быстрое добавление в «Любимое» с красивой всплывающей анимацией сердца. |
|
||||
| **Свайп вниз (Pull down)** | Быстрое и плавное закрытие экрана просмотра и возврат в ленту. |
|
||||
| **Pinch-to-zoom** | Плавное масштабирование картинки двумя пальцами с автовозвратом границ. |
|
||||
|
||||
---
|
||||
|
||||
## 📐 Определение разрешения медиа (1920×1080 и др.)
|
||||
|
||||
В Lunaris 3.0 внедрено **интеллектуальное ленивое определение разрешения**:
|
||||
- Для изображений и видео в инфо-панели поста отображаются точные физические размеры (например, `1920 × 1080`, `3840 × 2160`).
|
||||
- Определение происходит динамически через заголовки и потоковый декодер — приложению не требуется скачивать многомегабайтный файл целиком только ради того, чтобы узнать его габариты.
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Автоповорот видео в полноэкранном режиме
|
||||
|
||||
- При нажатии кнопки разворота на весь экран видеоплеер анализирует соотношение сторон (`aspect ratio`).
|
||||
- **Широкоформатные видео (16:9, 21:9)** автоматически ориентируют смартфон в альбомный режим (горизонтально).
|
||||
- **Вертикальные видео (9:16, Shorts, Reels)** остаются в удобном портретном режиме.
|
||||
|
||||
---
|
||||
|
||||
## ⚓ Action Dock 2.0
|
||||
|
||||
Под медиафайлом расположен чистый, компактный док с 5 главными действиями:
|
||||
1. **❤️ Избранное**: добавить работу в локальные закладки.
|
||||
2. **💾 Скачать**: сохранить оригинал файла в высоком качестве.
|
||||
3. **📤 Поделиться**: отправка оригинального файла напрямую в Telegram, Discord, мессенджеры через системное меню Share.
|
||||
4. **🏷️ Теги**: открытие всплывающего окна со всеми тегами поста (с подсветкой категорий и возможностью скопировать или начать поиск по тегу).
|
||||
5. **ℹ️ Подробнее**: метаданные, автор, провайдер, дата публикации, рейтинг и комментарии.
|
||||
@@ -0,0 +1,39 @@
|
||||
# 💾 Офлайн-режим и загрузки
|
||||
|
||||
Lunaris предоставляет полноценный оффлайн-хаб для работы с вашей личной коллекцией без подключения к интернету.
|
||||
|
||||
---
|
||||
|
||||
## 📴 Офлайн 2.0 (Sync Hub)
|
||||
|
||||
В разделе **«Любимое»** переключитесь на вкладку **«Офлайн»**:
|
||||
- **Честное воспроизведение**: Видеоролики и фотографии загружаются напрямую из памяти вашего смартфона без единого сетевого запроса.
|
||||
- **Аналитика хранилища**: Информационная карточка в шапке отображает точный объем памяти, занятый сохранённым контентом (например, `💾 4.2 ГБ на устройстве`).
|
||||
- **Пакетная выгрузка**: Кнопка скачивания недостающих постов в 1 тап проверяет избранное и загружает все еще не сохраненные оригиналы в фоновом режиме.
|
||||
|
||||
---
|
||||
|
||||
## 📁 Настройка шаблонов папок для скачивания
|
||||
|
||||
В разделе **«Настройки» ➔ «Загрузки»** можно настроить структуру каталогов на диске:
|
||||
|
||||
Доступные теги шаблона:
|
||||
- `{Artist}` — имя автора работы
|
||||
- `{Provider}` — название источника (`gelbooru`, `rule34`, `pawchive`)
|
||||
- `{Service}` — сервис автора (`patreon`, `fanbox`)
|
||||
- `{ID}` — уникальный номер поста
|
||||
- `{Date}` — дата сохранения
|
||||
|
||||
*Пример шаблона:*
|
||||
```text
|
||||
Lunaris/{Provider}/{Artist}/{ID}.{ext}
|
||||
```
|
||||
Файлы будут аккуратно раскладываться по папкам авторов и провайдеров, сохраняя порядок в вашей галерее.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Бэкап и перенос данных
|
||||
|
||||
В настройках доступна функция **«Резервное копирование»**:
|
||||
- **Экспорт в JSON**: выгружает все настройки, избранные посты, любимых авторов и черный список в один файл.
|
||||
- **Импорт из JSON**: быстрое восстановление всей вашей коллекции на новом смартфоне или ПК за считанные секунды.
|
||||
@@ -0,0 +1,42 @@
|
||||
# 🐾 Интеграция и синхронизация с Pawchive
|
||||
|
||||
Начиная с версии **Lunaris 3.0**, в приложении реализована глубокая интеграция с личным профилем Pawchive.
|
||||
|
||||
---
|
||||
|
||||
## 🔑 Вход в аккаунт
|
||||
|
||||
1. Перейдите во вкладку **«Артисты»** в нижнем баре.
|
||||
2. В верхнем правом углу нажмите на иконку профиля / облака.
|
||||
3. Откроется шторка **«Аккаунты Pawchive»**.
|
||||
4. Доступно два способа авторизации:
|
||||
- **Логин и пароль**: введите свои учётные данные от Pawchive.
|
||||
- **Session Cookie**: если используется сложная авторизация через провайдеров или включена двухфакторная аутентификация, вставьте значение куки `session` из браузера.
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Двусторонняя синхронизация (Two-Way Sync)
|
||||
|
||||
В шторке управления аккаунтами расположен переключатель **«Двусторонняя синхронизация»**:
|
||||
|
||||
- **Выключена (по умолчанию)**: При обычной синхронизации список авторов импортируется с сервера Pawchive в приложение. Локальные изменения остаются нетронутыми.
|
||||
- **Включена**: При синхронизации приложение не только загружает новых авторов с сервера, но и **автоматически выгружает всех ваших локальных любимых авторов** на сервер Pawchive!
|
||||
|
||||
---
|
||||
|
||||
## 📤 Ручной экспорт локального избранного
|
||||
|
||||
Если у вас уже накоплена коллекция авторов на устройстве и вы хотите добавить их в свой аккаунт Pawchive:
|
||||
1. Откройте шторку **«Аккаунты Pawchive»**.
|
||||
2. Нажмите кнопку:
|
||||
**«Выгрузить избранное (N) в @username»**
|
||||
3. Приложение проверит текущий список на сервере и в фоновом режиме отправит недостающих авторов.
|
||||
|
||||
---
|
||||
|
||||
## ⭐ Мгновенная синхронизация на лету
|
||||
|
||||
Когда у вас подключен хотя бы один активный аккаунт Pawchive:
|
||||
- Нажатие на звёздочку/сердечко автора в любом месте приложения (в ленте, профиле автора, карточке поста) **моментально отправляет запрос на сервер Pawchive**.
|
||||
- Автор добавляется в ваш профиль без необходимости ручной синхронизации.
|
||||
- Поддерживаются авторы с любых платформ: `fanbox`, `patreon`, `fantia`, `boosty`, `subscribestar`, `gumroad`, `dlsite`, `discord`.
|
||||
@@ -0,0 +1,47 @@
|
||||
# 🌐 Провайдеры контента
|
||||
|
||||
Lunaris объединяет два фундаментальных класса источников: классические **Booru-доски** и современные **архивы авторов (Pawchive)**.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Список поддерживаемых провайдеров
|
||||
|
||||
### 1. 🐾 Pawchive (REST API v1)
|
||||
Крупнейший агрегатор контента независимых авторов с платных подписочных сервисов:
|
||||
- **Поддерживаемые сервисы авторов:**
|
||||
- `fanbox` (Pixiv Fanbox)
|
||||
- `patreon` (Patreon)
|
||||
- `fantia` (Fantia)
|
||||
- `boosty` (Boosty.to)
|
||||
- `subscribestar` (SubscribeStar)
|
||||
- `gumroad` (Gumroad)
|
||||
- `dlsite` (DLsite)
|
||||
- `discord` (Серверы Discord)
|
||||
- **Возможности в Lunaris:**
|
||||
- Просмотр глобальной ленты свежих постов.
|
||||
- Персональные карточки авторов с аватаром, баннером, анонсами и ссылками на оригинальные профили.
|
||||
- Полноценная авторизация в профиль Pawchive (логин/пароль или Session Cookie).
|
||||
- Двусторонняя синхронизация любимых авторов.
|
||||
|
||||
### 2. 🌸 Gelbooru
|
||||
Популярнейшая база аниме-иллюстраций с подробной системой классификации:
|
||||
- Теги художников, персонажей, авторских прав (copyright), общие описания.
|
||||
- Высокое разрешение оригиналов.
|
||||
- Полнотекстовый поиск и рекомендации.
|
||||
|
||||
### 3. 🔞 Rule34 & Realbooru
|
||||
- **Rule34**: Огромное сообщество, поддержка анимированных GIF и видеофайлов WebM/MP4.
|
||||
- **Realbooru**: Специализируется на косплее, 3D-рендерах и реалистичном контенте.
|
||||
|
||||
### 4. 🐺 e621 / e926
|
||||
Крупнейший архив фурри-, антро- и тематического арта:
|
||||
- Богатейшая иерархическая система тегов (виды существ, анатомия, стили).
|
||||
- Полная поддержка `e926` (безопасный режим с фильтром безопасного рейтинга).
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Как переключаться между провайдерами
|
||||
|
||||
1. В верхней панели ленты (**Feed**) нажмите на чип с текущим названием провайдера (например, `Gelbooru`).
|
||||
2. В появившемся меню выберите желаемый источник.
|
||||
3. Лента мгновенно перезагрузится с сохранением выбранного режима отображения (Masonry / Сетка / Список).
|
||||
@@ -0,0 +1,31 @@
|
||||
# 🛡️ Черный список и фильтрация
|
||||
|
||||
Lunaris оснащен многоуровневой системой защиты от нежелательного контента, работающей прямо на устройстве.
|
||||
|
||||
---
|
||||
|
||||
## 🚫 Как настроить Blacklist (Черный список)
|
||||
|
||||
1. Откройте раздел **«Настройки» ➔ «Фильтрация и Blacklist»**.
|
||||
2. Введите тег или комбинацию тегов, которую вы хотите скрыть из выдачи.
|
||||
3. Посты с указанными тегами будут **автоматически исключены** из всех лент, поисковых запросов и рекомендаций.
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Безопасный режим (SFW)
|
||||
|
||||
Для комфортного использования приложения в общественных местах доступен переключатель **«Безопасный режим (Safe Mode)»**:
|
||||
- Автоматически скрывает работы с рейтингами `questionable` и `explicit`.
|
||||
- Включает безопасное зеркало `e926` при переключении на провайдер e621.
|
||||
- Фильтрует обложки и превью в ленте.
|
||||
|
||||
---
|
||||
|
||||
## 🧹 Управление кэшем
|
||||
|
||||
В настройках приложения предусмотрен детальный мониторинг занятой памяти:
|
||||
- **Кэш изображений**: временные миниатюры ленты.
|
||||
- **Кэш видео**: фрагменты буферизации видеоплеера.
|
||||
- **База тегов**: локальный словарь поисковых подсказок.
|
||||
|
||||
Вы можете очистить любой из разделов по отдельности нажатием одной кнопки.
|
||||
@@ -0,0 +1,58 @@
|
||||
# 🔍 Умный поиск и теги
|
||||
|
||||
Поиск в Lunaris спроектирован для мгновенного отклика и максимальной гибкости в построении сложных запросов.
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Мгновенные подсказки тегов (0 мс)
|
||||
|
||||
- Приложение сохраняет локальный кэш десятков тысяч популярных тегов на вашем устройстве.
|
||||
- При начале ввода в поисковую строку подсказки появляются **мгновенно (0 мс)** без ожидания ответа сервера.
|
||||
- Категории тегов подсвечиваются фирменными цветами:
|
||||
- 🔴 **Художник / Автор** (`artist`) — красный
|
||||
- 🟢 **Персонаж** (`character`) — зеленый
|
||||
- 🟣 **Копирайт / Произведение** (`copyright`) — фиолетовый
|
||||
- 🔵 **Вид / Существо** (`species`) — синий
|
||||
- ⚪ **Общие теги** (`general`) — нейтральный
|
||||
|
||||
---
|
||||
|
||||
## 🔀 Оператор мультипоиска `and`
|
||||
|
||||
Классические Booru-серверы при поиске нескольких тегов (`tag1 tag2`) возвращают только посты, где **присутствуют оба тега одновременно**.
|
||||
|
||||
Lunaris поддерживает специальный оператор **`and`**:
|
||||
```text
|
||||
genshin_impact and honkai_star_rail
|
||||
```
|
||||
**Как это работает:**
|
||||
1. Приложение одновременно делает независимые запросы по каждому из тегов.
|
||||
2. Результаты плавно чередуются в единой бесконечной ленте.
|
||||
3. Вы получаете сбалансированную выборку сразу по нескольким интересующим вас темам.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Общие модификаторы в мультипоиске
|
||||
|
||||
При составлении сложных запросов модификатор, указанный в конце, автоматически распространяется на все части запроса:
|
||||
```text
|
||||
cat and dog anthro
|
||||
```
|
||||
Автоматически преобразуется в поиск:
|
||||
- `cat anthro`
|
||||
- `dog anthro`
|
||||
|
||||
---
|
||||
|
||||
## 🎛️ Поисковые фильтры и операторы
|
||||
|
||||
Вы можете уточнять выдачу с помощью операторов:
|
||||
|
||||
| Фильтр | Назначение | Пример |
|
||||
|---|---|---|
|
||||
| `type:video` | Показывать только видеоролики и WebM | `cat type:video` |
|
||||
| `type:image` | Показывать только статичные изображения | `landscape type:image` |
|
||||
| `rating:safe` | Только безопасный контент (SFW) | `wallpaper rating:safe` |
|
||||
| `rating:explicit` | Контент 18+ | `rating:explicit` |
|
||||
| `score:>50` | Работы с рейтингом выше 50 лайков | `dragon score:>100` |
|
||||
| `-tag` | Исключить тег из результатов | `solo -comic` |
|
||||
@@ -0,0 +1,16 @@
|
||||
### 🌙 Lunaris Wiki
|
||||
|
||||
- **[Главная](Home)**
|
||||
- **[Быстрый старт и установка](Getting-Started)**
|
||||
- **[Провайдеры контента](Providers)**
|
||||
- **[Умный поиск и теги](Search-and-Tags)**
|
||||
- **[Интеграция и синхронизация с Pawchive](Pawchive-Sync)**
|
||||
- **[Медиаплеер и просмотр](Media-Viewer)**
|
||||
- **[Офлайн-режим и загрузки](Offline-and-Downloads)**
|
||||
- **[Черный список и фильтрация](Safety-and-Blacklist)**
|
||||
- **[Частые вопросы (FAQ)](FAQ)**
|
||||
|
||||
---
|
||||
|
||||
**[Скачать Lunaris](https://github.com/RarDog/Lunaris/releases)**
|
||||
**[Репозиторий GitHub](https://github.com/RarDog/Lunaris)**
|
||||
@@ -1,3 +1,3 @@
|
||||
const appDisplayVersion = '2.3.1';
|
||||
const appBuildNumber = 41;
|
||||
const appDisplayVersion = '3.0.1';
|
||||
const appBuildNumber = 52;
|
||||
const appReleaseChannel = 'Stable';
|
||||
|
||||
@@ -8,7 +8,7 @@ const lunarisChangelog = [
|
||||
'Новая архитектура поиска (OverlayPortal): подсказки тегов отображаются через нативный портал Flutter без блокировки кнопок панели, очистки и сброса фильтров.',
|
||||
'Pawchive 2.0 & Двусторонняя синхронизация: подключение аккаунтов через логин/пароль или Session Cookie, импорт избранного с сервера, экспорт локальных коллекций в аккаунт на сервере и сквозная синхронизация со всех поддерживаемых платформ.',
|
||||
'Ленивое автоопределение разрешения: фоновый декодер автоматически рассчитывает и выводит точные размеры медиа (например, 1920 × 1080) для постов Pawchive без серверных метаданных.',
|
||||
'Умные per-ABI обновления: автообновление через Gitea скачивает точный APK под архитектуру вашего процессора (arm64-v8a, armeabi-v7a, x86_64), сокращая вес загрузки.',
|
||||
'Умные per-ABI обновления: автообновление через GitHub скачивает точный APK под архитектуру вашего процессора (arm64-v8a, armeabi-v7a, x86_64), сокращая вес загрузки.',
|
||||
'Исправление вёрстки: устранены переносы текста в заголовке окна аккаунтов и карточках пользователей на экранах смартфонов.',
|
||||
],
|
||||
),
|
||||
@@ -36,7 +36,7 @@ const lunarisChangelog = [
|
||||
title: 'ABI-Aware Auto-Update — правильный APK для вашего процессора',
|
||||
bullets: [
|
||||
'Определение архитектуры Android: приложение читает Build.SUPPORTED_ABIS (arm64-v8a, armeabi-v7a, x86_64) через нативный канал.',
|
||||
'Точный APK из Gitea: при обновлении скачивается per-ABI APK (app-arm64-v8a-release.apk и т.д.), а не один общий файл.',
|
||||
'Точный APK из GitHub: при обновлении скачивается per-ABI APK (app-arm64-v8a-release.apk и т.д.), а не один общий файл.',
|
||||
'Fallback: нет per-ABI APK → универсальный APK → страница релиза в браузере.',
|
||||
'Кеш ABI: архитектура определяется один раз за сеанс.',
|
||||
],
|
||||
@@ -163,7 +163,7 @@ const lunarisChangelog = [
|
||||
'Instant Segmented Controls: replaced tedious dropdowns with fast 1-tap SegmentedButtons for Theme (Dark/Light/Auto), Language (RU/EN), and Media Quality (Auto/Data saver/HQ).',
|
||||
'Folder Structure Bottom Sheet: intuitive download directory template picker with preset chips and custom pattern editor.',
|
||||
'Interactive Stepper & Limit Controls: modernized desktop & mobile column steppers and disk cache limits with accent pill badges.',
|
||||
'Hero Brand Banner: polished app presentation card in About section with glowing icon, version build badge, update checker, and Gitea repository link.',
|
||||
'Hero Brand Banner: polished app presentation card in About section with glowing icon, version build badge, update checker, and GitHub repository link.',
|
||||
],
|
||||
),
|
||||
LunarisChange(
|
||||
@@ -301,7 +301,7 @@ const lunarisChangelog = [
|
||||
'Added favorite artists bar at the top of the Artists tab with quick access and recent photos/videos stream.',
|
||||
'Multi-image posts now feature an in-post navigation indicator with image switching.',
|
||||
'New Pawchive provider support and cleaned up deprecated providers.',
|
||||
'In-app update checks and downloads connected directly to RarDog Gitea releases.',
|
||||
'In-app update checks and downloads connected directly to RarDog GitHub releases.',
|
||||
],
|
||||
),
|
||||
LunarisChange(
|
||||
@@ -369,7 +369,7 @@ const lunarisChangelog = [
|
||||
version: '1.0.1',
|
||||
title: 'Mobile polish',
|
||||
bullets: [
|
||||
'Startup update checks now look for new Gitea releases every launch.',
|
||||
'Startup update checks now look for new GitHub releases every launch.',
|
||||
'Refresh-rate controls are Android-only; desktop keeps stable app motion.',
|
||||
'Tag chip input no longer jumps while typing.',
|
||||
],
|
||||
|
||||
@@ -13,9 +13,9 @@ class UpdateService {
|
||||
UpdateService(this._dio, this._settingsService);
|
||||
|
||||
static const latestReleaseUrl =
|
||||
'https://gitea.rardogsynapse.online/api/v1/repos/RarDog/Lunaris/releases/latest';
|
||||
'https://api.github.com/repos/RarDog/Lunaris/releases/latest';
|
||||
static const releasesUrl =
|
||||
'https://gitea.rardogsynapse.online/api/v1/repos/RarDog/Lunaris/releases';
|
||||
'https://api.github.com/repos/RarDog/Lunaris/releases';
|
||||
|
||||
static const _deviceChannel = MethodChannel('rulegel/device');
|
||||
|
||||
@@ -84,7 +84,13 @@ class UpdateService {
|
||||
Future<AppUpdateInfo> _latestAllowedRelease(AppSettings settings) async {
|
||||
final response = await _dio.get<dynamic>(
|
||||
releasesUrl,
|
||||
queryParameters: {'limit': 30},
|
||||
queryParameters: {'per_page': 30},
|
||||
options: Options(
|
||||
headers: {
|
||||
'User-Agent': 'Lunaris-App',
|
||||
'Accept': 'application/vnd.github+json',
|
||||
},
|
||||
),
|
||||
);
|
||||
final items = (response.data as List?) ?? const [];
|
||||
final releases = items
|
||||
@@ -95,7 +101,15 @@ class UpdateService {
|
||||
.map((item) => _releaseFromJson(Map<String, dynamic>.from(item)))
|
||||
.toList(growable: false);
|
||||
if (releases.isEmpty) {
|
||||
final latest = await _dio.get<dynamic>(latestReleaseUrl);
|
||||
final latest = await _dio.get<dynamic>(
|
||||
latestReleaseUrl,
|
||||
options: Options(
|
||||
headers: {
|
||||
'User-Agent': 'Lunaris-App',
|
||||
'Accept': 'application/vnd.github+json',
|
||||
},
|
||||
),
|
||||
);
|
||||
return _releaseFromJson(Map<String, dynamic>.from(latest.data as Map));
|
||||
}
|
||||
releases.sort((a, b) {
|
||||
|
||||
@@ -2183,12 +2183,12 @@ class _HeroBrandBanner extends StatelessWidget {
|
||||
OutlinedButton.icon(
|
||||
onPressed: () async {
|
||||
final url = Uri.parse(
|
||||
'https://gitea.rardogsynapse.online/RarDog/Lunaris',
|
||||
'https://github.com/RarDog/Lunaris',
|
||||
);
|
||||
await launchUrl(url, mode: LaunchMode.externalApplication);
|
||||
},
|
||||
icon: const Icon(Icons.code_rounded, size: 18),
|
||||
label: const Text('Gitea'),
|
||||
label: const Text('GitHub'),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
name: gel_rule_app
|
||||
description: Local backend/core layer for a Flutter booru browser app.
|
||||
publish_to: "none"
|
||||
version: 3.0.0+51
|
||||
version: 3.0.1+52
|
||||
|
||||
environment:
|
||||
sdk: ">=3.3.0 <4.0.0"
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:gel_rule_app/backend/services/update_service.dart';
|
||||
import 'package:gel_rule_app/core/database/database_service.dart';
|
||||
|
||||
void main() {
|
||||
test('UpdateService parses Gitea release JSON correctly', () {
|
||||
test('UpdateService parses GitHub release JSON correctly', () {
|
||||
final service = UpdateService(Dio(), SettingsService(_MockDatabaseService()));
|
||||
|
||||
// Use reflection or constructor to test info
|
||||
@@ -15,21 +15,21 @@ void main() {
|
||||
tagName: 'v2.0.2',
|
||||
name: 'Lunaris 2.0.2',
|
||||
body: 'Release notes',
|
||||
htmlUrl: 'https://gitea.rardogsynapse.online/RarDog/Lunaris/releases/tag/v2.0.2',
|
||||
htmlUrl: 'https://github.com/RarDog/Lunaris/releases/tag/v2.0.2',
|
||||
publishedAt: DateTime.parse('2026-09-03T18:00:00Z'),
|
||||
apkUrl: 'https://gitea.rardogsynapse.online/attachments/apk',
|
||||
linuxTarGzUrl: 'https://gitea.rardogsynapse.online/attachments/linux',
|
||||
apkUrl: 'https://github.com/RarDog/Lunaris/releases/download/v2.0.2/Lunaris.apk',
|
||||
linuxTarGzUrl: 'https://github.com/RarDog/Lunaris/releases/download/v2.0.2/linux.tar.gz',
|
||||
);
|
||||
|
||||
expect(info.hasAssets, isTrue);
|
||||
expect(info.apkUrl, contains('apk'));
|
||||
expect(info.linuxTarGzUrl, contains('linux'));
|
||||
expect(
|
||||
service.assetFileName(info, 'https://gitea.rardogsynapse.online/attachments/Lunaris-v2.0.2.apk'),
|
||||
service.assetFileName(info, 'https://github.com/RarDog/Lunaris/releases/download/v2.0.2/Lunaris-v2.0.2.apk'),
|
||||
'Lunaris-v2.0.2.apk',
|
||||
);
|
||||
expect(
|
||||
service.assetFileName(info, info.apkUrl!),
|
||||
service.assetFileName(info, 'https://github.com/RarDog/Lunaris/releases/download/v2.0.2/unknown-linux'),
|
||||
'Lunaris-v2.0.2-linux-x64.tar.gz',
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user