Skip to content

Changelog

[2026.05.29] - Align Hide and Seek Operator Status

Added

  • Extend /play info so viewers can see whether the current Hide and Seek session setup is already confirmed, and owners can see the current pending join-request count without leaving the in-game operator flow.

[2026.05.28] - Add Authenticated Hide and Seek Session Status

Added

  • Add /api/public/minigames/hide-and-seek/current as an authenticated session-scoped status route so owner or participant surfaces can read the active Hide and Seek runtime without relying on in-game commands.
  • Include owner-facing session flags on that route, including settingsConfirmed and the current pending join-request count, alongside the existing role and phase snapshot.

[2026.05.27] - Publish Hide and Seek Runtime Summary

Added

  • Expose an additive hideAndSeek runtime summary on /api/public/status, so web and launcher-facing status consumers can see live session/state and role-count totals without scraping logs or in-game commands.

[2026.05.26] - Add Hide and Seek Round Reset

Added

  • Add /play reset as a safe operator intervention path for active minigame countdowns and rounds, so owners can abort a running Hide and Seek session back to lobby setup without discarding the configured template or spawn points.
  • Rematerialize a fresh minigame play instance during round reset, clearing live phase, ready, reconnect, and result state before participants ready up again.

[2026.05.25] - Fail Closed On Editor Permissions

Fixed

  • Deny unauthenticated editor REST requests before protected handlers run.
  • Protect monitoring and playtime editor routes with explicit page access rules.
  • Deny Axiom editor permissions while the permission backend is unavailable.

[2026.05.25] - Add Hide and Seek Operator Readout

Added

  • Extend /play info so active Hide and Seek sessions expose public round state, ready and remaining timing, role counts, seeker-limit usage, and final result context directly from the runtime.

[2026.05.23] - Define Hide and Seek Vertical Slice

Added

  • Document the first playable Hide and Seek slice for the existing Gameserver minigame runtime.
  • Define the public round state contract, hider/seeker/spectator roles, dynamic seeker promotion, win conditions, and minimal result events.

[2026.05.21] - Execute Experience Lua Scripts

Changed

  • Run Experience startup scripts through a sandboxed Lua interpreter instead of source scanning, while still returning only validated Experience API commands to the GamesHost.

Added

  • Expose script event fields and payload values to Lua scripts so startup behavior can branch on runtime context without direct host access.

[2026.05.20] - Expose Current World Locations

Added

  • Allow UeblicheEngine current-world editor sessions to materialize stored world locations as editable marker nodes and write moved marker positions back to world location data.

[2026.05.20] - Bound Engine Editor Metadata Loads

Fixed

  • Keep UeblicheEngine editor catalog, template, and draft metadata lookups bounded so slow storage cannot make the in-game editor transport time out.

[2026.05.20] - Fix Engine Editor Plugin Messages

Fixed

  • Read and write UeblicheEngine editor plugin messages as raw Fabric payload bytes so the in-game editor transport can exchange JSON envelopes with the Gameserver.

[2026.05.20] - Allow Local Dev Super Admins

Added

  • Allow accountless local Launcher smoke tests to mark offline UUIDs as super admins through UEBLICHE_DEV_SUPER_ADMIN_UUIDS, avoiding permission lookup stalls during command tree generation.

[2026.05.20] - Bound Command Permission Checks

Fixed

  • Bound synchronous command permission checks so slow Mongo lookups cannot stall player initialization or disconnect local Launcher smoke tests.

[2026.05.20] - Fix Offline Skin Checks

Fixed

  • Ignore missing skin payloads during Gameserver skin review so offline Launcher accounts can join local smoke tests.

[2026.05.20] - Add Offline Dev Auth

Added

  • Allow local Gameserver starts to use Minestom offline auth with OFFLINE_MODE=true for accountless Launcher smoke tests.

[2026.05.20] - Add Experience Runtime Bridge

Added

  • Add a GamesHost Experience script-worker process runner with heap limits, timeouts, output limits, malformed-response diagnostics, and kill-on-timeout handling.
  • Package the Experience script worker as a standalone runtime JAR and copy it into the Gameserver Docker image with EXPERIENCE_SCRIPT_WORKER_JAR configured.
  • Add a GamesHost Experience script-worker runtime component that exposes the configured external worker to server-side Experience execution.
  • Add Public API bridge mappings for Experience script validation, Presence updates, live runtime status, live start, and live stop editor operations.
  • Materialize Experience playtest and live starts as local GamesHost world-stack instances, and run startup scripts through the external worker with server-side command validation.

