180 merged pull request updates, newest first.
Give pitch dice more time and clearer outcomes
Pitch dice now materialize and evaporate smoothly, with football graphics highlighting armor breaks, stuns, knockouts and casualty results. Important rolls stay visible longer, while required choices remain available until resolved. Live play, replay and reduced-motion views share the updated presentation.
Pace movement, dice and ball events consistently
Players now move smoothly at a steady pace, with grouped dice and ball bounces presented in native order before dependent decisions appear. Coaches and spectators follow events independently; replay speed, skipping and recovery retain their existing controls.
Highlight the square beneath the pointer
Moving a mouse, trackpad or hovering pen over the pitch now outlines the square beneath it while preserving player selection. The guide follows camera changes and hides beneath panels or special targeting, across coach, spectator and replay views.
Resize chat and game log independently
Chat and game log now offer minimized, default and maximized sizes, with saved choices and room for their dugouts and drive tracker. Minimized chat preserves its reading position and signals unread messages; the game log returns to the latest entries.
Make skill prompts smaller and rerolls clearer
Skill decisions now use compact circular prompts with a countdown, clear player pointers and a source picker when needed. Non-block rerolls offer available built-in skills first, Sidestep uses pitch arrows, and large Solid Defence setup responses remain recoverable.
Show negative player conditions on the pitch
Distracted, chomped, rooted, Dodgy Snack, Greasy Cleats and Eye Gouged now appear as red pitch symbols and alongside posture in the player card's Status list. A saved Interface setting controls the markers, which follow native effect lifetimes through play, replay and recovery.
Put camera controls beside match and replay menus
Coaches and spectators can now flip perspective and cycle through 30-, 40-, 50-degree and overhead views using visible match and replay buttons. Choices are retained for each match, and overhead view remembers the selected end for a return to angled play.
Repair match decisions and polish dice presentation
Adjacent Blitz and ordered Multiple Block targeting now continue through their required decisions more reliably. The roundup also steadies hover effects, restores drive-facing direction, prefers equivalent routes around a loose ball and presents paired injury dice once. Solid Defence and foul-bribe flows retain manual-review follow-ups.
Mark consumed limited actions above players
Gold pitch icons now identify the player who consumed a limited team action, with a saved Interface toggle. Tags follow players through movement, replay and recovery, then clear at the appropriate turn or drive boundary. Computer matches also avoid waiting behind workers that are idle for human input.
Clear stadium scenery for the next overhaul
Browser matches now show the existing turf without stadium architecture, crowd banks or sideline props, preparing the scene for a later overhaul. All 390 pitch squares, players, ball, controls and targeting remain available in live play, spectator views and replay.
Make live actions and match delivery more responsive
Confirmed actions now take priority over queued movement guidance, use a durable recovery journal and deliver match state with its event history. Immediate feedback and conservative movement previews reduce waiting, while native results, exact recovery and replay remain authoritative. Separate measurements track remaining latency.
Offer BB2025 Hail Mary passes and bombs
Pass and Throw Bomb actions now offer normal and Hail Mary modes with distinct controls and range guides. BB2025 resolution uses the player's Passing Ability, preserves eligible rerolls and prevents accurate Hail Mary results; Blizzard retains Quick and Short range limits.
Show block targets and counted assists
Block and Blitz previews now mark the blocking square, target and counted attacking and defending assists. Committed markers remain through dice choices, rerolls and skill prompts, including spectators, replay and recovery. Multiple Block keeps separate context and native dice choices for each target.
Save optional skill-use preferences
Coaches can choose Always Use or Always Ask for eighteen approved BB2025 skill-use cases in Game Settings. Preferences follow the account through play, reconnect and recovery, while required player or square choices and other eligible reroll resources remain available.
Refresh Play and Team Builder
Play now shares Team Builder styling, with Human and AI buttons and illustrated coach cards showing skill levels and upcoming opponents. Team Builder adds Save as new, unique account team names, editable fantasy recruit names, player counts and clearer roster details and validation feedback.
Meet Bogruk the Almost Clever
Bogruk joins the selectable computer coaches at Weak difficulty, pursuing touchdowns and taking occasional purposeful risks through an independent BB2025 policy. His identity survives save and resume. Acceptance work also repairs Secure the Ball reroll choices, spectator subscriptions and memory use when saving completed matches.
Clarify the standard delivery workflow
The documented usual method now carries agreed work through issue tracking, a working branch, implementation, review, validation and a results report. Publishing, merging and deployment are recorded as separately authorized steps, giving future handoffs a clearer stopping point.
Wait for reroll choices and artwork in browser checks
Browser validation now waits for the offered reroll state and its resource artwork before checking choices. A delayed-state and delayed-image regression covers those readiness boundaries, improving parallel local checks while preserving the existing gameplay assertions.
Plan movement and a ball transfer together
Coaches can now plan movement, pickup and a pass or handoff to a teammate before activating the player, then confirm the sequence once. Recipient changes preserve the route, right-click removes the transfer before waypoints, and native decisions pause and resume the committed plan.
Restore local sign-in after credential refresh
Local startup now repairs missing or incorrect development quota-project metadata in refreshed Google credentials, even when the access probe succeeds. The server restarts only when the credential file changes, restoring game sign-in without unnecessary restarts.
Keep every confirmed movement square visible
Movement playback now waits for each displayed board state to commit before starting the next delay. This prevents short timers from skipping confirmed squares, including reduced-motion playback, while cancellation clears pending beats and ball rotation retains its existing behavior.
Plan Jump, Leap and Pogo movement
BB2025 movement plans now support explicit Jump, Leap and Pogo segments, including approaches before Blitz or Foul. A compact Jump control shows legal landings, difficulty and Rush warnings; confirmation follows native commands, with rerolls and recovery preserving the chosen jump.
Display core player skills above the pitch
The 108 core BB2025 skills and traits can now appear as text badges or illustrated markers above players. Saved settings control teams, base and acquired skills, traits, size and presentation. Complete player cards, readable zoom limits and crowded-marker overflow remain available in live play and replay.
Offer timed BB2025 reactive skill decisions
Optional reactive skills now prompt the owning coach with native effects, required destinations and a server-enforced thirty-second deadline. Unanswered optional choices decline normally, while interrupted routes, nested reactions and reconnects retain their sequence. The update also corrects Shadowing, Dump-Off and Safe Pair of Hands handling.
Make the game log easier to read
The game log now shows a complete scrollable history with revised event wording and current block and numeric dice graphics. Compact text, tighter line spacing and coach-colored selection outlines improve readability across the main log, Game Settings, replay and recovered history.
Repair preparation, movement and BB2025 skill flows
Match preparation now stays connected independently of play, and older retained matches can be conceded. Space confirms proposals, Blitz preserves waypoints, Hand Off selects its receiver, and movement ranges update along planned routes. Hit and Run, stun recovery, kickoff bribes and computer apothecary flows also gain fixes or coverage.
Animate numeric dice in ordered roll groups
Native d6, d8 and d16 rolls now share the polygon-dice tumble, with grouped results, armor and injury captions and independent visibility. Numeric reroll choices and replay use the same presentation, preserving native outcomes, pending decisions, reduced motion and restored snapshots.
Compact the player action menu
Player actions now appear as eligible icon tiles with full-name tooltips, faded spent actions and a yellow selection highlight. End Turn moves beneath the active coach's timer, while Backspace uses the same confirmation flow. Pass and Hand Off declarations also allow collecting the ball during movement.
Keep follow-up decisions clear of the action
Follow-up prompts now sit near screen center while leaving the block initiator and destination arrow visible. Coaches can pan and scroll before deciding, and the movement preview follows the initiating player through chain pushes while preserving the original Yes and No commands.
Preview block strength with native polygon dice
Block and Blitz proposals now show the native signed dice count as hovering cubes, continuing through confirmation until the result arrives. One tumble reveals the authoritative faces, with red glows for uphill blocks and matching reroll presentation. Native rules and coach choices determine the outcome.
Explain apothecary injury choices
Apothecary prompts now name the injured player, pending injury and its effects, including stat reductions, niggling injuries and missed games. Distinct icons accompany Accept, Use, Keep and Choose options; multi-player treatment and remaining apothecary counts continue to use native decisions.
Place kickoff balls and compare Kick landings
Kick placement now follows the pointer with a snapping ball marker and submits on the first click. New browser matches offer Kick after deviation, showing normal and alternative landings linked by an arrow. Coaches can pan while comparing them; existing matches retain their saved timing.
Align local maintenance and Node tooling
Browser packages, computer-player tools and CI now use Node 26 consistently. A guarded local maintenance command previews stale-game cleanup before an explicit apply step, verifies transactional removal and restarts services while preserving accounts, saved teams, settings and archived backups.
Align the pixel ball with pitch perspective
The ball highlight now sits on the pitch plane, using a slowly rotating pixel ring and counter-rotating inner arrows. Loose footballs and their shadows scale with the projected square at every zoom; carried balls retain the marker without drawing a second football.
Switch player activations through the next action
Coaches can plan another player's activation without explicitly ending the current one; confirmation commits the switch and waits for any required native decisions. Movement and Foul can be reviewed together, teammate clicks distinguish recipients from activation changes, and queued actions survive checkpoint recovery.
Compare original and modular stadium studies
The development pitch preview now opens with the original stadium painting and offers hybrid-crowd and crowd-free modular wall studies. Artwork, provenance and review captures are retained. Asset synchronization preserves unchanged files, and camera checks wait for the pitch's measured size.
Provision a fresh local review database
A new explicit bootstrap service creates the isolated review database schema before daily local startup. Fresh-PC instructions cover container setup and credential files, while profile and data guards keep the bootstrap away from the retained development database.
Tidy site navigation and match interactions
The site now uses one sign-in or account link, and Game Menu options fit without horizontal scrolling. Matches gain straighter equivalent routes, right-click deselection, clearer Block and Blitz targeting, teammate throw ranges and longer idle connections. Legacy saved-team cleanup is limited to reviewed team records.
Follow each drive from setup to kickoff
A start-of-drive tracker now shows completed, current and upcoming BB2025 phases beneath the receiving team's resources. It skips inapplicable checks and highlights interactive kickoff events, then disappears before ordinary player actions. Replay and recovery retain compatible native phase information.
Recover Dodgy Snack checkpoints consistently
Match saves now order temporary stat modifiers consistently, fixing intermittent recovery failures involving Dodgy Snack. Existing snapshots are normalized after checksum validation, allowing valid saved games to restore without depending on the native modifier set's iteration order.
Inspect opposing movement threats
Selecting an unfinished friendly player now reveals opposing tackle zones and movement-skill threats during regular turns and Charge! Saved Game Settings control zone colors, Tackle warnings and striped skill areas. Local browser validation also gains isolated parallel shards with complete coverage checks.
Keep generated site output out of version control
Generated public-site files now stay local and ignored, with tracked source pages and build scripts providing the published inputs. The update removes previously tracked output and documents how rebuilding and Firebase Hosting assembly recreate it.
Add modular stadium crowds and accessories
Modular stadium pieces now combine mixed Human, Dwarf and Halfling supporters or Orc, Goblin, Ogre and Troll crowds. Rounded overhead stands, wall caps, recessed towels and spare jerseys complete the scene, with local gestures, source provenance and assembled review captures.
Outline player movement ranges
Selected players now show blue normal-movement and yellow Rush perimeters, with small warnings in Rush-only squares. Active players use their remaining allowance; inactive-team inspection shows the next activation. Ranges refresh after committed routes, while Jump, Leap and Pogo shortcuts remain outside the ordinary forecast.
Split validation by delivery environment
Validation now uses isolated native shards and checks browser coverage at the required deployment stage. Local review runs full browser checks before restart; DEV publication requires an explicit command and local preflight, while production verifies the exact tagged release before approval and publication.
Remove filled movement and risk markings
Live matches no longer show filled movement ranges, Dodge and Rush squares or risk legends from the earlier movement flow. Player selection, route lines, waypoint dots, right-click undo and single-confirmation Move and Blitz remain, with native legality, rolls and logs preserved.
Recover startup checks and diagnostic routing
Preserved startup and documentation work now joins the current implementation, including bounded DEV WebSocket health checks and production SSH readiness. Diagnostic routes retain the Play prefix, query and fragment, and project links return to the README. Browser fixtures also follow the revised movement flow.
Confirm movement and Blitz in one step
Selecting a player and destination now prepares movement for one confirmation, including adjacent squares. Waypoint dots unify route planning, right-click undoes the latest segment, and selecting an opponent prepares a Blitz approach. The change also introduced movement-range guidance later revised by subsequent updates.
Give game displays the full browser area
Coach, spectator and result-replay displays now hide the shared site top bar, giving the pitch and game controls more room. Play setup and ordinary site pages retain their navigation.
Use one logo across site headers
Every site page now shares the existing mole-and-wordmark logo at a consistent proportional size, alongside the same navigation and account menu. The account popover follows the header's actual position as fonts load, pages scroll and layouts resize.
Streamline Play setup and live controls
Play now puts game creation first and lists current games afterward using matchup cards with Resume and guarded Concede controls. Routine connection labels and duplicate setup hints are removed. Live log preferences are shared with Game Menu, and confirmation stays centered without the setup background bar.
Unify navigation and anchor action confirmation
Static pages now share one header renderer, navigation order and account highlighting. Match confirmation uses a fixed dock across setup and play, keeping previews and pending actions from moving its button. The account menu also scrolls on short screens so Sign out remains reachable.
Restore local game access and add account navigation
Local startup now provisions the current-games query index and limits concurrent computer workers, fixing unavailable game lists and exhausted browser connections. A shared My account menu adds sign-in state, sign-out and future account links with keyboard dismissal and mobile layout support.
Manage local computer-player startup and shutdown
Local review startup now launches the computer-player daemon and waits for registration before reporting readiness. Stop and restart manage the recorded daemon and its match clients, with hidden Windows console processes and checks for the required token and Node version.
Assemble packed Human and Orc stadium bowls
Human and Orc stadiums now assemble distinct modular paintings into dense crowd banks, wall runs and corners around a clear pitch apron. Home League selects architecture while each team supplies its supporters and bench details, with restrained gestures and preserved source artwork.
Explain block choices and resolved outcomes in the log
The Game Log now shows native block faces, the selected die and the coach making the final choice, including uphill blocks. Rerolls, skill use, pushes and knockdowns follow native order, with pending falling states waiting for resolution before a knockdown is reported.
Keep checks and rerolls in chronological order
The Game Log now preserves original trait checks, reroll sources, retry attempts and final results in order. Native mechanics and typed reports supply the thresholds and actor details, keeping the recorded history aligned with the actual sequence.
Narrate actions and committed movement
The Game Log now names native actions and primary rolls, including base and adjusted thresholds and outcomes. Movement summaries distinguish one planned route from separately confirmed steps. Saved Debug, Movement and Roll modifiers controls reformat the existing history as well as new entries.
Identify chat speakers by team and spectator number
Coach chat now uses team names, adding Home or Away only when names collide. Spectators receive stable numbered labels in muted violet after their first accepted message, consistent across viewers, paging, retries and restarts. System messages use Match.
Explain additional movement checks before confirmation
Movement guidance now identifies native pickup and jump targets alongside possible Diving Tackle, Tentacles and Shadowing reactions. Square details distinguish conditional effects from required rolls, use Secure the Ball's native target and show ball scatter for players unable to hold it.
Prepare modular Human and Orc stadium artwork
Original Human and Orc stadium sheets now provide measured modular pieces, source hashes and a generated asset catalog for the next renderer integration. The art follows shared pitch dimensions, a clear apron and two sideline portals, preserving the approved dense-bowl reference.
Show native movement difficulty by square
Movement squares and planned routes now show native Dodge difficulty and final Dodge and Rush targets before confirmation. Combined checks keep both labels, while safe squares retain their own color after earlier risks. Older projections and checkpoints remain readable.
Center player bodies and their shadows
Reviewed Human and Orc pose anchors now align visible torsos and feet with their pitch squares, correcting shifts caused by transparent padding and asymmetric artwork. Ground shadows follow the rendered contact point in angled and overhead views.
Add a pixel football and synchronized highlight
The ball now uses original pixel artwork with a shared pulse across its circle and arrows. Native possession hides the loose football while retaining the carried highlight, and ordered playback follows ball movement and possession changes. Out-of-play balls have no marker.
Validate stadium assets and record the delivery review
CI now checks canonical stadium assets before rebuilding can hide stale runtime copies. Generated catalogs retain consistent line endings, and a retrospective maps the original stadium plan to completed work, visual evidence and remaining performance, halftime and future-League verification limits.
Bring restrained motion to stadium crowds and pennants
Crowds, fire and team pennants now use sparse, staggered movement while their pitch anchors stay fixed. Human and Orc venues retain separate angled and overhead artwork, and reduced-motion mode freezes ambient effects without changing the match state.
Consolidate manual skill reroll choices
Manual reroll sources now appear once, with Pro tested before an eligible retry or block-die selection. Brawler offers eligible Both Down dice and handles a sole candidate automatically. Original results remain separate from the Pro test, and recovery consumes a saved result only once.
Resolve teammate-action traits before movement
Throw Team Mate and Kick Team Mate declarations now resolve native activation traits before legal movement. Choosing an eligible teammate creates a proposal that can be changed or cancelled before confirmation, while later checks, landing outcomes and BB2025 kick ranges follow native mechanics.
Add Badlands architecture and mixed supporters
Orc hosts now use a Badlands venue while visiting teams retain their own supporter and bench identity. Both mixed hosting arrangements share the stadium layout and camera rules, and the pavilion fits within its recess. Original artwork and provenance support future League additions.
Launch and resume matches in the current tab
Starting or resuming a match now uses the current tab by default, with a separate new-window option and popup-blocked fallback. Direct-link failures explain unavailable links or account access, while existing identity and match-membership checks remain in force.
Add a League-aware Human stadium
Matches now retain team-level League and roster identity independently of placed players. The browser uses that identity for an Old World Classic venue with Human supporters, recessed furnishings and foreground cutaways. Architecture and supporter catalogs provide separate foundations for later venues.
Concede activated matches from game setup
Current-game listings now offer a confirmed Concede action for activated matches without opening the pitch. The server applies native legality, results and penalties, then refreshes the list. Uncertain replies retain an explicit exact-request retry on setup.
Find unfinished games on the setup page
Signed-in coaches can now browse their unfinished matches without entering a game ID. Waiting and ready games offer Continue setup, activated games offer Resume, and unreadable saves show an unavailable state with refresh. Listings use authorized membership and public team details.
Recover match HUD and kickoff refinements
Recovered match work aligns timers, team names and resources, adds clearer weather and kickoff guidance, and compacts action controls. Chat and log gain independent text sizes, while existing setup swaps, dugout views and newer pitch behavior remain integrated. The recovery report records deferred artwork and display review.
Fill five gaps in the Updates history
The Updates archive now includes the previously missing Spectate launch, cached-asset fix, Windows startup and homepage refresh, expanded-dugout setup placement and match-control refinements. Each short entry retains its verified merge date, category and PR link, bringing that audit to 105 summaries.
Improve match setup, movement and pitch controls
Board clicks now plan moves for confirmation, while setup supports friendly-player swaps and explains invalid formations. Match panels gain adjustable backgrounds, compact dice and revised kickoff prompts; camera controls, ball highlighting and stadium stands are clearer. The accompanying retrospective records remaining review work.
Place setup players through expanded dugouts
Expanded dugouts now act as setup drop targets: drag reserves onto legal pitch squares or return eligible players by dropping them anywhere in their team's expanded dugout. Up/down controls switch among the team name, state counts and vertical player list; opponent and invalid drops remain blocked.
Fix Windows startup and refresh the homepage
Windows review startup now resolves Docker Desktop mount paths correctly before checking local credential files. The homepage replaces its character portrait with a responsive match screenshot, removes Privacy and Support from the top navigation and adds more space between links; both pages remain available from the footer.
Load current Spectate assets for returning players
Spectate now requests versioned page and game assets so returning players receive the current directory even when older Play files are cached. The fix keeps existing Play URLs and sign-in return behavior intact.
Browse live matches and search the Updates history
The new Spectate page lists live matchups, public game details and Watch links, with an initial replay-search scaffold. Updates now covers the merged PR history with topic and PR-number search, category filters and ten entries per page; full history remains readable without JavaScript.
Record the pitch follow-up retrospective
Documented the outcome of seven pitch follow-up changes, linking completed tickets to their checks. The report also records the remaining signed-in match review and visual comparison work.
Apply reroll source priority in BB2025
BB2025 team rerolls now consume the requested eligible source in native priority order, with conditional Mascot attempts and permitted fallback. The HUD distinguishes guaranteed sources from Mascot availability, and match history names the source actually used.
Offer native reroll sources beside the dice
Eligible team, Mascot, Pro, and skill rerolls now appear beside the relevant dice, including block-die choices. The selected source sends its exact native command, while late or reconnected views restore the pending roll.
Show unboxed dice beside match decisions
Live and replay dice now appear as individual ivory and cyan faces on the pitch without enclosing panels. Labels, selection, and keyboard focus remain available, and revealed results stay visible beside pending reroll or skill choices.
Show pass ranges and weather on the pitch
A declared Pass colors the pitch by native throwing distance and weather, with a legend and target text explaining each range. The guide updates after movement or weather changes and marks throws made unavailable by Blizzard.
Confirm passes by clicking recipients
After declaring Pass, clicking a legal recipient keeps the passer selected and prepares the exact throw for confirmation. Movement, pickup, and pickup reroll remain available before the throw.
Keep player art visible during knockdown pushes
A knocked-down defender now keeps its player graphic while the coach chooses a push destination. The sprite changes to the prone pose after the push and follow-up resolve.
Add more perspective camera angles
Coaches can switch among 30-, 40-, and 50-degree perspective views or a top-down view without losing selection, planned routes, or pending decisions. The camera choice remains local to the viewer.
Record the pitch integration retrospective
Recorded the pitch overhaul, repaired defects, and evidence from two-coach and computer matches. The retrospective identifies remaining hosted review work and lessons for future development.
Bring the new pitch to completed-match replay
Completed-match replay now uses the coach-oriented pitch with either coach camera end, tactical view, dugouts, and player inspection. The result route remains read-only while live coach actions stay tied to match membership.
Validate coach-oriented matches against the real server
Real Human and Orc matches through the production interface exposed issues in setup, result access, and long match history, which this change repairs. It adds isolated signed-in review tooling and supports completed computer games and recovery through bounded, lossless storage.
Present native dice and responsive playback
The pitch now renders authoritative dice with a brief spin and plays confirmed movement in order. New decisions, reconnects, and replay seeks cancel obsolete animation so the current match state stays responsive; reduced-motion mode avoids spinning and sliding.
Add the coach-oriented match HUD
The live match gained a fixed HUD with score and turn context, available resources, action confirmation, player inspection, chat, log, and categorized dugouts. It keeps native decisions and existing match controls available, including keyboard and text alternatives.
Bring coach-oriented views to the live pitch
Live matches now offer travelling 40-degree coach perspectives and a centered tactical view. The pitch uses shared coordinates for both coaches and shows directional player art, scenery, routes, ball, and push choices through the new projection.
Add directional Human and Orc player art
Human and Orc teams gained twelve position archetypes with directional body poses and dedicated portraits. The asset pack includes validation and delivery support while preserving source artwork and legacy variants.
Add a shared pitch camera projection
A shared camera service maps pitch cells, player art, and overlays into coach views and translates pointer positions back to cells. It also defines camera travel and navigation for the upcoming live pitch integration.
Record the coach-oriented pitch baseline
Documented the starting point for the coach-oriented pitch overhaul, its camera and player-art requirements, and the checks needed for real matches. This provided the implementation handoff.
Reconcile match controls and pitch design references
This change records approved camera, HUD, and dice studies while tightening live names, clocks, player details, guarded controls, replay compatibility, and computer-opponent recovery. It establishes the handoff for the later playable pitch presentation.
Polish routes, push arrows, and scoreboard
Push choices use compact directional arrows, planned routes use a narrow curved guide, and selecting End player action sends its offered action directly. Team names remain readable within scoreboard nameplates.
Record the pitch interaction outcome
Documented delivery of target clicking, player dragging, and chain-push choices, with browser checks covering all three together. The report compares the final behavior with the agreed requirements.
Choose push destinations on the pitch
Server-offered push destinations appear as directional arrows, including each step of a chain push. Coaches can choose by click or keyboard, with the decision dialog available when the pitch cannot identify a destination.
Drag players during setup and Solid Defence
Coaches can drag reserves onto legal setup squares, reposition players, return them to reserves, and place eligible Solid Defence players. The pitch highlights available destinations and rejects occupied, out-of-half, or unauthorized drops.
Plan actions by clicking pitch targets
Selecting a player and clicking a square or opponent now prepares the appropriate move, block, blitz, or foul flow. The browser keeps that intent only while the selected player and server-offered actions remain valid, and can try another open approach square.
Refine live match controls and request recovery
The scoreboard handles long names more clearly, dugouts focus on off-pitch players, and action previews lose a duplicate selector. Request recovery now appears after the original request leaves flight and preserves an exact retry across reconnects.
Add standalone computer opponents
Match setup can create a game against a computer opponent from a saved team and cloned opposing roster. The change adds server preparation and job dispatch, a standalone computer-player service, availability checks, and deployment configuration.
Share local review state across checkouts
The local development command now stores its lifecycle state with the shared Git directory. It recognizes existing checkout state and verifies the recorded owner, so the primary checkout can manage the same review services.
Manage the local review stack with one command
A local development command starts, stops, or restarts the isolated review stack, browser hosting, and proxy. It verifies routes at startup and stops only processes it recorded, while retaining review database volumes.
Renew local review credentials at startup
The match review startup command checks the mounted Google credentials, reuses a valid session, or guides renewal when needed. It then verifies the isolated database, server, and Firebase access, reducing manual setup for signed-in review.
Simplify the live match sidebar
The sidebar now centers on controls, log, chat, and a game menu, while player details appear from pitch or dugout inspection. The menu adds pause and resume, confirmed concession, interface settings, key bindings, and log access.
Refine the live match layout and dugouts
The scoreboard, sidebar, and dugouts have a clearer arrangement, with full player sprites and compact or expanded dugout views. Redundant labels and cards were removed, and the action menu now shows choices relevant to the selected player or target.
Restore authenticated route previews
Route previews now load the match using the coach's verified home or away role. This fixes previews that were rejected because the server passed an account identifier where the match loader expected a role.
Recover route planning after socket authentication expires
When authentication expires during a path preview, the browser refreshes its token, reconnects once, and reloads the authorized pitch. An uncertain match action remains available for an explicit exact retry.
Detect expired credentials in local match review
A local preflight checks whether the review server can refresh its Google credentials and reach Firebase Auth, with clear failure messages that do not expose tokens. The runbook explains renewal and the signed-in review evidence.
Record the match window implementation outcome
Documented the eight match-window changes and their supporting checks. The outcome report distinguishes completed criteria from the remaining signed-in review of the combined browser and server.
Check waypoint planning in the browser
A browser interaction check follows waypoint selection, route preview, undo and clear controls, and a single committed path request. It also verifies that previews do not change the match and spectators cannot plan routes.
Check native route continuation and risky moves
New engine tests cover stopping a route, resuming after dodge or rush rerolls, and comparing safe paths with deliberate risky waypoints. The report also notes the remaining signed-in review.
Add an isolated stack for integrated match review
A separate local game server and database let reviewers examine the new browser and server together without disturbing the existing development stack. Review captures and browser checks cover crowded pitches, controls, dice, push decisions, and results across target screen sizes.
Explain more match events in the history log
The match log now spells out reroll sources, bribes, send-offs, injury and casualty rolls, apothecary decisions, and between-drive recovery. It formats recorded native facts into readable lines while preserving older reports through a generic fallback.
Navigate completed matches by event or turn
Replay gained event and turn seeking, play/pause and speed controls, plus optional square-by-square movement. The pitch, dice, log, and chat follow the selected saved revision.
Show dice on the pitch
Recorded rolls appear as brief pitch dice with outcomes and targets, while block decisions use selectable graphical die faces. The displayed faces come from native reports and server-offered choices.
Animate confirmed movement one square at a time
The live pitch plays each server-confirmed movement square in order before showing the next decision. Reconnecting viewers start from the current match state, and reduced-motion mode keeps the steps without sliding animation.
Show chat and match history together
Live matches and completed replays now share tabs for the event log and saved conversation. The chat view tracks unread messages, restores missed pages after reconnect, and keeps a draft while an active match is open.
Save match chat for recovery and replay
Authenticated coaches and spectators can send messages that are validated, retained with the match, and included in completed results. The protocol supports paging and safe retries, while older match records remain readable.
Plan movement with pitch waypoints
Coaches can click waypoints to plan a route, review the server's square-by-square movement forecast, then undo, clear, or commit the path. Spectators remain read-only, and older matches retain their adjacent movement controls.
Save and resume committed routes
The server now commits a route as native adjacent moves, saves its progress through interruptions, and resumes after a chosen reroll. Clicked adjacent squares stay exact, longer spans use route search, and existing checkpoints remain readable; browser waypoint controls follow separately.
Preview routes from native match state
Coaches can request a read-only route preview tied to the current player and match revision. The server expands nearby waypoints or longer paths and returns squares with dodge, rush, and possible reaction information.
Add a live match event log
The match sidebar now shows accepted choices and native report lines from durable transcript pages. It catches up on join, reconnect, and new revisions, supports page navigation without losing reading position, and also appears with completed results.
Persist and page match transcripts
New recoverable matches now store each accepted decision, timestamp, native outcomes, and authoritative snapshot with the checkpoint. Authorized clients can request bounded transcript pages, including for completed results, while older checkpoints remain readable.
Capture ordered native match outcomes
Added a server component that records game-rule outcomes and model changes in command order, rejecting duplicate records. This groundwork supports the later saved match history and replay.
Define the match transcript format
Documented how game actions, rule outcomes, saved board states, and chat belong in match history and completed replay. The design covers ordering, access, storage limits, and compatibility.
Offer Multiple Block defender pairs
An eligible player can choose a server-issued pair of adjacent defenders for Multiple Block. The choice uses the native paired command and the defenders' original states, preserving one coherent block decision.
Expose more special turn actions
The server now offers eligible Gaze, Bomb, Punt, Kick Team-mate, and Recover declarations with their native targets. The match ribbon shows these actions and places target choices where they remain usable in compact windows.
Offer special blocks and fouls
Eligible players can receive native Stab, Chainsaw, Projectile Vomit, and Breathe Fire choices, plus Chainsaw foul targets. The action ribbon keeps the attacker’s options available while selecting a defender and submits the server-issued action.
Keep player declarations with their actor
Foul, Pass, Hand-off, Throw Team-mate, and Secure Ball declarations now carry the acting player's identity in the server projection. This lets the ribbon show legal options for that player, including when a Block target is selected.
Choose kickoff players from the ribbon
Kickoff player choices now appear as select and deselect buttons in the match ribbon. A separate confirmation becomes available only when the server offers it, with selected counts shown before submission.
Show required decisions in focused popups
Coin and receive choices, block dice, rerolls, skill use, and other required decisions now appear in focused popups for the coach who must answer. Each choice submits the exact server option, and pending requests disable repeat input.
Add the match action ribbon
The bottom ribbon now groups server-offered Move, Block, Blitz, and other actions around the acting player. It adds a recent-action shortcut, confirms End Turn when players remain unused, and keeps every offered action accessible through a disclosure.
Fit the match view to the approved frame
The live match was arranged into a fixed scoreboard, pitch, dugouts, sidebar, and bottom ribbon that fits the specified desktop windows. Roster details, keyboard companion, and save/resume controls remain accessible in the scrolling sidebar.
Show authoritative team and player details
The match scorecard and bench now use frozen team names and server-supplied player numbers, attributes, skills, status, and resources. Spectators see a read-only view, while retained replay and recovery records remain readable.
Capture dodge and rush match states
Deterministic dodge and rush interruption fixtures now cover both coaches and a spectator. The same three views were checked for kickoff prompts and the full pitch, and remaining action and route needs were documented.
Capture a three-role match baseline
Captured the match-window requirements and a repeatable Blitz scenario from the real game engine. Each saved step includes both coach views and the spectator view for later comparison.
Unify game art and browser assets
Accepted team sprites, pitch art, interface graphics, fonts, and source records moved into one canonical game-art tree. A checked sync process now supplies those assets to browser previews and hosted play.
Present matches in a compact pitch window
The active match window gained a pitch-first layout with illustrated score, live board, server-backed actions, and compact bench. It opens after confirmed activation, provides a blocked-popup fallback, and offers an Exit match control.
Track open work in GitHub Issues
Eleven open tasks were linked to GitHub Issues, with local Markdown notes retained for design and handoff details. The issue-tracker guidance and triage labels now reflect where task status and discussion live.
Clear connection errors after reconnect
A successful reconnect now removes an earlier authentication error from both Play and Team Builder, so the displayed status matches the accepted connection.
Open active matches in a separate window
Starting a match now reserves a separate window or tab, then opens it after server confirmation. If the browser blocks it, play opens in the current tab; reloads and opponent links keep access to the right match.
Add Orc teams to exhibition play
The BB2025 exhibition catalog and team builder gained six Orc positions, their prices and skill access, Troll Loner rules, and approved sprites. Orc teams can be saved and matched against Human teams while older Human match records remain readable.
Add keyboard and text pitch navigation
Keyboard users can move through pitch squares, pan a zoomed board, and read a text companion naming the square, occupant, ball, and available server target. Action shortcuts now respect focused controls and match ownership.
Show live match status and completed replay
The match view gained score, resources, current decision, and player status drawn from server data. Participants can open a completed result and step through its read-only replay; End Turn uses the same confirmed action flow as other choices.
Select match actions on the pitch
The pitch now highlights player and square targets supplied by the server. Coaches can select an exact action before committing it, including Blitz choices; stale or wrongly owned decisions refresh safely through the existing retry flow.
Add the server-backed match pitch
The live match gained a DOM/SVG pitch showing server-positioned players, the ball, and status cues, with fit, zoom, and pan controls. Frozen roster identities drive player art, with labeled fallbacks and compatibility for older replays.
Separate match preparation from live play
Preparation and match play moved to distinct routes. Confirmed activation opens the match view, while direct links, reloads, reconnects, and spectator access preserve the correct match context and permissions.
Map the live match contract
Mapped the data and actions needed for live matches, including what coaches and spectators can see. Eight saved Blitz checkpoints from the real game engine provide repeatable examples for later pitch changes.
Choose the match board renderer
Compared two pitch renderers and chose the sharper browser-native board. A scripted Blitz, review notes, and implementation plan documented the decision before changing live match play.
Merged pull request updates
The Updates page gained a dated entry and direct GitHub link for each of the first 25 merged pull requests. These entries replaced the earlier narrative posts, and the generated hosting copy was refreshed.
Centralize live match updates
Live match updates now share one server component for choosing viewers, checking access, and delivering the right game state. Retry tests cover a completed action whose acknowledgement was lost.
Restore saved-match resume requests
Saved games now preserve a pending resume request through recovery. Coaches can see their proposal while play stays paused, and spectators see the status without save or resume controls.
Restore the roster workshop layout
The account team builder regained recruit cards, team options, roster value, resources, and an editable player list. Prices and validation come from the server catalog.
Document the team builder rollout
The deployment record now covers the updated team builder in DEV and PROD, including database changes, backups, and connection checks. Signed-in acceptance remained a separate follow-up.
Save match-ready teams to your account
The builder can save named teams with player names and jersey numbers to the signed-in account. Match setup validates each selected team and freezes a copy for the game.
Align deployment and developer setup
Deployment identity settings were updated for the renamed repository. Windows and Ubuntu setup scripts and release instructions provide a repeatable development environment.
Add shared engineering skills
Repository skills now provide reusable guidance for engineering tasks, reviews, and project workflows, giving contributors and coding agents a shared set of conventions.
Start the browser team builder
The first team builder page established the roster-building interface and its place in the public site. Later changes connect this foundation to account-owned, match-ready teams.
Add game backup and restore tools
New backup and separate-restore tools preserve current game records and check that restored matches can continue correctly. Operator instructions and saved-game fixtures document the supported recovery workflow.
Bound active game resource use
Completed games release their running engines after their results are saved, and idle games retain recoverable checkpoints. Admission and storage limits protect accepted work; mutual save and resume controls were introduced as a local candidate.
Keep private data out of browser views
Browser responses are checked before rendering, rejecting unexpected credentials, ownership information, private checkpoints, and another team's data. Tests cover these privacy boundaries for each recipient role.
Isolate game connections by environment
Local, DEV, and PROD connections now enforce their own host, route, origin, and authentication boundaries. Hosted game traffic uses encrypted connections through a private server proxy, with credential renewal and startup safeguards.
Define authenticated spectator access
A new spectator protocol checks identity and match visibility before showing read-only game state. Match membership and role-specific browser views distinguish spectators from participating coaches.
Connect game sign-in to Firebase
The game service now verifies Firebase sign-in and uses authenticated player sessions. Two-player pregame checks covered the connection between sign-in, match access, and setup.
Add site deployment and sign-in workflows
DEV and PROD gained Firebase deployment workflows and environment setup instructions. Google and email-link sign-in, updated logos, and shared brand assets established the public site's identity.
Bring the MUTP site into the repository
The public project site, initial branding, and browser-facing documentation joined the monorepo. Its static pages and Firebase Hosting structure became the foundation for later builder and game pages.
Preserve games through server restarts
Durable checkpoints now retain game state, dice, retry history, and completion information. Restart checks confirmed exact restoration, while corrupt or unsupported records are rejected safely.
Establish the modern game-service foundation
The service foundation moved to Java 21 and Jetty 12, with tighter connection boundaries and an isolated compatibility policy. Engine traces, replay, database, and retry checks compared it with the retained Java baseline.
Expand full-match and recovery verification
Full-match, setup recovery, reconnect, access control, and replay checks extended the browser protocol's coverage against real engine behavior. The evidence documented what the first complete game flow could support.
Verify the first complete game lifecycle
The match driver now covered games through completion, saving results and reading replay data. Restart and browser checks exercised the first end-to-end game lifecycle.
Verify core browser turn actions
The browser protocol and engine checks expanded through core turn actions, required prompts, and state transitions. Live evidence recorded how the browser choices connect to game rules.
Establish setup and turn flow
The first browser setup and core-turn flow introduced server prompts and kickoff actions around the existing engine. This established the structure used by later gameplay features.
Add team and match preparation
Human roster validation, saved teams, and prepared matches introduced team selection before a game. Database changes provided the storage needed for this preparation flow.
Complete the first browser match connection
The initial browser transport gained choice handling, reconnect behavior, and repeatable protocol fixtures. Repository branch-protection conventions were also established for subsequent work.
Lay the local game runtime foundation
The local Java and Maven toolchain, container runtime, database wiring, and startup and shutdown lifecycle were established. Initial browser-service scaffolding made later match experiments possible.