Skip to content

Latest commit

 

History

History
75 lines (73 loc) · 7.74 KB

File metadata and controls

75 lines (73 loc) · 7.74 KB

TODO

High priority

  1. Validate overlay watcher reliability on Android 12-15 (multi-stream volume detection, auto-hide behavior, MIUI/Poco quirks). See docs/VALIDATION.md.
  2. Validate accessibility-service volume key path on Android 12-15 (ensure overlay shows without consuming volume changes).
  3. Re-validate renamed package fuck.individualappaudiovolumecontrol.droidvendorssuck installs cleanly as a priv-app via the Magisk/KernelSU module on Android 12-15 with the trimmed MODIFY_AUDIO_ROUTING-only privapp allowlist.
  4. Validate the SetupCheckActivity ANR fix on-device, especially open/close transitions to Settings while audio is playing.
  5. Validate required privileged permissions on Android 12-15 devices.
  6. Validate hidden API policy keys and behavior on Android 12-15.
  7. Verify behavior on Android 12-15 and document compatibility.
  8. Validate per-app output device routing on Android 12-15 (Bluetooth/wired/USB/HDMI).
  9. Audio focus rules per app (pause/duck/mute) validation on Android 12-15.
  10. Validate per-app mute behavior (mute vs mute+pause) on Android 12-15.
  11. Optional capture/record fallback when pausing is impossible (investigate legality + storage impact).
  12. Audio routing between apps (virtual output sources and sinks).
  13. Network audio routing (send/receive per-app audio streams over LAN).
  14. Virtual microphone + effects (voice changer pipeline).
  15. Audio sharing to other devices (LAN streaming + Linux client).
  16. 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.
  17. Validate whether the new post-boot pm / cmd package grant probe ever succeeds for INTERACT_ACROSS_USERS(_FULL) on target ROMs, and record results in docs/VALIDATION.md.

Done (recent)

  1. 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 reduce QueuedWork.waitToFinish() ANR risk.
  2. Added a per-active-app notification presentation mode that keeps one foreground controller notification alive and posts one secondary notification per active app.
  3. Fixed slider tick/percentage guide alignment so the visible 10% guides use the same horizontal insets as the actual SeekBar track in the main UI and overlay.
  4. Added playback-controller notification persistence diagnostics plus a forced foreground-notification refresh path, so Diagnostics can show service state, notification enablement, and channel importance.
  5. Investigated a real custom notification volume slider per app; RemoteViews drag constraints make it impractical, so the notification now uses per-app visual level bars plus discrete tap controls and the limit is documented.
  6. Made notification presentation configurable between multi-app pages and a single-app pager, with Next / Prev single-notification paging kept as the fallback mode.
  7. Limited root fallback to the no-INTERACT_ACROSS_USERS case and added a manual cross-profile scan button in the main UI.
  8. Reduced root fallback churn by caching su checks longer and reusing root dumpsys results across short UI/overlay refresh windows.
  9. Made manual Show overlay now display a test preview card when no app is playing audio, without affecting normal volume-button overlay behavior.
  10. Added search fields to Setup Check and Diagnostics to filter long report/checklist rows in place.
  11. Added an overlay package overview dialog on app-name tap, with a confirmation-backed ignore action scoped to the tapped profile when available.
  12. Added com.android.location.fused to the overlay ignore defaults.
  13. Validated overlay watcher reliability on POCO F1 (crDroid, Android 15 / API 35). Diagnostics bundle recorded in docs/VALIDATION.md.
  14. Renamed the source tree under app/src/main, app/src/modern, and app/src/legacy to match the package namespace fuck.individualappaudiovolumecontrol.droidvendorssuck.
  15. Pinned selected apps to the top of searchable multi-select app dialogs (overlay ignore/block lists and rules app picker).
  16. Renamed the Android app package/namespace to fuck.individualappaudiovolumecontrol.droidvendorssuck while keeping folder structure and Magisk mount paths unchanged.
  17. Trimmed the module privapp allowlist back to android.permission.MODIFY_AUDIO_ROUTING only to reduce boot-loop risk on enforcing Android 15 ROMs and KernelSU installs.
  18. Switched Magisk packaging to a signed release APK and added a privapp allowlist validator to catch package/permission drift before flashing.
  19. Removed unnecessary FOREGROUND_SERVICE privapp grant and stripped AndroidX startup/profileinstaller components from the app manifest merge.
  20. Synced the bundled in-app module asset from the main packaged ZIP to avoid divergence between install paths.
  21. Tightened the privapp validator to reject stale XML entries as well as missing reviewed grants.
  22. Switched privapp validation to derive expected allowlisted permissions from the source manifest’s protected-permission markers.
  23. Made privapp validation scan all manifests under app/src and reject allowlisted permissions not requested by the APK.
  24. Removed Play Services geofencing dependency and stubbed geofence handling for the modern build.
  25. Removed the geofencing toggle from the Rules UI since Play Services geofencing is gone.
  26. Removed geofencing preference storage and diagnostics output.
  27. Removed remaining geofencing code paths and GeofenceRuleManager class.
  28. Hardcoded Face Unlock Service package co.aospa.sense into the overlay ignore defaults.
  29. Added next/prev paging for notification controls when more apps are active.
  30. Reworked overlay header controls into a single dropdown menu.
  31. Added an overlay pause toggle (menu + watcher notification) to suppress overlay until resumed.
  32. Moved overlay row controls to the left of sliders to reduce height.
  33. Notification now uses OLED styling, adds 100% button, and hides ignored apps.
  34. Overlay background set to transparent with clear white borders for root and rows.
  35. Overlay app names now open App Info on tap (long-press still copies package).
  36. Added overlay ignore list (defaults: System UI + Face Unlock label match) and suppress overlay when only ignored apps are active.
  37. Added overlay quick actions to block/unblock the focused app (usage access required).
  38. Added Usage Access gate/check + diagnostics line for focused-app overlay suppression reliability.
  39. Renamed app display label to IndividualAppVolumeControl (including accessibility label).
  40. Added focused-app blocklist search/filter in the overlay settings dialog.
  41. Added usage-stats foreground fallback for overlay suppression when accessibility focus is stale.
  42. Added overlay gating options (only when audio plays, focused-app blocklist, snooze timer).
  43. Compact overlay watcher notification text.
  44. Updated accessibility service label to include the app name.
  45. Added safe active playback config retrieval with diagnostics logging to avoid crashes when permissions are missing.
  46. Added overlay/accessibility status to Setup Check + Diagnostics, with quick action buttons to open settings.
  47. Added overlay addView failure logging and accessibility-triggered overlay start error toast.
  48. Ensured overlay watcher restarts on resume when enabled; added notification action toast when controls are disabled.
  49. Rules editor enhancements: geofencing for location rules.
  50. Per-app audio attributes overrides UI (usage/content type filters).
  51. Avoided Android 14+ boot-time FGS crash by skipping boot-start for foreground services.
  52. Added Android 14+ boot notification with user-initiated start action for services.
  53. Fixed Manage Apps layout so action buttons stay within the visible area.