2026-06-27 - 2026-07-27
Overview
21 Releases published by 2 users
Published
v1.24.2
Published
v1.24.1
Published
v1.24.0
Published
v1.23.0
Published
v1.22.0
Published
v1.21.0
Published
v1.20.1
Published
v1.20.0
Published
v1.19.0
Published
v1.18.0
Published
v1.17.0
Published
v1.16.0
Published
v1.15.0
Published
v1.14.1
Published
v1.14.0
Published
v1.13.0
Published
v1.12.0
Published
v1.11.0
Published
v1.10.0
Published
v1.9.0
Published
v1.8.0
145 Pull requests merged by 2 users
Merged
#286 feat(social): hide social controls on a deleted opponent's seat
Merged
#285 feat(vk): VK community cover
Merged
#284 chore(docs): update legal info
Merged
#283 chore(docs): update legal info
Merged
#282 release: VK Wallet public-offer link escapes the Mini App WebView (#281)
Merged
#281 fix(vk): route the Wallet public-offer link out of the Mini App WebView
Merged
#280 release: promote development → master (v1.24.0)
Merged
#279 fix(payments): reject HTML-special chars in product titles (VK payment guard)
Merged
#278 fix(vk): persist settings via VK Bridge storage; hide competing sign-in in Mini App hosts
Merged
#277 docs(apple): native iOS/iPadOS app plan
Merged
#276 release: promote development → master (v1.23.0)
Merged
#275 native polish 2: two-robots fix, guest offline-host UX, Guest###### name, silent+fast native boot, minSdk 29
Merged
#274 release: promote development → master (v1.22.0)
Merged
#273 native polish: guest-locale banner, seamless guest sign-in (+local-game fix), 'Opponent's turn' label, deploy-authoritative dictionary
Merged
#272 release: promote development → master (v1.21.0)
Merged
#271 android: shrink adaptive icon mark 25% + full-bleed legacy square + Erudit-only default for the profileless client
Merged
#270 fix(gateway): allow the native WebView origin via CORS (native stuck-offline)
Merged
#269 android: ANDROID_PLAN refresh + pin build-tools 36 (unblocks the release build)
Merged
#268 chore(android): rename RuStore signing secrets ANDROID_* -> ANDROID_RUSTORE_*
Merged
#267 feat(payments): live payment-availability kill switch + per-account override
Merged
#266 feat(payments): per-channel Robokassa shops on the direct rail
Merged
#265 release: v1.20.1 — real client IP to backend (last-login fix) + host UTC
Merged
#264 fix(gateway): forward the real client IP to the backend on every call (last-login IP was the docker addr)
Merged
#263 release: v1.20.0 — offline-UX, catalog order + admin toggles, reward-config admin
Merged
#262 feat(payments): edit the rewarded-ads config from the admin catalog page
Merged
#261 refactor(payments): one canonical catalog order (storefront/offer/admin) + admin active/all toggle
Merged
#260 feat(ui): explicit offline state inside an online game (+ offline word check)
Merged
#259 fix(net): detect a silently-dead live stream via a heartbeat watchdog
Merged
#258 chore(release): promote development to master
Merged
#257 feat(tg-bot): unpin auto-forwarded channel posts
Merged
#256 feat(vk): launch diagnostic on a direct /vk/ open instead of a guest
Merged
#255 fix(login): rate-limit no longer latches a phantom offline on the login screen
Merged
#254 Android release prep: de-anchor ANDROID_PLAN.md, re-enable the APK workflow, add ICONS.md
Merged
#253 Legal pages: privacy policy + EULA at /privacy/ and /eula/
Merged
#252 release: v1.18.0 — /support command in the Telegram bot
Merged
#251 feat(telegram): add /support command with support-desk info reply
Merged
#250 release: v1.17.0 — implicit offline model + two-tier client-version gate + unified lobby
Merged
#249 feat(offline): implicit net-state model, two-tier version gate, unified lobby
Merged
#248 docs: Android native plan + agent field notes
Merged
#247 release: v1.16.0 — offer live pricing, bot health telemetry, edge blocklist
Merged
#246 feat(edge): community IP blocklist (Spamhaus DROP) at the gateway
Merged
#245 feat(bot): Telegram bot Bot API health over the bot-link (metrics + alerts)
Merged
#244 feat(offer): live catalog price list in the public offer (render sidecar)
Merged
#243 Release v1.15.0 — in-game UX + wallet redesign + WAL-alert fix
Merged
#242 Wallet redesign: split buy/spend, compact balance, exchange confirm + insufficient-chips fix
Merged
#241 fix(monitoring): don't false-fire the WAL-stalled alert on an idle database
Merged
#240 In-game UX: board highlight + score badge, full-width rack, bag badge, zoom setting
Merged
#239 Release v1.14.1 — ansible certs-dir fix + Robokassa go-live
Merged
#238 fix(deploy): provision the certs dir traversable by the nonroot gateway
Merged
#237 Release v1.14.0 — monetization launch (E5-E8)
Merged
#236 fix(deploy): wire the Robokassa direct rail into the prod deploy + rollback
Merged
#235 feat(ui): per-kind active-game limit lock on the New Game screen
Merged
#234 feat(backend): per-tier, per-kind active-game limits with a guest funnel
Merged
#233 feat(admin): manual full-order refund + ledger CSV export
Merged
#232 feat(admin): admin grant — raw benefits and by-product reward bundles
Merged
#231 feat(admin): product catalog editor
Merged
#230 feat(admin): per-user finance panel — balances, benefits, risk, ledger
Merged
#229 feat(ads): VK post-move interstitial + retire deprecated hint_balance/paid_account
Merged
#228 feat(ads): rewarded video (VK) — client-attested credit + daily/hourly caps
Merged
#227 feat(payments): refund engine (best-effort revoke, never negative)
Merged
#226 feat(payments): Telegram Stars payment rail
Merged
#225 fix(ui): VK-iOS store link from the deployment origin
Merged
#224 feat(payments): VK Votes payment rail
Merged
#223 feat(payments): Robokassa direct-rail payment intake
Merged
#222 feat(ui): public offer page at /offer/ with a landing footer link
Merged
#221 fix(deploy): run the base-backup timer's pgBackRest as the postgres role
Merged
#220 release v1.13.0: payments wallet mechanics + database point-in-time recovery
Merged
#219 feat(deploy): continuous WAL archiving to S3 for point-in-time recovery
Merged
#218 feat(payments): wallet screen with balances, benefits and storefront
Merged
#217 feat(payments): chip wallet, store-compliance gate and benefit application
Merged
#216 feat(payments): trusted platform signal on the session
Merged
#215 feat(payments): payments schema, currency domain and money type
Merged
#213 docs(payments): monetization spec and implementation plan
Merged
#214 ci: skip the test-contour deploy on a no-code change
Merged
#212 release: offline mode + local pass-and-play (hotseat) — proposed v1.12.0
Merged
#211 feat(offline): local pass-and-play (hotseat) — 2-4 players, seat/host PINs
Merged
#210 fix(router): sync route in navigate() — kill boot lobby-flash + offline e2e flake
Merged
#209 feat(hint): unify the vs_ai idle hint online + offline (server-enforced, monotonic)
Merged
#207 feat(hint): idle-gated wallet-free vs_ai hint on a monotonic clock (B4)
Merged
#208 fix(offline): zero tile weights on cold boot + wrong-mode game in the lobby
Merged
#206 test(offline): mock e2e for a device-local vs_ai game (C8)
Merged
#205 feat(offline): gate the offline toggle on dictionary readiness
Merged
#204 docs(offline): connectivity auto-detect + kill switch user story
Merged
#203 feat(offline): mid-session flight-mode reactivity [PR2]
Merged
#202 feat(offline): auto-detect no network at cold start + go-offline dialog [PR1]
Merged
#201 fix(offline): delete a finished local game from the device, not the network
Merged
#200 fix(pwa): network-first navigation so a new deploy loads online immediately
Merged
#199 fix(offline): cold-boot offline from the persisted session + profile
Merged
#198 feat(offline): offline lobby — list + create + play local vs_ai games [C6]
Merged
#197 feat(offline): app-shell precache service worker (vite-plugin-pwa) [C1]
Merged
#196 feat(offline): advertise dict versions + background dictionary preload
Merged
#195 feat(offline): offline-mode state, Settings toggle + blue chrome (Phase C)
Merged
#194 feat(offline): wire the local game source into the game screen (Phase B3.2)
Merged
#193 feat(offline): local game source (Phase B3.1)
Merged
#192 feat(offline): local game persistence + replay (Phase B2)
Merged
#191 feat(offline): local game engine (Phase B1)
Merged
#190 test(offline): real-dictionary move-generator conformance in CI
Merged
#189 feat(offline): robot move-choice strategy in TS (parity-pinned)
Merged
#188 feat(offline): DAWG cursor + move generator in TS (parity-pinned)
Merged
#187 Release v1.11.0: PWA install + code-only PWA login + email/metrics fixes
Merged
#186 fix(metrics): second-scale buckets for edge_request_duration
Merged
#185 feat(email): PWA login sends code only; drop admin link from alert emails
Merged
#184 feat(pwa): installable web app + landing web entry
Merged
#183 Release v1.10.0: banner colours + urgent, and 3 UI fixes
Merged
#182 feat(banner): per-campaign colour overrides and urgent alerts
Merged
#181 fix(ui): hold info toast ~1s before it rises and fades
Merged
#180 fix(ui): poll for out-of-band email confirmation
Merged
#179 feat(ui): hide current-host sign-in row in profile
Merged
#178 Release: promote development → master (old Android WebView support + unsupported-engine telemetry)
Merged
#177 feat(gateway): unsupported-engine telemetry beacon + Grafana counter
Merged
#176 chore(ui): temporary Android WebView boot diagnostic (test contour only)
Merged
#175 Release v1.8.0: prod build fix (re-promote)
Merged
#174 fix(ci): prod build needs EXPORT_SIGN_KEY for compose interpolation
Merged
#173 Release v1.8.0: promote development → master
Merged
#172 fix(ci): arm the maintenance flag on the test-contour deploy
Merged
#171 feat(ui): in-session maintenance overlay on the edge 503 marker
Merged
#170 feat(deploy): prod OOM swap cushion + edge maintenance page
Merged
#169 feat(gateway): enable GATEWAY_HONEYTOKEN + GF_SMTP_ENABLED on both contours
Merged
#168 chore(deploy): dedupe & regroup Gitea CI variables/secrets
Merged
#167 fix(account): dedupe colliding identities on merge, journaling to the dossier
Merged
#166 feat(account): VK ID web login to link a VK identity from a browser
Merged
#165 feat(observability): Grafana infra alerts + admin email notifications (PR4)
Merged
#164 feat(account): deletion = legal retention, not erasure (PR3)
Merged
#163 feat(account): provider linking, unlink & email change (PR2)
Merged
#162 feat(email): one-tap confirm deeplink + client language (PR1b)
Merged
#161 feat(email): make transactional email live — branded relay, rate-limit, squat fix (PR1a)
Merged
#160 feat(export): server-rendered artifacts behind one signed download URL
Merged
#159 feat(game): finished-game export as a PNG image behind a format chooser
Merged
#158 fix(game): no placement auto-zoom in landscape
Merged
#157 feat(landing): Russian default + SEO head, icons and OG card
Merged
#156 fix(ui): VK Android external links + landing VK entry + drop 1️⃣ badge
Merged
#155 feat(telemetry): local move-preview adoption metrics (Phase 4)
Merged
#154 feat: on-device move preview (local eval) with network fallback
Merged
#153 build(ui): drop sourcemaps from prod bundle
Merged
#152 feat(ui): paint VK status bar to the app theme (VKWebAppSetViewSettings)
Merged
#151 fix(ui): copy GCG to clipboard on Android in-app WebViews
Merged
#148 fix(game): clear nudges on game completion
Merged
#149 fix(ui): mobile WebView polish — tap-flash, VK haptics, VK swipe-back
Merged
#147 feat(ui): first-run onboarding coachmarks
Merged
#146 feat(assets): VK loading-screen Lottie — bouncing Erudit tile
Merged
#145 docs: sync FUNCTIONAL/UI_DESIGN/.claude with the shipped VK + landscape behaviour (#140-#142 follow-up)
Merged
#144 release: VK Mini App + landscape UI + dict v1.3.1 seed (development→master)
Merged
#143 chore(ci): bump dictionary test-suite seed to v1.3.1
Merged
#142 feat(vk): native share/copy, auto theme, friend-code deep link, home-bar safe area
Merged
#141 fix(ui): landscape board zoom/pan + rack tile rendering + mobile block label
1 Pull request proposed by 1 user
Proposed
#287 fix(offline): keep the local composition; feat(rules): no repeated words in Erudit