Fixed

  • Fix current Gameserver feature compilation blockers in metadata holder construction, debug-sidebar component joining, and player report hover payloads.
  • Restrict the Arcane dependency repository lookup so local builds can continue when the upstream Maven host is unavailable.

[2026.05.16] - Use Public API Friends

Changed

  • Route /friend list, requests, add, accept, decline, cancel, and remove through the Public API Friends server endpoints.

Removed

  • Remove local Gameserver Friends persistence, local Friends REST routes, and the local Friends live WebSocket.

[2026.05.16] - Use Public API Parties

Changed

  • Route /party, voice bridge grouping, shared-hub heartbeats, and minigame party ownership through Public API party snapshots.
  • Keep minigame-local partyId only as a setup key while refreshing leader and member state from the Public API.

Removed

  • Remove local Gameserver party persistence, User.partyId, open parties, and custom party size handling.

[2026.05.03] - Server Defined Social Chat Channels

Changed

  • Send Social chat channel definitions from the Hub and GamesHost so the Hub offers only Global chat while team-capable rounds can enable Team chat.

[2026.05.03] - Scope Games Chat Channels

Changed

  • Format GamesHost chat as explicit Global and Team channels, and keep Global chat scoped to the current match instance instead of every online player on the host.

[2026.05.01] - Reuse Permission Decisions

Changed

  • Route legacy Gameserver command permission precedence through the shared permission decision library while keeping the existing Mongo permission storage schema.

[2026.05.01] - Match SkyBlock Fluid Physics

Fixed

  • Run SkyBlock water and lava updates on the Minestom instance tick so their flow timing matches vanilla-style water and overworld lava delays.
  • Prevent fluids from spreading sideways before they can fall downward, and treat unloaded chunk edges as blocked instead of crashing fluid updates.

[2026.05.01] - Reuse Combat Damage Text

Changed

  • Reuse the shared Minestom combat text display for generic Gameserver campfire damage.

[2026.04.26] - Add Gameserver Connect SDK integration

Added

  • Add a Connect SDK bridge so the Gameserver can auto-register, publish a minecraft-tcp Gateway route, and send public server status snapshots through the Public API.
  • Add Connect runtime configuration for persisted connect.json credentials, Gateway target selection, optional public capacity, snapshot refresh, and retry behavior.

Changed

  • Separate /readyz internal connection-route readiness from Connect SDK readiness so dev stays tolerant while preview and production can require Connect with CONNECT_REQUIRED=true.
  • Mount persisted Connect configuration in Gameserver deploy stacks so auto-registration credentials survive container restarts.

[2026.04.20] - Expose main manifest patch state

Added

  • Add /api/world/patch/main-manifest so internal operators can inspect the active main-world manifest, including the released base map version and currently live approved patch-set ids.

Changed

  • Extend /api/world/patch/branches with patch-set, review, merge, and live-on-main-manifest metadata so dashboard tooling can distinguish queued submissions from changes already shipped on the active runtime stack.

[2026.04.15] - Refresh citybuild patch priorities

Changed

  • Reframe the citybuild/world-patch delivery plan around the current repo state: the first operator routes are already shipped, page-access coverage now guards the new district and patch branch endpoints, and the top next slice is a read-first Maps dashboard surface rather than more backend expansion.

[2026.04.14] - Add citybuild patch operator routes

Added

  • Add /api/world/citybuild/districts so operators can list citybuild districts without going through raw Mongo inspection.
  • Add /api/world/patch/branches plus branch open/submit endpoints so the already-wired world patch workflow has a first internal REST surface for preview branch operations.

Changed

  • Reuse the existing maps editor permission nodes for the first citybuild/world-patch operator slice, keeping access control consistent until a dedicated dashboard module exists.

[2026.04.14] - Add account badge foundation

Added

  • Add a shared account-badge model plus derived badge resolution for Premium support, Discord boosting, login streaks, cheat reports, and bug reports on user payloads.
  • Add a dedicated editor route for replacing manual user badges so founder, event, and winner badges can be granted without direct Mongo edits.
  • Add /api/events/{id}/badges/grant so event-specific participant or winner badges can be granted in bulk to pasted UUID or username lists.

[2026.04.13] - Prioritize citybuild patch workflow

Changed

  • Document the already-wired citybuild/property and world-patch runtime as the next Gameserver delivery slice so planning now reflects the existing services, world-stack integration, and Mongo-backed domain model instead of treating it as a distant backlog idea.

Added

  • Add a dedicated feature plan for the first operator-facing citybuild/world-patch workflow, centered on narrow district and branch management routes before broader dashboard or economy work.

[2026.04.11] - Add builder mode to UeblicheEngine sessions

Added

  • Add builder-aware UeblicheEngine session commands for selection points, block edits, clipboard transforms, template save/load, player utilities, and world property overrides on top of the existing scene editor routes.
  • Add /api/engine/templates for listing native builder clipboard templates directly through the engine transport.

Changed

  • Bind engine sessions to live editor instances and enrich session snapshots with builder context, selection/cursor presence, clipboard summaries, reservation ownership, and builder undo/redo depth.
  • Gate builder commands behind the new mods:uebliche_engine.* permission family and migrate matching legacy Axiom builder grants onto the new nodes during permission registry startup.

[2026.04.10] - Add moderation evidence bundles

Added

  • Add a moderation evidence capture pipeline for player reports that persists a -5m/+5m forensic window with raw timeline events, inventory snapshots, chat references, and a dedicated Mongo bundle document.
  • Add moderator read APIs for report bundles and raw report timelines so staff can inspect captured movement, commands, chat context, and linked evidence directly from the editor.
  • Add live staff notifications for newly created reports so online moderators with the matching dashboard read permission receive both a chat message and an in-game toast immediately.

Changed

  • Start evidence capture automatically when a PLAYER report is created ingame or through the editor API, and extend report payloads with bundle lifecycle fields such as capture windows, bundle status, and timeline counts.
  • Enrich stored chat messages with instance and channel context so report bundles can reconstruct both the reported player's messages and surrounding conversation in the same time window.
  • Move moderation evidence capture onto the shared libs/moderation-evidence module tree so loader-free rules, Minestom event normalization, and Mongo time-series setup stay separated behind the canonical core/adapter/storage split.

[2026.04.08] - Add performance spike incident monitoring

Added

  • Add a shared tick-performance probe plus a /metrics endpoint so the Gameserver now exports MSPT, heap, CPU, player, instance, Mongo latency, and incident metrics directly to Prometheus.
  • Add a persisted performance_incidents workflow with MSPT spike detection, 90-day retention, log-excerpt capture, and editor API routes for listing and inspecting incidents.

Changed

  • Drive the ingame debug sidebar MSPT history from the shared monitoring probe so the sidebar, incident detector, and Prometheus metrics all observe the same tick signal.
  • Emit structured Gameserver monitoring logs when performance incidents open, escalate, and resolve so spike investigations stay visible in the existing live log stream.

[2026.04.06] - Reduce join stalls on slow login lookups

Changed

  • Bound slow login-time ban, maintenance, and last-location lookups with short fallbacks so players are not held in configuration for multiple seconds when Mongo is slow or cold.
  • Prefer valid local dev resource pack ZIPs from the Gameserver workspace during local runs so builders can test fresh packs without waiting for broken CDN artifacts to be replaced.
  • Restore PackSquash ZIP obfuscation for published resource packs while disabling ZIP reuse metadata so changing protection settings does not silently poison later builds.

Added

  • Log slow login configuration and spawn-resolution steps so delayed joins can be traced directly from Gameserver logs.
  • Expose a local dev resource pack download route on the Gameserver web port so local clients can keep using plain, Minecraft-compatible ZIPs even while publish builds stay obfuscated.

[2026.04.06] - Add branch preview gameserver deploys

Added

  • Start a dedicated preview Gameserver stack for non-default Git branches so backend changes can be validated ingame before merging.

Changed

  • Route branch preview deploys through the shared default proxy instead of trying to stand up a second branch-specific proxy on the same public Minecraft port.
  • Refresh the Gameserver container build inputs for CI so branch preview images include the locally versioned Minestom kit modules required by the current Gradle project graph.

[2026.04.06] - Update Minestom to 26_1 snapshot

Changed

  • Bump the shared Gameserver Minestom dependency from 2026.03.25-1.21.11 to 26_1-SNAPSHOT and resolve it through Sonatype snapshots so local builds can track the current upstream 26.1 draft line.
  • Switch Gameserver time-freeze handling from the removed setTimeRate/setTimeSynchronizationTicks API to the new default-clock pause/resume flow introduced by Minestom 26_1.

Fixed

  • Adapt Axiom block break/place event dispatch to the Minestom 26_1 constructor signatures so editor-side block changes compile and keep firing the expected cancellable player events.

[2026.04.06] - Add UeblicheEngine editor scaffold

Added

  • Add an in-memory UeblicheEngine editor scaffold inside the Gameserver with collaborative scene sessions, node locks, volume reservations, patch streaming, undo/redo, and publish snapshots.
  • Add /api/engine/* editor transport routes plus dashboard access rules and permissions for engine scenes, sessions, commands, and publish actions.

[2026.03.29] - Add regional shared hub coordinator

Added

  • Add a Redis-backed shared-hub coordinator inside the Gameserver for player heartbeats, shard heartbeats, migration tickets, party co-location requests, and match allocation decisions.
  • Add internal /api/internal/shared-hub/* routes so shards can publish heartbeats, request co-location, ack migration tickets, and inspect active shard/ticket state.
  • Add targeted Gameserver tests for shared-hub region selection and migration-ticket lifecycle handling.

Changed

  • Publish regional shard heartbeats and remote-avatar caches from the Gameserver so cross-region hub presence can be mirrored per zone instead of only locally.
  • Merge remote shared-hub players into the existing launcher/social presence export so cross-region users become visible in the public presence read model.
  • Gate the shared-hub runtime behind SHARED_HUB_ENABLED and optional Redis configuration so existing environments stay unchanged until the feature is configured.

[2026.03.29] - Add overlay group event activation

Added

  • Add overlay-level groups and priority so builders can tag event-ready schematic overlays directly on the overlay definition instead of encoding season logic into placement rules.
  • Add ingame /overlay groups, /overlay group add|remove|clear, /overlay priority, /overlay preview-group, and /overlay preview-event commands for assigning overlay groups and previewing event-driven selections inside editor instances.

Changed

  • Merge all event-selected overlays for a map version into one composite runtime overlay so seasons, holidays, and temporary world events can stack through overlayGroups and overlayKeys.
  • Extend temporal event overlay actions to understand overlayGroups and overlayKeys while keeping the legacy single overlayKey payload compatible.
  • Persist active overlay selections with resolved overlay keys and overlay groups so block-applied event overlays restore cleanly after instance restarts.
  • Let cloned minigame arenas inherit the active map-version overlays and layer additional minigame/... overlay groups by template, state, and phase so arena-specific seasonal/event dressing can react automatically at runtime.
  • Bump the Gameserver's shared Minestom dependency from 2026.03.03-1.21.11 to 2026.03.25-1.21.11 to pick up the latest upstream 1.21.11 fixes and runtime improvements.

[2026.03.21] - Harden minigame start flow

Changed

  • Wait for all online player transfers into the arena to finish before the first minigame phase starts so countdown completion no longer races ahead of teleports and loadout application.
  • Remove failed game-start joins from the round before phase execution begins instead of leaving partially joined players in team state.

Fixed

  • Separate PvP elimination from the generic voluntary leave flow so combat removals no longer depend on the broader lobby-exit path.
  • Clear transient minigame runtime state such as frozen-player tracking and pending respawns when a participant is removed from a round.

Added

  • Add encrypted Minecraft resume cookies backed by Mongo reconnect sessions so players can be restored after a gameserver restart instead of only being kicked back to a lobby.
  • Add reconnect session storage with TTL cleanup and restore targets for the main world, map worlds, and map editor instances.
  • Add token codec coverage for reconnect cookie round-trips and tamper rejection.

Changed

  • Start a reconnect drain when the gameserver shuts down so existing players receive a resume token before the shutdown grace period ends.
  • Request resume cookies on player load and restore matching sessions back into the correct world or editor instance after reconnect.

Fixed

  • Block new joins while a gameserver is draining for restart so fresh logins do not enter a backend that is already on its way down.

[2026.03.21] - Move map version payloads to GridFS

Changed

  • Store MapVersion terrain payloads in Mongo GridFS while keeping only map version metadata in the map_version documents.
  • Load map version Polar data lazily from GridFS for editor opens, previews, render generation, and transfer-zone alignment instead of embedding the full binary payload in every Mongo read.

Fixed

  • Migrate legacy inline map_version.data payloads into GridFS on boot and on first access so older worlds continue to open without a one-off manual migration step.
  • Keep map version create, update, and editor save flows consistent with the new payload backend, including GridFS cleanup when a payload is replaced or a write fails.

[2026.03.21] - Move world history to Mongo and GridFS

Changed

  • Move editor world history storage from the local Git repository to Mongo metadata plus GridFS snapshot archives while keeping the ingame /history flow intact.
  • Materialize history previews and visual history diffs from Mongo/GridFS archives instead of from local Git checkouts.

Removed

  • Remove the dedicated JGit-based world history backend and its Gameserver dependency path.

[2026.03.21] - Add visual history diff overlays

Added

  • Add a visual history diff mode for editor worlds that renders glowing green and red block displays around the builder's current position.
  • Add /history diff, /history prev, /history next, /history refresh, and /history clear so builders can step through commit-to-commit world changes ingame.
  • Add analyzer tests for local block-diff classification and diff truncation limits.

Changed

  • Extend the ingame history detail view with a one-click visual diff action that opens the selected commit as a red/green world diff instead of only as a read-only snapshot world.

[2026.03.21] - Add ingame world history viewer

Added

  • Add an ingame /history viewer for editor worlds with paged commit browsing, commit details, and one-click snapshot preview worlds.
  • Add an ingame history commit flow so builders can capture named world snapshots without leaving the editor.
  • Add targeted unit coverage for the new snapshot history backend, including commit listing, diff details, and commit materialization.

Changed

  • Store editor world history in a Git-backed snapshot repository so map edits can be reviewed as commits instead of only transient undo stacks.
  • Initialize the snapshot history repository automatically when the Gameserver boots so history browsing works before the first manual setup step.

[2026.03.21] - Expand ingame WorldEdit region tools

Added

  • Add direct editor commands for set, walls, and faces so common shell and fill edits no longer need the broader /we ... wrapper.
  • Add block-mask matching for region edits and replacements, including comma-separated block lists and partial block-state filters like stairs facing.
  • Add unit tests for block-mask parsing and for the exact block coverage of walls and faces.

Changed

  • Parse WorldEdit replacement and fill blocks as full block states so commands can place configured variants instead of only plain base blocks.

[2026.03.21] - Add ingame WorldEdit command suite

Added

  • Add an editor-only /we command suite for region selection, copy, cut, paste, rotate, replace, stack, move, undo, and redo workflows.
  • Add a transient per-player clipboard and undo/redo history for ingame world editing in editor instances.
  • Add direct editor shortcuts like /copy, /paste, /undo, /redo, /move, /stack, /pos1, /pos2, and /wand.
  • Add unit tests for WorldEdit selection math and clipboard rotation/materialization.

Changed

  • Apply command-driven WorldEdit block changes in chunk-aware tick batches instead of one giant synchronous write burst.
  • Add a vanilla-style WorldEdit wand item that sets pos1 and pos2 directly from block clicks inside editor worlds.

[2026.03.21] - Auto-align transfer zone overlaps

Changed

  • Add optional target regions to transfer zones so editor handoffs can preserve the player's relative position instead of always dropping into the target world's default entry point.
  • Add a block-data based transfer-zone alignment endpoint and editor workflow that nudges an approximate target region onto the best matching overlap in another map version.
  • Extend the map editor transfer-zone form with explicit target bounds, priority editing, and one-click auto-alignment for map-version targets.

Fixed

  • Keep transfer-zone handoffs spatially consistent across overlapping corridors, stairs, and similar mirrored transitions once a target region is configured.

[2026.03.21] - Harden transfer zone routing

Changed

  • Type transfer-zone targets explicitly as instance or map-version destinations while keeping the legacy flat target fields readable for existing dashboard payloads.
  • Prioritise overlapping transfer zones deterministically by priority, threshold, and zone size instead of relying on config order.

Fixed

  • Stop transfer zones from starting duplicate asynchronous map-version transfers for the same player while one handoff is already in flight.
  • Move async map-version handoffs back onto the main server tick before calling setInstance, avoiding off-thread instance transfers.

[2026.03.21] - Add ingame inventory viewer

Added

  • Add a read-only ingame inventory viewer with dedicated views for quick access, backpack, bank, and equipment.
  • Add /inventoryview and /invsee so staff can inspect persistent player inventories without touching the live item state.
  • Add dedicated permission nodes for viewing your own inventory snapshot and for inspecting other players.

Changed

  • Reuse the persistent inventory snapshot pipeline for staff-side inspection so backpack and bank contents can be viewed ingame with the same resolved item metadata as the editor.

[2026.03.21] - Add quick access backpack inventory

Changed

  • Reserve the upper-right player inventory slot for a vanilla-like backpack button while keeping the remaining 35 quick-access slots fully player-defined.
  • Split persistent inventory loading so normal joins and respawns only hydrate quick access plus equipment, while bank and backpack contents load on demand.
  • Extend the editor inventory payload with backpack storage, assignments, overflow, and the reserved quick-access slot marker.

Added

  • Add a paged persistent backpack storage with /backpack as a direct fallback to the ingame inventory button.
  • Add per-player inventory profiles to control backpack capacity independently from the deeper bank storage.
  • Add unit tests for quick-access slot mapping, backpack capacity normalization, and the legacy slot-17 migration path.

Fixed

  • Migrate legacy physical slot 17 into backpack storage lazily so existing player inventories do not lose items when the reserved backpack slot becomes active.
  • Stop the reserved backpack button from being persisted, moved, merged, or dropped through the normal quick-access sync path.

[2026.03.21] - Speed up Gameserver joins

Changed

  • Run ban, IP-ban, and maintenance bypass checks in parallel during the Gameserver login phase instead of waiting for them one after another.
  • Preload permission and punishment type lookup collections so the core join path starts with warm local cache entries.

Fixed

  • Collapse duplicate permission reads on join so a single maintenance bypass check no longer fans out into avoidable Mongo roundtrips.
  • Reuse cached runtime and Mongo-backed spawn positions before falling back to a fresh location query during player configuration.

[2026.03.21] - Refine minigame setup menus

Changed

  • Split the ingame minigame owner menu into focused setup screens for arena settings, spawn points, loadouts, and launch control.
  • Open the ingame setup menu immediately after /play create instead of only sending a chat hint.

Fixed

  • Rename the join prompt to "Join Minigame" so the entry flow is no longer confused with owner-side setup.

[2026.03.21] - Fix minigame elimination and portal state

Fixed

  • Remove eliminated Arena PvP and Free For All players from active game state when they are sent back to the main world so team win conditions can finish correctly.
  • Cancel pending minigame start countdown tasks when a game is cancelled, unregistered, or the Gameserver shuts down.
  • Keep the visible minigame join portal aligned with the configured game center unless a custom portal position was set explicitly.

[2026.03.21] - Fix schematic edit sessions and placement selection

Fixed

  • Run temporary /schedit worlds as real editor instances again so Axiom, /save, and editor return flows stay available while editing schematics.
  • Save schematic edit session changes back into the referenced schematic before /schedit return teleports the builder back to the source editor.
  • Stop the legacy placement editor from locking all builders onto one shared active placement selection.

[2026.03.20] - Fix maintenance runtime monitoring noise

Fixed

  • Stop the debug sidebar voice traffic widget from throwing runtime exceptions when the legacy voice UDP server is disabled.
  • Skip Mongo change stream startup for the public_server_samples time-series collection so local and production logs no longer fill with unsupported watcher errors.

[2026.03.20] - Upgrade Minestom to 1.21.11

Changed

  • Upgrade the Gameserver runtime from Minestom 2025.10.31-1.21.10 to 2026.03.03-1.21.11.

Fixed

  • Adjust schematic paste callbacks to Minestom's new inverse-batch callback signature so schematic placement keeps compiling and completing on 1.21.11.

[2026.03.20] - Replace custom Ollama layer with LangChain4j

Changed

  • Run Gameserver NPC chat and moderation prompts through LangChain4j's Ollama integration instead of the homegrown HTTP wrapper.
  • Keep the existing /api/ollama/* dashboard tools stable while moving the actual LLM runtime behind a shared ai/llm service.

Added

  • Add unit tests for LLM JSON normalization, stored chat message helpers, and the shared tool registry wiring.

Removed

  • Remove the duplicate ai/ollama transport and model layer in favor of the smaller provider-neutral ai/llm package.

[2026.03.20] - Fix shutdown and Mongo runtime handling

Fixed

  • Run Gameserver onPostDisable() hooks again by keeping components enabled until the post-disable phase completes.
  • Stop Mongo change listeners from dropping update and delete events for documents that are not already cached locally.
  • Avoid shutdown hangs by forcing remaining players off the server after a configurable grace period.
  • Stop the Gameserver bootstrap from waiting forever on components whose dependencies have already failed or gone missing.
  • Evacuate players from removed world instances with a bounded wait instead of spinning until transfers happen by chance.

Changed

  • Run Gameserver Mongo CRUD work on the dedicated Mongo executor instead of the shared common async pool.
  • Reuse cached query ID lookups in the Mongo collection layer instead of always hitting the database again.
  • Register Minestom commands sequentially during startup instead of mutating the command manager from a parallel stream.
  • Preload schematics into the Gameserver cache and build creative editor tabs directly from cached entries instead of re-querying per player refresh.

[2026.03.17] - Add launcher guard allowlist config

Added

  • Add a persisted launcher_guard_allowlist config document and editor routes so the hosted launcher Network Guard allowlist can be managed centrally.

Changed

  • Gate the new launcher guard config behind dedicated editor page access and permission nodes for read and edit operations.

[2026.03.16] - Disable legacy Simple Voice Chat runtime

Changed

  • Disable the embedded Simple Voice Chat runtime on the Gameserver so the supported production voice path is now Public API + uebliche-voice-node + the uebliche social client.
  • Reject legacy Simple Voice Chat handshakes clearly instead of partially bootstrapping an unsupported UDP voice session.

[2026.02.01] - Dev compose without gateway

Added

  • Add a standalone Gameserver dev compose file that runs without the gateway stack.
  • Document the no-gateway dev workflow for Gameserver.

[2026.02.01] - Feature checklist

Added

  • Add feature checklist page to track project progress.

[2026.01.24] - Games live deploy toggle

Changed

  • Add a live toggle for games deploys and default tags to latest + short hash.

[2026.01.24] - Games deploy actions

Added

  • Add a Uebliche.dev project file and deploy script for the games server.

[2026.01.24] - Leaderboard history

Added

  • Document UUID leaderboard subjects and history tracking.

[2026.01.24] - Leaderboard scopes

Added

  • Document leaderboard scope storage for global, network, server, and gamemode rankings.

[2026.01.24] - Lobby menu

Added

  • Document the lobby menu flow for players joining without JoinMe cookies.

[2026.01.23] - Minigame leaderboards

Added

  • Document stats storage and leaderboard aggregation for minigames.

[2026.01.23] - Minigame win rules

Added

  • Document data-driven minigame win conditions and scoring hooks.

[2026.01.23] - Item action extensions

Added

  • Document ammo and damage item actions for the data-driven items system.

[2026.01.23] - Item action reference

Added

  • Document data-driven item actions, triggers, and inheritance for the Games SDK runtime.

[2026.01.19] - 2026-01-19

Changed

  • Rephrase the Gameserver landing page to be player-focused, highlight the MMO RPG + minigame scope, mention LLM-driven NPCs, and add the evolving world promise.

[2026.01.15] - 2026-01-15

Changed

  • Move the Gameserver source into its own repository and track it as a submodule.

Removed

  • Remove the legacy friends REST + live stream endpoints (/api/social/friends*) now served by the public API.

[2026.01.11] - 2026-01-11

Changed

  • Add a Close Beta banner to the Gameserver docs landing page.

[2026.01.07] - 2026-01-07

Added

  • Add the docs changelog page for Gameserver.