VERSION HISTORY
WHAT'S NEW
Latest first. Production, Staging, and Development use the same release notes.
VIEW ALL SOURCE ON GITHUB ↗Feedback, accounted for
The owner control panel can count unresolved feedback exactly and safely mark individual items done.
- Added exact new, reviewed, closed, and unresolved feedback counts independent of the bounded item list.
- Added a separate short-lived feedback-management grant and an idempotent close action.
- Recorded privacy-safe feedback completion events with normalized routes and no feedback content.
Invitations, copied
Multiplayer invitations now copy straight to the clipboard instead of opening the operating system share sheet.
- Replaced the native share dialog with one direct Copy invitation link action.
- Confirmed successful copies in place and kept the private link selectable when clipboard access is unavailable.
Riot Bot on the board
Solo replies now appear locally almost at once and both plies are saved together by one authoritative request.
- Ran the same deterministic Riot Bot search in the browser and on the server, preserving every level’s evaluation, depth, and node budget.
- Showed the human move first, then its predicted bot reply, while keeping the board locked until the server confirms the turn.
- Revalidated the bot reply server-side and atomically stored the human and bot plies in one database batch.
- Removed the second bot request and successful post-commit database reads while retaining pending-turn recovery for older or interrupted games.
Riot Bot, right away
Riot Bot now answers promptly even when the hosted edge freezes its runtime clock during search.
- Added a deterministic node cap alongside the existing elapsed-time search budget.
- Kept every bot level’s depth, move ordering, evaluation, and tactical checkmate behavior unchanged.
- Added a frozen-clock regression that reproduces the hosted runtime and bounds Level 5 search.
Community within reach
The ChessRiot WhatsApp community is now one tap away from both the public homepage and the in-game App panel.
- Added a clear WhatsApp community link to the public homepage.
- Added the same link to the App panel without interrupting the current game.
- Centralized the destination and opened both placements safely in a separate tab.
Your turn, even when closed
A multiplayer seat can now opt one browser into a generic turn notification for one game, including after ChessRiot is closed.
- Added opt-in Web Push turn alerts to each multiplayer game’s App panel.
- Bound every browser subscription to one game and one authorized seat, so disabling one game leaves that device’s other game alerts intact.
- Delivered notifications only after a committed opponent move, with duplicate suppression, stale-endpoint cleanup, and no private seat key or player detail in the payload.
- Restricted push endpoints, validated notification navigation, and kept delivery best-effort so a push-service failure can never affect the chess move.
Riot theme verified
The release checks now follow the new flat Riot default.
- Updated rendered-page regression coverage from the retired Blockfield label to Riot.
Crisp 2D chess
The board and pieces now use one clean, modern 2D visual system instead of bevels, block shadows, and platform-dependent glyphs.
- Introduced six original flat vector silhouettes shared by live play, drag, promotion, captures, replay, recent games, and checkmate.
- Rebuilt board squares, frames, coordinates, move targets, captures, selection, and check states with solid color and clean rings.
- Made Riot the fresh teal-and-ivory default while preserving every existing theme as a palette choice.
- Replaced the tilted homepage mock board with a front-on 2D board using the same production pieces.
One game, still moving
The 90-second demo now follows Ron and Omri through one asynchronous match, with the video filling the page instead of sitting below a large headline.
- Replaced the feature-list narration with a complete story from warm-up through invitation, reply, return, and replay.
- Made the video occupy roughly 90–94% of the viewport width and reduced the page heading to a compact label.
- Reordered the real interface captures around the story while removing inactive Magic Rules from the narration.
- Versioned the storyboard contract so an outdated Control build cannot publish stale video over the current story.
ChessRiot in 90 seconds
A narrated, captioned walkthrough now shows Solo, themes, replay, and private multiplayer before you start a game.
- Added a public 90-second demo page linked directly from the homepage.
- Built the walkthrough from current Development interface captures with narration, subtitles, and audio.
- Separated video regeneration from application releases by publishing validated media through a versioned R2 manifest.
- Added a signed, owner-only, rate-limited regeneration lane for the ChessRiot Control panel.
Cleaner foundations
Shared gameplay presentation and request logic is now easier to maintain without changing how ChessRiot plays.
- Centralized board orientation, piece labels, difficulty labels, outcome text, and live status text.
- Centralized new-game request payloads and authenticated client request helpers.
- Added focused regression tests while preserving the Magic Rules Coming Soon boundary.
Magic safely paused
Magic Rules remain visible, but new rule entry is paused while the feature develops in isolation.
- Replaced new-game Magic rule entry with a clear Coming Soon placeholder.
- Removed the runtime LLM compiler, its endpoint, and its token-consuming path from the stable release.
- Moved active Magic development to an isolated feature branch and preview lane.
Solo from the start
New games now open in Solo mode, while preserving White's first move in every game.
- Selected Solo by default on the new-game screen and showed the Level 3 Riot Bot control immediately.
- Kept Multiplayer one tap away without changing either mode's saved behavior.
- Added regression coverage for the default selection and the existing White-first invariant.
First-move history fix
Back now works even while the first Magic move of a game is still being staged.
- Kept the Back arrow available at ply zero when a staged Magic position is visible.
- Made Back cancel that draft and reveal the authoritative starting position.
History polish
History now follows the position you can actually see, with stronger mobile and keyboard behavior.
- Kept the immediately previous position available while a Solo move is shown optimistically.
- Made Back from a staged Magic first leg return to the latest authoritative position without skipping a ply.
- Removed historical board squares from keyboard navigation while keeping their position labels available.
- Moved history controls outside the live status announcement and enlarged their mobile touch targets.
- Restored focus safely after move confirmation, including promotion and committed-move flows.
- Clarified that Confirm every move is stored in the current browser.
History at hand
Browse earlier positions directly on the board and optionally confirm every move before sending it.
- Added always-visible Back and Forward arrows that step through committed positions without changing the live game.
- Kept historical viewing pinned when a new move arrives, with a direct Go Live control and frame-specific check, captures, and last-move highlights.
- Added a browser-local Confirm every move setting that is off by default.
- Applied one confirmation to every human move path, including tap, drag, promotion, and complete atomic Magic turns.
- Blocked stale and duplicate confirmations before they can submit a move.
One front door
ChessRiot now has one fixed public homepage and direct guest play with no login gate.
- Made the public homepage identical for every visitor, independent of hosting identity and saved game theme.
- Moved new-game setup to /app and enabled guest Solo and Multiplayer creation with a display name.
- Made private seat links authoritative for guest play while preserving existing account memberships and older games.
- Limited themes to active games so public, setup, invitation, changelog, loading, and error pages keep one consistent style.
- Removed all user-facing login prompts and kept the retired CAPTCHA path absent.
Direct entry
Players now enter ChessRiot immediately, without a separate human-check screen.
- Removed the Turnstile screen, verification request, and CAPTCHA-bound application session.
- Kept trusted hosting identity, account-bound game membership, request-origin checks, and account rate limits.
- Retired the old CAPTCHA endpoint and redirected existing verification entry points safely into the game.
Knights move twice
Magic knights can now move twice, and game requests work correctly inside the production sandbox.
- Made “Knights move twice.” a real deterministic Magic Rule for Solo and Multiplayer games.
- Generalized atomic two-leg turns so the same enabled rook or knight may move again, while a checking first leg still ends the turn.
- Kept existing v1 Magic Rule documents readable and unchanged while storing knight-enabled games in the compatible v2 schema.
- Extended tap, drag, keyboard, replay, move history, labels, and Riot Bot play to two-step knights.
- Fixed the production request-origin blocker without relaxing cross-site protection.
Magic Rules
Every new Solo or Multiplayer game can optionally carry its own safe, immutable rule changes.
- Added an optional Magic Rules box to game creation with a concise natural-language prompt.
- Compiled recognized prompts into versioned rules and rejected unsupported text instead of executing arbitrary code or silently ignoring it.
- Added atomic two-step rook turns: the same rook may move again before the turn ends, while giving check ends the turn immediately.
- Added no-promotion, no-castling, and no-en-passant rules with server, client, replay, and Riot Bot enforcement.
- Showed Magic Rules before joining, during play, in replay and move history, and on My Games cards.
Every game, every turn
A complete My Games history and account-aware alerts make asynchronous play reliable across devices.
- Added cursor pagination so My Games can reach the complete account history instead of stopping at 50 games.
- Added clear Your turn, Opponent's turn, Waiting, Won, Lost, and Draw states to every game card.
- Made open-app opponent-move alerts watch all owned multiplayer games through the account session.
- Removed the alert dependency on a legacy private-seat token or the currently open game route.
- Added a clear Switch Account action through the trusted ChatGPT sign-out flow.
Secure accounts and a bigger board
Account access, a human check, a board-first layout, and original illustrated themes make ChessRiot safer and more immersive.
- Required a ChessRiot account and server-verified CAPTCHA before any game could be created or played.
- Added account-bound game access, per-account rate limits, and bot-turn leases to reduce automated abuse and duplicate AI work.
- Made the board fill the available desktop or mobile viewport and collapsed secondary match tools.
- Showed the starting position before animating Riot Bot’s White opening when the player starts as Black.
- Placed captured Black pieces with White and captured White pieces with Black.
- Added seven original illustrated theme backgrounds, including medieval army and moonlit castle styles, plus two new themes.
Viewport clearance
Short desktop and landscape layouts keep the board, replay, and controls usable.
- Kept the complete game board above the utility dock across common desktop heights.
- Preserved usable game and replay board sizes in short landscape viewports with vertical scrolling.
- Added clearance after the final mobile card and compacted replay controls around the board.
- Removed a duplicate checkmate announcement and made invalid deadline text neutral.
A more personal async game
Themes, replay, safe reactions, install support, and real move deadlines deepen every match.
- Added nine original themes for the app, board, pieces, panels, and background.
- Added an accessible visual picker that works from every route and synchronizes across tabs.
- Added six rate-limited, preset-only multiplayer reactions, a per-game hide control, and a 15-minute Good Game or Thanks courtesy window.
- Added a short theme-aware victory finisher with reduced-motion support.
- Added a read-only game replay with step controls and keyboard navigation.
- Added one, three, or five-day multiplayer move deadlines, defaulting to three days.
- Added installable PWA support, an unseen-release dot, and opt-in open-app opponent-move notifications.
- Made the exact release version visible on every route and state.
Instant move polish
Immediate solo moves now keep their sound and complete observability trail.
- Restored one accepted move or capture sound for the human ply.
- Restored game-completion telemetry when Riot Bot delivers the final move.
- Kept race telemetry limited to the move that actually committed.
Instant solo moves
Your piece now moves immediately while Riot Bot thinks in the background.
- Added a reversible local preview for every legal solo move before the server response arrives.
- Made the human move durable and visible before Riot Bot starts its reply.
- Added background bot-turn recovery so refresh or browser closure cannot strand a solo game.
Unmistakable piece colors
White and Black now use the same solid voxel-piece shapes with clearly contrasting colors.
- Replaced hollow White glyphs with solid light pieces so the player color cannot look inverted.
- Reduced the bright outline on Black pieces so they read as Black at a glance.
Laptop viewport polish
The complete board now stays inside a common laptop viewport at normal browser zoom.
- Tightened the desktop height cap after real-browser visual QA so the board no longer clips at the bottom.
A clearer, complete game board
The board now fits shorter screens, makes player colors and check unmistakable, and adds captured pieces and game-ending controls.
- Made the full board fit common laptop screens at normal browser zoom and increased important label sizes.
- Added explicit White and Black player cards plus captured-piece trays.
- Highlighted the checked king and explained exactly when a move fails to answer check.
- Added New Game and confirmed End Game or Cancel Game actions.
- Renamed computer difficulty to bot level.
A faster start and clearer releases
A much simpler home screen, visible board motion, in-app feedback, and a public version history.
- Simplified the new-game flow around name, mode, difficulty, and one primary action.
- Added short move and capture animations with reduced-motion support.
- Added a feedback form and an owner-only feedback pool.
- Added this changelog to every environment.
Correct solo turns and observability
Riot Bot can now play either color correctly, chess draw rules are more precise, and operations are visible per environment.
- Riot Bot opens automatically when it is White.
- Added claimable and automatic FIDE draw handling.
- Added privacy-safe health, action, error, and latency telemetry.
Version safety
Changed deployments can no longer silently reuse or decrease the app version.
- Added a single SemVer source and release commands.
- Added build-time checks for reused or inconsistent versions.
Solo play and drag controls
Play Riot Bot at five difficulty levels, or drag pieces in multiplayer.
- Added persistent solo games against Riot Bot.
- Added five difficulty levels with Medium as the default.
- Added mouse and touch drag-and-drop while preserving tap and keyboard input.
Portable private links
Private player links now work across computers and the game has a block-world visual identity.
- Embedded the private seat credential safely in the URL fragment.
- Added explicit private-link sharing and cross-device recovery.
- Restyled the complete experience with an original voxel-inspired look.
Identity, sound, and resilience
The first polish release added ChessRiot’s visual identity, game sounds, and reliability fixes.
- Added move, capture, check, result, and invalid-action sounds.
- Added mute controls, clearer loading, and safer local storage.
- Improved invitation, status, and promotion interactions.
Playable async chess
The first public prototype let two people create, join, resume, and finish a legal asynchronous chess game.
- Added one-use invitations and private player seats.
- Added complete standard chess rules and immutable move history.
- Added persistent two-device play with server-authoritative state.