From a61fc4931499ad06b276f4b7b6b7341ab4f82d14 Mon Sep 17 00:00:00 2001 From: code3743 Date: Tue, 15 Sep 2026 14:11:40 -0500 Subject: [PATCH 1/4] feat: add HomeFooter widget with GitHub repository link and version display --- assets/svg/icons/github.svg | 16 +++++ lib/core/constants/asset_paths.dart | 1 + lib/features/home/home_strings.dart | 3 + .../providers/app_version_provider.dart | 11 ++++ .../home/presentation/views/home_view.dart | 3 + .../presentation/widgets/home_footer.dart | 60 +++++++++++++++++++ pubspec.lock | 32 ++++++++++ pubspec.yaml | 1 + 8 files changed, 127 insertions(+) create mode 100644 assets/svg/icons/github.svg create mode 100644 lib/features/home/presentation/providers/app_version_provider.dart create mode 100644 lib/features/home/presentation/widgets/home_footer.dart diff --git a/assets/svg/icons/github.svg b/assets/svg/icons/github.svg new file mode 100644 index 0000000..c61cf48 --- /dev/null +++ b/assets/svg/icons/github.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/lib/core/constants/asset_paths.dart b/lib/core/constants/asset_paths.dart index 8260882..84f8e1a 100644 --- a/lib/core/constants/asset_paths.dart +++ b/lib/core/constants/asset_paths.dart @@ -19,4 +19,5 @@ abstract final class AssetPaths { static const iconUtensils = 'assets/svg/icons/utensils.svg'; static const iconFine = 'assets/svg/icons/circle-dollar-sign.svg'; static const iconHistory = 'assets/svg/icons/history.svg'; + static const iconGithub = 'assets/svg/icons/github.svg'; } diff --git a/lib/features/home/home_strings.dart b/lib/features/home/home_strings.dart index b6d565f..82dde68 100644 --- a/lib/features/home/home_strings.dart +++ b/lib/features/home/home_strings.dart @@ -20,4 +20,7 @@ abstract final class HomeStrings { static const restaurantShortcut = 'Central (Meléndez)'; static const comingSoon = 'Muy pronto podrás usar esta función.'; static const allFunctionalitiesTitle = 'Todas las funcionalidades'; + static const repositoryLabel = 'code3743/univalle_app'; + static const repositoryUrl = 'https://github.com/code3743/univalle_app'; + static const cannotOpenRepositoryLink = 'No pudimos abrir el repositorio.'; } diff --git a/lib/features/home/presentation/providers/app_version_provider.dart b/lib/features/home/presentation/providers/app_version_provider.dart new file mode 100644 index 0000000..0d16587 --- /dev/null +++ b/lib/features/home/presentation/providers/app_version_provider.dart @@ -0,0 +1,11 @@ +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'app_version_provider.g.dart'; + +/// App version shown in the Home footer, e.g. "0.1.0". +@riverpod +Future appVersion(Ref ref) async { + final info = await PackageInfo.fromPlatform(); + return info.version; +} diff --git a/lib/features/home/presentation/views/home_view.dart b/lib/features/home/presentation/views/home_view.dart index b0f4a5d..953b642 100644 --- a/lib/features/home/presentation/views/home_view.dart +++ b/lib/features/home/presentation/views/home_view.dart @@ -17,6 +17,7 @@ import '../../../auth/presentation/viewmodels/auth_view_model.dart'; import '../../../profile/presentation/viewmodels/profile_view_model.dart'; import '../../home_strings.dart'; import '../providers/latest_semester_provider.dart'; +import '../widgets/home_footer.dart'; import '../widgets/home_top_bar.dart'; import '../widgets/program_card.dart'; import '../widgets/quick_access_items.dart'; @@ -145,6 +146,8 @@ class HomeView extends ConsumerWidget { ) .toList(), ), + const SizedBox(height: AppSpacing.lg), + const HomeFooter(), ], ), ), diff --git a/lib/features/home/presentation/widgets/home_footer.dart b/lib/features/home/presentation/widgets/home_footer.dart new file mode 100644 index 0000000..80f4386 --- /dev/null +++ b/lib/features/home/presentation/widgets/home_footer.dart @@ -0,0 +1,60 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../../core/constants/asset_paths.dart'; +import '../../../../core/extensions/snackbar_extension.dart'; +import '../../home_strings.dart'; +import '../providers/app_version_provider.dart'; + +class HomeFooter extends ConsumerWidget { + const HomeFooter({super.key}); + + Future _openRepository(BuildContext context) async { + final uri = Uri.parse(HomeStrings.repositoryUrl); + final launched = await launchUrl(uri, mode: LaunchMode.externalApplication); + if (!launched && context.mounted) { + context.showSnack(HomeStrings.cannotOpenRepositoryLink); + } + } + + @override + Widget build(BuildContext context, WidgetRef ref) { + final colorScheme = Theme.of(context).colorScheme; + final mutedStyle = Theme.of(context).textTheme.bodySmall + ?.copyWith(color: colorScheme.onSurfaceVariant); + final version = ref.watch(appVersionProvider).value; + + return Center( + child: Column( + children: [ + InkWell( + borderRadius: BorderRadius.circular(8), + onTap: () => _openRepository(context), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 8), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + SvgPicture.asset( + AssetPaths.iconGithub, + width: 15, + height: 15, + colorFilter: ColorFilter.mode( + colorScheme.onSurfaceVariant, + BlendMode.srcIn, + ), + ), + const SizedBox(width: 6), + Text(HomeStrings.repositoryLabel, style: mutedStyle), + ], + ), + ), + ), + if (version != null) Text('v$version', style: mutedStyle), + ], + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 34e9cec..ced2878 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -265,6 +265,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + ffi_leak_tracker: + dependency: transitive + description: + name: ffi_leak_tracker + sha256: "4093d4ef9ca06ffe2786e73bfb25e22aa92112b9bb4ec941f11e3e6b61489a97" + url: "https://pub.dev" + source: hosted + version: "0.1.2" file: dependency: transitive description: @@ -589,6 +597,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: "127e1751e37ffb2ff4658beeaca77bad0c27bf5f932bd3a501c2296926d4b481" + url: "https://pub.dev" + source: hosted + version: "10.2.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: db762cb2f4f25ee60fb6359773861b0f199e00b90d237bd85a76a1e806b46ef4 + url: "https://pub.dev" + source: hosted + version: "4.1.0" path: dependency: transitive description: @@ -1098,6 +1122,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.26.1" + win32: + dependency: transitive + description: + name: win32 + sha256: a0b93865d5644f11cf6a8c3f6db909f1ec168958b5805f6cc684adea957cd63d + url: "https://pub.dev" + source: hosted + version: "6.4.0" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a7931f9..ae1e700 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: google_fonts: ^8.2.1 html: ^0.15.7 intl: ^0.20.3 + package_info_plus: ^10.2.1 riverpod_annotation: ^4.0.7 shared_preferences: ^2.5.5 url_launcher: ^6.3.1 From 0ff3a9175e4602e933e12a9b0b3ca1d8628aeffd Mon Sep 17 00:00:00 2001 From: code3743 Date: Tue, 15 Sep 2026 14:29:39 -0500 Subject: [PATCH 2/4] feat: add tests for HomeFooter widget functionality and version display --- pubspec.lock | 2 +- pubspec.yaml | 1 + .../providers/app_version_provider_test.dart | 25 +++++++ .../widgets/home_footer_test.dart | 73 +++++++++++++++++++ 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 test/features/home/presentation/providers/app_version_provider_test.dart create mode 100644 test/features/home/presentation/widgets/home_footer_test.dart diff --git a/pubspec.lock b/pubspec.lock index ced2878..cf0864c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -987,7 +987,7 @@ packages: source: hosted version: "3.2.6" url_launcher_platform_interface: - dependency: transitive + dependency: "direct dev" description: name: url_launcher_platform_interface sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" diff --git a/pubspec.yaml b/pubspec.yaml index ae1e700..0f8c5ad 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,6 +34,7 @@ dev_dependencies: build_runner: ^2.16.1 flutter_native_splash: ^2.4.8 mocktail: ^1.0.4 + url_launcher_platform_interface: ^2.3.2 flutter: uses-material-design: true diff --git a/test/features/home/presentation/providers/app_version_provider_test.dart b/test/features/home/presentation/providers/app_version_provider_test.dart new file mode 100644 index 0000000..0468a8a --- /dev/null +++ b/test/features/home/presentation/providers/app_version_provider_test.dart @@ -0,0 +1,25 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:univalle_app/features/home/presentation/providers/app_version_provider.dart'; + +import '../../../../helpers/container.dart'; + +void main() { + setUp(() { + PackageInfo.setMockInitialValues( + appName: 'Univalle App', + packageName: 'co.edu.univalle.univalle_app', + version: '1.2.3', + buildNumber: '7', + buildSignature: '', + ); + }); + + test('reads the version reported by the platform', () async { + final container = createContainer(); + + final version = await container.read(appVersionProvider.future); + + expect(version, '1.2.3'); + }); +} diff --git a/test/features/home/presentation/widgets/home_footer_test.dart b/test/features/home/presentation/widgets/home_footer_test.dart new file mode 100644 index 0000000..713aa27 --- /dev/null +++ b/test/features/home/presentation/widgets/home_footer_test.dart @@ -0,0 +1,73 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:univalle_app/features/home/home_strings.dart'; +import 'package:univalle_app/features/home/presentation/widgets/home_footer.dart'; +import 'package:url_launcher_platform_interface/link.dart'; +import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart'; + +import '../../../../helpers/pump_app.dart'; + +class _FakeUrlLauncher extends UrlLauncherPlatform { + _FakeUrlLauncher({this.result = true}); + + final bool result; + String? launchedUrl; + + @override + LinkDelegate? get linkDelegate => null; + + @override + Future launchUrl(String url, LaunchOptions options) async { + launchedUrl = url; + return result; + } +} + +void main() { + setUp(() { + PackageInfo.setMockInitialValues( + appName: 'Univalle App', + packageName: 'co.edu.univalle.univalle_app', + version: '1.2.3', + buildNumber: '7', + buildSignature: '', + ); + }); + + testWidgets('shows the repository label and the app version', (tester) async { + UrlLauncherPlatform.instance = _FakeUrlLauncher(); + + await tester.pumpApp(const HomeFooter()); + await tester.pumpAndSettle(); + + expect(find.text(HomeStrings.repositoryLabel), findsOneWidget); + expect(find.text('v1.2.3'), findsOneWidget); + }); + + testWidgets('opens the repository url when tapped', (tester) async { + final fakeLauncher = _FakeUrlLauncher(); + UrlLauncherPlatform.instance = fakeLauncher; + + await tester.pumpApp(const HomeFooter()); + await tester.pumpAndSettle(); + + await tester.tap(find.text(HomeStrings.repositoryLabel)); + await tester.pumpAndSettle(); + + expect(fakeLauncher.launchedUrl, HomeStrings.repositoryUrl); + }); + + testWidgets('shows a snackbar when the link cannot be opened', ( + tester, + ) async { + UrlLauncherPlatform.instance = _FakeUrlLauncher(result: false); + + await tester.pumpApp(const HomeFooter()); + await tester.pumpAndSettle(); + + await tester.tap(find.text(HomeStrings.repositoryLabel)); + await tester.pumpAndSettle(); + + expect(find.text(HomeStrings.cannotOpenRepositoryLink), findsOneWidget); + }); +} From 289ac4ea2e4eca0c7a5175e96f569c6c3a9ed882 Mon Sep 17 00:00:00 2001 From: code3743 Date: Tue, 15 Sep 2026 14:29:52 -0500 Subject: [PATCH 3/4] feat: add adaptive launcher icon and foreground images for various densities --- .../drawable-hdpi/ic_launcher_foreground.png | Bin 0 -> 3591 bytes .../drawable-mdpi/ic_launcher_foreground.png | Bin 0 -> 2424 bytes .../drawable-xhdpi/ic_launcher_foreground.png | Bin 0 -> 4795 bytes .../ic_launcher_foreground.png | Bin 0 -> 6875 bytes .../ic_launcher_foreground.png | Bin 0 -> 9834 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 9 +++++++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1815 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 1238 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 2476 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 3574 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4891 bytes 11 files changed, 9 insertions(+) create mode 100644 android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d8067429b0f3da6da63f9813ec557325d3f92b GIT binary patch literal 3591 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 wBRy_`$Od~Iee>yoplAQredT}JgnsI=}g8%>k literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..8367b9ae816cd2e4d490f6fda9a1beaf37697f4d GIT binary patch literal 2424 zcmbVOX*3j!8Xn0`&0s835=u%KA-?RgOWBD*DuXOz384>VgwHaTjEP}n9kP~XvWzXu ze3{RZA!B@mER7l24dS}z{D;yzhISAMbgdAMbh3lVo+*M1U8<3jhEF%uEe! zPNv^Ki<|SLqu`EY0Dwo=%uwI%8J2++uo9k-=sfvh5x>czFbQHIzRpW6*B!v2Y`(afnyeb) z#DF}H=TE}uBRx1lufz?-;6M+|TYMerI{J|3&71lD6bVgzQk(0loV-%KvjW3)J%YNO z4GG=iGKz2ag0{DQ^U`%MP*!pTd$=@ZgJCx@0hJk3?#S=y8qUQLVcvFj8^3B>GX@F* zHRzOzKQ+5;oZS9=WT7I&*&caJ7b!qIul)8SFtl}zW17Ka+r`r5*(v`sH9T8f4=!egeC8g|!l7c!z2NB8JOo>LE!)@#h)}fOb=NnU z$@}?ln`^kaZU_WYa|*Dr<1CVq4yZ?vIm;fzowr?I2fDX_<;b0SIaC?uk9%G1bRibO z5|~2IQ(&1dI>Nr5+=0Jw@p`1Wxp{80Kj-6LJcL}xPgn=%z{+W+m4G)|@vPrl?TfCq zALA&~K}1s9pe*;9%f43Mb*gG=m`-6~O%vUCyxj0YHNfOA92@XdIE5{d)nk`vzS+Xp z(djoDdX_vPzBssp7CDB&e%AwgP$(3fr=S1j1>(by}w=QZw*J!zEmZlp>O8MJOiL!C)!=S*T-U$dwz3rKffht;E|Mwq zZTJ26eI~tqFW}!>XR%XPld9$7Fr+N0;7=%aTdxtgp2&yi&!-r~68|P)j!PLi_!eh( z7ni8Ywl}n1QWH2`a5eT7i zv%K=FQ23)~o?S0FB34c?-1TPOc1XK^ zN3ptYT-}o~1N~UJTWB?L^nU4lbWsbGC!wdy604#7?*03XVxKQ%x$&%t4whQ(rKd?#uY zOwG*1S#>wZI$snpBt}rE;)9tuQ1aI_!gf>g>Uvnhc27E zGP zFynNVc4pm357dfI)-2@U=uIXT=ymqa4*%=e>??VV5X@ZsEp zoX?jVnw!@%O`R5$(<>^Zuk_kHJ0I%s@gQ-M{s*tSc=y$839i{oP0qy>fApD0aVj0$+V9~7yz zxSLuQ`l6bEK&C*GY(9h@Y?YL#+dSe*$tZBCmqf6UGZRoxiYUB;=uGC`8s``3ceB=8 zT_w%P*U&S1u<@_2U9$K0uKrOZUBZ<=S||2q|8Xs2Axbe9jVhI}@>FQj=FMJJk-B_m zj?lv*2PK3Y^YO&Fv7@+P@wdcIUU%na{5!{3O<0t=L4mzxU$|j!<#v9$kZgSm36rzF zHQ-ou)m#Sqn*c2-GVx71D`tsAk3ZKqy)G3M)$5Z>tnzClf-<{H{Jo6GX!{t;BexgA ztvb&oi*V;;)(9=4HH#OyXWY_J;?{nyKG4Mq+xlH(2{h@{htfc5dY4L!#zk3)`_-My zs#rqvQh0|_SOdE)o}Shy8{#I@?_z&#!q>n-Oy-Y*P}whYqafYNQh;1ju==Mvzhn$$ z%LmpzNFq4KMp)V&>P|a2BN2L2!c%c!WEC`tz1rU-I5TtW5m#>qe}Fo)B^8Ks2VC&+ zJZ8q3>6yYt9%F~3ga<=X0}Pxoh6P;>C5j5$yL#3mql)q?`d1D}chlkNg4<_I?4eqi zEp)o*PW9(de@6>?->OO0f~I#Q%SLbKFKtyVgBp9ztPPjM1N{NMEGJLZ>ViX4gYmlM z<^I;kX0I^{?`omf9cFN1BHdK&3t{b~Hkjri*FmeBN-!;)MTWbsDa4`bfU@=PdL7h! zy=?+oWSJ8-ZGB(ckRZx58%4C+7z2n!pG*13WsB2@N-NXV9ez@~U37mKbhG;sF-$}0 zyq~Z9q+gTPvmoUG9(fPJkbvp?0}q3TC_)}r_`U7})4Br_{{NWq-_c}GawJzQtTA}-@*j%lpSl15 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..b3eca565f775d07a145a2c394714c2f9cf7bf2bc GIT binary patch literal 4795 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d65de3ab3695b1e9856d5920343beae2fc70c4 GIT binary patch literal 6875 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 AmH+?% literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..c79c58a --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..d4ab59bf7be71b80616e8b4a73af8c65626de24c 100644 GIT binary patch delta 1811 zcmV+u2kiKu1eXqw8Gi-<0033(vqt~`2Hr_TK~#90?VNo~6K5R9zgMoMlothL(?GVc zIX7dnF^wd1nZnG5k~udwjSgP|3;P4J#FwedvVRtrDTuEVbdHHABA~-Wo%4_RhKodn zjYS|h6xf^&B9t*`@7inoEYE>2L)z;dr9JdMNlAMBJ-_FdZ-0CDe1FefVDSL+MvqEL zj~TN(F*NiwmO%^vhC&D-@W3Mx!=S6y!d)&ln+pzfbbjyX|AeJ~B6K>oDE{fZ=@H?X zo{~P&5JV=JLQ)b;u_@_MQ9q`&v@X197kWg29(!>HFv%1$yZo8>isWleDJ(s$G;tng zLWpr@Ms(BymVaJz0$q$+c_%t@2}>`?fi6U?yks&Zvi+--#vrgj6e})p8iT?xjE<## zz*A6oQ89EeW4sY@*kXjLDp=QlaX&z!W?#mzQih6(!#we1Kn)%1# zNCHhD2}XuM(yQ^XF){?w=>j&jv{7Vq0XK^DkZO%0vD;*sF5%2+IBIGJ4HNHQO4K}9 zjPurC>NSd_r&lWEe*``M0xX|@24b@foD5Q?-J2MHBP~#8hpdFU*jN~sECW}tXDD^4 z21$XOw|{QQzLFc$GhjP$46e2|@jd-z=w~DWK|xCE^c_wog!AXT4wn|_#tr#J7>zKk zScTqC*NSiHX`@d{f?>{FkHdU*8hVPc9WICc+*x>WeHM`xsJ_mtL<7;k@h0>~4nwHE zBEILp-2=m{R6ws+l+PEC?r!kA@??#X7U=hDVt-<0)F{~nnbxesziA6W91gf{--fNE z7{SZZW#{n~T>ehDy1QkKk-ogRTo6wG1jD@dWEZ3xKOVvFF92U!(pO+X0Su{cfr;_| z;{eWUjj$iBkUh?;9YtGtDPwqd9vBaf)?J>EtSs@IC+%$jXJxF}8xWSe#clgA943(d zf`6@Ft{1;-xrS5HDAFX3rY0hsI}3gC>uzJ*<_QghY3({#R<9Ie>}Su2g6Wfz<>eVd zjIHbt91Zn~@_4<1bG!1PpFTs;Qcah5_T|YCe(7`A+?HJEr@aao46<{{g_zCY_I#sw zyw?IbZ(N71^bms67Au;_n6(^2=7)667k|AKU$hU#%#Rf1k^{GM2S`tk;_@vZ3`yuO$5E%u)bt-K7u zi#||V%0uua2jS}M^hvHE-FkN2ynl(FWs4EKU?Ged8H_F}+N(UYPc!^*0>aN1#N*uV ze9>bCjT<*)qv&dH2Y;Z*e>;kjhRWf9?a)EScH}TIq@=(wI~DBYDGxQJck__$e;`y= z!eut!@3?z=!R2g3*w*bsHj38V9Kd2x->qk2x50M&nD}ChMg)z24!XEFFn?j;0C9nI zb-~%(4A-B347#$|E6+oysqPb3A&$$J#4TT6GAwsB2+zY&cNL(oekAvC2mzm;hp>XZ z$|iL>VcnD?&f)D|k2k35wvVIsR|szUG%0LlrEoSY*xZvqRRTd_pVrrJ?H-nTR40&< zK5eM|mM2sv5M=ggzUa3+p?^w&yzbL{)Ngr0WzQ&*doi?66E0N3K=+{Bwae+WiK`g>Z*R$sO({#Gqvp?#j$Hbp$&{!EqQEfX zLy2lLZ$6Kq%N2v}1}p#D(XOu2!VYsG6^DNGA7^ieiLl_nL<|4`002ovPDHLkV1nH? BZFB$t literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..f74d0ff430d261799099fa78b91e5088c2cac98d 100644 GIT binary patch delta 1229 zcmV;;1Ty=&1J((U8Gi-<00374`G)`i1f5AlK~#90?V4L`6jd0<|7Ul0ySwcQTdlYy z_+m*DwGn;LL>s9ot(T}P1VxlPK6oiejG~F5F|7^ZQmQGXVzlB?N+4G0Llc1(d1$Gc z*asD=l9q63Sxam0J2N{wbIh48w`Mwfo85(^zhqx_zVprhKYx2J-?zBPCL$$Qh%9!a&nun1I&z|Ms?1aoowUAh`5t7Ae z4cN4oUjg^f0)NAAC||q?VQ;Nr`IvT2>jD#RefBxSZgiF4AHN%FfT3yNc4Edrs+lp6 zYGw?ini&JBCbWZnRQN~82ZW9h|14IAmHZtet zLKz%{eCD*_f}%y!fPDVEZX;qc!Lj)xjICY8_NlNG6@MqB{ANfUrx0v!oA$c4fzyA6 zP0Z!x!TO>Hfuq{m`@m+@L9=C2|`-XQRo%{(( zPdCJa4X~|P8K2@Q@L%o)?f+LdMtc^b6k=l|?C+H5Ha59ju)kdb|JDldwKcF57Q*b# zj!X1af`4cKfmrVi8#nDbARayh+v?RI8BW~<*2PO896AW4rw79BYPBmF0smPQAj@In zrZqsv$H3Qp4ade!x(QgncWinO;~Ps5IQk>fmcIt>!Mxa1hmhLa5d66#qFCLPSghX< z>yrz?EqGWriRFoWSQZsQYB>)7_HA(P^QtpdEPt>y$iH((#PRy2ge+tH!w=y6#tU<{ ze&2SyzZoO#ZR!lhW~Q{oOClC=Bf@?!lneUP_>F|Eh3LQl#@4SvMr9Sa`yZG#&Xkn} z+uC&y_SAr{{v4Kqr_@0n4RT)}gu1VyY7)(Lw^_3tFhi05@#VQ1v znt!15UIM>oH_|`e5|tRfsuB={sMf0U9Is+l-=%{LfeRNS2_^WooSzQyhx}}OT z`SfETLHhy9CRhYJP9bpo7_7xl>qfIRCx6z$FhK^cKXEoCTJrNj9O;^otg7W}s$;%W z0(WGSzXBZ`fKXQld&vgPC{}{N?~nN|2{b^inGou|uzFsCdEUI6B7$9K)WIGP3EmTj zx{@TRYeUBNo!72VO2O}{R13#=NW!Lm@>h^rTOj@V3oMU5rhY3OJBncEZ*gZ&f`5VQ zUCIAxIqo?89jGY6zhj#r*^~5IWwI-=6LZ86(2DXC+cP$TbfSH!jW0 ze9N$`N#w-HXfs#V>nkmAI*ZuZgGN*fiiUAn_LcYfN;!69g`N8NWUjm7nc1^Ec0#gn r3m>-;C>?AW8EvlU^OgQBiWmL|KD4R&ckp=P00000NkvXXu0mjf6G2l) literal 442 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..bd3a345ac3b97363092b57c9f1527321e5c2f056 100644 GIT binary patch literal 3574 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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..c6684302cc7db7a149cbc180c8d428d691d97dc2 100644 GIT binary patch literal 4891 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 From 16d48fea825719fa24a82b89c4f324e967410d65 Mon Sep 17 00:00:00 2001 From: code3743 Date: Tue, 15 Sep 2026 14:30:34 -0500 Subject: [PATCH 4/4] feat: add colors.xml for launcher background color --- android/app/src/main/res/values/colors.xml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 android/app/src/main/res/values/colors.xml diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..e3f9609 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #EE322F + \ No newline at end of file