feat(updates): switch auto-updates to GitHub releases and remove Gitea references (v3.0.1)
Build and Release / Build Windows x64 (push) Has been cancelled

This commit is contained in:
2026-09-04 16:37:15 +03:00
parent 4c9813b37b
commit 0d0eac4481
8 changed files with 36 additions and 45 deletions
-22
View File
@@ -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!"
+2 -3
View File
@@ -10,11 +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://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>
<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>
<img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="License MIT" />
</p>
@@ -82,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)**.
| Платформа | Архитектура | Формат | Описание |
|---|---|---|---|
+2 -2
View File
@@ -1,3 +1,3 @@
const appDisplayVersion = '2.3.1';
const appBuildNumber = 41;
const appDisplayVersion = '3.0.1';
const appBuildNumber = 52;
const appReleaseChannel = 'Stable';
+5 -5
View File
@@ -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.',
],
+18 -4
View File
@@ -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
View File
@@ -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 -6
View File
@@ -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',
);
});