feat: release v2.0.5 with 10 QoL features (AMOLED, Dynamic Color, Grid switch, Share, Presets, Cache Manager, Backup & Gestures)
This commit is contained in:
+24
-14
@@ -1,5 +1,6 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
@@ -34,20 +35,29 @@ class GelRuleApp extends ConsumerWidget {
|
||||
),
|
||||
data: (_) {
|
||||
final appSettings = settings.value ?? AppSettings.defaults;
|
||||
return MaterialApp.router(
|
||||
title: 'Lunaris',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: buildTheme(
|
||||
Brightness.light,
|
||||
seedColor: appSettings.appSeedColor,
|
||||
),
|
||||
darkTheme: buildTheme(
|
||||
Brightness.dark,
|
||||
seedColor: appSettings.appSeedColor,
|
||||
),
|
||||
themeMode: parseThemeMode(appSettings.themeMode),
|
||||
routerConfig: router,
|
||||
builder: (context, child) => _AppOverlay(child: child),
|
||||
final amoled = appSettings.amoledMode;
|
||||
final useDynamic = appSettings.useDynamicColor;
|
||||
return DynamicColorBuilder(
|
||||
builder: (lightDynamic, darkDynamic) {
|
||||
return MaterialApp.router(
|
||||
title: 'Lunaris',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: buildTheme(
|
||||
Brightness.light,
|
||||
seedColor: appSettings.appSeedColor,
|
||||
dynamicColorScheme: useDynamic ? lightDynamic : null,
|
||||
),
|
||||
darkTheme: buildTheme(
|
||||
Brightness.dark,
|
||||
seedColor: appSettings.appSeedColor,
|
||||
amoled: amoled,
|
||||
dynamicColorScheme: useDynamic ? darkDynamic : null,
|
||||
),
|
||||
themeMode: parseThemeMode(appSettings.themeMode),
|
||||
routerConfig: router,
|
||||
builder: (context, child) => _AppOverlay(child: child),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
const appDisplayVersion = '2.0.4';
|
||||
const appBuildNumber = 26;
|
||||
const appDisplayVersion = '2.0.5';
|
||||
const appBuildNumber = 27;
|
||||
const appReleaseChannel = 'Stable';
|
||||
|
||||
@@ -1,4 +1,19 @@
|
||||
const lunarisChangelog = [
|
||||
LunarisChange(
|
||||
version: '2.0.5',
|
||||
title: '10 QoL Super-Update: AMOLED, Dynamic Colors, Grid switch, Share, Presets, Cache & Backup',
|
||||
bullets: [
|
||||
'AMOLED Pure Black theme (#000000) for OLED battery saving.',
|
||||
'Material You dynamic color support on Android matching system wallpaper.',
|
||||
'Grid layout mode switcher in the feed toolbar: Masonry, 1:1 Square Grid, and List.',
|
||||
'Swipe down to dismiss and double-tap with animated heart overlay to favorite.',
|
||||
'Direct file sharing (Share sheet) from post details.',
|
||||
'Saved search presets with instant filtering and bookmark creation.',
|
||||
'Smart download folder template support ({Artist}, {Provider}, {Service}, {ID}, {Date}).',
|
||||
'Interactive Cache Manager screen with detailed storage breakdown and selective cleanup.',
|
||||
'Full JSON backup export and import for seamless configuration sync.',
|
||||
],
|
||||
),
|
||||
LunarisChange(
|
||||
version: '2.0.4',
|
||||
title: 'Platform service selection & media type filtering in artist posts',
|
||||
|
||||
@@ -15,6 +15,7 @@ import '../features/providers/presentation/provider_check_screen.dart';
|
||||
import '../features/providers/presentation/provider_form_screen.dart';
|
||||
import '../features/providers/presentation/providers_screen.dart';
|
||||
import '../features/search/presentation/search_screen.dart';
|
||||
import '../features/settings/presentation/cache_manager_screen.dart';
|
||||
import '../features/settings/presentation/hidden_posts_screen.dart';
|
||||
import '../features/settings/presentation/settings_screen.dart';
|
||||
import '../features/viewed/presentation/viewed_screen.dart';
|
||||
@@ -126,6 +127,10 @@ final appRouterProvider = Provider<GoRouter>((ref) {
|
||||
path: '/settings/hidden',
|
||||
builder: (context, state) => const HiddenPostsScreen(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/cache',
|
||||
builder: (context, state) => const CacheManagerScreen(),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
||||
+37
-10
@@ -1,26 +1,53 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
ThemeData buildTheme(Brightness brightness, {int seedColor = 0xFFE84D8A}) {
|
||||
ThemeData buildTheme(
|
||||
Brightness brightness, {
|
||||
int seedColor = 0xFFE84D8A,
|
||||
bool amoled = false,
|
||||
ColorScheme? dynamicColorScheme,
|
||||
}) {
|
||||
final dark = brightness == Brightness.dark;
|
||||
final scheme = ColorScheme.fromSeed(
|
||||
seedColor: Color(seedColor),
|
||||
brightness: brightness,
|
||||
);
|
||||
final scheme = dynamicColorScheme ??
|
||||
ColorScheme.fromSeed(
|
||||
seedColor: Color(seedColor),
|
||||
brightness: brightness,
|
||||
);
|
||||
|
||||
final scaffoldBg = amoled && dark
|
||||
? const Color(0xFF000000)
|
||||
: dark
|
||||
? const Color(0xFF101114)
|
||||
: const Color(0xFFF8F8FA);
|
||||
final cardBg = amoled && dark
|
||||
? const Color(0xFF0A0A0A)
|
||||
: dark
|
||||
? const Color(0xFF191B20)
|
||||
: Colors.white;
|
||||
final navBg = amoled && dark
|
||||
? const Color(0xFF000000)
|
||||
: dark
|
||||
? const Color(0xFF15161A)
|
||||
: Colors.white;
|
||||
final appBarBg = amoled && dark
|
||||
? const Color(0xFF000000)
|
||||
: dark
|
||||
? const Color(0xFF101114)
|
||||
: const Color(0xFFF8F8FA);
|
||||
|
||||
return ThemeData(
|
||||
useMaterial3: true,
|
||||
brightness: brightness,
|
||||
colorScheme: scheme,
|
||||
scaffoldBackgroundColor:
|
||||
dark ? const Color(0xFF101114) : const Color(0xFFF8F8FA),
|
||||
cardColor: dark ? const Color(0xFF191B20) : Colors.white,
|
||||
scaffoldBackgroundColor: scaffoldBg,
|
||||
cardColor: cardBg,
|
||||
navigationRailTheme: NavigationRailThemeData(
|
||||
backgroundColor: dark ? const Color(0xFF15161A) : Colors.white,
|
||||
backgroundColor: navBg,
|
||||
selectedIconTheme: IconThemeData(color: scheme.primary),
|
||||
),
|
||||
appBarTheme: AppBarTheme(
|
||||
centerTitle: false,
|
||||
elevation: 0,
|
||||
backgroundColor: dark ? const Color(0xFF101114) : const Color(0xFFF8F8FA),
|
||||
backgroundColor: appBarBg,
|
||||
foregroundColor: scheme.onSurface,
|
||||
),
|
||||
cardTheme: CardThemeData(
|
||||
|
||||
Reference in New Issue
Block a user