Skip to content

2.7.23 - #443

Merged
ianrumac merged 10 commits into
mainfrom
develop
Jul 27, 2026
Merged

2.7.23#443
ianrumac merged 10 commits into
mainfrom
develop

Conversation

@ianrumac

Copy link
Copy Markdown
Collaborator

2.7.23

Fixes

  • Fix paywall inputs silently dropping all non-Latin keyboard text (Cyrillic, Korean, Thai, emoji, etc.). The webview no longer replaces Chromium's InputConnection with a dummy one unless isGameControllerEnabled is set, restoring the full IME pipeline (composition, autocorrect, swipe typing, autofill) for everyone else.
  • Ensure that errors thrown when user lacks billing do not propagate to the app

drvarmin and others added 10 commits July 23, 2026 17:10
SWWebView.onCreateInputConnection unconditionally replaced Chromium's
InputConnection with a dummy BaseInputConnection(this, false). A dummy
connection can't deliver committed/composing text to web content, so
committed text falls back to synthetic key events via KeyCharacterMap,
which only maps ASCII — silently dropping Cyrillic, Thai, Korean, emoji
and swipe/gesture typing in any paywall input since 1.0.

Gate the dummy connection on isGameControllerEnabled, mirroring the
sibling dispatchKeyEvent/dispatchGenericMotionEvent overrides, and
delegate to the WebView otherwise (also before Superwall is configured).
Game controllers deliver hardware KeyEvents through dispatchKeyEvent and
never go through the InputConnection, so controller capture keeps
working unchanged.

Fixes SW-5645

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Run against the project-default Robolectric SDK level per review.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…all-inputs-silently-drop-all-non-latin

Fix paywall inputs silently dropping all non-Latin keyboard text
… the app

A fire-and-forget action that throws (e.g. CheckWebEntitlements failing
with BillingError.BillingNotAvailable when Play Billing returns
NETWORK_ERROR) previously escaped the consumer loop into the actor's
scope. The default scope is a plain CoroutineScope(Dispatchers.IO) with
no CoroutineExceptionHandler, so the exception killed the process; it
also terminated the FIFO consumer, silently dropping all subsequent
actions for the session.

Wrap each unit of work in withErrorTracking, matching the behavior of
the SuperwallScope exception handlers. immediate() callers still
receive exceptions via the existing CompletableDeferred path.
- Pass -PmavenCentralAutomaticPublishing=true to the publish tasks so the
  Central Portal deployment is released automatically instead of waiting
  for a manual 'Publish' click.
- Extract the released version's section from CHANGELOG.md and create the
  GitHub release automatically with it as the description, replacing the
  Slack message asking someone to create the release by hand.
- Create the release with a PAT (falling back to GITHUB_TOKEN) so the
  release event still triggers on-release.yml's paywall-next dispatch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MHtJcvAKTQPjshrN6pMidJ
…ht-exceptions

Guard SequentialActor consumer loop so a throwing action cannot crash the app
…ion-6xajox

Automate GitHub release creation and Maven Central publishing
@ianrumac
ianrumac merged commit a6554fe into main Jul 27, 2026
12 of 13 checks passed
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.

4 participants