Brave Origin, Quetta and Universal Patches

September 20, 2026 · View on GitHub

Morphe patch bundle for Brave Browser, Quetta browser plus app-independent Android resource patches.

Quetta Browser support

BuildPackage nameSupport status
Quetta Browser (Play Store edition)net.quetta.browserversion-unpinned; refresh-rate patch statically validated on 2.0.5
Quetta Browser (Direct APK edition)net.quetta.browser.officialversion-unpinned; extension patch tested on 2.0.2 (5307)

Supports both versions of Quetta Browser through two Quetta-local patches:

  • Block Quetta bundled extension installation — bundled extension install/reinstall block.
  • Force highest refresh rate — Quetta-adapted sibling of the Titanium patch. Separate fingerprints: Quetta 2.0.5 keeps WindowAndroid.setPreferredRefreshRate(F)V but obfuscates the nearest-mode worker and drops the Titanium log literal; this patch matches the structural shape (getRefreshRate + getModeId + Window.setAttributes) instead of editing the helium/Titanium implementation. Version-unpinned, experimental, fail-closed on ambiguity. Intended for arm64-v8a APKs; the framework does not enforce ABI.

Patch blocks bundled installation/reinstallation for these exact extensions:

  • nnedfbcpeenmccjbdcnlnhogapndfeoa — Q30 from Quetta Translator
  • gadlcodpkkelmagfhkldjlobfncbkbmd — Q30 from Quetta

Analyzed manifests show these extensions have broad page access and background behavior, and can communicate with remote services (or telemetry in short). Blocking bundled installation/reinstallation reduces bundled background code and remote-service exposure, giving users more privacy and control without claiming what those services collect. All related functions works probably fine without these extensions in the first place, so these are definitely bloated components.

This does not block all Quetta telemetry or every Quetta network connection (for that just use DNS with blocklist instead), and does not remove copies already installed in existing profiles. Remove existing copies through Quetta's extension-management UI SimpleExtManager Beta, since it's hidden from the Inbuilt Extension management UI and install it from here if download interrupted from the Web store, or use a clean profile as appropriate Clean install already removed that, just patch it as usual and enjoy. Static validation is anchored to supplied Quetta 2.0.2-530 Official (Direct APK from website) arm64-v8a APK; this is not broad runtime proof. Future versions may change fingerprints; patch should fail safely rather than modify unrelated methods.

Brave Origin support

BuildPackage nameSupport status
Brave Browsercom.brave.browserTested on 1.92.140
Brave Betacom.brave.browser_betaExperimental; version-unpinned
Brave Nightlycom.brave.browser_nightlyExperimental; version-unpinned

Beta and Nightly share Brave Origin code paths, but require APK validation for each release before promotion from experimental support.

Web app installation limitation

Patched Brave APKs are re-signed. WebAPK installation through Install and create shortcut > Install may remain stuck on Installing, especially when the package name is also changed. This is separate from the Brave Origin bytecode patch: Brave Origin modifies subscription and feature-policy behavior, not the Chromium WebAPK installer.

Use Create shortcut as the supported workaround. It uses Android's pinned-shortcut flow and does not install a WebAPK.

When reporting this problem, include the app version, final package name, whether Create shortcut works, and filtered ADB output:

adb logcat -c
# Reproduce the failed Install action, then run:
adb logcat -d -v threadtime |
    Select-String -Pattern 'webapk|shortcut|packageinstaller|finsky|playcore|install'

Also verify the installed package and patched APK certificate:

adb shell dumpsys package <package-name>
apksigner verify --print-certs <patched.apk>

Do not use Chromium's GServices WebAPK package/signing-check overrides as an end-user fix. Those overrides are intended for development builds and may require privileged device access.

Patches

v1.6.0  •  main  •  7 patches total

