Repository navigation
WaEnhancer Community 0.0.26
WaEnhancer Community 0.0.26
SHA-256: afe1e20a9a90a369b99f6fedccec7f82e0484d5a3edf206d4da33bb832cb0ccc
Changes since v0.0.25.
What's changed
- #98 fix: restore WhatsApp emoji font rendering and Lite Mode loading
Full changelog
This section compiles the descriptions of the pull requests included in this release.
#98 — fix: restore WhatsApp emoji font rendering and Lite Mode loading
Merged by contribution from @igorcv88.
Context
PR #97 was already merged at 92242056f46f3e8ca33bb9b15904c239f98d6e36. This follow-up PR is based on that merge, on branch fix/emoji-span-rendering-lite-20261022.
Changes
- WhatsApp rendering path: physical One UI 9 logs showed
fontLoaded=trueon three starts and 16 draw hooks installed, but no draw interception. A guardedSpannableStringBuilder/SpannableStringsetSpanhook now recognizes emoji-onlyReplacementSpanranges and substitutesTypefaceSpanfor the user-imported TTF once available. Regular text and unrelated spans remain unchanged. - Review P2 fixed (async font load): spans created before the TTF is ready no longer remain permanently overlooked. The original WhatsApp span renders during the load; the hook tracks up to 256 pending text/span pairs via weak references. On successful load, a main-thread pass revalidates live emoji ranges, inserts a typeface span and removes the original bitmap span. This handles the insertion/load race; if loading fails, the original WhatsApp spans remain. Diagnostics distinguish
First emoji replacement span deferred,First emoji replacement span bypassedanddeferredEmojiSpansApplied=N. The 256-entry cap and WhatsApp text copies remain physical-test limitations. - Earlier P2 on #97 (Lite Mode): when
WppCore.initBridge()is intentionally skipped, use a temporary independentProviderClientonly for asynchronous read-onlyopenEmojiFont(), without initializing the global bridge. - Update architecture and handoff documentation. Never bundle the user's Apple artwork or touch system fonts/OverlayFS, GMS or system_server.
Validation
- 8 Java TTF/classifier JUnit tests passed, including validation with user's 42 MB TTF sample in the local suite.
- 4 repository runtime/IPC host checks passed;
git diff --checkclean. - Full Android APK compilation and on-device acceptance are not yet verified; no workflow dispatch or merge.
Device gate
Build the full app-only release APK pinned to the current PR head (stable channel for the intended user test). Import the TTF, enable Disable Default Emojis, restart WhatsApp, then check composer text, existing bubbles, new messages, captions and reactions against 😍 ❤️ 🇧🇷 🧑🏽⚕️. Inspect [WAEX][EmojiFont] logs: fontLoaded=true, installedSpanHooks=2, replacementSpanCandidate=... and First emoji replacement span bypassed. When startup is slower, expect First emoji replacement span deferred followed by deferredEmojiSpansApplied=N. Check ordinary words/numbers are unaffected. A successful span marker alone does not prove full compatibility.