Skip to content

Releases

Blockerino 2.0.8 — Android + Windows

Choose a tag to compare

@Nerdlin Nerdlin released this 10 Nov 23:32

Blockerino 2.0.8

Вход через Discord в приложении, честные рейтинги и ставки, приглашения, которые ждут ответа, и обновления по воздуху, которые теперь доходят до телефона.

📥 Скачать

Артефакты (версия 2.0.8, сборка 21), выкладываются в GitHub Releases как v2.0.8:

🎮 Что нового

Вход и аккаунт

  • Вход через Discord в Android-приложении. Открывается тот же аккаунт, что в Discord Activity, со всеми рекордами и монетами.
  • Плашка «Вы не вошли в аккаунт» в рейтинге: гость сразу видит, что его рекорды остаются только на устройстве, и может войти одной кнопкой.
  • После первого входа рекорды гостя за текущий сезон попадают в сезонный рейтинг.

Приглашения

  • Дуэль с другом начинается, только когда он принял приглашение. До этого — окно «Ждём ответа…» с отменой. Если друг отказался или не ответил за минуту, вы сразу это увидите.
  • Того, кто уже играет партию, пригласить нельзя: игра скажет, что друг сейчас в игре, и не будет его отвлекать.

Честная игра

  • Рейтинги мини-игр (шашки, морской бой, дурак, крестики-нолики) меняются по отчёту проигравшего, ничья — по отчётам обоих. Больше нельзя «выиграть» у человека, с которым не играл.
  • Шахматы: результат без ответа соперника засчитывается только для партии, в которой сервер видел обоих игроков.
  • Дурак на монеты: банк забирает победитель, только когда все остальные подтвердили проигрыш; иначе ставки возвращаются.
  • Заявку в друзья может принять только тот, кому её отправили. Приглашения приходят по закрытому каналу, только от друзей.

Мини-игры

  • Судоку на компьютере больше не уезжает за верх экрана.
  • Морской бой: крупнее поле врага в бою, кнопки не вылезают за край на компьютере, а в конце игры показываются корабли противника.
  • Шахматы против бота: отмена хода стоит 200 монет, подсказка — 50.

Windows

  • Игра для Windows: установщик и версия без установки.

Под капотом

  • Обновления по воздуху снова работают: в прошлых сборках Android-приложение не скачивало их. С 2.0.8 исправления доходят до телефона без новой версии в Google Play.

🧪 Проверки

  • npx tsc --noEmit без ошибок, Jest: все наборы тестов, плюс новые тесты входа через Discord, переноса гостевых рекордов и настройки обновлений.
  • Проверки базы (npm run db:check, Docker): все миграции встают на чистую базу, 24 проверки, в том числе новые на исправления безопасности и админ-панель.
  • На телефоне (dev-сборка): вход через Discord в существующий аккаунт, плашка гостя.

🚀 Развёртывание

Миграции 20261110134159_security_audit_fixes, 20261111090000_coin_gain_limit и 20261111100000_admin_panel уже применены к базе. Функции discord-token-exchange и discord-app-return выложены.
Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main → в Google Play новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.8.aab).

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.8.apk 55385985 02bfe6aa8ff2a9184849d8640e1ca362f11c31f0291e28602b4cfad07b12c7cc
blockerino-2.0.8.aab 73781560 d83abb773b4dda0c6fde5aa32b0638883d9fadd5505d002575cf0bfb4b239858
blockerino-2.0.8-windows-setup.exe 127975400 623b6cc8ef1b4c18fc17e3eea181d8be2da7856d3d108d78b0e58af67c8196ed
blockerino-2.0.8-windows-portable.exe 116824848 e341b5933a2aa6404037e34912d3990ca18f3087226e1ff92b121281d0306b75

AAB подписан ключом загрузки, APK подписан отладочным ключом (как прошлые APK, чтобы обновляться поверх). Windows-версии не подписаны: при первом запуске Windows покажет предупреждение («Подробнее» → «Выполнить в любом случае»).

Blockerino 2.0.7 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 05 Nov 20:22

Blockerino 2.0.7

Испытания со звёздами и таблицей дня, честные режимы Дурака с ботами, крупные доски, 12 новых достижений и анимация нового ранга.

📥 Скачать

Артефакты (версия 2.0.7, сборка 19), выкладываются в GitHub Releases как v2.0.7:

🎮 Что нового

Испытания

  • Три звезды в каждом испытании за очки и общий счёт «Звёзды N/15». Под звёздами видно, сколько нужно до следующей.
  • Головоломка дня: своя таблица на каждый день (раньше там был рекорд за всё время), серия дней подряд и таймер до новой головоломки.
  • 100 монет за три звезды в головоломке дня, раз в день. Монеты выдаёт сервер.
  • Названия и описания испытаний на русском.
  • Рейтинг испытаний в общем стиле: подиум, ваша карточка, строки с 4-го места.

