Commit Graph

  • 24017bcb7f Merge pull request 'Promote development → master (deploy v2: versioning + visible jobs + rollback)' (#106) from development into master v1.0.0 developer 2026-06-22 06:01:03 +00:00
  • 40d8f06588 Merge pull request 'Deploy v2 — release versioning + visible deploy jobs + manual rollback' (#105) from feature/release-versioning into development developer 2026-06-22 05:40:55 +00:00
  • c59e522732 feat(deploy): visible prod-deploy jobs + manual prod-rollback Ilia Denisov 2026-06-22 07:37:08 +02:00
  • 8d45ae6e3b feat: stamp the build version into every service Ilia Denisov 2026-06-22 07:28:27 +02:00
  • 2c4f4b10dc Merge pull request 'Promote development → master (initial production release: pre-release line + Stage 18)' (#104) from development into master developer 2026-06-22 05:05:48 +00:00
  • 520a9092fe Merge pull request 'Stage 18 — prod contour deploy (two-host registry rollout, rolling + auto-rollback)' (#103) from feature/prod-contour-deploy into development developer 2026-06-22 04:59:46 +00:00
  • 9f970495ee fix(deploy): guard cd and split DOCKER_GID assignment (shellcheck) Ilia Denisov 2026-06-22 00:35:20 +02:00
  • 3d9ba3ac3d docs(deploy): bake Stage 18 prod-deploy decisions into the live docs Ilia Denisov 2026-06-22 00:30:30 +02:00
  • 171b71b7e0 feat(deploy): manual prod-deploy pipeline with rolling rollback (Stage 18) Ilia Denisov 2026-06-22 00:25:09 +02:00
  • 2b399d0838 feat(deploy): prod compose split + host-memory monitoring (Stage 18) Ilia Denisov 2026-06-22 00:12:43 +02:00
  • f5f45e7afb feat(deploy): Ansible provisioning for prod hosts (Stage 18) Ilia Denisov 2026-06-21 23:54:57 +02:00
  • b54cb8878d Merge pull request 'fix(ui): retry Mini App launch on backend failure; hide account linking' (#102) from feature/tg-boot-retry-hide-linking into development developer 2026-06-21 19:38:37 +00:00
  • e336638ca8 fix(ui): retry Mini App launch on backend failure; hide account linking Ilia Denisov 2026-06-21 21:23:27 +02:00
  • 62f42ed102 Merge pull request 'perf(gateway): pool backend conns; loadtest evaluate hot path' (#101) from feature/loadtest-evaluate-hotpath into development developer 2026-06-21 18:51:58 +00:00
  • ecb21bd218 perf(backend): cut evaluate's DB round-trips; load the game in one query Ilia Denisov 2026-06-21 20:28:24 +02:00
  • e2771826fd perf(gateway): pool backend conns; loadtest evaluate hot path Ilia Denisov 2026-06-21 19:55:57 +02:00
  • dec6fac013 Merge pull request 'fix(telegram): reply to /start only in private chats' (#100) from feature/telegram-private-reply-guard into development developer 2026-06-21 15:32:11 +00:00
  • c494da553a fix(telegram): reply to /start only in private chats Ilia Denisov 2026-06-21 17:28:01 +02:00
  • fa8abf22db Merge pull request 'feat(telegram): promo bot + channel-chat moderation gate' (#99) from feature/telegram-promo-bot-chat-moderation into development developer 2026-06-21 15:21:23 +00:00
  • 1ba789a1f1 docs(telegram): invert chat-gate strategy in docs; tune logs; i18n text Ilia Denisov 2026-06-21 17:15:10 +02:00
  • bdd1cc7d85 fix(telegram): invert the chat gate — mute the ineligible (default-allow) Ilia Denisov 2026-06-21 16:50:44 +02:00
  • 0ab1719ee9 fix(telegram): grant in-chat members regardless of reported can_send Ilia Denisov 2026-06-21 16:25:57 +02:00
  • 380f82438c fix(telegram): grant write to restricted members in default-deny chats Ilia Denisov 2026-06-21 16:12:58 +02:00
  • a404513037 feat(telegram): chat-gate observability + grant on first registration Ilia Denisov 2026-06-21 15:19:21 +02:00
  • b22b624d28 fix(telegram): keep a failed promo-bot construction non-fatal Ilia Denisov 2026-06-21 14:50:01 +02:00
  • e71e40eef5 feat(telegram): promo bot + channel-chat moderation gate Ilia Denisov 2026-06-21 14:46:51 +02:00
  • 41d21f3f6f Merge pull request 'feat(ui): tile-crossword loading splash for cold lobby open' (#98) from feature/lobby-splash-tiles into development developer 2026-06-21 10:19:15 +00:00
  • 9642cafc1f fix(ui): hold each splash word for the pause before the readiness check Ilia Denisov 2026-06-21 10:42:31 +02:00
  • ba6ee90278 feat(ui): tile-crossword loading splash for cold lobby open Ilia Denisov 2026-06-21 10:29:39 +02:00
  • e79c1ea891 Merge pull request 'feat(gateway): temporary IP ban (fail2ban) + honeypot/honeytoken (PRERELEASE AG)' (#97) from feature/abuse-ip-ban-honeypot into development developer 2026-06-21 07:28:30 +00:00
  • cf9fa75d62 fix(deploy): honeypot tag dropped — Caddy applies header_up delete after set Ilia Denisov 2026-06-21 09:02:23 +02:00
  • 81b44c2b02 docs(prerelease): mark phase AG done (code + test contour) Ilia Denisov 2026-06-21 08:58:10 +02:00
  • 041106d623 feat(gateway): temporary IP ban (fail2ban) fed by rejections + honeypot/honeytoken Ilia Denisov 2026-06-21 08:54:20 +02:00
  • 3fffee7817 Merge pull request 'feat(telegram): split connector into home validator + remote bot (mTLS bot-link)' (#96) from feature/telegram-egress-botlink into development developer 2026-06-21 05:35:02 +00:00
  • 860cfeb30f fix(deploy): make bot-link cert leaves readable by the distroless nonroot UID Ilia Denisov 2026-06-21 00:27:43 +02:00
  • 6aeb529f13 feat(telegram): split connector into home validator + remote bot Ilia Denisov 2026-06-21 00:19:07 +02:00
  • 2a8717c930 Merge pull request 'fix(ui): green both lobby scores on a tie, mute a 0:0 board' (#95) from feature/lobby-equal-score-color into development developer 2026-06-20 19:33:06 +00:00
  • 264097bbf6 fix(ui): green both lobby scores on a tie, mute a 0:0 board Ilia Denisov 2026-06-20 21:28:31 +02:00
  • 9824214fd7 ci(deploy): probe backend /readyz so a dead backend fails the deploy (#94) developer 2026-06-20 19:04:52 +00:00
  • c72adddb91 Merge pull request 'fix(engine): make .seed_version marker authoritative (no boot refusal)' (#93) from feature/dict-seed-marker-wins into development developer 2026-06-20 18:25:12 +00:00
  • 95f5703372 fix(engine): make .seed_version marker authoritative (no boot refusal) Ilia Denisov 2026-06-20 20:06:57 +02:00
  • d40fe1edec Merge pull request 'feat(engine,deploy): seed-drift guard + track current dictionary release (v1.2.1)' (#92) from feature/dict-version-track-release into development developer 2026-06-20 17:39:02 +00:00
  • a5db10c46e feat(engine,deploy): seed-drift guard + track current dictionary release Ilia Denisov 2026-06-20 19:26:32 +02:00
  • c739f12d3d Merge pull request 'refactor(db): squash migrations into a single baseline' (#91) from feature/squash-migrations into development developer 2026-06-20 13:23:44 +00:00
  • 483e945209 refactor(db): squash migrations into a single baseline Ilia Denisov 2026-06-20 15:11:40 +02:00
  • a21ba23e5e Merge pull request 'feat(telegram,game): single bot + per-user variant preferences' (#90) from feature/single-bot-variant-preferences into development developer 2026-06-20 12:48:10 +00:00
  • 57c778f9b2 feat(telegram,game): single bot + per-user variant preferences Ilia Denisov 2026-06-20 14:08:27 +02:00
  • 1933849dba Merge pull request 'feat(game): official first-move tile draw + admin step-by-step replay' (#89) from feature/first-move-draw into development developer 2026-06-20 08:42:51 +00:00
  • e06c6ff67f docs: drop the design-spec artifact (content lives in ARCHITECTURE/FUNCTIONAL/PRERELEASE) Ilia Denisov 2026-06-20 10:40:37 +02:00
  • caefc8f579 feat(game): official first-move tile draw + admin step-by-step replay Ilia Denisov 2026-06-20 08:47:18 +02:00
  • 76d4610e6f Merge pull request 'feat(social): per-game friend request to disguised robots + lobby/stats/tile cosmetics' (#88) from feature/robot-friend-request into development developer 2026-06-19 20:06:20 +00:00
  • c9a5ca3ed7 fix(lobby): keep the spaces around the score separator Ilia Denisov 2026-06-19 21:56:05 +02:00
  • 9644bd6e5e style(lobby): bold the score line, a touch smaller Ilia Denisov 2026-06-19 21:51:50 +02:00
  • c127bc9f0e feat(social): per-game friend request to disguised robots + lobby/stats/tile cosmetics Ilia Denisov 2026-06-19 21:39:27 +02:00
  • 9ded5d3d86 Merge pull request 'feat: sparser robot nudges, typed unread badge, lobby unread bump' (#87) from feature/robot-nudge-badge-sort into development developer 2026-06-19 18:36:34 +00:00
  • 6e77de4c1e feat: sparser robot nudges, typed unread badge, lobby unread bump Ilia Denisov 2026-06-19 16:50:48 +02:00
  • c67a5d51f1 Merge pull request 'feat(robot): shrink endgame think time when both sides pass' (#86) from feature/robot-endgame-shrink into development developer 2026-06-19 14:00:59 +00:00
  • f3768d20f2 feat(robot): shrink endgame think time when both sides pass Ilia Denisov 2026-06-19 12:48:39 +02:00
  • 0eb1e0ef47 Merge pull request 'perf(ui): reuse hint result as move preview, skip redundant evaluate' (#85) from feature/hint-preview-reuse into development developer 2026-06-19 10:18:14 +00:00
  • d0681c5efe fix(ui): lower-case hint preview words to match evaluate Ilia Denisov 2026-06-19 12:12:53 +02:00
  • 0dd4099d68 perf(ui): reuse hint result as move preview, skip redundant evaluate Ilia Denisov 2026-06-19 12:03:27 +02:00
  • b65a3ecc9c Merge pull request 'feat(ui): UI polish batch (toast, gestures, lobby, settings, admin count)' (#84) from feature/ui-polish-batch into development developer 2026-06-19 08:17:50 +00:00
  • b156d3403c fix(ui): polish board→rack recall drag and its gesture interplay Ilia Denisov 2026-06-19 10:12:48 +02:00
  • 4adb608ad1 feat(ui): vs-AI comms trim, overlay confirm button, recall-to-slot drag Ilia Denisov 2026-06-19 09:54:30 +02:00
  • b5688d4848 fix(ui): right-align the confirm-move glyph under the preview caption Ilia Denisov 2026-06-19 09:17:39 +02:00
  • ab1ad998aa feat(ui): batch of UI polish tweaks Ilia Denisov 2026-06-19 08:56:29 +02:00
  • 1c87313a78 Merge pull request 'feat(social): asymmetric per-user block, in-game block control, admin lists' (#83) from feature/in-game-block-and-friend-ux into development owner 2026-06-19 06:15:15 +00:00
  • 64be0572b3 fix(social): robot blocks Ilia Denisov 2026-06-18 13:12:19 +02:00
  • 81b9e1529e feat(social): asymmetric per-user block, in-game block control, admin lists Ilia Denisov 2026-06-18 11:50:34 +02:00
  • 9074417762 Merge pull request 'fix(matchmaking): re-enqueue opens a new game, not the caller's own' (#82) from feature/reenqueue-opens-new-game into development owner 2026-06-18 08:38:41 +00:00
  • 9d52885a6e fix(matchmaking): re-enqueue opens a new game, not the caller's own Ilia Denisov 2026-06-18 10:18:44 +02:00
  • 8793bd34f2 feat(stats): best-move word, moves & hint-share, and a hint-count fix (#81) developer 2026-06-17 22:17:27 +00:00
  • 5a3f0951ae Merge pull request 'feat: AI-game & resign UX cleanup (lobby drop, board reveal, GCG share fix, hide AI export)' (#80) from feature/lobby-drop-left-ai-games into development developer 2026-06-17 12:11:24 +00:00
  • fb0ddab0f1 feat(ui): hide GCG export in honest-AI games Ilia Denisov 2026-06-17 14:01:08 +02:00
  • e850ecd83b fix(ui): don't strand the Mini App on a cancelled GCG share Ilia Denisov 2026-06-17 14:01:02 +02:00
  • 2c24d54047 feat(ui): reveal the full board on resign (close history, zoom out) Ilia Denisov 2026-06-17 13:33:27 +02:00
  • 2f4aa1b75b feat(lobby): drop left honest-AI games from the finished list Ilia Denisov 2026-06-17 13:03:35 +02:00
  • 712ef205c1 Merge pull request 'fix(ui): pin the in-game ad-banner height on a short viewport' (#79) from feature/game-banner-fixed-height into development developer 2026-06-17 10:28:53 +00:00
  • 7cd4474945 fix(ui): pin the in-game ad-banner height on a short viewport Ilia Denisov 2026-06-17 12:24:11 +02:00
  • 236152ea7b Merge pull request 'feat(observability): Scrabble — Messages Grafana dashboard' (#78) from feature/messages-dashboard into development developer 2026-06-17 10:05:16 +00:00
  • c3b3cafcdd feat(observability): add the Scrabble — Messages Grafana dashboard Ilia Denisov 2026-06-17 12:00:58 +02:00
  • b71f006ddf Merge pull request 'feat(chat): unread read-receipts — lobby/game dot, history-open ack, admin + metrics' (#77) from feature/chat-read-receipts into development developer 2026-06-17 09:52:23 +00:00
  • 20f2a5a011 feat(chat): a message to a disguised robot opponent is born read Ilia Denisov 2026-06-17 11:46:59 +02:00
  • a7f3df9346 fix(chat): don't restore unread on a failed read-ack (would loop the in-game effect; REST re-seed self-heals) Ilia Denisov 2026-06-17 11:14:25 +02:00
  • aaac816dc2 feat(chat): unread read-receipts with lobby/game dot and history-open ack Ilia Denisov 2026-06-17 11:12:38 +02:00
  • d53ff18a67 Merge pull request 'feat(lobby): cap simultaneous quick games at 10' (#76) from feature/quick-game-limit into development developer 2026-06-16 21:00:41 +00:00
  • 63ab85a5e5 feat(lobby): cap simultaneous quick games at 10 Ilia Denisov 2026-06-16 22:51:18 +02:00
  • 05d83ced86 Merge pull request 'feat(nudge): name the sender; blink lobby cards; re-animate toasts' (#75) from feature/nudge-name-lobby-blink into development developer 2026-06-16 19:33:57 +00:00
  • 2a034ff9be fix(ui): don't refetch the lobby on heartbeats Ilia Denisov 2026-06-16 21:06:31 +02:00
  • 12d128f1cc feat(nudge): name the sender; blink lobby cards; re-animate toasts Ilia Denisov 2026-06-16 19:09:24 +02:00
  • e9dfa4ccb8 Merge pull request 'fix(robot): rare dot between handle words, prefer underscore' (#74) from feature/robot-nick-separator into development developer 2026-06-16 14:20:37 +00:00
  • 9c30bdf8e7 fix(robot): make a dot between two handle words rare, prefer underscore Ilia Denisov 2026-06-16 16:10:39 +02:00
  • 51d7c4e005 Merge pull request 'feat(robot): per-game opponent names from a wide corpus + frozen seat-name snapshot' (#73) from feature/robot-name-variety into development developer 2026-06-16 13:58:35 +00:00
  • 14b5f61af9 feat(robot): gender-agree Cyrillic handle adjectives Ilia Denisov 2026-06-16 15:51:00 +02:00
  • 6d66545062 fix(robot): show the per-game name in REST game views, not the account name Ilia Denisov 2026-06-16 15:22:27 +02:00
  • 183e08ec80 feat(robot): per-game display names from a wide name corpus Ilia Denisov 2026-06-16 12:28:04 +02:00
  • ac1c89c0ee Merge pull request 'docs(ui): correct the banner section to the shipped rotation behaviour' (#72) from docs/banner-ui-accuracy into development developer 2026-06-16 05:57:14 +00:00
  • 52f2caae51 docs(ui): correct the banner section to the shipped rotation behaviour Ilia Denisov 2026-06-16 07:54:13 +02:00
  • 27871f2a1d Merge pull request 'feat(ads): client banner rotation, fade UX & live toggle (PR2)' (#71) from feature/ad-network-ui into development developer 2026-06-16 05:45:01 +00:00
  • dd45af20ef fix(ads): fade the scroll rewind + keep the banner strip height constant Ilia Denisov 2026-06-16 07:18:50 +02:00