📦 Quetta Browser  •  2 patches
💊 Patch📜 Description⚙️ Options
Block Quetta bundled extension installationBlocks bundled extension installation/reinstallation on arm64-v8a APKs (the framework does not enforce ABI restrictions). Does not remove copies already present in existing profiles. Takes effect immediately on clean installs.
Force highest refresh rateQuetta-adapted experimental version-unpinned patch: forces Chromium WindowAndroid to pick the highest-refresh Display mode by writing Float.MAX_VALUE into setPreferredRefreshRate(F) and the structural nearest-mode worker (getRefreshRate + getModeId + Window.setAttributes). Validated statically on Quetta 2.0.5 base APK; may increase battery usage; ambiguous targets fail closed.
📦 Quetta Browser Official  •  2 patches
💊 Patch📜 Description⚙️ Options
Block Quetta bundled extension installationBlocks bundled extension installation/reinstallation on arm64-v8a APKs (the framework does not enforce ABI restrictions). Does not remove copies already present in existing profiles. Takes effect immediately on clean installs.
Force highest refresh rateQuetta-adapted experimental version-unpinned patch: forces Chromium WindowAndroid to pick the highest-refresh Display mode by writing Float.MAX_VALUE into setPreferredRefreshRate(F) and the structural nearest-mode worker (getRefreshRate + getModeId + Window.setAttributes). Validated statically on Quetta 2.0.5 base APK; may increase battery usage; ambiguous targets fail closed.
📦 Brave Browser  •  1 patch
💊 Patch📜 Description⚙️ Options
Brave OriginUnlocks Brave Origin and enables feature toggle controls.
📦 Brave Beta  •  1 patch
💊 Patch📜 Description⚙️ Options
Brave OriginUnlocks Brave Origin and enables feature toggle controls.
📦 Brave Nightly  •  1 patch
💊 Patch📜 Description⚙️ Options
Brave OriginUnlocks Brave Origin and enables feature toggle controls.
📦 Titanium Browser for Android  •  2 patches
💊 Patch📜 Description⚙️ Options
Force highest refresh rateExperimental version-unpinned patch: forces Chromium to pick the highest-refresh display mode by requesting Float.MAX_VALUE through WindowAndroid. Works on any panel (60/90/120/144/165Hz+) without knowing the max at patch time. May increase battery usage; ambiguous targets fail closed.
Keep Titanium Extensions Child Processes AliveExperimental version-unpinned structural/data-flow patch: starts one main-process foreground service with persistent low-priority notification and forces child STRONG binding plus IMPORTANT/STRONG priority updates. Tolerates routine signature, register, and helper-name changes; ambiguous targets fail closed. May increase RAM, battery, and process pressure; mitigates LMK kills only. To hide the notification, use Android Settings > Apps > Titanium > Notifications (the keep-alive service stays active either way).• Notification title
• Notification text
🌐 Universal  •  3 patches
💊 Patch📜 Description⚙️ Options
Change app iconChanges the Android launcher icon using a custom PNG image. Use a square image with transparent adaptive-icon padding.• Custom app icon
Change app nameChanges the app name shown by Android launchers. Set the desired name in the patch options.• App name
Disable analyticsDisables analytics and tracking from multiple SDKs, including AppMetrica, MyTracker, Firebase, Sentry, Google Analytics, Amplitude, Mixpanel, Adjust, AppsFlyer, Facebook, MoEngage, and comScore, through manifest opt-outs and exact runtime entry points when present. Custom or server-side telemetry is not covered.

Keep Titanium Extensions Child Processes Alive

Experimental version-unpinned two-layer mitigation for issue #57: child processes receive Chromium STRONG binding (0x4) and IMPORTANT/STRONG priority (0x3), while one main-process foreground service keeps extension background runtime visible through a persistent low-priority notification. Structural and local data-flow resolution tolerates routine signature, register, helper-name, and process-launch changes, then fails closed when relevant bytecode is genuinely ambiguous. Disabled by default and version-unpinned (no pinned Titanium version). Affects all relevant Titanium child processes, not only extensions. This can raise RAM, battery, and process pressure and only mitigates LMK kills; it does not guarantee survival, bypass force-stop or OEM task killers, detect or reload crashed extensions, or run a watchdog/polling loop/wake lock. A persistent low-importance foreground-service notification may appear. Future incompatible APKs may fail during patching. No reliable extension-only discriminator exists in inspected Titanium code, so child binding applies to all child processes.

Install

  1. Install Morphe Manager on Android.
  2. Add https://github.com/dh6k/morphe-patches as patch source.
  3. Select an app and enable the desired patch. Universal patches are available for any app.
  4. Patch the APK or APKM and install output.

Build

./gradlew :patches:buildAndroid

License

Licensed under GPLv3. See NOTICE for additional GPLv3 Section 7 conditions.

Change app name is adapted from durgesh0505/chiggi_morphe_patches at commit 6b8a9a36cbd36faa4d5b8ce6e811fb428eb365f9.