Releases: Tgbjr2025/grindrx
Release list
v0.1.23 — social-signup login notice (+ rollup of v0.1.17–v0.1.22)
Social-signup login notice + unified mainline.
New in this release
- Login screen now clearly explains that Google / Apple / Facebook signups must Set a password first (replaces the dead, commented-out "Login with Google" button), with a prominent button to the password-reset flow.
- Working "set a password" flow for social-signup users.
Also included (GitHub releases previously stopped at v0.1.16 — this rolls up v0.1.17 through v0.1.22):
- CAS-4001 explore error, filter-change crash, account-creation toasts
- Shared-photos lightbox 403 fix
- 7 correctness fixes from code audit
- Album-photo reactions/replies; viewers linked with profileId
- Tappable links in messages + long-URL wrapping
- Privacy: stop broadcasting saved photos; delete now sticks
- Shared locations render instead of "Unsupported message type"
- Notification messages channel + Private photos tab in chat picker
APK is signed with the GrindrX key (cert SHA-256 22d6889e...4c01) — installs in place over any previous GrindrX build.
v0.1.16 — notifications, private-photo picker, explore/filter/account fixes
GrindrX v0.1.16
Fixes for the open issues reported here on git.dominusaxis.com/dominus/grindrx.
Fixes
- Notifications no longer split across categories (#6). Message notifications are posted by the background WebSocket service, whose process can be alive after an OS restart without the main Activity ever running. The
grindx_messageschannel was only created by the Activity, so those notifications fell back to a system channel and Android's Notification Assistant bucketed them under "Suggestions", splitting a conversation. The channel is now registered by the background service too, so every notification lands on the correct high-priority channel. - Chat photo picker now offers your private pictures (#5). The picker's photo tab was showing your public profile photos. Added a Private tab sourced from your albums (private, signed media); public profile photos remain under a Profile tab. Private photos are sent by re-uploading them through the chat-media pipeline.
- Explore/map no longer errors with "CAS-4001 is not valid JSON" (#3). The explore endpoint can reply with a bare status code instead of JSON; the app now recognises that and shows an actionable message ("this area couldn't be loaded — try another spot") instead of a raw parse error.
- Changing filters/settings no longer crashes the app (#3). A preferences read that overlapped a write (or a half-written file) could throw with no handler and tear down the home screen until you relaunched. Preference reads now fall back to defaults on any corruption, the home screen has a crash backstop, and the shared filter defaults are deep-copied so slider edits can't corrupt saved settings.
- Account creation / password reset no longer show spurious error toasts (#1). These pre-login screens were routed through the authenticated request path, which failed with "Not logged in" before the request was even sent — producing a double error toast and a wrong bounce to sign-in. They now use an unauthenticated path and report the server's real response once.
Known limitation
Profiles beyond the free viewing radius (part of #3) require a Grindr subscription — the server does not return them for a free account, so they cannot be made to load client-side.
Install
Download GrindrX-v0.1.16.apk below. Signed release build (com.grindrx.app, versionCode 1044); installs as an upgrade over v0.1.15. Signed with the same GrindrX release key as prior versions (cert SHA-256 22d6889ef07459a20919d48afffe7ed7a4e3903039e15542767cedcdff8d4c01).
v0.1.15 - unique package ID (installs alongside Open Grind)
GrindrX v0.1.15
IMPORTANT — uninstall the old version first
This release changes the Android package name (org.opengrind -> com.grindrx.app) so GrindrX is now a distinct app and no longer collides with upstream Open Grind. Because the package name changed, Android treats it as a new app:
- Uninstall your existing GrindrX (and Open Grind if installed).
- Install grindrx-v0.1.15.apk below.
- Log in again.
You can now keep Open Grind installed side-by-side, and clone GrindrX into a work profile / second instance.
Fixes
- Install conflict resolved (#6): "App not installed - package conflicts with an existing package" was caused by sharing upstream org.opengrind application ID. GrindrX now uses com.grindrx.app.
- Carries forward all v0.1.14 fixes (album/lightbox freeze, working update notifier, blocking).
Security note
Only install APKs from this release page. A comment on #6 linked a third-party patcher.apk - it is NOT an official build; do not install it.
v0.1.14 — Album / lightbox fix + update notifier
GrindrX v0.1.14
Fixes
- Album freeze fixed. Opening photo albums in chat no longer freezes the app. Root cause: the WebView CSP was injecting a nonce into
style-src, which silently blocked PhotoSwipe's inline-style positioning so the lightbox rendered as an invisible overlay that swallowed all touches. The image-load path could also hang. Resolved by disabling asset CSP modification forstyle-src, removing the load semaphore, and adding a per-image fetch timeout. - Update notifier now works. The in-app "Update available" banner previously never fired because the Forgejo releases API sends no CORS headers and the WebView fetch was blocked. The check now runs natively through Rust (
fetch_latest_release), so users are notified when a newer release is published. - Blocking fixed. Block/unblock now uses the documented
/v3/me/blocks/{profileId}endpoint.
Improvements
- Authed-image pipeline rewritten to raw-bytes IPC (object URLs, LRU cache, in-flight dedup) — faster, lower memory, no base64 round-trips.
- Grid O(n²) → Map-based reconcile; chat send-retry + reconnect reconciliation; tolerant schema parsing across v3/v4 endpoints.
Install
Download app-universal-release.apk below. Signed release build (versionCode 1042).
v0.1.13
v0.1.12
v0.1.11
v0.1.10
v0.1.9
What's new
- Unsend messages
- Fixed race conditions and memory leaks
- Replaced Rust panics with graceful error handling
- Schema hardening: socialNetworks crash fix, enum widening
- TypeScript strict mode re-enabled
- Analytics heartbeat for real-time user tracking
- Fixed seen timestamp and reaction emoji display
Install: Download APK below, enable "Install unknown apps", install.
v0.1.8 — Online status fix, reaction emojis
Fixes
- "Online in 56379 years" fixed — profile last-seen timestamps now display correctly (e.g. "Online 5 minutes ago")
- Reactions now show actual emoji — previously any reaction other than 🔥 showed a broken character. All types now render: 🔥 ❤️ 😂 😮 👍 😢