Дурак с ботами

  • Режимы «Все» и «Соседи» теперь различаются: кто может подкидывать, решают правила стола.
  • В «Переводном» боты переводят атаку.
  • «С шулерами» с ботами больше не превращается тайком в честную игру: боты иногда жульничают и ловят вас.
  • «Классика» и «Ничья» различаются, когда все вышли одновременно: в «Классике» дурак — последний отбивавшийся.

Мини-игры

  • Морской бой: в бою доска «Цель» почти во всю ширину экрана, ваш флот — мини-карта под ней. Доска расстановки тоже крупнее.
  • Крестики-нолики: поле и знаки подстраиваются под экран.
  • Рейтинг судоку и маджонга считает решённые доски, а не «победы».

Дуэли и друзья

  • Анимация нового ранга: когда рейтинг поднялся до следующего ранга, на весь экран вылетает медаль.
  • Длинный список друзей больше не растягивает экран: видны первые 4–5, остальные под «Все друзья (N)» с поиском (дуэль, приглашения в мини-игры, шахматы).

Достижения

  • 12 новых: шашки (1, 10, 50 побед), серия в головоломке дня (3, 7, 30 дней), звёзды испытаний (5, 10, 15), ранги в дуэлях (Золото, Алмаз, Легенда). Все они есть и в Google Play Играх.

Прошлый сезон

  • В стиле рекордов: подиум, ваше место, аватарки игроков. Окно больше не просвечивает.

🧪 Проверки

  • npx tsc --noEmit без ошибок, Jest: 403 теста при полном прогоне, плюс новые тесты звёзд, серии дней, награды дня и нового ранга.
  • На телефоне (dev-сборка): испытания и их рейтинг, Дурак с ботом в «Переводном» и «С шулерами» (бот сжульничал, был пойман и перевёл атаку), Морской бой, крестики-нолики, рейтинги судоку и маджонга, прошлый сезон, анимация ранга.

🚀 Развёртывание

Миграция 20261105201459_achievements_and_daily_board уже применена к базе (2026-11-06): награды за новые достижения, таблица головоломки дня и монеты за три звезды. Старые версии игры её не используют. Новых функций Supabase нет.
Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main (сайт обновится сам) → в Google Play новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.7.aab).

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.7.apk 55343337 3add8bb9e798364756fabb971f9538e38a15299f33d623c624f5d9d8c593ecfb
blockerino-2.0.7.aab 73759523 a1d596d73262f135c158b398d7d4ae721ff8b930db09259f76142cec361b6d47

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.6 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 02 Nov 15:47

Blockerino 2.0.6

Звуки, вибрация и анимации в мини-играх, игры на весь экран, новые таблицы лидеров и исправленный звук.

📥 Скачать

Артефакты (версия 2.0.6, сборка 18), выкладываются в GitHub Releases как v2.0.6:

🎮 Что нового

Звук

  • Музыка больше не подлагивает и не пропадает. Каждый звук создавал новый плеер, который не освобождался, и со временем звук в игре начинал сбоить. Теперь плееры переиспользуются.
  • Музыка возвращается, когда вы снова открываете игру после сворачивания.
  • Уведомления и другие приложения больше не останавливают звук игры.

Мини-игры

  • На телефоне игры открываются на весь экран, а не в окошке. Стол в Дураке и доска в шашках стали крупнее. Длинные правила свёрнуты в две строки и раскрываются по нажатию.
  • Морской бой: выстрел, всплеск, взрыв и тонущий корабль. Телефон вибрирует при попадании, сильнее всего, когда попадают по вашему флоту.
  • Шашки: шашка скользит по доске, сбитые шашки исчезают. Свои звуки хода, взятия и превращения в дамку.
  • Дурак: карты летят из колоды в руку, и счётчик карт у игроков растёт по одной. Звуки раздачи, хода, «Бито» и «Беру». Исправлено: карта, которую нельзя было сыграть, иногда зависала над рукой.
  • Крестики-нолики: звук и анимация хода, выигравшая линия пульсирует.
  • Мелодия победы или поражения в конце каждой партии.

Таблицы лидеров

  • Дуэль 1на1: подиум для тройки лучших, ваша карточка с рангом и сколько осталось до следующего, отсчёт до конца сезона. Ранги по-русски: Бронза, Серебро, Золото, Алмаз, Мастер, Легенда.
  • Рекорды Классики и Хаоса в том же стиле: подиум, ваша карточка с местом, аккуратные строки.

Профиль

  • Титулы прошлых сезонов показаны медалями с местом, режимом и месяцем (до 6 титулов).

