Skip to content

Full build-out: working Shizuku exec, share categories, hide-mode toggle - #2

Merged
thejaustin merged 1 commit into
mainfrom
feature/full-build-out
Jul 16, 2026
Merged

Full build-out: working Shizuku exec, share categories, hide-mode toggle#2
thejaustin merged 1 commit into
mainfrom
feature/full-build-out

Conversation

@thejaustin

Copy link
Copy Markdown
Owner

What

Builds ShaRemove out from scaffold to feature-complete.

Fixes

  • Shizuku execution was broken: rish can't be exec'd from an app sandbox (SELinux). Now uses Shizuku.newProcess via reflection (kept by existing ProGuard rule); all commands suspend + IO-safe.
  • Disabled apps vanished permanently from the list (queryIntentActivities(intent, 0) drops them). Now MATCH_ALL | MATCH_DISABLED_COMPONENTS + ghost entries synthesized from stored prefs.
  • Capabilities refresh on Shizuku permission grant / binder received / binder dead / onResume (banner previously never cleared).
  • which su no longer runs on the main thread.
  • Per-package dedupe of resolve list (duplicate LazyColumn keys crashed on apps exposing multiple matching activities).

Features

  • Share sheet categories: Share Text / Images / Files (ACTION_SEND) + manifest <queries>.
  • Hide mode toggle in Settings (Suspend vs Component), persisted in DataStore; component mode now available via Shizuku, not just root.
  • Unhide replays the inverse of how an app was hidden (component recorded at hide time).
  • Search/filter, empty states, collectAsStateWithLifecycle, buffered snackbar channel.
  • README + AI_DEVLOG.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LtAsU6K77NmPmjF5io5T3P

…ode toggle

Fixes:
- Replace rish-based Shizuku execution (unusable from app sandbox) with
  Shizuku.newProcess via reflection; commands are now suspend + IO-safe
- Keep pm-disabled apps in the list (MATCH_DISABLED_COMPONENTS + ghost
  entries from stored prefs) so they can always be restored
- Refresh capabilities on Shizuku permission grant, binder events, onResume
- Move `which su` root check off the main thread
- Dedupe resolve list per package (LazyColumn key collision crash)

Features:
- Share sheet categories: Share Text / Images / Files (+ manifest queries)
- Hide mode is a persisted user toggle (Suspend vs Component); component
  mode now works via Shizuku too, not just root
- Unhide replays the inverse of how the app was hidden (stored components)
- Search/filter, empty state, lifecycle-aware collection, buffered snackbars
- README + AI_DEVLOG

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LtAsU6K77NmPmjF5io5T3P
@thejaustin
thejaustin merged commit 71da247 into main Jul 16, 2026
2 checks passed
@thejaustin
thejaustin deleted the feature/full-build-out branch July 16, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant