Changelog

Back to Home

All notable changes to this project are documented here.

v1.7.63 Startup No Longer Rewrites Planet Table
2026-09-02
  • Starting the app no longer adds infoturn columns to every planet and starbase row (that rewrite could lock the local H2 file for a very long time)
v1.7.62 Replay Ships on Planets and Fleet Icons
2026-09-02
  • Ships in orbit are listed on the planet tooltip (Ships tab); click a row for the full ship card
  • Stacked ships at one point show a combined hull icon with a count instead of hiding under each other
  • Map markers use the same Planets.nu hull pictures as the tooltip, with the class silhouette as fallback
v1.7.61 Starbases Lost Uses Current Planet Knowledge
2026-09-02
  • Most Starbases Lost no longer counts leftover scans of a base you no longer see
  • A loss is a planet you currently owned with a starbase that is captured, or a base destroyed while you still hold the planet
  • Replay map owners and starbases prefer the owner's own turn file over stale intel from other seats
  • Recalculate game statistics so existing games pick up the new counts
v1.7.60 Home Page Agent Answers Planets.nu Rules
2026-08-30
  • The assistant on the home page now answers Planets.nu host rules, race abilities, and strategy even when no imported game is open
  • Home-page questions about mines, fuel, or races no longer get stuck on a thin game list or a coincidentally matching game name
  • Race win rates and win-rate leaderboard highlights are included so the home chips have data to work with
v1.7.59 Starbases Lost Counts Captures and Destruction
2026-08-25
  • Most Starbases Lost no longer stays at 0: a base is counted when the planet is captured (ground attack) or the base is destroyed
  • Recalculate game statistics once so existing games pick up the new counts
v1.7.58 Win Rate and Destroyed Hull Leaderboards
2026-08-25
  • Best Win Rate lists only real commanders (Dead, Open, and race-name seats are omitted)
  • Most Ships Destroyed by Race now shows the destroyed hull type next to the race
v1.7.57 Leaderboards Honour Race Filter
2026-08-25
  • Advanced Filter race selection now applies to every leaderboard (for example Most Ships Built no longer lists Horwasp when race 12 is unchecked)
v1.7.56 Classic Races Filter On by Default
2026-08-25
  • The home page starts with Advanced Filter active for races 1–11; Horwasp games stay out until you select that race
v1.7.55 Faster Advanced Filter
2026-08-25
  • Advanced Filter ranks matching games without loading every turn of every player
  • Host settings are filtered in the database (indexes on game type, ship limit, win condition, tenacity)
v1.7.54 Replay Opens in 3D
2026-08-22
  • Game replay starts in 3D; 2D remains available from the view toggle
v1.7.53 Classic Races Preselected in Advanced Filter
2026-08-22
  • Advanced Filter starts with races 1–11 checked; Horwasp stays off until you select it
v1.7.52 Quiet 404 for Unknown Files
2026-08-22
  • Missing files and scanner probes (for example /wp-login.php) return a plain 404 instead of a 500 error page and stack trace
v1.7.51 Replay Map Full Screen
2026-08-22
  • Replay map can be maximized to fill the whole screen (Escape or the button exits)
  • Left and right chart columns each have a switch to collapse them and give the map more room
v1.7.50 Admin: Force Reset Stuck Worker
2026-08-21
  • Admins can force-kill a stuck worker process from the home page when jobs hang indefinitely
  • All running import and work jobs are marked as failed so they can be restarted cleanly
  • The worker restarts automatically after ~8 seconds via the container entrypoint
v1.7.49 3D Replay Map
2026-08-21
  • Replay can switch between the classic 2D map and a 3D view you can tilt, rotate and zoom
  • Planet coordinates and distances stay the same on the map plane; minefields show as translucent cylinders in 3D
v1.7.48 Import Pauses While You Browse
2026-08-21
  • Import and statistics recalculation pause automatically when someone uses the website, then continue after a short idle period
  • The NAS container is sized for 12 GB (2 GB reserved for the site)
v1.7.47 H2 Engine Pinned to 2.4.240
2026-08-21
  • Local and Docker now start the same pinned H2 2.4.240 engine and record its version on startup
v1.7.46 Delete Aborted Imports Again
2026-08-21
  • Deleting a game or a failed import job works again (the worker used SQL that H2 2.x does not accept)
v1.7.45 Website Stays Up During Huge Imports
2026-08-21
  • Import, statistics recalculation and game delete run in a separate worker process, so a 600-turn game can no longer take the website down with an out-of-memory crash
  • The home page warns if that worker is not running; browsing already imported games still works
v1.7.44 Quiet Fan-Project Disclaimer
2026-08-20
  • A small footer notes that this analyser is unofficial and not affiliated with Planets.nu or VGA Planets, with a contact link to ted on Planets.nu
v1.7.43 Replay Assets Refresh After Deploy
2026-08-20
  • CSS and the replay map script are loaded with a deploy version in the URL, so browsers pick up new features without Ctrl+F5
v1.7.42 Replay Turn Count While Loading
2026-08-20
  • Replay shows '50 of 250 turns loaded' instead of a progress bar, so long games stay obviously loading in the background
  • The remaining turns load in tens, and the count updates every 10 turns until the map is complete
v1.7.41 Deep Scan Filter, Faster Replay and Agent Newsflash
2026-08-20
  • Advanced Filter is grouped into Field of Play and Host Rules, with a collapsible Deep Scan for rarely used host flags
  • Replay map loads the first 50 turns, shows 12 / 87 style progress, and keeps fetching the rest in the background
  • Charts draw after those first 50 turns and refresh once the remaining turns are in, not every few turns
  • Newsflash: the Analyzer Agent can guide you through the page; Replay Map asks it to offer the last 10 imported games
v1.7.40 Stuck Import Jobs Can Be Deleted or Restarted
2026-08-20
  • Import jobs left hanging after a crash or stop are marked failed so they can be deleted or restarted
  • Deleting or restarting an unfinished job also removes leftover imported game data in the background
  • Delete waits if statistics are still calculating for that game, and calculate waits if that game is being deleted
v1.7.39 AI Sector Jumps and Replay Translations
2026-08-19
  • On the home assistant, imported game names, game IDs and commander names open that sector's replay map
  • Replay map labels, tools and tooltips are translated in all languages instead of leftover English
v1.7.38 Replay AI Button Visible Again
2026-08-19
  • The assistant on the replay map appears as soon as the first turns are playable, even after a jump from another page
v1.7.37 Replay Turn Load Progress
2026-08-19
  • Loading turns shows a progress bar and 12 / 87 style count; a thin strip stays while later turns finish in the background
v1.7.36 Replay AI Stays Put and Zooms In
2026-08-19
  • On the replay map the assistant appears only after the current turn is loaded, so it already has that turn as context
  • Txx jump buttons stay in this browser tab, keep the chat panel and answers open, and zoom the map in on the clash (~240 ly)
  • The robot icon bobs as soon as the assistant becomes active
v1.7.35 AI Walks Game Data Through Q&A
2026-08-19
  • The assistant uses the page you are on (home, game, replay, commander, player, compare) plus the last questions, and loads only the matching slice
  • Follow-ups keep commander names and turns, so you can zoom from who-fought-whom to when/where to a jump without dumping the whole log
  • One model call per message: no retrieval loops and no multi-agent tasks; combat and mail stay capped
v1.7.34 AI Jumps the Replay Map and Reads Commander Mail
2026-08-19
  • Txx jump buttons wait until that turn is loaded and then move the slider; if chat is on another page they open the replay window at that turn
  • Assistant context includes commander-to-commander mail and, on a commander profile, that commander's imported games
  • New imports also store Planets.nu mymessages (diplomatic inbox)
v1.7.33 Commander Mail Filter and Profile Links
2026-08-19
  • Messages between commanders now count only subspace/From-To mail, not Fleet Command or combat/capture logs
  • Commander names in the replay list open a normal new tab instead of a named window that could stay blank