🧪 Проверки

  • npx tsc --noEmit без ошибок. Тесты Jest, в том числе новые: пул звуковых плееров, план раздачи в Дураке, выстрелы в Морском бое, дата сезона.
  • На телефоне (dev-сборка): шашки (ход, взятие, полный экран), Дурак против бота (раздача, отклонённая карта возвращается в руку), крестики-нолики, Морской бой против бота, таблица ELO, рекорды.
  • По системному журналу за сессию было 50 звуков и всего 16 плееров.

🚀 Развёртывание

Без миграций и без новых функций Supabase. Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main (сайт обновится сам) → в Google Play новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.6.aab). app_config.android_version не трогаем, пока тестировщики Alpha не обновятся.

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.6.apk 55305293 f2296944bca3e0f6b6d1bcd212d422114935753c312ebbfe7970ea7285a22ed0
blockerino-2.0.6.aab 73746736 55397cbcce3f3d73c3ca49da6dce4d71bfc38e34dfb2faf0ded03e8e725e5ba9

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.5 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 01 Nov 17:48

Blockerino 2.0.5

Шашки, новая таблица лидеров «Ещё игр», Google Play Игры, перенос рейтинга с chess.com и исправленная веб-версия.

📥 Скачать

Артефакты (версия 2.0.5, сборка 17), выкладываются в GitHub Releases как v2.0.5:

🎮 Что нового

Шашки

  • Русские шашки в «Ещё играх»: бить обязательно, простые шашки бьют и назад, дамка ходит на любое расстояние.
  • Бот трёх уровней с подсказкой, игра с другом по коду комнаты, приглашение друга, свой рейтинг.

Ещё игры

  • Новая таблица лидеров: плитки игр с иконками, ваше место и счёт побед и поражений, подиум для тройки лучших. В конце списка видно, где вы, и есть кнопка «Играть».
  • Морской бой: в бою оба поля одного размера, выбранный корабль больше не подсвечивается.
  • Маджонг стоит вертикально, плитки на телефоне крупнее. Судоку шире.

Шахматы

  • Рейтинг теперь начинается с 400 (уровень самого слабого бота), а не с 1000.
  • Перенос рейтинга с chess.com: один раз на аккаунт, после проверки, что аккаунт ваш. Нужно вписать код из игры в поле «Местоположение» профиля chess.com.
  • «Новая партия» в меню доступна только после окончания партии. Раньше она молча сдавала онлайн-партию или бросала партию с ботом.

Рекорды

  • Вкладка «Друзья» показывает рекорды за всё время. Раньше в начале каждого сезона она была пустой.

Google Play

  • Google Play Игры: 20 достижений и таблицы рекордов Классики и Хаоса. Нужна версия из Google Play.
  • Окно «Доступно обновление» со ссылкой на GitHub видят только те, кто ставил APK с GitHub. Версия из Google Play обновляется через магазин.

Веб-версия

  • Блоки снова ставятся. В 2.0.4 поле в браузере перестало обновляться.
  • С мышью фигура идёт прямо под курсором, а не висит над полем.

🧪 Проверки

  • npx tsc --noEmit без ошибок; тесты Jest, в том числе новые на правила шашек, бота и перенос рейтинга.
  • В браузере: блоки ставятся мышью, таблица лидеров, шашки против бота с обязательным взятием, маджонг.
  • На телефоне (dev-сборка): шашки, меню достижений, окно входа Google Play Игр. Сам вход в Play Игры работает только у версии из Google Play.
  • На боевой базе в транзакциях с откатом: рекорды друзей за всё время, шашки в рейтингах, старт шахмат с 400, перенос рейтинга с chess.com (код, повторный перенос, чужой ник).
  • Не проверено вживую: шашки онлайн на двух аккаунтах, перенос рейтинга через сервер, достижения в Google Play на версии из магазина.

🚀 Развёртывание

Миграции (применяются при пуше в main):

  • 20261101100000_friends_alltime_leaderboard.sql
  • 20261101110000_checkers_game.sql
  • 20261101120000_chess_start_rating_400.sql
  • 20261101130000_chess_com_import.sql

Edge function: supabase/functions/chess-com-import (verify_jwt включён).

runtimeVersion = 2.0.5. Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main → миграции и функция → app_config.android_version. С 2.0.5 окно обновления видят только установки не из Google Play. Но версии из Play 2.0.4 и старше этого не умеют, поэтому app_config поднимать до 2.0.5, когда тестировщики Alpha обновятся на 2.0.5. В Google Play: новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.5.aab), потом публикация проекта Google Play Игр.

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.5.apk 55219905 5a58a7bf4484747598f6f0c2a8424cd879bd811763900deb65f554b24f60daae
blockerino-2.0.5.aab 73678608 c50f1bb389193c64e5c1fb297ee9536ba885bf134b981a58781657832602233c

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.4 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 01 Nov 13:13

