diff --git a/.gitignore b/.gitignore index 24476c5..a305876 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,14 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release +/android/build + +# Rust wrapper crate (native/) +native/target/ + +# Rust cdylibs built into the APK by devbox run build-native-android +android/app/src/main/jniLibs/ + +# Patrol generates the bundle from the integration tests at run time +**/test_bundle.dart +.patrol.env diff --git a/.metadata b/.metadata index 2e239db..2215ee3 100644 --- a/.metadata +++ b/.metadata @@ -1,11 +1,11 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled. +# This file should be version controlled and should not be manually edited. version: - revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - channel: stable + revision: "nixpkgs000000000000000000000000000000000" + channel: "stable" project_type: app @@ -13,26 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - - platform: android - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - - platform: ios - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 + create_revision: nixpkgs000000000000000000000000000000000 + base_revision: nixpkgs000000000000000000000000000000000 - platform: linux - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - - platform: macos - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - - platform: web - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - - platform: windows - create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 + create_revision: nixpkgs000000000000000000000000000000000 + base_revision: nixpkgs000000000000000000000000000000000 # User provided section diff --git a/AI-DECLARATION.md b/AI-DECLARATION.md new file mode 100644 index 0000000..e028c4a --- /dev/null +++ b/AI-DECLARATION.md @@ -0,0 +1,17 @@ +--- +version: "0.1.2" +level: copilot +processes: + design: assist + implementation: pair + testing: pair + documentation: copilot + review: copilot + deployment: assist +--- + +This format is based on [AI-DECLARATION.md](https://ai-declaration.md/en/0.1.2). + +## Notes + +- diff --git a/LICENSE.md b/LICENSE.md index 43ec0c7..76dce47 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,7 @@ MIT License Copyright (c) 2024 Sarthak Kimtani +Copyright (c) 2026 randogoth Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 13c2a07..7e98814 100644 --- a/README.md +++ b/README.md @@ -1,80 +1,45 @@ -# FlashMail +# キラキラ kirakira -FlashMail is a Mobile application designed to provide users with a temporary email solution powered by the mail.tm platform. With FlashMail, users can receive and view emails conveniently while maintaining their privacy. The app utilizes Riverpod as its state management solution for efficient and organized data handling. +[![AI-DECLARATION: copilot](https://img.shields.io/badge/䷼%20AI--DECLARATION-copilot-fee2e2?labelColor=fee2e2)](https://ai-declaration.md) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![Powered by Mistral](https://img.shields.io/badge/Powered_by-Mistral_AI-FA520F?logo=mistral-ai&logoColor=white) ![Flutter](https://img.shields.io/badge/Flutter-02569B?logo=flutter&logoColor=white) [![Forked from flash-mail](https://img.shields.io/badge/Forked_from-sarthakkimtani%2Fflash--mail-59636e?logo=github&logoColor=white)](https://github.com/sarthakkimtani/flash-mail) -This repository contains the source code for FlashMail developed using the Flutter framework. The app is designed to provide various features and functionalities to enhance user experience. Below, you will find information about how to download the app, its features, dependencies, license, and more. +A mobile and desktop client for [smolmail](https://smol.place), a minimalist end-to-end encrypted mail protocol: one Ed25519 identity, five operations, sealed and signed messages over a Noise_NX transport. -## Download +kirakira began as [FlashMail](https://github.com/sarthakkimtani/flash-mail), a Flutter UI template for a disposable-email app built on mail.tm. Its protocol core is now [fumi-core](https://code.randogoth.com/randogoth/fumi), the Rust library the reference CLI is built on: `native/` wraps it into a C ABI and ships it in the APK as `libsmol_mail_native.so` (SQLite bundled), `lib/native/` speaks that ABI over dart:ffi, and `lib/smol/` is the thin facade the UI reads. The UI is Material 3 — dark navy and mint green by default, with a matching light theme — built from a single `ColorScheme` and `AppColors` extension rather than hardcoded colors per screen. -You can download the latest version of the app from the [GitHub Releases](https://github.com/sarthakkimtani/flash-mail/releases) page. Look for the most recent release and download the corresponding APK or installer file for your device. +## What it does -## Requirements +- Create or restore an identity from a 32-byte seed — that's the only secret. +- Pin a server's key, register or recall an address, then fetch and send sealed mail. +- Trust-on-first-use for server and contact keys, with rotation support and on-screen warnings for anything unverified. +- Export/import inbox, sent mail, contacts and server pins as one shareable backup file — never the seed. +- Share your address as a `smol://` QR code, and react to any `smol://` link a scanner or browser hands the device: its key lands in the confirm-first import dialog. -- Any Operating System (ie. MacOS X, Linux, Windows) -- Any IDE with Flutter SDK installed (ie. IntelliJ, Android Studio, VSCode, etc) -- A little knowledge of Dart and Flutter +Mail, contacts and pinned server keys live in fumi-core's SQLite store, bundled into the native library; the seed, read marks and settings stay app-side in Hive. -## Features +## Layout -- Instantly create temporary email addresses to receive messages without revealing your personal email. -- Enjoy a seamless user experience with an intuitive and user-friendly interface, making it easy to navigate through your emails effortlessly. -- Access and download attachments with ease, allowing you to view and save important files directly from your emails. -- Access and read your emails effortlessly with a seamless viewing experience. -- Benefit from a compact APK size of just 22 MB, ensuring that FlashMail takes up minimal storage space on your device. +``` +lib/native/ dart:ffi binding: handles, error codes, isolate plumbing +lib/smol/ thin facades over the binding: address, store, client +lib/presentation/ screens, widgets and theme (Riverpod + auto_route) +lib/data/ Riverpod providers +native/ Rust wrapper crate: the C ABI over fumi-core, pinned by rev +integration_test/ Patrol device tests against a live server +test/ store, recall, binding, interop and e2e tests +``` -## Screenshots +## Run and verify - - +``` +devbox run build-native-android # the .so the APK loads — once per Rust change +devbox run analyze +devbox run test +flutter run --flavor prod +``` -## Installation - -To run the app locally and make modifications, follow these steps: - -1. Ensure you have Flutter SDK installed on your machine. You can download it from the official Flutter website: https://flutter.dev. -2. Clone this repository to your local machine using the following command:
- ```bash - git clone https://github.com/sarthakkimtani/flash-mail.git - ``` -3. Navigate to the project directory:

- ```bash - cd flash-mail - ``` -4. Fetch the app's dependencies by running the following command:
- ```bash - flutter pub get - ``` -5. Connect your device or start an emulator. -6. Run the app using the following command:
- ```bash - flutter run - ``` - -## Dependencies - -| Name | Usage | -| ------------------------------------------------------------------------- | --------------------------- | -| [**Auto Route**](https://pub.dev/packages/auto_route) | Navigation & Routing | -| [**Dio**](https://pub.dev/packages/dio) | HTTP Requests | -| [**External Path**](https://pub.dev/packages/external_path) | External Storage Path | -| [**Flash**](https://pub.dev/packages/flash) | Alerts & Dialogs | -| [**Flutter Downloader**](https://pub.dev/packages/flutter_downloader) | Download Files | -| [**Flutter InAppWebView**](https://pub.dev/packages/flutter_inappwebview) | In-App WebView | -| [**Flutter Riverpod**](https://pub.dev/packages/flutter_riverpod) | Global State Management | -| [**Freezed**](https://pub.dev/packages/freezed) | Code Generation | -| [**Hive**](https://pub.dev/packages/hive) | Local Database | -| [**Intl**](https://pub.dev/packages/intl) | Internationalization | -| [**Shimmer**](https://pub.dev/packages/shimmer) | Shimmer for Loading Screens | -| [**URL Launcher**](https://pub.dev/packages/url_launcher) | URL Launcher | - -## Contributing - -Contributions to this app are welcome! If you find any issues or have ideas for improvements, please open an issue or submit a pull request. Make sure to follow the repository's guidelines for contributing. +`test/e2e_test.dart` runs a live round-trip against the local bunshin on `127.0.0.1:1961` and skips itself when nothing's listening there. On-device flows are covered by the Patrol suite — `devbox run test-integration` builds the `integration` flavor (installed beside the real app, its data cleared between tests) and drives onboarding, registration, fetch cancellation, rotation and the unchanged-key refresh against the same server. To exercise the smol:// deep link by hand, scan `test-qr.png` — it encodes the `kirakira@localhost` identity — with any device camera and confirm the import dialog. ## License -This app is distributed under the [MIT License](https://github.com/sarthakkimtani/flash-mail/blob/main/LICENSE). Feel free to modify and use it as per your requirements. - -## Disclaimer - -FlashMail is an independent project and is not affiliated with or endorsed by the mail.tm platform. Please review and comply with the terms of service of mail.tm when using this application. +MIT — see LICENSE.md. diff --git a/analysis_options.yaml b/analysis_options.yaml index b07c1de..0fc3ec6 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -2,8 +2,7 @@ include: package:flutter_lints/flutter.yaml analyzer: exclude: - - lib/data/models/*/*.g.dart - - lib/data/models/*/*.freezed.dart + - lib/presentation/routes/app_router.gr.dart linter: rules: diff --git a/android/.gitignore b/android/.gitignore index 6f56801..1e367f8 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -1,8 +1,9 @@ gradle-wrapper.jar /.gradle /captures/ -/gradlew -/gradlew.bat +# gradlew stays tracked: it carries the nix project-cache redirect that every +# non-flutter gradle invocation (patrol_cli, manual builds) needs, so the +# wrapper can't be re-injected from the template. /local.properties GeneratedPluginRegistrant.java diff --git a/android/app/build.gradle b/android/app/build.gradle deleted file mode 100644 index a1b61ba..0000000 --- a/android/app/build.gradle +++ /dev/null @@ -1,88 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -def keystoreProperties = new Properties() -def keystorePropertiesFile = rootProject.file('key.properties') -if (keystorePropertiesFile.exists()) { - keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) -} - -android { - namespace "com.example.flash_mail" - compileSdkVersion 34 - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - applicationId "com.app.flash_mail" - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - - signingConfigs { - release { - keyAlias keystoreProperties['keyAlias'] - keyPassword keystoreProperties['keyPassword'] - storeFile file(keystoreProperties['storeFile']) - storePassword keystoreProperties['storePassword'] - } - } - - buildTypes { - release { - signingConfig signingConfigs.release - } - } - } - - buildTypes { - release { - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 0000000..9f8f7b0 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,73 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.example.smol_mail" + compileSdk = flutter.compileSdkVersion + ndkVersion = "27.0.12077973" + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + defaultConfig { + applicationId = "com.app.smol_mail" + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + // The Android Test Orchestrator (with clearPackageData) wipes the + // integration flavor's app data between test runs, and the flavor + // installs it beside — never over — the real app, so every patrol run + // starts at onboarding with a fresh identity. + testInstrumentationRunner = "pl.leancode.patrol.PatrolJUnitRunner" + testInstrumentationRunnerArguments["clearPackageData"] = "true" + } + + testOptions { + execution = "ANDROIDX_TEST_ORCHESTRATOR" + } + + flavorDimensions += "test" + productFlavors { + // The real app: the identity the alpha testers hold, no suffix. + // With a flavor dimension every build must name its flavor, so + // shipping builds are `flutter build apk --flavor prod`. + create("prod") { + dimension = "test" + } + // The patrol test app, installed beside — never over — the real one. + create("integration") { + dimension = "test" + applicationIdSuffix = ".integration" + versionNameSuffix = "-integration" + } + } + + buildTypes { + release { + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} + +dependencies { + // The orchestrator referenced by testOptions.execution above. The patrol + // native library itself comes from the patrol pub package's android + // module (a plugin subproject), not from a Maven artifact. + androidTestUtil("androidx.test:orchestrator:1.5.1") +} diff --git a/android/app/src/androidTest/java/com/app/smol_mail/integration/MainActivityTest.java b/android/app/src/androidTest/java/com/app/smol_mail/integration/MainActivityTest.java new file mode 100644 index 0000000..cf41662 --- /dev/null +++ b/android/app/src/androidTest/java/com/app/smol_mail/integration/MainActivityTest.java @@ -0,0 +1,38 @@ +package com.app.smol_mail.integration; + +import androidx.test.platform.app.InstrumentationRegistry; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; +import pl.leancode.patrol.PatrolJUnitRunner; + +// The Patrol host class: each Dart test in the integration_test directory is +// executed through this JUnit suite. Its package is the flavored applicationId +// (com.app.smol_mail + .integration suffix); the namespace differs, so +// MainActivity needs the explicit import below. +@RunWith(Parameterized.class) +public class MainActivityTest { + + @Parameters(name = "{0}") + public static Object[] testCases() { + PatrolJUnitRunner instrumentation = + (PatrolJUnitRunner) InstrumentationRegistry.getInstrumentation(); + instrumentation.setUp(com.example.smol_mail.MainActivity.class); + instrumentation.waitForPatrolAppService(); + return instrumentation.listDartTests(); + } + + public MainActivityTest(String dartTestName) { + this.dartTestName = dartTestName; + } + + private final String dartTestName; + + @Test + public void runDartTest() { + PatrolJUnitRunner instrumentation = + (PatrolJUnitRunner) InstrumentationRegistry.getInstrumentation(); + instrumentation.runDartTest(dartTestName); + } +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index a32e4d5..b163da0 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ @@ -20,37 +19,19 @@ + + + + + + + - - - - - - - - - - - - - - - - - - - - - diff --git a/android/app/src/main/kotlin/com/example/flash_mail/MainActivity.kt b/android/app/src/main/kotlin/com/example/smol_mail/MainActivity.kt similarity index 75% rename from android/app/src/main/kotlin/com/example/flash_mail/MainActivity.kt rename to android/app/src/main/kotlin/com/example/smol_mail/MainActivity.kt index 9ffc340..ba1c9bf 100644 --- a/android/app/src/main/kotlin/com/example/flash_mail/MainActivity.kt +++ b/android/app/src/main/kotlin/com/example/smol_mail/MainActivity.kt @@ -1,4 +1,4 @@ -package com.example.flash_mail +package com.example.smol_mail import io.flutter.embedding.android.FlutterActivity diff --git a/android/app/src/main/res/drawable-hdpi/branding.png b/android/app/src/main/res/drawable-hdpi/branding.png new file mode 100644 index 0000000..5cf6791 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/branding.png differ 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 index 2a2e0b7..600babb 100644 Binary files a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png and b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/drawable-hdpi/splash.png b/android/app/src/main/res/drawable-hdpi/splash.png index 783f21f..5cf6791 100644 Binary files a/android/app/src/main/res/drawable-hdpi/splash.png and b/android/app/src/main/res/drawable-hdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-mdpi/branding.png b/android/app/src/main/res/drawable-mdpi/branding.png new file mode 100644 index 0000000..2229786 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/branding.png differ 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 index 502c348..8ca718a 100644 Binary files a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png and b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/drawable-mdpi/splash.png b/android/app/src/main/res/drawable-mdpi/splash.png index e1c91a4..2229786 100644 Binary files a/android/app/src/main/res/drawable-mdpi/splash.png and b/android/app/src/main/res/drawable-mdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png index bcfb067..4768b84 100644 Binary files a/android/app/src/main/res/drawable-v21/background.png and b/android/app/src/main/res/drawable-v21/background.png differ diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml index 3cc4948..5367a88 100644 --- a/android/app/src/main/res/drawable-v21/launch_background.xml +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -6,4 +6,7 @@ + + + diff --git a/android/app/src/main/res/drawable-xhdpi/branding.png b/android/app/src/main/res/drawable-xhdpi/branding.png new file mode 100644 index 0000000..10503d2 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/branding.png differ 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 index f93eeeb..df4e3bd 100644 Binary files a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png and b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/splash.png b/android/app/src/main/res/drawable-xhdpi/splash.png index 69ae71b..10503d2 100644 Binary files a/android/app/src/main/res/drawable-xhdpi/splash.png and b/android/app/src/main/res/drawable-xhdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/branding.png b/android/app/src/main/res/drawable-xxhdpi/branding.png new file mode 100644 index 0000000..d2c9a45 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/branding.png differ 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 index 1a9b6e6..749680b 100644 Binary files a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png and b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png index 2c74b8b..d2c9a45 100644 Binary files a/android/app/src/main/res/drawable-xxhdpi/splash.png and b/android/app/src/main/res/drawable-xxhdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/branding.png b/android/app/src/main/res/drawable-xxxhdpi/branding.png new file mode 100644 index 0000000..e78b054 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/branding.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png index 00c6753..69e13b5 100644 Binary files a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png and b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/splash.png b/android/app/src/main/res/drawable-xxxhdpi/splash.png index a14ee37..e78b054 100644 Binary files a/android/app/src/main/res/drawable-xxxhdpi/splash.png and b/android/app/src/main/res/drawable-xxxhdpi/splash.png differ diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png index bcfb067..4768b84 100644 Binary files a/android/app/src/main/res/drawable/background.png and b/android/app/src/main/res/drawable/background.png differ diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index 3cc4948..5367a88 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -6,4 +6,7 @@ + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml b/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml index 5f349f7..c79c58a 100644 --- a/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml +++ b/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml @@ -1,5 +1,9 @@ - + + + diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png index 534cec8..7419cd0 100644 Binary files a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png index 5e5bc83..d8aef73 100644 Binary files a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png index 3354320..1c650ca 100644 Binary files a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png index 70eee0b..51b6a6b 100644 Binary files a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png index 8a4d17c..b012600 100644 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png and b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml index 7cc5bc8..a3653cb 100644 --- a/android/app/src/main/res/values-night-v31/styles.xml +++ b/android/app/src/main/res/values-night-v31/styles.xml @@ -2,7 +2,6 @@