v1.7.32 Replay AI Knows the Combat Log
2026-08-19
  • Replay assistant gets a when/where combat timeline (commanders, turn, XY, winner) so it can answer who attacked whom
  • Answers can include jump buttons that open that turn and pulse the map location
  • The robot button idles, leans while thinking, and nods when a reply arrives
v1.7.31 Replay Commander Links, Game Tooltip and Chart Max
2026-08-19
  • Commander names with apostrophes no longer break later legend links (Holzdrache in game 68465)
  • Hover the sector/game title for game id and settings; extra facts load only on first mouseover
  • Each side chart has zoom in/out and Max/Normal fullscreen
v1.7.30 Replay Diplomacy Chart, Map Tools and Mine Odds
2026-08-19
  • Messages-between-commanders chart is a race-labelled matrix: this turn vs all turns, click a cell to read the mail
  • Toolbox above the map: pan, measure light-years, lasso ships for host combat order (numeric FC, Kill, primary enemy, ship id)
  • Minefield tooltip lists every overlapping field under the cursor and the combined hit chance per light-year (normal / cloaked / web)
v1.7.29 Faster Replay Turn Loading
2026-08-19
  • Replay map becomes playable after the first 12 turns instead of waiting for the whole game
  • Turn payload is gzip-compressed; message and diplomacy data are read in one scan
v1.7.28 Commander Race Counts and Visitor Page-View Time
2026-08-19
  • Commander race comparison counts only that commander's games, not every seat in those games
  • Page-view times are sent as UTC and shown as visitor-local hours and minutes, refreshing as time passes
v1.7.27 Replay Diplomacy Charts and Commander Game Import
2026-08-18
  • Replay side charts are selectable; extra series include commands/turn, expansion, minefields, alliance slots and a commander message-flow tree
  • Click a message-flow band to read the turn-log mail between those two commanders
  • Logged-in commanders can load their finished Planets.nu games on the homepage, pick up to 3 and queue them; already imported or queued games are locked
  • Locale bundles now share the English key set; missing game.players and broken headers/keys are repaired
v1.7.26 Replay Chart Load Fix and Collapsible Legend
2026-08-17
  • Side charts load ApexCharts as an ES module (the previous window global was invisible to replay-map.js)
  • Player list on the map can be collapsed and remembers that choice
v1.7.25 Replay Ship Equipment and Host Formulas
2026-08-17
  • Ship data tab shows engine, beam type/tech, torpedo type/tech, tube count and minesweep (normal / web)
  • Sweep uses official kill² × beams (web: kill × beams); Colonies add 20 per fighter on normal mines
  • Host formulas and static equipment tables live in .github/planets-nu-mechanics.md; engine_id is imported when present
v1.7.24 Replay Minefield Tooltips
2026-08-17
  • Hovering a minefield shows id, type (mines / web), units, radius, owner/race and the turn it first appeared
  • Matching turn-log messages appear in the Messages tab when available
v1.7.23 Replay Ship Data Tab
2026-08-17
  • Ship tooltips open a Ship tab with fuel, warp fuel use, mass, crew, damage, friendly code, mission, prime enemy, weapons and cargo
  • Messages tab still appears when a turn-log entry matches that ship
v1.7.22 Replay POI Markers and Message Tabs
2026-08-17
  • Points of interest appear as map markers; hover or click shows what happened (battles, captures, lost ships)
  • Pinned tooltips have Event and Messages tabs when Planets.nu turn-log messages match the location, planet or ship
  • Planet and ship tooltips use the same Messages tab when a matching log entry exists
v1.7.21 Stop Tracking Local H2 Database in Git
2026-08-17
  • Local H2 files under data/ (*.db) are gitignored and removed from upcoming commits so pushes stay small
v1.7.20 Homepage Newsflash: Replay Map
2026-08-17
  • Welcome portal shows a Newsflash for the Replay Map: rewind the campaign instead of only reading the scoreboard