Blockerino 2.0.4

Партия без фризов, тень фигуры при перетаскивании, обучение для новичков, Stockfish в шахматах, задачи и разбор партий.

📥 Скачать

Артефакты (версия 2.0.4, сборка 16), выкладываются в GitHub Releases как v2.0.4:

🎮 Что нового

Блоки

  • Без фризов. Открытие партии больше не замораживает игру на несколько секунд, ходы не подтормаживают: поле читалось из анимационного потока по разу на каждую клетку, теперь один раз.
  • Тень фигуры. Пока тянешь фигуру, на поле видно, куда она встанет; строка или столбец, которые сгорят, подсвечиваются целиком.
  • Обучение. В первой игре мини-поле само показывает, как перетаскивать фигуры и сжигать линии.
  • Скины. Блоки почти чёрных цветов больше не теряются на тёмном поле; 20 вариантов скинов (Обсидиановая кузня, Розовый кварц и др.) получили свои цвета вместо цветов базового скина; превью в магазине показывает настоящие блоки.
  • Окно «Незаконченная игра» не срабатывает от случайного касания, а «Начать заново» просит подтверждение.

Шахматы

  • Stockfish 10 работает внутри игры отдельной программой, ничего докачивать не нужно.
  • Шесть ботов-мастеров от 1600 до 2800 Elo на Stockfish.
  • Разбор партии: точность, зевки, ошибки и неточности, лучший ход для каждой ошибки.
  • Задачи: 600 задач из базы Lichess со своим рейтингом задач.
  • chess.com: привязка аккаунта по нику и его рейтинги для сравнения.
  • «Ваши рейтинги» крупнее и не похожи на кнопки.

Профиль и интерфейс

  • Вошедшие игроки могут сменить имя в профиле (раз в 30 дней, рейтинги «Ещё игр» переходят на новое имя). Имя меняется только в профиле, карандашом.
  • Игра больше не зависит от системного размера шрифта Android.
  • Новая иконка и заставка без обрезанного блока.
  • Первый запуск на языке телефона; смена языка в партии её не сбрасывает.
  • Одна кнопка «Назад» на экран: внутри шахмат она ведёт на шаг назад. В настройках во время игры — «Продолжить».
  • Магазин, режимы, «Бот» и сообщения Дурака переведены; кнопка «Бито» в Дураке.
  • Дурак, крестики-нолики, судоку и морской бой помещаются на экран телефона.

🧪 Проверки

  • npx tsc --noEmit без ошибок, npx jest 65 наборов / 371 тест, SQL-тест rename_player на локальной базе.
  • Вживую на телефоне: открытие партии (замирания JS 0,6 с вместо 6,6 с), ходы без замираний, тень и подсветка линии, вспышка при очистке, бот Omega 2800 на Stockfish, разбор партии, решение задачи, «Назад» по шагам, магазин на русском, окно «Незаконченная игра».
  • В браузере: обучение первой игры, «Бито» в Дураке против бота.
  • Не проверено вживую: онлайн-Дурак на двух аккаунтах, смена имени на боевой базе (миграция применяется при пуше в main).

🚀 Развёртывание

Миграция 20261031100000_rename_player.sql применяется пушем в main.

runtimeVersion = 2.0.4. В сборках 2.0.0–2.0.3 в android/.../strings.xml оставалась runtime-версия 1.0.6, поэтому OTA-пакеты для 2.0.2 до установленных приложений не доходили. В 2.0.4 она исправлена: OTA-обновления для 2.0.4 будут доходить.

Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main → app_config.android_version. В Google Play: новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.4.aab).

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.4.apk 55085878 b8aa3a3ed1393d90e04ec329941ca0fc7e51c2f4055e70ef8c7728dc6bafee43
blockerino-2.0.4.aab 73553903 36a81627e8092fb50e2ce6d82258e64a9cc0b3899924b81365caee68a64e5fa8

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.3 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 28 Oct 22:52

Blockerino 2.0.3

Анимации карт в Дураке, переделанный Маджонг, звуки шахмат громче, рекорды в челленджах.

📥 Скачать

Артефакты (версия 2.0.3, сборка 15), выкладываются в GitHub Releases как v2.0.3:

🎮 Что нового

Дурак

  • Карты летают по столу. Раздача из колоды в начале партии, добор после раунда, уход карт в «бито» за край стола и подбор карт тем, кто взял. Работает одинаково против бота и онлайн.
  • Летящие карты лёгкие (без значков мастей), а слой анимации обновляется сам, не перерисовывая весь стол: раздача на 12 карт не тормозит.

