- Validate overlay watcher reliability on Android 12-15 (multi-stream volume detection, auto-hide behavior, MIUI/Poco quirks). See
docs/VALIDATION.md. - Validate accessibility-service volume key path on Android 12-15 (ensure overlay shows without consuming volume changes).
- Re-validate renamed package
fuck.individualappaudiovolumecontrol.droidvendorssuckinstalls cleanly as a priv-app via the Magisk/KernelSU module on Android 12-15 with the trimmedMODIFY_AUDIO_ROUTING-only privapp allowlist. - Validate the
SetupCheckActivityANR fix on-device, especially open/close transitions to Settings while audio is playing. - Validate required privileged permissions on Android 12-15 devices.
- Validate hidden API policy keys and behavior on Android 12-15.
- Verify behavior on Android 12-15 and document compatibility.
- Validate per-app output device routing on Android 12-15 (Bluetooth/wired/USB/HDMI).
- Audio focus rules per app (pause/duck/mute) validation on Android 12-15.
- Validate per-app mute behavior (mute vs mute+pause) on Android 12-15.
- Optional capture/record fallback when pausing is impossible (investigate legality + storage impact).
- Audio routing between apps (virtual output sources and sinks).
- Network audio routing (send/receive per-app audio streams over LAN).
- Virtual microphone + effects (voice changer pipeline).
- Audio sharing to other devices (LAN streaming + Linux client).
- Re-validate cross-profile (work profile) playback detection and controls on Android 12-15 after the foreign-profile UID package-resolution fix, especially on KernelSU Next installs.
- Validate whether the new post-boot
pm/cmd packagegrant probe ever succeeds forINTERACT_ACROSS_USERS(_FULL)on target ROMs, and record results indocs/VALIDATION.md.
- Audited the remaining high-frequency
SharedPreferences.apply()paths and moved active-app timestamps, location updates, overlay state, volume presets, and notification paging onto a deferred background-commit store to reduceQueuedWork.waitToFinish()ANR risk. - Added a per-active-app notification presentation mode that keeps one foreground controller notification alive and posts one secondary notification per active app.
- Fixed slider tick/percentage guide alignment so the visible 10% guides use the same horizontal insets as the actual
SeekBartrack in the main UI and overlay. - Added playback-controller notification persistence diagnostics plus a forced foreground-notification refresh path, so Diagnostics can show service state, notification enablement, and channel importance.
- Investigated a real custom notification volume slider per app;
RemoteViewsdrag constraints make it impractical, so the notification now uses per-app visual level bars plus discrete tap controls and the limit is documented. - Made notification presentation configurable between multi-app pages and a single-app pager, with
Next/Prevsingle-notification paging kept as the fallback mode. - Limited root fallback to the no-
INTERACT_ACROSS_USERScase and added a manual cross-profile scan button in the main UI. - Reduced root fallback churn by caching
suchecks longer and reusing rootdumpsysresults across short UI/overlay refresh windows. - Made manual
Show overlay nowdisplay a test preview card when no app is playing audio, without affecting normal volume-button overlay behavior. - Added search fields to Setup Check and Diagnostics to filter long report/checklist rows in place.
- Added an overlay package overview dialog on app-name tap, with a confirmation-backed ignore action scoped to the tapped profile when available.
- Added
com.android.location.fusedto the overlay ignore defaults. - Validated overlay watcher reliability on POCO F1 (crDroid, Android 15 / API 35). Diagnostics bundle recorded in
docs/VALIDATION.md. - Renamed the source tree under
app/src/main,app/src/modern, andapp/src/legacyto match the package namespacefuck.individualappaudiovolumecontrol.droidvendorssuck. - Pinned selected apps to the top of searchable multi-select app dialogs (overlay ignore/block lists and rules app picker).
- Renamed the Android app package/namespace to
fuck.individualappaudiovolumecontrol.droidvendorssuckwhile keeping folder structure and Magisk mount paths unchanged. - Trimmed the module privapp allowlist back to
android.permission.MODIFY_AUDIO_ROUTINGonly to reduce boot-loop risk on enforcing Android 15 ROMs and KernelSU installs. - Switched Magisk packaging to a signed release APK and added a privapp allowlist validator to catch package/permission drift before flashing.
- Removed unnecessary
FOREGROUND_SERVICEprivapp grant and stripped AndroidX startup/profileinstaller components from the app manifest merge. - Synced the bundled in-app module asset from the main packaged ZIP to avoid divergence between install paths.
- Tightened the privapp validator to reject stale XML entries as well as missing reviewed grants.
- Switched privapp validation to derive expected allowlisted permissions from the source manifest’s protected-permission markers.
- Made privapp validation scan all manifests under
app/srcand reject allowlisted permissions not requested by the APK. - Removed Play Services geofencing dependency and stubbed geofence handling for the modern build.
- Removed the geofencing toggle from the Rules UI since Play Services geofencing is gone.
- Removed geofencing preference storage and diagnostics output.
- Removed remaining geofencing code paths and GeofenceRuleManager class.
- Hardcoded Face Unlock Service package
co.aospa.senseinto the overlay ignore defaults. - Added next/prev paging for notification controls when more apps are active.
- Reworked overlay header controls into a single dropdown menu.
- Added an overlay pause toggle (menu + watcher notification) to suppress overlay until resumed.
- Moved overlay row controls to the left of sliders to reduce height.
- Notification now uses OLED styling, adds 100% button, and hides ignored apps.
- Overlay background set to transparent with clear white borders for root and rows.
- Overlay app names now open App Info on tap (long-press still copies package).
- Added overlay ignore list (defaults: System UI + Face Unlock label match) and suppress overlay when only ignored apps are active.
- Added overlay quick actions to block/unblock the focused app (usage access required).
- Added Usage Access gate/check + diagnostics line for focused-app overlay suppression reliability.
- Renamed app display label to IndividualAppVolumeControl (including accessibility label).
- Added focused-app blocklist search/filter in the overlay settings dialog.
- Added usage-stats foreground fallback for overlay suppression when accessibility focus is stale.
- Added overlay gating options (only when audio plays, focused-app blocklist, snooze timer).
- Compact overlay watcher notification text.
- Updated accessibility service label to include the app name.
- Added safe active playback config retrieval with diagnostics logging to avoid crashes when permissions are missing.
- Added overlay/accessibility status to Setup Check + Diagnostics, with quick action buttons to open settings.
- Added overlay addView failure logging and accessibility-triggered overlay start error toast.
- Ensured overlay watcher restarts on resume when enabled; added notification action toast when controls are disabled.
- Rules editor enhancements: geofencing for location rules.
- Per-app audio attributes overrides UI (usage/content type filters).
- Avoided Android 14+ boot-time FGS crash by skipping boot-start for foreground services.
- Added Android 14+ boot notification with user-initiated start action for services.
- Fixed Manage Apps layout so action buttons stay within the visible area.