v1.7.19 Replay: Side Charts, POI Bar & Map Depth
2026-08-17
  • Replay map gets a deeper look: lit planet spheres, glow, shadows, starfield and a vignette
  • Left charts track each race's planets/starbases and ships/fighters over turns (solid / dashed)
  • Right charts show cumulative planet/starbase and ship/fighter losses per race, synced to the turn slider
  • A Points-of-Interest bar above the map clusters battles, captures and ship losses; click to jump there
v1.7.18 Replay: Planet Hover Data & Hull Icons
2026-08-17
  • Hovering a planet on the replay map shows imported turn data when available: clans, temp, mines, factories, defense, MC, supplies, minerals, friendly code and starbase
  • If the current turn has no snapshot for that planet, the last known values are shown with an as-of-turn note
  • Ships use hull-class silhouettes (colored by owner, rotated by heading) instead of generic dots
  • Ship tooltip shows the official Planets.nu hull image and hull name
v1.7.17 2D Game Replay Map
2026-08-17
  • Each imported game has a Replay view: 2D starmap with turn slider, play/pause, zoom and pan
  • Planet ownership colors update per turn; native treasure planets are marked with 1–3 stars
  • Toggle layers for planets, ships (with movement vectors), minefields and treasure stars
  • Ion-storm layer is present but disabled until storms are imported as structured data
  • Entry from the game page and from the commander games list
  • Three.js is loaded as an ES module (r170 no longer ships a global three.min.js)
v1.7.16 Commander Avatar from Planets.nu on Check-in
2026-08-17
  • Entering a Planets.nu username now loads the public profile via /account/loadprofile (no password)
  • Navbar and identify dialog show that commander's planets.nu avatar instead of the default Ted image
v1.7.15 Spacedock Check-in Prompt
2026-08-17
  • Homepage hero invites unidentified visitors: Commander, check in at the Spacedock with your name
  • Shuttle icon / prompt opens the same identify dialog as the top-left avatar
v1.7.14 Page View Details: Who & When
2026-08-17
  • Admin Page View Statistics: click a view count to open a visitor timeline (who / when)
  • Newest tab lists recent views across all pages, filterable by Commander or Unknown
  • Logged-in visitors show as Commanders (avatar, profile link); anonymous visits use a dashed Unknown/Guest identity
  • Each page row shows the Commander vs Unknown split next to the clickable view count
v1.7.13 Commander Career Charts
2026-08-16
  • Commander profile now shows career charts across imported games: finish rank (1 at the top) and end-game planets/ships
  • Header adds average finish rank and Planets.nu tenacity when available
  • Games Played list is sorted newest-first and has a search box (name, race, game ID)
  • Identified users get a My Stats button in the avatar modal linking to their commander page
  • Full i18n for the new commander/career keys across all 20 locale files
v1.7.12 Leaderboard Drill-down: Per-Turn Chart & List
2026-07-28
  • Clicking a leaderboard value opens the player page with ?lb={category} and scrolls to a drill-down section under the charts
  • Multi-player chart for the selected metric over all turns in that game (focused player emphasized with a thicker line)
  • Turn-by-turn value list for the selected player; cumulative DB counters (battles, ships built, captures, losses, …) are shown as per-turn deltas, not running totals
  • Stock metrics (planets, ships, commands, minefields) and already-per-turn fields (expansion) stay as the value for that turn
  • Applies to all standard leaderboards with game+player links; Win Rate / Different Enemies / Hull Types have no per-turn series
  • Wide layout: .container uses ~90vw from 1500px viewport width (ultrawide / 3K–5K) across all themes
  • i18n (EN/DE) for drill-down labels: over turns, turn list, turn