Маджонг

  • Поле на 62 плитки в три слоя вместо 36, плитки крупнее и объёмные.
  • Заблокированные плитки затемнены, а не полупрозрачные: нижние плитки больше не просвечивают.
  • Кнопка «Подсказка» подсвечивает пару на 2,5 секунды (раньше одна пара была подсвечена всегда).
  • Знаки 一, 二, 三 заменены на 四, 五, 六, чтобы плитки не путались. Поле по-прежнему всегда решаемо.

Шахматы

  • Звуки ходов, взятий, шаха и результата стали громче (средняя громкость до +8 дБ), чтобы их было слышно поверх музыки.

Челленджи

  • В списке челленджей «Best» теперь показывает лучшее из локального и серверного рекорда (раньше читался только локальный и мог быть нулём).

🧪 Проверки

  • npx tsc --noEmit без ошибок, npx jest 60 наборов / 351 тест (в том числе новая проверка решаемости Маджонга).
  • Дурак вживую: против бота на телефоне (раздача, «бито», добор), онлайн на двух клиентах с локальной базой (раздача 12 карт, «взять», добор, счётчики сходятся, зависших карт нет).
  • Маджонг вживую на телефоне: подсказка, ход, открытие нижних плиток.
  • Не проверено вживую: «бито» онлайн (тот же код, что против бота), звуки шахмат на устройстве, «Best» на аккаунте с серверными очками.

🚀 Развёртывание

Миграций нет. runtimeVersion остаётся 2.0.2: нативных модулей не добавлено, поэтому установленные 2.0.2 могут получить эти правки и «по воздуху» (GitHub → Actions → EAS Update), без установки APK.

Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main → app_config.android_version. В Google Play: новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.3.aab).

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.3.apk 53985758 2e1e37b6ee777c6f2191301f0af6c462dc680cc92aab9dff40e22491761bc420
blockerino-2.0.3.aab 73279512 76e19ecf0b1b2817b68c9130d977f42c815af56ab9f805fc39a35f1b7e246e26

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.2 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 28 Oct 20:08

Blockerino 2.0.2

Фото в аватарке, жалобы на фото, исправления входа и удаления аккаунта, задания дня без путаницы после обновления.

📥 Скачать

Артефакты (версия 2.0.2, сборка 14), выкладываются в GitHub Releases как v2.0.2:

🎮 Что нового

Профиль

  • Фото вместо смайла. В окне аватара теперь одна кнопка «Загрузить фото»: выбираете картинку, она обрезается до квадрата и сжимается до 256×256. Системный выбор фото, лишних разрешений не требуется.
  • «Удалить фото» убирает картинку; при замене и при удалении аккаунта старые файлы стираются из хранилища.
  • Жалобы: в профиле другого игрока появилась ссылка «Пожаловаться на фото» (причины: неприемлемое, личная информация, другое). Жалобы рассматриваются вручную, см. docs/moderation.md.
  • Загруженное фото больше не заменяется картинкой из Google или Discord при входе.
  • Имя игрока в профиле не затирается именем из Google при повторном входе.

Игры

  • Приглашение друга в Durak, Sea Battle и Tic-Tac-Toe. Хост создаёт комнату, под кодом появляется список друзей (онлайн первыми) с кнопкой «Позвать». Друг видит окно приглашения, нажимает «Принять», игра открывается и сама заходит в комнату. Работает, пока у друга открыто приложение (как вызов в шахматы).
  • Шахматы: вызов друга и игра по коду. Исправлена ошибка, из-за которой у второго игрока партия не выходила с экрана «Подключаемся» (у хоста доска была, у гостя бесконечная загрузка). Вызывающий теперь видит «Ждём {имя}», а не «Соперник найден». Это исправление уже вышло по воздуху для 2.0.0 и 2.0.1.

Исправления

  • Удаление аккаунта у гостя (без входа) больше не показывает ошибку связи.
  • Бонус заданий дня не показывается собранным, если не все задания выполнены (после обновления посреди дня набор заданий менялся).
  • Кнопка «Отмена» в окне аватара больше не показывается как COMMON.CANCEL.

Внутри

  • Версия 2.0.2, runtimeVersion 2.0.2: в сборку добавлены нативные модули expo-image-picker и expo-image-manipulator, поэтому установленные 2.0.0 и 2.0.1 получают эту версию только обычным обновлением (не «по воздуху»).
  • Разрешение камеры из expo-image-picker заблокировано: игра её не использует.
  • Политика конфиденциальности дополнена пунктом о фото профиля.

