Changelog

The realm's development history, newest first. Each week has a quick player-facing summary and the technical detail behind it - a lot of it driven by player feedback.

29 June - 5 July 2026

For players

  • The Emblem Broker (Turco) can now upgrade your emblems one tier up the chain (Emblem of Heroism into Valor, on up to Frost), on top of transferring them between your own characters.
  • New opt-in raid encounter skip in the Adventure Assistant for the gimmick fights that are rough solo or with bots (or that hit a core script bug) - Ulduar's Flame Leviathan and Mimiron, the Icecrown Gunship Battle, and Valithria Dreamwalker. Skip a stuck one so your run keeps moving - a skip advances the raid (and for Mimiron spawns the Watcher you need at Yogg-Saron) but leaves that boss's own loot behind; normal bosses are left for you to fight.
  • The Dungeon Master now scales to your level and keeps every monster there for the whole run. It used to average the party, so high-level PlayerBots or levelling up mid-run shoved monsters to skull "??" level (and some briefly snapped back to their own level, becoming one-shot kills); now the dungeon locks to the player who started it and the levels hold steady - no more "??" monsters.
  • New per-character gathering setting: .rate gathering multiplies how much you harvest - the ore, herbs or leather each vein, plant or skinned corpse drops - separately from the skill-up speed of .rate skill.
  • New per-character option: grant yourself extra talent points (0-200, free, off by default) to experiment with deeper or hybrid builds. Set it from the Adventure Assistant's Settings menu or with .extratalents <number>. The points always survive a level-up, and if you lower the value below what you have already spent your talents are reset for free so you can respec.
  • Lucky's menu (the Adventure Assistant) now groups the arena options - Spectator, Leaderboard, Replay, 1v1 Master and 3v3 Solo Queue - under a single Arena entry, keeping the menu short so every option stays reachable even when you are in a group or guild.
  • You can now bring companion bots into a raid they were locked out of: type .playerbots bot refresh=raid before summoning them and it clears their weekly raid save, so they zone into your copy instead of their own. It works on every bot in your group.
  • Wording and translations across the site were polished for clarity, in every language.
  • Grant yourself more emblems: the new per-character .rate emblems <multiplier> (also in the Adventure Assistant's Settings menu) multiplies the badges you earn from raid and heroic boss kills, the daily random-dungeon reward and quests. Off by default; capped by the realm limit.

Under the hood

  • Local AI (Ollama) now runs GPU-accelerated on the server's GPU; the chat endpoint and model are driven from config instead of hardcoded.
  • A new Adventure Assistant engine primitive (Map:SetBossState) powers the encounter skip; both features are pinned into the build.
  • Dungeon Master scaling overhaul. The level reference is the run's leader instead of the bot-poisoned group average, and each monster's scaled level is now pinned server-side via a new core Creature field, so it can never revert to its native "??" level on respawn, summon or a mid-run level-up. mod-autobalance yields Dungeon Master monsters to the module so the two scalers stop fighting; full-health monsters stay full across a rescale and damaged ones are left alone. Party size still raises HP/damage.
  • Personal Rates' gathering-yield hook (OnBeforeDropAddItem) now covers skinning: it recognizes gathering loot by its loot store (skinning, mining, herbalism) instead of the loot type, so skinned hides finally follow the .rate gathering multiplier like ore and herbs. Quest items are never multiplied and stacks still cap at their max size.
  • Extra talent points moved from Lua into a dedicated C++ module (mod-extra-talents). A single OnPlayerCalculateTalentsPoints hook adds the bonus to the core's talent total, so the core computes free = base + extra - spent everywhere and only resets when you have spent more than base + extra. The earlier Lua version fought the core: Player::InitTalentForLevel wipes talents when used > CalculateTalentsPoints(), which ignored the Lua bonus, so anyone who had spent bonus points was reset on every level-up and login - the hook fixes that at the source. The command is now .extratalents <n> (the Assistant Settings row bridges to it) with its own character_extra_talents table.
  • This changelog page, now served in every site language with inline code and emphasis styling.
  • Build robustness: the watchdog re-arms on targeted deploys, the build lock is held across releases, a root-run build no longer breaks user creation, and the AI service comes up best-effort so a GPU hiccup never fails a deploy.
  • Every container is now individually (re)buildable and deployable from both /admin pickers: the service containers (world / auth / web / aowow) plus the data images (lua, rag, clientdata, aowow-assets, aowow-db-seed) and db-import / maintenance — the build picker rebuilds any single image and pushes it to the registry, and release deploys it. A data image has no long-running container, so a release re-runs its one-shot seeder and restarts the consumer (world for lua/rag/clientdata, aowow for the aowow seeds); selecting one used to abort with no such service.
  • The website locks sign-in and registration only in the final 5 minutes of a scheduled release countdown, not for the whole thing - scheduling a deploy an hour out no longer blocks the site for the hour. The cron wrapper publishes the scheduled go-down time and the site defers the lock + banner until then (in-game SOAP warnings still run the full countdown).
  • Personal Rates' gathering multiplier no longer mutates the shared loot template in place. OnBeforeDropAddItem is handed a LootStoreItem* straight from the cached template, so scaling its count stuck permanently - it compounded on every subsequent gather up to the uint8 ceiling and leaked to every player, and the inflated yield persisted even after the rate was lowered. It now stashes the original count in a thread_local map and restores it in OnAfterLootTemplateProcess (called once per fill, after the count has been rolled and split into stacks), so the multiplier applies per-gather only.
  • Adventure Assistant gossip menu kept under GOSSIP_MAX_MENU_ITEMS (32): the main menu had reached 30 unconditional items, so the conditional rows (guild vault, summon / resurrect party, warlock renamer) pushed a grouped or guilded player past the cap and the client silently dropped the trailing rows (Settings first). The five arena services moved into an Arena submenu, taking the main menu down to 26 with headroom.
  • Build and release survive flaky networking. Every network step - git fetch / clone / push and docker login / push / pull - retries 5 times, 3 seconds apart, re-priming the resolver (getent) between attempts instead of aborting on the first could not resolve host hiccup (tunable via AC_NET_RETRIES / AC_NET_RETRY_SLEEP). The host LAN-IP detection is also cached to the realm control directory: a web-triggered build/release runs inside the maintenance container, which cannot see the host network, so it reuses the value a host run cached rather than falling back to loopback and writing a broken realmlist address.
  • PlayerBots raid lockout is now player-clearable on any grouped bot: AiPlayerbot.ResetInstanceIdForAltBots = 1 lets .playerbots bot refresh=raid unbind raid saves on invited roaming bots and alt bots too, not just addclass standby bots. A raid binds every character to a weekly instance id, so a bot carrying an older save would otherwise zone into its own copy; UnbindInstance is a DB-light delete.
  • Emblem multiplier added to mod-personal-rates. WotLK emblems are items, so a new OnPlayerStoreNewItem hook grants the bonus copies when one enters the bags -- boss loot, the LFG RewardQuest reward, quests -- with a thread_local guard so its own AddItem does not recurse. The emblem item ids are PersonalRates.EmblemItemIds and the cap is PersonalRates.MaxEmblemRate; a new emblems_rate column (idempotent migration) and an Adventure Assistant Settings row complete it.

22 - 28 June 2026

For players

  • You can download your own characters from the website as a portable file, importable on any AzerothCore server - the realm does not lock you in.
  • Your conduct score now shows on your profile.
  • Smoother, safer updates with far less downtime when the realm is patched.

Under the hood

  • Major build/deploy refactor: an images-only build that pushes to a container registry, plus a separate release that pulls those images and deploys (no game files or bootstrap needed on the live server).
  • Cron and watchdog containerized; aowow, Lua, the AI knowledge base and client data baked into self-sufficient images.
  • Backup/restore hardened end to end - arena teams, guilds, transmog appearances, explicit item/auction id allocation, and a longer character-load timeout.
  • Whole stack moved to a self-hosted Git server; database commit-throughput tuning.

15 - 21 June 2026

For players

  • Live online player and bot counts now refresh every minute in the footer.
  • Auction House tuning: more epics in circulation (raised from 2% to 6% of volume), fewer greens.
  • Cleaner, easier-to-read moderation history.

Under the hood

  • Guildhouse module fixed for the current core API.
  • Build simplified: the watchdog safety breaker re-arms after a successful build; dropped now-redundant per-build backup branches.
  • Website CSS cache-busting and layout polish.

8 - 14 June 2026

For players

  • The Adventure Assistant is now fully translated into all 9 in-game languages.
  • The website is reorganized into clear Modules, Rules and FAQ pages.
  • New profession skill-rate multiplier in your settings; the weekly arena payout day is now shown in the FAQ.
  • Clickable item / NPC / spell tooltips (from the realm's own database) across the site.
  • Support tickets fixed so replies append correctly.

Under the hood

  • Site layout reworked to host the self-hosted aowow tooltips (language-aware).
  • Player-facing values (rates, arena day) now read live from the server config on both the site and the AI bots, so they never drift out of sync.
  • Background battleground-queue announcer fix.

1 - 7 June 2026

For players

  • Solo arena always finds opponents now: bots fill unrated 1v1 and solo 3v3 queues.
  • New Ammo-Free (hunters / warriors / rogues) and Free Soul Shards (warlocks) toggles.
  • A "Call the Dungeon Master" entry added to the Adventure Assistant.
  • Weekly arena point payouts enabled; the World chat channel is human-only (no bot spam).
  • Bots are quieter and roll more varied gear.

Under the hood

  • The AI knowledge base was split into its own repository; chat-module support added.
  • The Adventure Assistant was refactored from one 2200-line script into five focused modules, with no player-facing change.
  • Server customizations moved to a cleaner "derived" build model that is easier to maintain and fork.
  • Learn-Spells became an opt-in Adventure Assistant choice instead of being forced on everyone.

25 - 31 May 2026

For players

  • Eight new modules: Anticheat, World Chat, Flightmaster's Whistle, Arena Replay, 3v3 Solo Queue, Warlock Pet Rename, the Dungeon Master (scaled / procedural dungeons), and Pet Loot.
  • Auto-revive: a spirit healer (Lucky) appears when you die and can resurrect you on the spot, no corpse run.
  • Death Knights fully enabled (creation had been wrongly blocked); the DK starting-zone skip is now opt-in, not forced.
  • One-click Vault of Archavon access, plus a menu option to clear Resurrection Sickness / Deserter.
  • A Census dashboard with class / race / spec breakdowns and icons, in all 10 languages.
  • Smarter playerbots: spec-appropriate gear, better following, more even spread across level brackets.

Under the hood

  • Eight modules integrated with Lua gossip / quest hooks; a per-character Vault-of-Archavon opt-in table.
  • Local AI chat + moderation wired up (Ollama), with hardened prompts, an addon-chat allow-list, and usage tracking.
  • Admin suite: live log viewer, bulk account / character queries, ticket triage, async backups - all from the web.
  • All website assets self-hosted (no third-party CDN at runtime).
  • A 24/7 watchdog with auto-restart and a circuit breaker; daily backups and log rotation.

18 - 24 May 2026

For players

  • The website took shape: responsive header, 10-language dropdown, the full module catalogue with icons and descriptions, and a registration flow with an age gate and anti-bot.
  • The Adventure Assistant settings menu landed - toggle the major modules in-game.
  • A Census dashboard (live player count, daily peak, human vs bot tabs).
  • Character backup / export for data portability.
  • The local AI chat moderation went live.

Under the hood

  • Full website internationalization (language auto-detect, formal register, SEO / OpenGraph, mobile nav).
  • Per-player settings table; login and peak tracking; backup-state plumbing.
  • AI tuning (model choice, GPU support including an integrated-GPU workaround, bot-to-bot silencing).
  • Module sync hardened (merge-on-sync, conflict fail-fast, partial clones for big repos).

11 - 17 May 2026

For players

  • Development began. The server, website and AI groundwork were laid - WotLK 3.3.5a on AzerothCore, 10-language support, and the first form of the Adventure Assistant companion.
  • Mostly foundations this week; the player-facing features ramp up from here.

Under the hood

  • Orchestrator and Docker stack bootstrapped (world, auth, database, aowow).
  • Client-data extraction pipeline (maps, DBC, mmaps / vmaps) with resumable, multi-locale builds.
  • A one-script build system with host-tool checks and per-step caching.
Lighthaven online 6 players and 2000 bots connected