v1.7.11 Starbase Captures, Compare Page & Leaderboard Controls
2026-07-27
  • Most Starbases Captured: counts every planet capture that has/had a starbase (planet-driven, same idea as planet takes; ground combat always transfers the SB)
  • Compare Players: fixed broken AI-chat fragment path that could break the page; safer ApexCharts init (inline JS defaults, series padding, deferred render) to avoid error flash / slow layout build-up
  • Analysis page: same AI-chat fragment path fix
  • Leaderboard UI rewrite: formula ? panel, grip-handle drag reorder, expand/move/collapse as real buttons
  • Leaderboard JS: removed th:inline/onclick (fixed toggleLbFormula is not defined on homepage); all actions via data-lb-action + data-* config on .lb-container
  • Hint text for Most Starbases Captured updated (EN/DE) to mention ground attack
v1.7.10 Correct Planets.nu Hull Names & VCR Ship Labels
2026-07-24
  • Rebuilt Hull ID→name table from api.planets.nu/static/all (211 hulls) — previous map used wrong sequential TIM-style IDs so hull labels in Ship Experience were wrong (e.g. Merlin was mapped as Iron Slave)
  • Merlin exclusion id corrected to 105, Neutronic Refinery to 104 (official Nu ids)
  • VCR import now reads nested left/right combatant objects (hullid, name, damage) instead of missing flat fields — killer ship names and hull types are stored correctly for new imports
v1.7.9 Easter Egg: Better Icon, Ignore Merlin & Refinery
2026-07-24
  • Ship Experience easter egg header icon changed from egg emoji to Font Awesome ranking-star (fa-ranking-star)
  • Merlin Class Alchemy Ship (hull 105) and Neutronic Refinery Ship (hull 104) are always excluded from XP rankings, per-race best, and killer-ship stats
v1.7.8 Public URLs use Planets.nu Game ID
2026-07-24
  • All game URLs (detail, compare, player, analysis, export, admin actions, leaderboard links) now use Planets.nu game id as the path key instead of the internal DB id
  • Lookup accepts Planets.nu id first, with fallback to internal id for old bookmarks
  • Leaderboard/portal records and race-drilldown links emit planetsNuGameId; import queue Go-to-Game uses planetsNuGameId
  • Fixes broken Compare Player and mixed-id navigation when internal import number diverged from the real Planets.nu game id
v1.7.7 Import Messages: No Thousand Separators on Game IDs
2026-07-24
  • Import flash messages no longer locale-format Planets.nu game IDs (e.g. 500821 was shown as 500,821 / 500.821); IDs are passed as strings to MessageFormat
v1.7.6 Locale-aware Build Timestamp
2026-07-24
  • Navbar build date/time now formats according to the selected UI language (SHORT date + time via LocaleContextHolder), e.g. de 24.07.26, en 7/24/26, ja 2026/07/24
v1.7.5 Fix Player Identity, Winner Rank & Ownership Mapping
2026-07-24
  • Winner/rank: map API finishrank (was wrongly reading non-existent finishplace/iswinning) so finish position and isWinner are correct
  • Seat vs race: treat players[].id as seat/slot (ownerid) and players[].raceid as race – no longer conflate the two
  • ZIP import keys player{N} files by slot id; loadturn playerid uses slot id
  • Statistics and score import filter planets/ships/minefields/battles by owner slot id instead of raceId
  • Dead-player resolution (events, ZIP turn-1, recalculate) matches by slot id
  • Ship kill-tracker labels owners by slot id
  • games/list: status=3 for finished games; parse top-level JSON array correctly
  • Note: already-imported games keep old wrong ranks/winners until re-import or stats recalculation; re-import recommended for free-race games
v1.7.4 Import Guard for Unfinished Games & Planets.nu API Reference
2026-07-24
  • Import now rejects games that are not finished (Planets.nu status != 3) with a clear, localized error message including current status (Interest / Joining / Running / On Hold)
  • Check runs immediately when queuing an import (web UI) and again during job processing / REST import as a safety net
  • loadinfo mapping extended with top-level game object so game.status is read correctly (settings.status is often empty on the live API)
  • Also shows a dedicated message when the game ID is not found on Planets.nu
  • Full i18n for import.notFinished, import.gameNotFound, and import.status.* across all 20 locale files
  • Added agent/developer API reference at .github/planets-nu-api.md (endpoints, identity model slot vs race, finishrank vs iswinning, known code mismatches)
  • copilot-instructions.md now points to the Planets.nu API reference for import/player/race/winner work
