Commit Graph
7 Commits
Author SHA1 Message Date
bdeshiandagent eebba2f9f1 Apply one fixed baseline to every scoped app; drop all settings
Per-app settings never worked: a hooked app reads Veil's config through
XSharedPreferences, which for a legacy module points at Veil's private
data dir (/data/data/space.bdeshi.veil/shared_prefs). Hooked apps can't
read it, so every app silently fell back to "hide everything" and every
toggle, hidden-package edit and picker entry was ignored. Confirmed on
device with Veil Probe: unticking a feature changed nothing.

The framework's fix for this (xposedsharedprefs, redirecting the module's
prefs dir to one hooked apps can read) needs the framework to hook Veil's
own process. On Vector v2.2 here it never does, even with Veil in its own
scope and after a reboot, so there's no reliable channel from Veil's app
to a hooked app.

So stop pretending there is one:
- VeilHook applies all six features with the fixed Features.HIDDEN_PACKAGES
  (KernelSU, Magisk, Veil) to every app in scope, with no prefs read.
- Remove discovery: the Application#attach hook, the exported provider
  (one less way for an app to spot Veil) and the launcher <queries>.
- The settings screen becomes a read-only summary plus the help panel;
  help tips cover leaving an app out of scope, changing the list by
  rebuilding, and turning verbose logging off afterwards, since it
  names Veil in each hooked app's own logcat.

Verified on device: all 24 testable hooked paths in Veil Probe stay
hidden, Veil's provider no longer resolves, a scoped app still loads Veil.

Co-Authored-By: agent <agent@bdeshi.space>
2026-11-03 19:51:52 +06:00
bdeshiandagent af97a85c54 Add an app picker for targets that can't report themselves
Auto-discovery only works for apps that can see Veil: on Android 11+ an
app without QUERY_ALL_PACKAGES (or a matching <queries>) can't resolve
Veil's provider, so its first-launch check-in silently fails. A real app hit this: scoped and hooked, but never listed. That made 615f000's premise,
that auto-detection covers every target, wrong.

- "Add app" opens a searchable list of launchable apps; picking one saves
  its default feature set, which is what gives an app a card. A
  launcher-intent <queries> is enough for this and narrower than
  QUERY_ALL_PACKAGES; it widens what Veil sees, not who sees Veil.
- App cards show the app's label above the package name.
- reportScoped checks resolveContentProvider first and skips the call
  when Veil isn't visible. That also drops the framework's
  "Failed to find provider info for space.bdeshi.veil.provider" line,
  which named Veil in the target's own, app-readable logcat.
- New help tip explains why a scoped app may not show up.

Verified on device (Android 16, Vector): a scoped app no longer logs the
provider failure, and adding it through the picker saves its feature set.

Co-Authored-By: agent <agent@bdeshi.space>
2026-11-03 18:54:13 +06:00
agent 83cbb59ff8 Hide from launcher and fix status bar overlap
The settings screen doesn't need its own launcher icon — LSPosed Manager
already provides the entry point for opening a module's settings, via
PackageManager.getLaunchIntentForPackage(), which resolves CATEGORY_INFO
before falling back to CATEGORY_LAUNCHER. Switching to INFO keeps it
launchable that way while dropping it from the home-screen app drawer.

Also: targeting SDK 35 enforces edge-to-edge by default, and the screen
never handled system-bar insets, so content drew straight under the status
bar. fitsSystemWindows on the content root fixes the overlap.

Co-Authored-By: agent <agent@bdeshi.space>
2026-08-06 23:34:33 +06:00
agent e3c69eb161 Modernize settings UI with Material Components, DayNight theme, and app icon
The screen was built entirely from raw android.widget.* views with no
theme applied at all, so it never had a chance to follow system dark/light
mode and looked dated regardless. Adds AppCompat + Material Components,
switches SettingsActivity to AppCompatActivity with a Theme.Material3.
DayNight theme, and rebuilds the screen with Material widgets (cards,
chips for the hidden-packages list, proper text fields).

Also adds a launcher icon (previously none): a vector adaptive icon, a
moon-like disc partially eclipsed by a diagonal veil in the background
color — no image tool involved, just XML.

Also renames the per-app "Remove" button to "Apply defaults (hide
everything)" — "Remove" read as removing the app from the list, not
resetting it to defaults, which is all it actually does.

Co-Authored-By: agent <agent@bdeshi.space>
2026-08-06 21:46:16 +06:00
agent c21dd6fbcd Add auto-discovery of LSPosed-scoped apps via ContentProvider
Manually re-typing a package name Veil already got injected into was
redundant work. The hook now reports "I got loaded into package X" to a
small ContentProvider in Veil's own app the moment a scoped app's process
starts (found via hooking Application#attach for a reliable early Context),
which records it to SharedPreferences. Veil's settings screen lists the
union of explicitly configured apps and auto-detected ones, tagging the
latter so it's clear they haven't been customized yet.

No persistent service: the OS starts Veil's process on demand for each
call() and can kill it again right after, same footprint as everything
else in this module.

Co-Authored-By: agent <agent@bdeshi.space>
2026-08-06 21:46:16 +06:00
agent 4c2205bfe9 Add per-app configurable settings screen
Replaces "hide everything for every scoped app" with per-package, per-feature
toggles, backed by SharedPreferences the hook reads via XSharedPreferences.
A package with no explicit entry still gets every feature hidden, keeping
prior behavior as the default.

Adds a launcher activity so the settings screen is directly reachable.

Co-Authored-By: agent <agent@bdeshi.space>
2026-08-06 20:55:08 +06:00
agent 729ff7a46a Working MVP: hide accessibility, ADB, and dev-debug state from LSPosed-scoped apps
LSPosed module that hooks AccessibilityManager and Settings.Secure/Global
(getString/getStringForUser/getInt/getIntForUser) inside whatever app
process LSPosed injects it into, so that process sees no accessibility
services and no adb/wifi-debugging flags enabled. Target apps are chosen
via the module's scope list in LSPosed Manager, not in-app config.

Confirmed working against a real target app on-device; it previously
refused to launch with an accessibility service active and now starts
normally with the module enabled and scoped to it. Required disabling
KernelSU's "umount modules" option for that app, since it otherwise blocks
Zygisk (and therefore LSPosed) from injecting into the process at all.

Co-Authored-By: agent <agent@bdeshi.space>
2026-08-06 15:59:31 +06:00