🧪 Проверки

  • npx tsc --noEmit без ошибок, npx jest 59 наборов / 348 тестов.
  • npm run db:check: все SQL-тесты PASS, включая avatar_uploads.sql.
  • npm run e2e:avatar-storage: 15 проверок хранилища и жалоб на локальной базе (запись только в свою папку, лимит 300 КБ, только картинки, чтение по ссылке, замена и удаление чистят папку, жалобы).
  • Проверено вживую на двух клиентах (браузер, локальная база): вызов друга и партия в шахматах (ход доходит до соперника), приглашение в Tic-Tac-Toe, приглашение в Versus 1v1. Загрузка фото с телефона и приглашения в Durak и Sea Battle вживую не проверялись.

🚀 Развёртывание

Миграция (применится пушем в main, только новые объекты):

  • 20261030100000_avatar_uploads.sql: бакет avatars (публичное чтение, 300 КБ, jpeg/png/webp, запись только в свою папку), таблица avatar_reports, функция report_avatar.

Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main → app_config.android_version. В Google Play: новый выпуск в «Закрытое тестирование – Alpha» (blockerino-2.0.2.aab) и в «Безопасности данных» добавить тип «Фотографии».

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.2.apk 53980238 04e3d40764a550edf909d11ec8a4a45f4cc4a5bdaf27c2223c9b71683275b071
blockerino-2.0.2.aab 73273564 8e08496d5e4db7db24ae618ff39ee8f2f54b7d15c97cb8614b9c92138bd4656c

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.1 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 28 Oct 16:06

Blockerino 2.0.1

Шахматы как на chess.com: контроль времени с часами, рейтинг Elo, боты с характером, вызовы друзей и поиск соперника. Новые ежедневные задания.

Это обновление внутри линейки 2.0. Нативных изменений нет, runtimeVersion остаётся 2.0.0, поэтому установленные 2.0.0 могут получить JS-часть и по воздуху.

📥 Скачать

  • APK: blockerino-2.0.1.apk · сборка 13
  • AAB: blockerino-2.0.1.aab · сборка 13 (для Google Play Console)

Размеры и SHA-256: см. раздел «Артефакты» ниже.

🎮 Что нового

Шахматы

  • Контроль времени: пуля, блиц, рапид, выбор «Время» с раскрывающейся панелью и своим временем (ползунки минут и добавки).
  • Часы, сдача, ничья, отмена партии, выбор фигуры при превращении, PGN.
  • Рейтинг Elo по классам (пуля / блиц / рапид), старт 1000, хранится на сервере.
  • Боты с фиксированным Elo и адаптивный Echo, пиксельные лица, новые боты открываются победами.
  • Вызов друга и поиск случайного соперника по рейтингу; Quick Match также в Versus 1v1.
  • Меню в стиле chess.com, пиксельные иконки, плавное движение фигур с подсветкой шаха, синтезированные звуки (ходы, взятия, шах, рокировка, превращение, результат, тик при малом времени).

Остальное

  • Ежедневные задания: пул из 28 видов, меняются каждый день.
  • «Другие игры»: первыми идут шахматы и Дурак.
  • Ссылка на GitHub в «О игре».
  • Название в магазине: Blockerino: Pixel Duels.

🧪 Проверки

  • npx tsc --noEmit без ошибок, npx jest 58 наборов / 345 тестов.
  • npm run db:check: все SQL-тесты PASS (включая chess_ratings, chess_matchmaking, chess_friend_ratings, daily_quests).
  • npm run e2e:chess-rpc: серверные проверки пройдены.
  • Не проверено вживую: игра двух устройств через поиск/вызов, звуки на телефоне, миграции на боевой базе.

🚀 Развёртывание

Миграции (применятся пушем в main):

  • 20261028100000_daily_quest_pool.sql
  • 20261029100000_chess_ratings.sql
  • 20261029110000_chess_matchmaking.sql
  • 20261029120000_chess_friend_ratings.sql

Порядок по docs/release-process.md: релиз на GitHub → «релиз сделал» → пуш в main → app_config.android_version.

📦 Артефакты

Файл Размер, байт SHA-256
blockerino-2.0.1.apk 53549031 16a2b7afcf43c7c31363cf52e4e0c3c2674ed4b359646e3d6cd5a58f18792acc
blockerino-2.0.1.aab 72867895 bd104b06b609e122ea6282b92ebb2994d216f0396b726e8ab354adb4d2bfc6be

AAB подписан ключом загрузки, APK подписан отладочным ключом.

Blockerino 2.0.0 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 26 Oct 10:51

Blockerino 2.0.0

Профили игроков, приглашения в 1v1 по пушу, новые челленджи Rescue и Combo Trial, переработанное лобби Versus, карточка результата, удаление аккаунта, обновления «по воздуху» и сборка для Google Play.

📥 Скачать

Артефакты собраны (версия 2.0.0, сборка 12) и должны быть выложены в GitHub Releases как v2.0.0:

🎮 Что нового

Игра

  • Rescue: старт с забитого поля (28–34 блока), без готовых линий. Полная очистка поля даёт +300.
  • Combo Trial: очки за линии ×2, но цепочка рвётся уже после двух ходов без очистки.
  • У обоих режимов есть общий рейтинг во вкладке «Рейтинг» челленджей. Заглушек «Скоро» больше нет.
  • Уведомление о достижении больше не перекрывает окно ежедневной награды: тосты ждут, пока оно закроется.

Versus 1v1

  • Новое лобби: карточка игрока (аватар, лига, Elo, кнопка «ТОП»), ввод кода комнаты в одну строку, полоса «Друзья» с зелёной точкой онлайн и кнопкой «Позвать». Тап по карточке открывает «Мой рейтинг».
  • Приглашения: выбор Classic или Chaos перед отправкой; друг получает пуш, даже если приложение закрыто (приглашение живёт 3 минуты) или всплывающее окно, если оно открыто.
  • Друзья онлайн отмечены зелёной точкой и в списке друзей.

Профили и друзья

  • Профиль игрока: рекорды по режимам, записи против людей и ботов по всем играм, три самых редких достижения, награды за топ.
  • Приватность: кто видит ваш профиль: все, друзья или никто.
  • Рекорды по играм синхронизируются между устройствами.
  • Карточка результата: кнопка «Поделиться» после игры.

Аккаунт и «Другие игры»

  • Экран «Другие игры»: блок аккаунта свёрнут в одну строку (ник, «Войти»), игры стали выше.
  • Удаление аккаунта в профиле и на странице /delete-account (требование Google Play).
  • Политика конфиденциальности и условия обновлены; переключатель аналитики называется «Помогать улучшать игру».

Платформа

  • Discord Activity: Rich Presence с режимом и экраном игры.
  • Обновления по воздуху (OTA): приложение спрашивает у Expo новый JS-пакет для своей runtimeVersion (2.0.0). Публикация только вручную, см. docs/release-process.md.
  • Сайт: заголовки и описание страниц, превью для соцсетей, sitemap.xml, robots.txt. Шаблоны Issues и Discussions.
  • Скрыта навигационная панель Android в игре; ники на кириллице отображаются шрифтом PixelifySans.

🛠 Развёртывание (после публикации APK)

Порядок из docs/release-process.md: релиз на GitHub, затем слова «релиз сделал», затем всё ниже.

  1. Миграции: 17 штук, в боевой базе их ещё нет (последняя применённая: 20261020100056_season_rewards_and_grace). Пуш в main применяет их сам по порядку через интеграцию Supabase ↔ GitHub:
    1. 20261020120024_profile_integrity.sql
    2. 20261020122158_versus_elo.sql
    3. 20261020140000_shop_catalog.sql
    4. 20261020150000_durak_escrow.sql
    5. 20261020160000_analytics_events.sql
    6. 20261020170000_season_rewards_server_grant.sql
    7. 20261020171000_daily_streak.sql
    8. 20261020180000_notifications.sql
    9. 20261020190000_realtime_publication.sql
    10. 20261021100000_crash_reports.sql
    11. 20261021110000_achievement_rewards.sql
    12. 20261021120000_daily_quests.sql
    13. 20261021130000_crash_digest.sql
    14. 20261022100000_player_profiles.sql
    15. 20261022110000_invites_presence.sql
    16. 20261022120000_delete_account.sql
    17. 20261026100000_challenge_highscores.sql
      Все 17 проверены на чистой локальной базе (npm run db:check), на боевой применяются впервые. Без них клиент 2.0.0 не отправляет рекорды (функции submit_high_score на боевой базе пока нет): рекорды ждут в офлайн-очереди и уйдут после миграций.
  2. Функция пушей: supabase functions deploy send-push --project-ref ptcglecvavdvpxadqfqd (добавлен тип invite).
  3. Cron и секрет для пушей: шаги 4–6 из docs/push-notifications.md.
  4. Обновить android_version в app_config (только после проверки, что APK скачивается):
UPDATE public.app_config
SET value = jsonb_build_object(
  'latestVersion', '2.0.0',
  'latestBuildNumber', 12,
  'downloadUrl', 'https://github.com/Nerdlin/blockerino/releases/download/v2.0.0/blockerino-2.0.0.apk',
  'releaseNotes', 'Rescue and Combo Trial challenges, a new Versus lobby with online friends and push invites, player profiles, share cards, account deletion.',
  'isMandatory', false
)
WHERE key = 'android_version';

