New icon combines the site's sigil mark (same SVG as common.js's
sigil(), same brand colors) with the "KWABA" wordmark in Cinzel Black,
composed to survive worst-case circular/squircle masking. Banner gets
the same density-bucket treatment.
Moved both from a single flat drawable/ to proper mipmap-mdpi through
mipmap-xxxhdpi buckets - a launcher icon/banner without density
buckets can get upscaled and cropped oddly in some launcher UI
surfaces (confirmed via the standard installed-apps list, which
rendered correctly once bucketed; a scan of every other icon-showing
UI surface on this specific device found no other issues, aside from
one Amazon Appstore-owned "My Apps" screen that renders its own
independently cached thumbnail outside of anything android:icon or
android:banner control).
The AndroidManifest.xml references to @mipmap/ic_launcher_art and
@mipmap/banner_tv_art were already committed in 29065f8 without these
backing files - this commit completes that (the repo was in a state
with a dangling resource reference between those two pushes).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LHgWjmEJXsJEi1EVAoTp4K
- Menu key: WebView refuses to forward Android "system" keycodes
(KEYCODE_MENU among them) to page JS, confirmed via diagnostic
logging (downConsumed=false even though the key reaches
dispatchKeyEvent). Relay it as KEYCODE_X instead - room.js on the
website side treats 'x' as an alias for the ContextMenu trigger.
- DPAD center/up/down/media keys are now only remapped inside a room
(shouldIntercept() gates on isRoomList()) - the room-list page uses
plain ArrowUp/ArrowDown/Enter and never moved focus when those keys
arrived pre-remapped as Space/P/N.
- Removed a leftover cleartextTrafficPermitted="true" left over from
local LAN debugging against a docker instance.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LHgWjmEJXsJEi1EVAoTp4K
Gradle wrapper pinned to 8.7, AGP 8.5.2, compileSdk 34/minSdk 21/
targetSdk 34 - the tested combination from the original app.
MainActivity is a placeholder that just loads BuildConfig.WEBSITE_URL
(the new /tv room-list route); the real key-mapping logic is a
separate follow-up commit.
Note for future builds on this machine: Android Studio's bundled JBR
is JDK 25, which Gradle 8.7 cannot run on at all (crashes at startup
with a bare version-string error). Built and verified with a
separately-installed Temurin JDK 21 instead
(C:\Users\GGB\jdks\jdk-21.0.12.1+1) - set JAVA_HOME to that for any
Gradle command in this repo, not the Android Studio JBR.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LHgWjmEJXsJEi1EVAoTp4K