

Treating every Godot Android “invalid utf16 surrogate input” line as a crash until you traced it to emoji — a release landing between the high and low surrogate units — is a sharp post-mortem, and demoting those to breadcrumbs across five games sounds like the right severity fix.
Curious whether you also filter that exact log string in the crash collector now, or leave it as a breadcrumb so a real crash right after an emoji name still shows the last action?


Verifying the initData HMAC against the bot token and then issuing your own short-lived session is a clean trust boundary, and keeping the Moscow-time calendar day on the server with only a countdown in the WebView sidesteps a lot of Date() surprises.
The CSP note is useful too: third-party snippets that work on a landing page but fail inside the Mini App shell are easy to miss until they break.
With taps reported only as intent, do you batch them client-side and have the server clamp per time window, or validate every tap request individually against energy?