⚠️ Известные ограничения

  • Пока миграции не применены, рекорды всех режимов остаются в офлайн-очереди приложения и уходят на сервер после применения (на боевой базе нет submit_high_score).
  • Профили, приглашения по пушу и удаление аккаунта работают только у клиентов 2.0.0 и новее и только после миграций 14–16.
  • Google Play: личный аккаунт, нужен закрытый тест (12 тестировщиков, 14 дней); публикация в магазине не входит в этот релиз.
  • APK подписан отладочным ключом (как 1.0.6–1.0.10), поэтому ставится поверх 1.0.10. AAB подписан отдельным ключом загрузки (blockerino-upload.jks, хранится вне репозитория, нужна резервная копия).
  • Уведомления Firebase для com.nerdlin.blockerino настроены; реальная доставка пуша проверена на тестовом устройстве.

✅ Проверки

  • TypeScript: npx tsc --noEmit — 0 ошибок.
  • Тесты: npx jest — 48 наборов, 272 теста успешно.
  • SQL: npm run db:check — все 40 миграций применяются на чистой базе, 14 проверочных файлов проходят (в том числе challenge_highscores.sql).
  • E2E (два игрока, локальная база): 12 из 12 сценариев (крестики-нолики, шахматы, морской бой, дурак, боты, квесты, профили, приглашения, удаление аккаунта).
  • В APK встроен боевой адрес Supabase и нет локального.
Технические сведения
  • Версия: 2.0.0 · Номер сборки: 12 (versionCode 12).

  • runtimeVersion: 2.0.0.

  • Архитектуры: universal (arm64-v8a, armeabi-v7a, x86, x86_64).

  • Размер APK: 53 365 447 байт.

  • Размер AAB: 72 742 265 байт.

SHA-256 контрольные суммы:

APK: 1C7DD17874656F7B6D3DC931651AA8861294364CA30D97CCC0F6F6BA2BE21A0F
AAB: 420674E59AA183690DAFACEF18BD6BA56C1E159500C226D98F7A3DA694B11F79

Отпечаток ключа загрузки (AAB): DA:E7:84:66:E1:00:BC:DD:E6:40:F8:4E:39:8A:BD:CD:18:47:C3:73:18:1C:99:EC:D3:6D:60:66:D4:73:7B:BC.

Blockerino 1.0.10 — Android

Choose a tag to compare

@Nerdlin Nerdlin released this 20 Oct 10:52

Blockerino 1.0.10

Награды и итоги сезонов, титулы в профиле, уведомление о сбросе рейтинга Versus, исправление стола в Durak на телефонах.

📥 Скачать

Артефакты собраны (версия 1.0.10, сборка 11) и должны быть выложены в GitHub Releases как v1.0.10:

🎮 Что нового и исправлено

Сезоны

  • Итоги сезона: в рекордах появилась кнопка «Итоги прошлого сезона» с финальным топ-10 по Classic, Chaos и Versus.
  • Награды за топ-10: монеты за место (1-е: 1000, 2-е: 700, 3-е: 500, 4–5-е: 300, 6–10-е: 150, за каждый рейтинг отдельно). Призёры (1–3 места) получают эксклюзивный фон: золотой, серебряный или бронзовый. В магазине эти фоны не продаются.
  • Окно наград: после закрытия сезона в главном меню один раз показывается, что получено. Награда не теряется, даже если приложение закрыли до зачисления.
  • Титулы: прошлые места в топ-10 остаются в профиле навсегда («Чемпион · Classic · 2026-09»).
  • Сброс рейтинга Versus больше не молчит: окно показывает «Рейтинг Versus: 1200 → 600». В конце каждого сезона рейтинг делится пополам.
  • Последний вечер месяца не теряется: результат, отправленный после полуночи 1-го числа (например, из офлайн-очереди), засчитывается в старый сезон. Закрытие сезона перенесено на 2-е число в 00:05 UTC.

Durak

  • Стол помещается на экране телефона, карты перетаскиваются на iOS (сборка веба, вошла в этот релиз).

✅ Проверки

  • TypeScript: npx tsc --noEmit — 0 ошибок.
  • Тесты: npx jest — 26 наборов, 145 тестов успешно.
  • SQL: close_season(), submit_season_score() (окно ожидания) и claim_season_rewards() проверены на тестовых данных внутри откаченной транзакции.
Технические сведения
  • Версия: 1.0.10 · Номер сборки: 11 (versionCode 11).

  • runtimeVersion: 1.0.10.

  • Архитектуры: universal (arm64-v8a, armeabi-v7a, x86, x86_64).

  • Размер APK: 52 478 508 байт.

  • Размер AAB: 72 014 302 байт.

SHA-256 контрольные суммы:

APK: 9EB0176F372278F717431393EAC7646CA657576892967205AEFFC6F74B362FF4
AAB: E629DED90B55FC239D0CD07D75B26E4CF9A6BA090E1C54D1344DA445F54F110E