v1.7.3 Commander Profile Page
2026-03-30
  • New Commander profile page at /commander/{username} – clicking any player name opens their profile
  • Profile shows avatar, total games, wins, win rate, and favorite race
  • Commander-scoped Leaderboard ranking all players across the commander's games
  • Race Comparison table filtered to races played by the commander
  • Games Played table with race, rank, end-game stats per game
  • Commander-scoped leaderboard drill-down API: GET /api/commander/{username}/leaderboard/{category}
  • All player username links across Leaderboards, Game, Player pages now link to internal Commander page
  • Full i18n support for commander keys across all 20 locale files
v1.7.2 Advanced Filter: Tenacity Range & Race Selection
2026-03-30
  • New Tenacity filter (min/max) in Advanced Filter – filters games by player tenacity score
  • New Race multi-select filter – filters games containing at least one player of selected race(s)
  • Player entity extended with tenacity field, imported from Planets.nu API player data
  • Flyway migration V15: tenacity column on players table
  • Full i18n support for new filter labels across all 20 locale files
  • Advanced Filter title tooltip explains global scope (Leaderboards, Race Comparison, Games) and session persistence
v1.7.1 AI Assistant: Ollama → xAI Grok Migration
2026-03-28
  • Replaced local Ollama LLM with xAI Grok cloud API (OpenAI-compatible)
  • Fixed AI chat fragment name mismatch (ai-chat → ollama-chat) that made the assistant invisible
  • Fixed API key override: application.yml empty default no longer overrides Java class default
  • Corrected xAI model name from grok-4.1-fast to grok-4-1-fast-non-reasoning
  • Improved error handling: WebClientResponseException now logs API response body
  • Updated NAS Docker .env from old Ollama config to xAI Grok environment variables
  • Updated .env.example, docker-compose.yml, DEPLOY.md with correct model name
  • Deploy script status output renamed from Ollama to AI Chat
v1.7.0 Reusable Leaderboard Fragment & Game-Scoped Leaderboard
2026-03-27
  • Extracted 22 leaderboard cards, modal, drag-drop, filter & persistence JS into reusable fragments/leaderboard.html
  • New Game Leaderboard section on game detail page ranking players within a single game
  • Game-scoped leaderboard API endpoint: GET /api/game/{id}/leaderboard/{category}
  • Fragment parameterized with stats object, storageKey (localStorage), titleKey (i18n), and gameId
  • Win-rate and longest-game categories auto-hidden when not applicable (game scope)
  • Each game's card order and collapse state persists independently in localStorage
  • Removed ~500 lines of duplicated HTML/JS from index.html
  • Added game.leaderboard.title message key to all 20 locale files
v1.6.1 Docker Script Consolidation & IntelliJ Run Configurations
2026-03-27
  • Extracted shared Docker config into docker/config.ps1 (single source of truth for NAS connection, API key, helpers)
  • Refactored deploy.ps1, start.ps1, stop.ps1, status.ps1, logs.ps1 to dot-source shared config
  • Added -SkipBuild switch to deploy.ps1 for pre-built JAR deployment
  • Fixed em-dash encoding issue for PowerShell 5.1 compatibility without UTF-8 BOM
  • Added 9 IntelliJ Shell Script run configurations (.run/) with NAS prefix for one-click Docker management
  • NAS Full Deploy uses Maven Before Launch step for integrated build+deploy workflow
