diff --git a/app/assets/graphics/logos/open_local_ui.svg b/app/assets/graphics/logos/open_local_ui.svg new file mode 100644 index 0000000..ba0162e --- /dev/null +++ b/app/assets/graphics/logos/open_local_ui.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/l10n/intl_en.arb b/app/assets/l10n/intl_en.arb index 875a67a..25e2109 100644 --- a/app/assets/l10n/intl_en.arb +++ b/app/assets/l10n/intl_en.arb @@ -1,5 +1,7 @@ { "@@locale": "en", + "deviceUnpluggedSnackBar": "Device unplugged. Power delivery reduced.", + "devicePluggedInSnackBar": "Device plugged in. Power delivery increased.", "abortModelRemovalSnackBar": "Abort model removal", "abortSessionRemovalSnackBar": "Abort session removal", "aboutPageContributorsTitle": "Contributors", diff --git a/app/lib/backend/providers/model.dart b/app/lib/backend/providers/model.dart index f59a073..a939439 100644 --- a/app/lib/backend/providers/model.dart +++ b/app/lib/backend/providers/model.dart @@ -12,7 +12,7 @@ import 'package:open_local_ui/backend/providers/model_settings.dart'; import 'package:open_local_ui/constants/flutter.dart'; import 'package:open_local_ui/core/http.dart'; import 'package:open_local_ui/core/logger.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:windows_taskbar/windows_taskbar.dart'; enum ModelProviderStatus { diff --git a/app/lib/frontend/helpers/snackbar.dart b/app/lib/core/snackbar.dart similarity index 100% rename from app/lib/frontend/helpers/snackbar.dart rename to app/lib/core/snackbar.dart diff --git a/app/lib/core/update.dart b/app/lib/core/update.dart index 3e27aed..3b9031c 100644 --- a/app/lib/core/update.dart +++ b/app/lib/core/update.dart @@ -7,7 +7,7 @@ import 'package:open_local_ui/core/github.dart'; import 'package:open_local_ui/core/logger.dart'; import 'package:open_local_ui/core/process.dart'; import 'package:open_local_ui/env.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/app/lib/components/rive_animation.dart b/app/lib/frontend/components/rive_animation.dart similarity index 100% rename from app/lib/components/rive_animation.dart rename to app/lib/frontend/components/rive_animation.dart diff --git a/app/lib/components/typewriter_text.dart b/app/lib/frontend/components/typewriter_text.dart similarity index 100% rename from app/lib/components/typewriter_text.dart rename to app/lib/frontend/components/typewriter_text.dart diff --git a/app/lib/frontend/widgets/window_management_bar.dart b/app/lib/frontend/components/window_management_bar.dart similarity index 64% rename from app/lib/frontend/widgets/window_management_bar.dart rename to app/lib/frontend/components/window_management_bar.dart index 35b0205..28bc422 100644 --- a/app/lib/frontend/widgets/window_management_bar.dart +++ b/app/lib/frontend/components/window_management_bar.dart @@ -1,10 +1,10 @@ +import 'package:adaptive_theme/adaptive_theme.dart'; import 'package:flutter/material.dart'; import 'package:bitsdojo_window/bitsdojo_window.dart'; -import 'package:system_theme/system_theme.dart'; -class WindowManagementBar extends StatelessWidget { - const WindowManagementBar({super.key}); +class WindowManagementBarComponent extends StatelessWidget { + const WindowManagementBarComponent({super.key}); @override Widget build(BuildContext context) { @@ -18,19 +18,22 @@ class WindowManagementBar extends StatelessWidget { children: [ MinimizeWindowButton( colors: WindowButtonColors( - iconNormal: SystemTheme.accentColor.accent, + iconNormal: + AdaptiveTheme.of(context).theme.colorScheme.secondary, iconMouseOver: Colors.green, ), ), MaximizeWindowButton( colors: WindowButtonColors( - iconNormal: SystemTheme.accentColor.accent, + iconNormal: + AdaptiveTheme.of(context).theme.colorScheme.secondary, iconMouseOver: Colors.orange, ), ), CloseWindowButton( colors: WindowButtonColors( - iconNormal: SystemTheme.accentColor.accent, + iconNormal: + AdaptiveTheme.of(context).theme.colorScheme.secondary, iconMouseOver: Colors.red, ), ), diff --git a/app/lib/frontend/pages/dashboard/models.dart b/app/lib/frontend/pages/dashboard/models.dart index 6273cad..710c3fa 100644 --- a/app/lib/frontend/pages/dashboard/models.dart +++ b/app/lib/frontend/pages/dashboard/models.dart @@ -15,7 +15,7 @@ import 'package:open_local_ui/frontend/dialogs/model_details.dart'; import 'package:open_local_ui/frontend/dialogs/model_settings.dart'; import 'package:open_local_ui/frontend/dialogs/pull_model.dart'; import 'package:open_local_ui/frontend/dialogs/push_model.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:open_local_ui/frontend/screens/dashboard.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/app/lib/frontend/pages/dashboard/sessions.dart b/app/lib/frontend/pages/dashboard/sessions.dart index 93404ba..60d8912 100644 --- a/app/lib/frontend/pages/dashboard/sessions.dart +++ b/app/lib/frontend/pages/dashboard/sessions.dart @@ -9,7 +9,7 @@ import 'package:open_local_ui/backend/models/chat_session.dart'; import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/core/format.dart'; import 'package:open_local_ui/frontend/dialogs/confirmation.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:open_local_ui/frontend/screens/dashboard.dart'; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; diff --git a/app/lib/frontend/pages/dashboard/settings.dart b/app/lib/frontend/pages/dashboard/settings.dart index 3b8cd37..c9f8a1b 100644 --- a/app/lib/frontend/pages/dashboard/settings.dart +++ b/app/lib/frontend/pages/dashboard/settings.dart @@ -9,7 +9,7 @@ import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/backend/providers/locale.dart'; import 'package:open_local_ui/core/color.dart'; import 'package:open_local_ui/frontend/dialogs/color_picker.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:system_theme/system_theme.dart'; diff --git a/app/lib/frontend/screens/dashboard.dart b/app/lib/frontend/screens/dashboard.dart index d7359b4..f210e13 100644 --- a/app/lib/frontend/screens/dashboard.dart +++ b/app/lib/frontend/screens/dashboard.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:battery_plus/battery_plus.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -14,13 +15,13 @@ import 'package:open_local_ui/core/github.dart'; import 'package:open_local_ui/core/logger.dart'; import 'package:open_local_ui/core/update.dart'; import 'package:open_local_ui/frontend/dialogs/update.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:open_local_ui/frontend/pages/dashboard/about.dart'; import 'package:open_local_ui/frontend/pages/dashboard/chat.dart'; import 'package:open_local_ui/frontend/pages/dashboard/models.dart'; import 'package:open_local_ui/frontend/pages/dashboard/sessions.dart'; import 'package:open_local_ui/frontend/pages/dashboard/settings.dart'; -import 'package:open_local_ui/frontend/widgets/window_management_bar.dart'; +import 'package:open_local_ui/frontend/components/window_management_bar.dart'; import 'package:path_provider/path_provider.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; import 'package:system_info2/system_info2.dart'; @@ -47,6 +48,7 @@ class _DashboardScreenState extends State { WidgetsBinding.instance.addPostFrameCallback((_) async { _checkForUpdates(); + _registerBatteryCallback(); }); } @@ -57,6 +59,34 @@ class _DashboardScreenState extends State { super.dispose(); } + void _registerBatteryCallback() { + final battery = Battery(); + + battery.onBatteryStateChanged.listen((BatteryState state) { + switch (state) { + case BatteryState.discharging: + SnackBarHelpers.showSnackBar( + AppLocalizations.of(context).snackBarWarningTitle, + AppLocalizations.of(context).deviceUnpluggedSnackBar, + SnackbarContentType.warning, + ); + logger.i('Battery charging'); + break; + case BatteryState.charging: + SnackBarHelpers.showSnackBar( + AppLocalizations.of(context).snackBarSuccessTitle, + AppLocalizations.of(context).devicePluggedInSnackBar, + SnackbarContentType.success, + ); + logger.i('Battery discharging'); + break; + default: + logger.i('Battery state: $state'); + break; + } + }); + } + void _checkForUpdates() { UpdateHelper.isAppUpdateAvailable().then( (updateAvailable) { @@ -107,7 +137,7 @@ class _DashboardScreenState extends State { right: 0.0, width: MediaQuery.of(context).size.width, height: 32.0, - child: const WindowManagementBar(), + child: const WindowManagementBarComponent(), ), ], ); diff --git a/app/lib/frontend/screens/onboarding.dart b/app/lib/frontend/screens/onboarding.dart index fd0646f..adf4472 100644 --- a/app/lib/frontend/screens/onboarding.dart +++ b/app/lib/frontend/screens/onboarding.dart @@ -11,15 +11,15 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:gap/gap.dart'; import 'package:gpu_info/gpu_info.dart'; import 'package:introduction_screen/introduction_screen.dart'; -import 'package:open_local_ui/components/rive_animation.dart'; -import 'package:open_local_ui/components/typewriter_text.dart'; +import 'package:open_local_ui/frontend/components/rive_animation.dart'; +import 'package:open_local_ui/frontend/components/typewriter_text.dart'; import 'package:open_local_ui/core/color.dart'; import 'package:open_local_ui/core/process.dart'; import 'package:open_local_ui/frontend/dialogs/color_picker.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:open_local_ui/frontend/screens/dashboard.dart'; import 'package:open_local_ui/frontend/widgets/preference_selector.dart'; -import 'package:open_local_ui/frontend/widgets/window_management_bar.dart'; +import 'package:open_local_ui/frontend/components/window_management_bar.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:system_info2/system_info2.dart'; import 'package:system_theme/system_theme.dart'; @@ -54,7 +54,7 @@ class _OnboardingScreenState extends State { title: AppLocalizations.of(context).setupPageWelcomeSlideTitle, bodyWidget: TypewriterTextComponent( text: AppLocalizations.of(context).setupPageWelcomeSlideText, - duration: 1500.ms, + duration: 3000.ms, ), decoration: const PageDecoration( titleTextStyle: TextStyle( @@ -265,7 +265,7 @@ class _OnboardingScreenState extends State { right: 0.0, width: MediaQuery.of(context).size.width, height: 32.0, - child: const WindowManagementBar(), + child: const WindowManagementBarComponent(), ), ], ); diff --git a/app/lib/frontend/screens/splash.dart b/app/lib/frontend/screens/splash.dart new file mode 100644 index 0000000..749357b --- /dev/null +++ b/app/lib/frontend/screens/splash.dart @@ -0,0 +1,33 @@ +import 'package:adaptive_theme/adaptive_theme.dart'; +import 'package:flutter/material.dart'; + +import 'package:animated_splash_screen/animated_splash_screen.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:open_local_ui/frontend/screens/dashboard.dart'; +import 'package:open_local_ui/frontend/screens/onboarding.dart'; +import 'package:page_transition/page_transition.dart'; + +class SplashScreen extends StatelessWidget { + final bool userOnboarded; + + const SplashScreen({Key? key, required this.userOnboarded}) : super(key: key); + + @override + Widget build(BuildContext context) { + return AnimatedSplashScreen( + splash: SvgPicture.asset( + 'assets/graphics/logos/open_local_ui.svg', + width: 512, + // ignore: deprecated_member_use + color: + AdaptiveTheme.of(context).mode.isDark ? Colors.white : Colors.black, + ), + nextScreen: + userOnboarded ? const DashboardScreen() : const OnboardingScreen(), + backgroundColor: AdaptiveTheme.of(context).theme.primaryColor, + splashTransition: SplashTransition.fadeTransition, + pageTransitionType: PageTransitionType.theme, + duration: 1500, + ); + } +} diff --git a/app/lib/frontend/screens/update_in_progress.dart b/app/lib/frontend/screens/update_in_progress.dart index 6cc4340..96d69be 100644 --- a/app/lib/frontend/screens/update_in_progress.dart +++ b/app/lib/frontend/screens/update_in_progress.dart @@ -5,7 +5,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:gap/gap.dart'; import 'package:open_local_ui/core/update.dart'; -import 'package:open_local_ui/frontend/widgets/window_management_bar.dart'; +import 'package:open_local_ui/frontend/components/window_management_bar.dart'; class UpdateInProgressScreen extends StatefulWidget { const UpdateInProgressScreen({super.key}); @@ -57,7 +57,7 @@ class _UpdateInProgressScreenState extends State { right: 0.0, width: MediaQuery.of(context).size.width, height: 32.0, - child: const WindowManagementBar(), + child: const WindowManagementBarComponent(), ), ], ); diff --git a/app/lib/frontend/widgets/chat_example_questions.dart b/app/lib/frontend/widgets/chat_example_questions.dart index 930e45e..9e726c2 100644 --- a/app/lib/frontend/widgets/chat_example_questions.dart +++ b/app/lib/frontend/widgets/chat_example_questions.dart @@ -2,14 +2,13 @@ import 'dart:math'; import 'package:flutter/material.dart'; - import 'package:adaptive_theme/adaptive_theme.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:gap/gap.dart'; import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/backend/providers/model.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:provider/provider.dart'; import 'package:unicons/unicons.dart'; diff --git a/app/lib/frontend/widgets/chat_input_field.dart b/app/lib/frontend/widgets/chat_input_field.dart index 5024f3f..2614f3a 100644 --- a/app/lib/frontend/widgets/chat_input_field.dart +++ b/app/lib/frontend/widgets/chat_input_field.dart @@ -8,7 +8,7 @@ import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/backend/providers/model.dart'; import 'package:open_local_ui/core/image.dart'; import 'package:open_local_ui/frontend/dialogs/attachments_dropzone.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:provider/provider.dart'; import 'package:unicons/unicons.dart'; diff --git a/app/lib/frontend/widgets/chat_message.dart b/app/lib/frontend/widgets/chat_message.dart index 6a4a6b1..f05be11 100644 --- a/app/lib/frontend/widgets/chat_message.dart +++ b/app/lib/frontend/widgets/chat_message.dart @@ -12,7 +12,7 @@ import 'package:gap/gap.dart'; import 'package:open_local_ui/backend/models/chat_message.dart'; import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/core/format.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:open_local_ui/frontend/widgets/markdown_body.dart'; import 'package:open_local_ui/frontend/widgets/tts_player.dart'; import 'package:provider/provider.dart'; diff --git a/app/lib/frontend/widgets/chat_toolbar.dart b/app/lib/frontend/widgets/chat_toolbar.dart index 88b0b0f..bfba88a 100644 --- a/app/lib/frontend/widgets/chat_toolbar.dart +++ b/app/lib/frontend/widgets/chat_toolbar.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; - import 'package:adaptive_theme/adaptive_theme.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:gap/gap.dart'; import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/backend/providers/model.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:provider/provider.dart'; import 'package:unicons/unicons.dart'; diff --git a/app/lib/frontend/widgets/markdown_body.dart b/app/lib/frontend/widgets/markdown_body.dart index 9c49532..6327c8d 100644 --- a/app/lib/frontend/widgets/markdown_body.dart +++ b/app/lib/frontend/widgets/markdown_body.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - import 'package:adaptive_theme/adaptive_theme.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // ignore: depend_on_referenced_packages @@ -9,7 +8,7 @@ import 'package:flutter_highlight/themes/atom-one-dark.dart'; import 'package:flutter_highlight/themes/atom-one-light.dart'; import 'package:markdown_widget/markdown_widget.dart'; import 'package:open_local_ui/constants/style.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:open_local_ui/frontend/widgets/markdown_code_wrapper.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/app/lib/frontend/widgets/markdown_code_wrapper.dart b/app/lib/frontend/widgets/markdown_code_wrapper.dart index 4302f91..9d275c3 100644 --- a/app/lib/frontend/widgets/markdown_code_wrapper.dart +++ b/app/lib/frontend/widgets/markdown_code_wrapper.dart @@ -9,7 +9,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:gap/gap.dart'; import 'package:open_local_ui/core/asset.dart'; -import 'package:open_local_ui/frontend/helpers/snackbar.dart'; +import 'package:open_local_ui/core/snackbar.dart'; import 'package:unicons/unicons.dart'; Map languageToAsset = { diff --git a/app/lib/main.dart b/app/lib/main.dart index 4dc1497..cbbfec4 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -7,7 +7,6 @@ import 'package:feedback/feedback.dart'; import 'package:flex_color_picker/flex_color_picker.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:open_local_ui/backend/databases/chat_sessions.dart'; import 'package:open_local_ui/backend/providers/chat.dart'; import 'package:open_local_ui/backend/providers/locale.dart'; @@ -19,8 +18,7 @@ import 'package:open_local_ui/core/asset.dart'; import 'package:open_local_ui/core/color.dart'; import 'package:open_local_ui/core/logger.dart'; import 'package:open_local_ui/env.dart'; -import 'package:open_local_ui/frontend/screens/dashboard.dart'; -import 'package:open_local_ui/frontend/screens/onboarding.dart'; +import 'package:open_local_ui/frontend/screens/splash.dart'; import 'package:provider/provider.dart'; import 'package:rive/rive.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -145,8 +143,7 @@ void _preloadAssets() async { } void main() async { - WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); - FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); + WidgetsFlutterBinding.ensureInitialized(); // Internal services @@ -198,8 +195,6 @@ void main() async { prefs.setBool('userOnboarded', true); } - FlutterNativeSplash.remove(); - // Run app runApp( @@ -297,9 +292,7 @@ class _MyAppState extends State { GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], - home: widget.userOnboarded - ? const DashboardScreen() - : const OnboardingScreen(), + home: SplashScreen(userOnboarded: widget.userOnboarded), debugShowCheckedModeBanner: kDebugMode, ), ); diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift index 16f81a3..ba48a82 100644 --- a/app/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,6 +7,7 @@ import Foundation import app_links import audioplayers_darwin +import battery_plus import bitsdojo_window_macos import device_info_plus import irondash_engine_context @@ -23,6 +24,7 @@ import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + BatteryPlusMacosPlugin.register(with: registry.registrar(forPlugin: "BatteryPlusMacosPlugin")) BitsdojoWindowPlugin.register(with: registry.registrar(forPlugin: "BitsdojoWindowPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) IrondashEngineContextPlugin.register(with: registry.registrar(forPlugin: "IrondashEngineContextPlugin")) diff --git a/app/pubspec.lock b/app/pubspec.lock index b587afb..654f36d 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -25,14 +25,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.13.0" - ansicolor: - dependency: transitive + animated_splash_screen: + dependency: "direct main" description: - name: ansicolor - sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" + name: animated_splash_screen + sha256: f45634db6ec4e8cf034c53e03f3bd83898a16fe3c9286bf5510b6831dfcf2124 url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "1.3.0" app_links: dependency: transitive description: @@ -121,6 +121,22 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + battery_plus: + dependency: "direct main" + description: + name: battery_plus + sha256: ccc1322fee1153a0f89e663e0eac2f64d659da506454cf24dcad75eb08ae138b + url: "https://pub.dev" + source: hosted + version: "6.0.2" + battery_plus_platform_interface: + dependency: transitive + description: + name: battery_plus_platform_interface + sha256: e8342c0f32de4b1dfd0223114b6785e48e579bfc398da9471c9179b907fa4910 + url: "https://pub.dev" + source: hosted + version: "2.0.1" bitsdojo_window: dependency: "direct main" description: @@ -361,6 +377,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + dbus: + dependency: transitive + description: + name: dbus + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + url: "https://pub.dev" + source: hosted + version: "0.7.10" device_info_plus: dependency: transitive description: @@ -595,14 +619,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_native_splash: - dependency: "direct main" - description: - name: flutter_native_splash - sha256: edf39bcf4d74aca1eb2c1e43c3e445fd9f494013df7f0da752fefe72020eedc0 - url: "https://pub.dev" - source: hosted - version: "2.4.0" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -1117,6 +1133,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + page_transition: + dependency: transitive + description: + name: page_transition + sha256: dee976b1f23de9bbef5cd512fe567e9f6278caee11f5eaca9a2115c19dc49ef6 + url: "https://pub.dev" + source: hosted + version: "2.1.0" path: dependency: "direct main" description: @@ -1618,14 +1642,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" - universal_io: + upower: dependency: transitive description: - name: universal_io - sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + name: upower + sha256: cf042403154751180affa1d15614db7fa50234bc2373cd21c3db666c38543ebf url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "0.7.0" url_launcher: dependency: "direct main" description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index f0867a4..67af11d 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -42,7 +42,7 @@ dependencies: flutter_svg: ^2.0.10+1 # Splash Screen - flutter_native_splash: ^2.4.0 + animated_splash_screen: ^1.3.0 # Window Management bitsdojo_window: ^0.1.6 @@ -86,6 +86,7 @@ dependencies: language_code: ^0.5.3+2 system_info2: ^4.0.0 gpu_info: ^0.0.3 + battery_plus: ^6.0.2 # Environment Variables envied: ^0.5.4+1 @@ -125,6 +126,7 @@ flutter: # Model Metadata - assets/metadata/ollama_models.json # Logos + - assets/graphics/logos/open_local_ui.svg - assets/graphics/logos/flutter.svg - assets/graphics/logos/langchain.svg - assets/graphics/logos/supabase.svg diff --git a/app/windows/flutter/generated_plugin_registrant.cc b/app/windows/flutter/generated_plugin_registrant.cc index 94f2b5f..58fbd3c 100644 --- a/app/windows/flutter/generated_plugin_registrant.cc +++ b/app/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -23,6 +24,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("AppLinksPluginCApi")); AudioplayersWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); + BatteryPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("BatteryPlusWindowsPlugin")); BitsdojoWindowPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("BitsdojoWindowPlugin")); GpuInfoPluginCApiRegisterWithRegistrar( diff --git a/app/windows/flutter/generated_plugins.cmake b/app/windows/flutter/generated_plugins.cmake index 1f41cd0..de294b5 100644 --- a/app/windows/flutter/generated_plugins.cmake +++ b/app/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links audioplayers_windows + battery_plus bitsdojo_window_windows gpu_info irondash_engine_context