Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 15 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,20 @@ strip = true
[features]
default = []
gui = ["dep:slint", "dep:tray-icon", "slint/std", "slint/backend-winit", "slint/renderer-software", "slint/compat-1-2"]
android-gui = ["dep:slint", "slint/std", "slint/backend-android-activity-06", "slint/renderer-software", "slint/compat-1-2"]
android-gui = ["dep:jni", "dep:slint", "slint/std", "slint/backend-android-activity-06", "slint/renderer-software", "slint/compat-1-2"]

[package.metadata.android]
package = "pro.vibemod.vimit"
build_targets = ["aarch64-linux-android"]

[[package.metadata.android.uses_permission]]
name = "android.permission.INTERNET"

[[package.metadata.android.uses_permission]]
name = "android.permission.VIBRATE"

[[package.metadata.android.uses_permission]]
name = "android.permission.POST_NOTIFICATIONS"

[dependencies]
chrono = "0.4"
Expand All @@ -43,6 +56,7 @@ reqwest = { version = "0.12", default-features = false, features = ["blocking",
redb = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
jni = { version = "0.22.4", optional = true }
slint = { version = "1.16.1", optional = true, default-features = false }
tray-icon = { version = "0.24.0", optional = true }
toml = "0.8"
Expand Down
17 changes: 17 additions & 0 deletions docs/android.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,20 @@ to the user and compliant with Android background execution limits.
3. Validate a demo APK on a device or emulator.
4. Add notification/widget mode.
5. Only then test optional native overlay permission flow.

## Agent burn alerts

The Android build declares `INTERNET`, `VIBRATE`, and `POST_NOTIFICATIONS`.
`src/lib.rs` exposes an Android-gated notification/vibration bridge for
runaway token burn events:

- alert text is fixed and privacy-safe;
- prompt text, paths, session IDs, tool arguments, and API keys are never
included in notifications;
- repeated runaway events are debounced by `AndroidAlertGate`;
- Android 8+ receives a `vimit-agent-alerts` notification channel;
- Android 13+ still requires the user to grant notification permission at
runtime before notifications are visible.

Runtime permission UX for Android 13+ should be implemented as a separate
Android task before relying on notifications as the only alert channel.
Loading
Loading