diff --git a/app/app.json b/app/app.json
index c14c856..0732d31 100644
--- a/app/app.json
+++ b/app/app.json
@@ -3,14 +3,14 @@
"name": "BigBrainParking",
"slug": "bigbrainparking",
"scheme": "bigbrainparking",
- "version": "0.2.2",
+ "version": "0.2.3",
"orientation": "portrait",
"userInterfaceStyle": "automatic",
"newArchEnabled": true,
"icon": "./assets/icon.png",
"android": {
"package": "top.mowden.bigbrainparking",
- "versionCode": 12,
+ "versionCode": 13,
"edgeToEdgeEnabled": true,
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
diff --git a/app/modules/bbp-notify/android/build.gradle b/app/modules/bbp-notify/android/build.gradle
new file mode 100644
index 0000000..4ca807c
--- /dev/null
+++ b/app/modules/bbp-notify/android/build.gradle
@@ -0,0 +1,27 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+
+group = 'expo.modules.bbpnotify'
+version = '0.1.0'
+
+def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
+apply from: expoModulesCorePlugin
+applyKotlinExpoModulesCorePlugin()
+useCoreDependencies()
+useDefaultAndroidSdkVersions()
+useExpoPublishing()
+
+android {
+ namespace "expo.modules.bbpnotify"
+ defaultConfig {
+ versionCode 1
+ versionName "0.1.0"
+ }
+ lintOptions {
+ abortOnError false
+ }
+}
+
+dependencies {
+ implementation "androidx.core:core-ktx:1.13.1"
+}
diff --git a/app/modules/bbp-notify/android/build/generated/source/buildConfig/release/expo/modules/bbpnotify/BuildConfig.java b/app/modules/bbp-notify/android/build/generated/source/buildConfig/release/expo/modules/bbpnotify/BuildConfig.java
new file mode 100644
index 0000000..3e90540
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/generated/source/buildConfig/release/expo/modules/bbpnotify/BuildConfig.java
@@ -0,0 +1,10 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package expo.modules.bbpnotify;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = false;
+ public static final String LIBRARY_PACKAGE_NAME = "expo.modules.bbpnotify";
+ public static final String BUILD_TYPE = "release";
+}
diff --git a/app/modules/bbp-notify/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar b/app/modules/bbp-notify/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar
new file mode 100644
index 0000000..cea5c85
Binary files /dev/null and b/app/modules/bbp-notify/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar differ
diff --git a/app/modules/bbp-notify/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt b/app/modules/bbp-notify/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt
new file mode 100644
index 0000000..e69de29
diff --git a/app/modules/bbp-notify/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties b/app/modules/bbp-notify/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
new file mode 100644
index 0000000..91da5e9
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
@@ -0,0 +1 @@
+#Mon Jul 13 20:59:42 PDT 2026
diff --git a/app/modules/bbp-notify/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml b/app/modules/bbp-notify/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml
new file mode 100644
index 0000000..c0c5502
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/modules/bbp-notify/android/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt b/app/modules/bbp-notify/android/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt
new file mode 100644
index 0000000..78ac5b8
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt
@@ -0,0 +1,2 @@
+R_DEF: Internal format may change without notice
+local
diff --git a/app/modules/bbp-notify/android/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt b/app/modules/bbp-notify/android/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt
new file mode 100644
index 0000000..08f4ebe
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt
@@ -0,0 +1 @@
+0 Warning/Error
\ No newline at end of file
diff --git a/app/modules/bbp-notify/android/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt b/app/modules/bbp-notify/android/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt
new file mode 100644
index 0000000..c6b789e
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt
@@ -0,0 +1 @@
+expo.modules.bbpnotify
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream
new file mode 100644
index 0000000..86a8a4a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len
new file mode 100644
index 0000000..ec93ed1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at
new file mode 100644
index 0000000..4e6ff2d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i
new file mode 100644
index 0000000..959e58d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
new file mode 100644
index 0000000..3d8fbe8
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
new file mode 100644
index 0000000..52c9999
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
new file mode 100644
index 0000000..31d8b36
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
new file mode 100644
index 0000000..fc0e221
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i
new file mode 100644
index 0000000..11d985f
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
new file mode 100644
index 0000000..06d2a3f
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
new file mode 100644
index 0000000..52c9999
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
new file mode 100644
index 0000000..31d8b36
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
new file mode 100644
index 0000000..96dd0c8
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
new file mode 100644
index 0000000..11d985f
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab
new file mode 100644
index 0000000..cde5b3c
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
new file mode 100644
index 0000000..b476e17
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len
new file mode 100644
index 0000000..822d180
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len
new file mode 100644
index 0000000..817b326
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at
new file mode 100644
index 0000000..0cfcc13
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i
new file mode 100644
index 0000000..7a63517
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab
new file mode 100644
index 0000000..6ae69e4
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream
new file mode 100644
index 0000000..f446027
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len
new file mode 100644
index 0000000..c6582fd
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len
new file mode 100644
index 0000000..a9f80ae
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
new file mode 100644
index 0000000..9b6e7ca
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i
new file mode 100644
index 0000000..9bfd7e1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream
new file mode 100644
index 0000000..86a8a4a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len
new file mode 100644
index 0000000..ec93ed1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
new file mode 100644
index 0000000..270c937
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i
new file mode 100644
index 0000000..959e58d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream
new file mode 100644
index 0000000..093092c
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len
new file mode 100644
index 0000000..68d7fbd
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at
new file mode 100644
index 0000000..0bd53b1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i
new file mode 100644
index 0000000..006451f
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream
new file mode 100644
index 0000000..35ab8c2
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len
new file mode 100644
index 0000000..11d24d5
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at
new file mode 100644
index 0000000..875403e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i
new file mode 100644
index 0000000..1a0b76e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/counters.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/counters.tab
new file mode 100644
index 0000000..166c057
--- /dev/null
+++ b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/counters.tab
@@ -0,0 +1,2 @@
+1
+0
\ No newline at end of file
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream
new file mode 100644
index 0000000..86a8a4a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len
new file mode 100644
index 0000000..ec93ed1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at
new file mode 100644
index 0000000..5875372
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i
new file mode 100644
index 0000000..959e58d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab
new file mode 100644
index 0000000..8aad32b
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream
new file mode 100644
index 0000000..08e7df1
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len
new file mode 100644
index 0000000..b7da01d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at
new file mode 100644
index 0000000..9a9bcfa
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len
new file mode 100644
index 0000000..1b1cb4d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab
new file mode 100644
index 0000000..cb36219
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
new file mode 100644
index 0000000..4a8c46f
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len
new file mode 100644
index 0000000..de13f9b
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.len
new file mode 100644
index 0000000..cf0fb1d
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
new file mode 100644
index 0000000..3d6561a
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i
new file mode 100644
index 0000000..a24c6da
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin
new file mode 100644
index 0000000..fe108fc
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin
new file mode 100644
index 0000000..097a729
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin differ
diff --git a/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/local-state/build-history.bin b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/local-state/build-history.bin
new file mode 100644
index 0000000..0fb0f42
Binary files /dev/null and b/app/modules/bbp-notify/android/build/kotlin/compileReleaseKotlin/local-state/build-history.bin differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/META-INF/bbp-notify_release.kotlin_module b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/META-INF/bbp-notify_release.kotlin_module
new file mode 100644
index 0000000..c998a4c
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/META-INF/bbp-notify_release.kotlin_module differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$Companion.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$Companion.class
new file mode 100644
index 0000000..7b0d9a3
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$Companion.class differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$1.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$1.class
new file mode 100644
index 0000000..0cd5608
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$1.class differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$2.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$2.class
new file mode 100644
index 0000000..f864f89
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$2.class differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$3.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$3.class
new file mode 100644
index 0000000..c228a17
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$3.class differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$4.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$4.class
new file mode 100644
index 0000000..63c94e3
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunction$4.class differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunctionWithoutArgs$1.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunctionWithoutArgs$1.class
new file mode 100644
index 0000000..d0c81bb
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule$definition$lambda$3$$inlined$AsyncFunctionWithoutArgs$1.class differ
diff --git a/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule.class b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule.class
new file mode 100644
index 0000000..03f4da8
Binary files /dev/null and b/app/modules/bbp-notify/android/build/tmp/kotlin-classes/release/expo/modules/bbpnotify/BbpNotifyModule.class differ
diff --git a/app/modules/bbp-notify/android/src/main/java/expo/modules/bbpnotify/BbpNotifyModule.kt b/app/modules/bbp-notify/android/src/main/java/expo/modules/bbpnotify/BbpNotifyModule.kt
new file mode 100644
index 0000000..8d4173b
--- /dev/null
+++ b/app/modules/bbp-notify/android/src/main/java/expo/modules/bbpnotify/BbpNotifyModule.kt
@@ -0,0 +1,89 @@
+package expo.modules.bbpnotify
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.PendingIntent
+import android.content.Context
+import android.os.Build
+import androidx.core.app.NotificationCompat
+import androidx.core.app.NotificationManagerCompat
+import expo.modules.kotlin.modules.Module
+import expo.modules.kotlin.modules.ModuleDefinition
+
+/**
+ * A tiny, self-contained module that posts an ongoing notification whose "time"
+ * is a native Android chronometer counting DOWN to the session's end. The system
+ * ticks it every second with no app CPU/battery — works while the app is closed.
+ *
+ * Uses only platform APIs (NotificationCompat) — no third-party dependencies.
+ */
+class BbpNotifyModule : Module() {
+ override fun definition() = ModuleDefinition {
+ Name("BbpNotify")
+
+ AsyncFunction("showCountdown") { title: String, body: String, endTimeMillis: Double ->
+ val ctx = appContext.reactContext ?: return@AsyncFunction
+ ensureChannel(ctx)
+
+ val builder = NotificationCompat.Builder(ctx, CHANNEL_ID)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setSmallIcon(ctx.applicationInfo.icon)
+ .setOngoing(true)
+ .setOnlyAlertOnce(true)
+ .setShowWhen(true)
+ .setWhen(endTimeMillis.toLong())
+ .setUsesChronometer(true)
+ .setPriority(NotificationCompat.PRIORITY_LOW)
+ .setCategory(NotificationCompat.CATEGORY_STATUS)
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ builder.setChronometerCountDown(true)
+ }
+
+ ctx.packageManager.getLaunchIntentForPackage(ctx.packageName)?.let { launch ->
+ builder.setContentIntent(
+ PendingIntent.getActivity(
+ ctx,
+ 0,
+ launch,
+ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,
+ ),
+ )
+ }
+
+ try {
+ NotificationManagerCompat.from(ctx).notify(NOTIF_ID, builder.build())
+ } catch (_: SecurityException) {
+ // POST_NOTIFICATIONS not granted yet; caller requests it separately.
+ }
+ }
+
+ AsyncFunction("clear") {
+ val ctx = appContext.reactContext
+ if (ctx != null) {
+ NotificationManagerCompat.from(ctx).cancel(NOTIF_ID)
+ }
+ }
+ }
+
+ private fun ensureChannel(ctx: Context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ val mgr = ctx.getSystemService(NotificationManager::class.java)
+ if (mgr.getNotificationChannel(CHANNEL_ID) == null) {
+ val channel = NotificationChannel(
+ CHANNEL_ID,
+ "Active parking",
+ NotificationManager.IMPORTANCE_LOW,
+ )
+ channel.setShowBadge(false)
+ mgr.createNotificationChannel(channel)
+ }
+ }
+ }
+
+ companion object {
+ private const val CHANNEL_ID = "session-status"
+ private const val NOTIF_ID = 42421
+ }
+}
diff --git a/app/modules/bbp-notify/expo-module.config.json b/app/modules/bbp-notify/expo-module.config.json
new file mode 100644
index 0000000..6db51db
--- /dev/null
+++ b/app/modules/bbp-notify/expo-module.config.json
@@ -0,0 +1,6 @@
+{
+ "platforms": ["android"],
+ "android": {
+ "modules": ["expo.modules.bbpnotify.BbpNotifyModule"]
+ }
+}
diff --git a/app/modules/bbp-notify/index.ts b/app/modules/bbp-notify/index.ts
new file mode 100644
index 0000000..319e5ea
--- /dev/null
+++ b/app/modules/bbp-notify/index.ts
@@ -0,0 +1,31 @@
+import { Platform } from 'react-native';
+import { requireOptionalNativeModule } from 'expo-modules-core';
+
+interface BbpNotifyNative {
+ /** Post/replace an ongoing notification with a native chronometer counting down to endTimeMillis. */
+ showCountdown(title: string, body: string, endTimeMillis: number): Promise;
+ /** Remove the countdown notification. */
+ clear(): Promise;
+}
+
+// Android-only, and only present in a build that includes the native module
+// (returns null in Expo Go / other platforms — callers degrade gracefully).
+const native =
+ Platform.OS === 'android'
+ ? (requireOptionalNativeModule('BbpNotify') as BbpNotifyNative | null)
+ : null;
+
+/** True when the native ticking-countdown module is available. */
+export const hasNativeCountdown = native != null;
+
+export async function showCountdown(
+ title: string,
+ body: string,
+ endTimeMillis: number,
+): Promise {
+ await native?.showCountdown(title, body, endTimeMillis);
+}
+
+export async function clearCountdown(): Promise {
+ await native?.clear();
+}
diff --git a/app/modules/bbp-notify/package.json b/app/modules/bbp-notify/package.json
new file mode 100644
index 0000000..0c3869e
--- /dev/null
+++ b/app/modules/bbp-notify/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "bbp-notify",
+ "version": "0.1.0",
+ "description": "Native ongoing parking countdown notification (Android chronometer) — zero third-party deps.",
+ "main": "index.ts",
+ "private": true
+}
diff --git a/app/src/notifications/sessionStatus.ts b/app/src/notifications/sessionStatus.ts
index 61458c7..340b96c 100644
--- a/app/src/notifications/sessionStatus.ts
+++ b/app/src/notifications/sessionStatus.ts
@@ -3,26 +3,28 @@ import { AppState, Platform } from 'react-native';
import * as Notifications from 'expo-notifications';
import { ps } from '@/api/client';
import { getCountdownEnabled } from '@/features/notifications/reminderPrefs';
+import { ensureNotificationPermission } from '@/notifications/localReminders';
import { logLine } from '@/features/diagnostics/fileLogger';
+import { hasNativeCountdown, showCountdown, clearCountdown } from '../../modules/bbp-notify';
/**
- * An ongoing "time left" status notification shown while a parking session is
- * active, so you can glance at remaining time without opening the app.
+ * Ongoing "time left" status notification while a parking session is active.
*
- * It's a single notification (the soonest-expiring active session). expo-
- * notifications can't render a live per-second ticking countdown in the
- * background, so we show the exact expiry time (always accurate) plus the
- * remaining time, and re-post it whenever the app comes to the foreground.
+ * Preferred path: a tiny native module (modules/bbp-notify) posts a notification
+ * whose time is an Android **chronometer counting down** to the session end — the
+ * system ticks it every second with no app running (glance without opening the app).
+ * If that native module isn't present, we fall back to an expo-notifications
+ * ongoing notification showing the (static) expiry time, refreshed on foreground.
*/
const CHANNEL = 'session-status';
const NOTIF_ID = 'session-status';
-async function ensureChannel(): Promise {
+async function ensureExpoChannel(): Promise {
if (Platform.OS !== 'android') return;
await Notifications.setNotificationChannelAsync(CHANNEL, {
name: 'Active parking',
- importance: Notifications.AndroidImportance.LOW, // quiet: no sound, no heads-up
+ importance: Notifications.AndroidImportance.LOW,
showBadge: false,
});
}
@@ -52,19 +54,27 @@ function fmtLeft(min: number): string {
/** Post (or replace) the ongoing status notification for a session end time. */
export async function showSessionStatus(args: { zoneName: string; endTime: Date }): Promise {
if (!(await getCountdownEnabled())) return;
- await ensureChannel();
- const remainMin = Math.round((args.endTime.getTime() - Date.now()) / 60000);
+ await ensureNotificationPermission();
const ends = args.endTime.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });
+
+ if (hasNativeCountdown) {
+ // Native chronometer: a live ticking countdown, updated by the OS.
+ await showCountdown(`Parking · ${args.zoneName}`, `Expires ${ends}`, args.endTime.getTime());
+ return;
+ }
+
+ // Fallback: static expiry-time notification, refreshed on foreground.
+ await ensureExpoChannel();
+ const remainMin = Math.round((args.endTime.getTime() - Date.now()) / 60000);
await Notifications.scheduleNotificationAsync({
identifier: NOTIF_ID,
content: {
title: remainMin > 0 ? `Parking: ${fmtLeft(remainMin)} left` : 'Parking expired',
body: `${args.zoneName} · expires ${ends}`,
- sticky: true, // ongoing — stays put, can't be swiped away
+ sticky: true,
autoDismiss: false,
data: { kind: 'session-status' },
},
- // Fire ~immediately; the DATE trigger lets us pin the Android channel.
trigger:
Platform.OS === 'android'
? {
@@ -77,6 +87,7 @@ export async function showSessionStatus(args: { zoneName: string; endTime: Date
}
export async function clearSessionStatus(): Promise {
+ await clearCountdown().catch(() => {});
await Notifications.dismissNotificationAsync(NOTIF_ID).catch(() => {});
await Notifications.cancelScheduledNotificationAsync(NOTIF_ID).catch(() => {});
}