v1.6.0 Page Views, Leaderboard Requests, CVE Fixes & Docker Tuning
2026-03-26
  • New entity PageViewStat with async tracking across all page endpoints
  • Admin dashboard on index page showing top viewed pages and view counts by type
  • Logged-in users can suggest new leaderboard categories (max 5 pending)
  • Admin management panel with status workflow (PENDING/APPROVED/REJECTED/IMPLEMENTED)
  • Client-side search input above leaderboard cards on index page
  • Tomcat 10.1.36 → 10.1.52 (15 CVEs fixed, incl. HIGH: DoS, path traversal, RCE)
  • PostgreSQL 42.7.5 → 42.7.7 (CVE-2025-49146 HIGH)
  • Netty 4.1.117 → 4.1.118 (CVE-2025-24970 HIGH)
  • Logback 1.5.16 → 1.5.25 (CVE-2025-11226, CVE-2026-1225)
  • POI 5.3.0 → 5.4.0 (CVE-2025-31672)
  • Docker container memory limit 3GB, JVM heap 1–2GB with G1GC
  • Tomcat thread pool: 150 max / 20 min-spare for Celeron J4125
  • Added Docker deployment scripts and MaintenanceController
v1.5.0 Advanced Filters, Ollama Chat Enhancements & Leaderboard Navigation
2026-03-25
  • Games table is now filtered by Game Settings when Advanced Filter is active
  • Badge shows filtered/total count when filter is applied
  • Ollama Chat: Context-aware suggestion chips (Index/Game/Player page specific)
  • Ollama Chat: Conversation history (up to 20 messages), Markdown rendering via marked.js
  • Ollama Chat: Animated typing indicator, clear chat button
  • Ollama Chat: Enriched game context with race abilities, battle summary, mineral trends
  • Imported Games table limited to 10 rows with Show all/Show recent toggle
  • Leaderboard tooltips, Up/Down/Top/Bottom navigation buttons with icon reordering
  • Fix: Most Destroyed Hull Types calculation now counts distinct enemy hull types in VCRs
  • Extended game settings, admin auth, and i18n improvements
  • Additional race calculations and strategy hints
v1.4.0 ZIP Bulk Import, Chart Improvements & Cache Fixes
2026-03-24
  • Single POST /game/loadall downloads entire game as ZIP archive (bulk download)
  • Import time reduced from ~8+ min to ~1–2 min for 80 turns / 12 players
  • Import Queue: Added Started/Completed timestamp columns with pagination
  • Charts: Added expand button on all charts (game, player, compare)
  • Chart X-axis: Turn labels now show every 5 or 10 steps with axis title
  • Fix: Global portal stats correctly recalculated after game delete
  • Cache eviction moved to centralized PortalStatsService with @CacheEvict
  • Extended race comparison loop to include race 12 (Horwasp Plague)
v1.3.0 Race 12, Game Delete & Access Control
2026-03-23
  • Added Race 12: Horwasp Plague – enum, analysis rules, CSS badge, chart color, tests
  • Complete game delete with portal stats cache eviction
  • Restricted game/raw-data delete to admin user with valid API key
  • Fixed Ollama model to llama3.2:3b
v1.2.0 Sci-Fi Themes, AI Chat, Charts & Export
2026-03-23
  • 5 Sci-Fi themes: Default Dark, Cyberpunk Neon, Hologram Blue, Retro Terminal, Nebula Purple
  • Ollama AI chat console with game context awareness
  • Migrated all charts to ApexCharts
  • Excel (XLSX) and PNG export for game data
  • Dead Player name fix from Turn 1 data
v1.1.0 Multi-Language Support & User Features
2026-03-23
  • Complete translations for 18 languages (cs, da, de, es, fi, fr, hu, it, ja, ko, nl, no, pl, pt, ru, sv, tr, uk, zh)
  • User/Commander registration with cookie-based session
  • Planets.nu profile link and game history integration
  • API Key management for protected game data
  • Import queue improvements and progress tracking
v1.0.0 Initial Release
2026-03-23
  • Planets.nu API integration with automatic gzip handling
  • Full game import with turn-by-turn analysis
  • Rule-based AI analysis engine for all 11 original races
  • Dark theme UI with Bootstrap 5 and Thymeleaf SSR
  • Internationalization (i18n) framework with English default
  • H2 database with Flyway migrations
  • Game overview, player detail and comparison pages