Release Notes
Contract.31
Summary
Sprint 31 is a polish and tooling sprint. The two headline player-facing features are an interactive tech tree visualization — the first time all 136 technologies are visible in one place — and a turn history page that lets players navigate back through past turns to review events and messages. The REST API is now complete, enabling external integrations and automation. Five bugs were fixed, including a critical issue where researching certain technologies did not generate the expected contract auctions.
New Features
Tech Tree Visualization
- New Tech Tree page shows all 136 technologies as a scrollable SVG diagram organized left-to-right from basic to advanced — color-coded green (owned), teal (available), gray (locked). Hover any node for cost and success chance. (SR-798)
Turn History
- New Turn History page lets players navigate backward through previous turns to review events and messages received. Accessible via “View Turn History” on the turn page. (SR-794)
REST API
- Complete REST API for automation and external integrations: GET /api/v1/game, /player, /choices, /events; POST /choices, /turn/run. Token-authenticated. (SR-707–SR-713)
Coalition Intel & In-Game Messaging
- Coalition members can view each other’s satellites, assets, and technologies on the coalition intel page. Structured in-game messaging lets players send buy, sell, trade, offer, and request proposals; messages are delivered at turn run. (SR-659)
Improvements
- Message recipient is now editable — when editing a queued message you can change the recipient using a dropdown. Previously the recipient was locked after composing. (SR-793)
Bug Fixes
- Fixed: researching a technology that unlocks contracts (e.g., Passive Radio Reflector) now correctly generates auctions for those contracts on the same turn. (SR-796)
- Fixed: satellite prototype designs no longer appear on the satellite designs page at game start. (SR-788)
- Fixed: admins can no longer use “Login As” to impersonate themselves. (SR-795)
- Fixed: Switch Game menu item was unresponsive. (SR-789)
- Fixed: typo “coalitiions” on the coalition page. (SR-792)
Contract.29
Summary
Sprint 29 is the largest sprint to date. The headline deliverables are a complete Victory Point framework, a full coalition system with invitations and voting, orbital mechanics (engine types, fuel, in-transit tracking), major contract system redesigns (reverse auctions, immediate payouts, loan contracts), end-game scoring, live scoreboards, and a suite of admin tools. Several coalition bugs found during early testing were also resolved.
New Features
Victory Points and End-Game Scoring
- Victory points system — full VP tracking schema and VPManager (SR-641)
- Game end detection — max_turns setting and end-of-game handling (SR-642)
- Milestones — new milestone tracking system and MilestoneManager (SR-643)
- First-mover VP milestones — awarded automatically during turn processing (SR-644)
- End-game scoring — final VP tally and Most-X milestone awards at max turns (SR-656)
- Scoreboard — live VP leaderboard page with per-player breakdown (SR-657)
- Coalition and player VP tracked separately (SR-686)
- Scoreboards page (SR-687)
- Milestone editor — admin tool to manage milestones (SR-689)
- Public milestone table — all players can see which milestones have been claimed (SR-690)
Coalition System
- Coalition voting — majority vote required to admit new members (SR-645)
- Coalition locking — membership is permanent after joining (SR-646)
- Coalition VP pooling — member VP routes to the coalition total (SR-647)
- Coalition size limits — maximum coalition size enforced per game (SR-648)
- Coalition invitation and voting workflow — invite a player, members vote, invited player accepts (SR-661)
Orbital Mechanics
- Orbital position model — per-turn delta-v calculation for all satellites (SR-649)
- Engine types — dv_per_fuel and dv_per_turn attributes on satellite prototypes (SR-650)
- Fuel resource — fuel tracking on satellites and fuel depot asset (SR-651)
- Satellite transit model — satellites show in-transit status with arrival tracking (SR-652)
Contract System
- Early contracts duplicated for large games so enough contracts exist for all players (SR-658)
- Permanent loan contracts — ongoing financial obligations (SR-662)
- VP penalty for missed contract payments (SR-663)
- Reverse auction mechanic — players bid the payout down rather than up (SR-666)
- Immediate payout (get_cash) added to all contracts (SR-667)
Player Tools
Admin Tools
- Article type system — extensible content categories for the news feed (SR-668)
- Admin article editor — manually create and post news articles (SR-669)
- Game editor — admin can edit game settings mid-game (SR-683)
Improvements
- Research behavior improved — research now feels appropriately paced (SR-626)
- Code quality — removed redundant game/turn parameters from functions (now sourced from context) (SR-638)
Bug Fixes
- Fixed: coalition invites now work — invited player can see and accept invitations (SR-727)
- Fixed: max coalition size no longer reset when starting a game (SR-730)
- Fixed: coalitions from a previous game no longer carry over when a new game starts (SR-721)
- Fixed: auction behavior corrected (SR-677)
- Fixed: duplicate column name error resolved (SR-675)
Contract.28
Summary
Sprint 28 delivered coalition management, orbital transfers, new admin tools, and a major code quality pass. 41 tickets completed, including 9 bug fixes. This sprint resolved a long-standing database locking issue that was causing game instability and established the coalition system as the foundation for multi-player cooperation.
New Features
- Coalition system — players can now join and leave coalitions, the foundational mechanic for team play (SR-631)
- Orbital transfer system — assets can be moved between orbits (SR-529)
- Contract table in turn view — active contracts are now listed directly on your turn page (SR-616)
- Admin game management page — admins can view and manage all games from one place (SR-611)
- Admin satellite management page (SR-416)
- Main game board listing all active games (SR-198)
- Past news archive — players can now view news from previous turns (SR-497)
- Targeted contract auctions — creators can specify preferred bidders (SR-545)
- Registration email notifications to admin on new signups (SR-598)
- Tech tree analyzer tool (SR-41)
Improvements
- Marketplace removed — simplified the player experience (SR-639)
- Satellites now display a “retired” status (SR-570)
- Players can hide commands from their turn view (SR-568)
- How-to-sign-up guide rewritten (SR-629)
- New training document for satellites and contracts (SR-624)
- New “Best Sats” testing page added (SR-623)
- Satellite contracts guide linked from the info page (SR-635)
- Dedicated CSS file added for how-to-play pages (SR-216)
- Signup process documented (SR-213)
- Turn controller fixed and stabilized (SR-465)
- “Remember me” login button verified working (SR-603)
- Version field added to bug report form (SR-244)
- Version updated to Contract.28 (SR-600)
- Code review pass across core modules (SR-634, SR-633, SR-632)
- Virtual environment renamed from vspace to venv for consistency (SR-622)
Bug Fixes
- Fixed: satellite not appearing after launch (SR-636)
- Fixed: hidden commands not staying hidden between turns (SR-627)
- Fixed: unable to bid on auctions (SR-625)
- Fixed: player-created contracts from previous games carrying into new games (SR-620)
- Fixed: new auctions not appearing in the news feed (SR-619)
- Fixed: crash when accessing your turn before the game has run (SR-604)
- Fixed: database locked while game was running (SR-580)
- Fixed: game icon missing from the command line (SR-524)
- Fixed: list items displayed bolder than paragraph text (SR-203)
Contract.27
Summary
Sprint 27 focused on player empowerment. Players can now design satellite prototypes and create their own contracts. New player guides were added for the auction system, contract creation, and satellite designer. The auction house, satellite info displays, and admin tools received significant improvements. Thirteen bugs were resolved.
New Features
- Players can create their own satellite prototypes (SR-576)
- Players can create contracts for themselves (SR-575)
- Admin page to manage players (SR-572)
- Startup check verifies the database exists before the game runs (SR-571)
- Info menu redesigned to match the admin menu layout (SR-579)
- Auction house now shows what the current turn number is (SR-591)
- Player guide added: satellite designer (SR-357)
- Player guide added: contract creation (SR-355)
- Player guide added: auction system (SR-354)
Improvements
- Players can no longer set the base price of their own satellite (SR-602)
- Satellite revenue display now shows both dollars-per-turn and number of turns (SR-597)
- Auction timing display corrected — “ends after turn X” now shows the right turn number (SR-594)
- “Run turn” option moved to the top of the admin menu (SR-578)
- More information shown to players about their operating satellites (SR-569)
- Prototype IDs converted to strings for consistency (SR-539)
- Version number updated to Contract.27 (SR-599)
- Copyright updated to include 2026 (SR-590)
- nginx now correctly serves static pages (SR-248)
Bug Fixes
- Fixed: auctionable flag on player contracts now correctly puts them in the auction on the next turn (SR-618)
- Fixed: error running db_migration_tool (SR-617)
- Fixed: players were unable to launch satellites (SR-615)
- Fixed: auction end turn was firing one turn late (SR-614)
- Fixed: satellite displayed wrong orbit even though status was ready to launch (SR-613)
- Fixed: players could see all system prototype satellites instead of only their own (SR-612)
- Fixed: contract editor was missing the auctionable flag (SR-609)
- Fixed: database generation failure was silent and hard to diagnose (SR-606)
- Fixed: cash went to zero when players tried to perform actions (SR-605)
- Fixed: players were not paid on the turn they won a contract (SR-596)
- Fixed: completed auctions were incorrectly generating new auctions (SR-592)
- Fixed: space news announced contract wins one turn after the fact (SR-588)
- Fixed: auction menu was visible to users who were not logged in (SR-573)
Contract.26
Summary
Sprint 26 was a major stabilization sprint with 31 issues resolved. Work focused on fixing crashes in the game loop, completing auction and news integration, repairing the satellite contract payout pipeline, and adding player self-registration. Automated test infrastructure was also established this sprint.
New Features
- Players can now self-register using an invite code, no admin action required (SR-593)
- Research continues automatically from turn to turn once started (SR-521)
Improvements
- Admin tools consolidated under a single Admin menu (SR-557)
- News feed notifies players when new auction contracts become available (SR-567)
- Auction listings now display the turn on which they end (SR-551)
- Contract awards now generate news items (SR-550)
- Buildings show a count when the player owns multiple of the same type (SR-526)
- Pending cash changes hidden until after the turn runs (SR-272)
- Tiny and medium satellite tech prerequisites corrected to require small satellite tech (SR-489)
- Automated test system runs on every check-in (SR-220)
Bug Fixes
- Fixed: crash when viewing “see my turn” page (AttributeError on ContractManager) (SR-589)
- Fixed: crash when navigating to “take turn” page (SR-587)
- Fixed: assertion error when running turn (SR-577)
- Fixed: no notification shown after winning an auction (SR-586)
- Fixed: medium rocket tech had wrong prerequisite (tiny sat instead of small rocket) (SR-585)
- Fixed: no news message generated when research succeeded (SR-584)
- Fixed: false “not enough cash” error shown inappropriately (SR-566)
- Fixed: multiple redundant low-cash messages shown (SR-565)
- Fixed: silent failure when adding extra research with no error message (SR-564)
- Fixed: false “please log in” redirect after starting a new game while logged in (SR-563)
- Fixed: no notification when accessing pages without being logged in (SR-562)
- Fixed: Space News required login to view (SR-561)
- Fixed: old auctions persisted after restarting a game (SR-558)
- Fixed: satellite contract payouts not working (contract_req_satellites table was empty) (SR-556)
- Fixed: new auctions delayed one extra turn after research completes (SR-555)
- Fixed: auction results not appearing in news (SR-548)
- Fixed: auction house showed incorrect time for end of auction (SR-540)
- Fixed: building a launch facility incorrectly built a rocket (SR-527)
- Fixed: messages shown at inappropriate times (SR-525)
- Fixed: false “login unsuccessful” message shown after successful login (SR-516)
- Fixed: news page columns too narrow (SR-490)
- Fixed: news items showing “No Value” (SR-486)
- Fixed: missing automated tests written (SR-296)
- Fixed: cash could go negative; overspend now blocked (SR-295)
- Fixed: admin links were accessible to non-admin users (SR-294)
- Fixed: cash display updated live while editing actions instead of waiting until turn runs (SR-285)
- Fixed: login failure not properly reported to user (SR-210)
Contract.25
Summary
Sprint 25 is a major release focused on completing the contract and auction system end-to-end. Players can now bid on contracts at auction, win them, and track them in a dedicated contracts table. New orbit types and rocket sizes were added, including super heavy rockets and extra-large satellites. Satellite abilities are now defined and linked to contracts. Players start the game with essential technologies so they can build and launch from turn 1. Ten bugs were fixed covering game progression, UI layout, and contract availability.
New Features
- Players now start with Small Rocket tech, enabling building and launching from turn 1 (SR-535)
- Players start with the ability to build a Research Facility, eliminating a dead first turn (SR-488)
- Full bidding-to-contract-award flow implemented and tested end-to-end (SR-440)
- Contracts now have a configurable starting point controlling when they become available for auction (SR-512)
- Satellite abilities created and linked to contract requirements (SR-291)
- New orbit types and rocket sizes added to support expanded mission profiles (SR-290)
- Super heavy rockets and extra-large satellites added (SR-246)
- Players can view their active and won contracts in a dedicated contracts table (SR-281)
- Contracts now expire if not fulfilled within their allotted turns (SR-259)
Improvements
- How To Play page updated to reflect auctions, contracts, satellites, and facility limits (SR-554)
- Roadmap and information pages updated with current feature status (SR-553, SR-546)
- Contract availability triggers corrected so contracts only appear when prerequisites are met (SR-534)
- Satellite ability starting tech corrected; too many abilities were defaulting to Small Rocket (SR-536)
- Removed phantom player ORM Labs that was appearing in single-player games (SR-538)
- SSL certificate updated (SR-463)
- Virtual environment removed from repository (SR-464)
Bug Fixes
- Fixed: auction sidebar incorrectly showed Outbid on contracts the player had won (SR-552)
- Fixed: could not build Passive Radio Reflector satellite (SR-541)
- Fixed: late-game contracts were appearing in the auction house early in the game (SR-537)
- Fixed: no contracts were available for auction at game start (SR-528)
- Fixed: game was generating generic placeholder events instead of real news (SR-544)
- Fixed: satellite revenue counter remained at $0M even when satellites were operational (SR-292)
- Fixed: turns were not progressing (SR-286)
- Fixed: test_is_asset_allowed was failing in game tests (SR-273)
- Fixed: dropdown menus were rendering behind page titles (SR-242)
- Fixed: building and launching a rocket on the same turn caused the rocket to disappear (SR-236)
Contract.24
Summary
Sprint 24 focused on stabilizing and completing the contract auction system that was introduced in earlier sprints. The majority of work involved fixing critical bugs in the UI pages, resolving data type consistency issues throughout the system, and ensuring all tests pass. The contract auction feature is now fully functional with proper bid management, contract detail visibility, and auction lifecycle control.
New Features
- Contract Auction System: Complete implementation of contract auctions with bid management, including minimum bid validation (SR-495)
- Research Facility Validation: Players are now prevented from researching without a research facility (SR-487)
- Enhanced Bid Interface: Bid page now displays complete contract data for informed bidding decisions (SR-511)
Improvements
- Admin Controls: Ability to manage active auctions with edit/delete restrictions removed from UI (SR-506, SR-505, SR-503)
- Data Type Consistency: Ability costs and satellite base costs now properly display as integers throughout the system (SR-494, SR-499, SR-507)
- Satellite Size Matching: Fixed display logic for satellites matching maximum size (now shows green instead of yellow) (SR-498)
- Form Field Labeling: Contract payout fields now clearly marked as monetary values (SR-500)
- Auction Logic: Fixed auction ending behavior to only close on inactivity rather than fixed end dates (SR-514)
- UI Consistency: Removed duplicate/extraneous notifications from auction pages (SR-501)
- Auction House: Fixed discrepancy between auction house link and auction page listings (SR-504)
Bug Fixes
Core Functionality:- Fixed game start errors (SR-515)
- Fixed auction system errors during creation and display (SR-492, SR-491)
- Fixed active auction bid rejection error (SR-513)
- Fixed contract page generation errors (SR-483)
- Fixed satellite page errors (SR-485)
- Fixed satellite creation without orbit validation (SR-510)
- Fixed satellite prototype creation bug (SR-496)
- Fixed contract editor satellite orbit handling (SR-509, SR-508)
- Fixed ability page errors (SR-484)
- Fixed turn execution errors (SR-341, SR-466)
- Fixed missing BID button on active auction page (SR-502)
- Fixed test_usermanager failures (SR-481)
- Fixed test_player failures (SR-480)
- Fixed movemanager test failures (SR-479)
- Fixed test_game.py failures (SR-477)
- Fixed contract manager test failures (SR-476)
- Fixed bidmanager test failures (SR-475)
- Fixed eventmanager test failures (SR-473)
- Database code fixes and cleanup (SR-471)
- UserManager Flask-Login integration fixes (SR-470)
- Removed invalid test user data (SR-472)
- Comprehensive test suite execution and validation (SR-474)
Contract.23
- The “Times Researched” counter remains at 1. (Bug)
- the timer is now counting down 10 hours from 2:00 PM, rather than 8 hours. (Bug)
- add a special log file that adds a record every time the turn runner runs (Task)
- double the research cost of all tech (Story)
- get the tech & asset editor working again (Story)
- triple the cost of everything (Story)
- Spelling error in the newsfeed. (Bug)
- Create about a dozen new tech/asset sets (Story)
Contract.22
- create an info page
- add release notes
- Satellite revenue reported even though there are no satellites
- need a reset password link
- Add way to reset passwords
- fix the password for account “OliverMorrisPlayer2” .
- a turn timer
- No way to run turn
- The registration page doesn't work
- Running the turn gets a bug in multiplayer.21
- Get a discord server for space race; should be free
- configure a game via yaml
- “Actions” table cost malfunction.
- I have 2 satellites but no revenue