Install

Works with Drupal: ^10.3 || ^11

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 584 KB
MD5: 6fe0682751eebfb10691ebc63c8ae7f6
SHA-1: 0e252340e0fa975284d14460492c36180a54b2a8
SHA-256: 2d56f00f66025d8270afe5dfb85e51895c9991b5f8c03271764304d8feaa7908
Download zip 1.09 MB
MD5: 19434d8583ec5d4b5a7e9c89309e7ef4
SHA-1: ce188a68ca02850a6537c46766401a2cac748ae1
SHA-256: dbcaa4daca8e72744de96e86357e0c17b6697d31ac5131a5d34bff99ffa87b1c

Release notes

New Submodules

  • wow_guild — Guild canonical pages at /wow/guild/{region}/{realm}/{slug} with crest, roster (Views), class distribution chart, recent achievements sidebar, and activity
    feed. Configurable roster sync depth (Basic/Profile/Full). Auto-imports guilds during character sync. Guild achievements tracked via GuildAchievementData plugin. Custom rank names editable by guild
    master. Connected realm support via guild_realm_slug field.
  • wow_spell — Spell catalog with on-demand lookup. Canonical pages at /wow/spell/{id}/{slug}. Dashboard provider, local search integration, drush command
    (wspl).
  • wow_journal — Dungeon/raid instance catalog (209 instances) and boss encounters. Batch sync via AdvancedQueue. Canonical pages at /wow/instance/{id}/{slug} and
    /wow/encounter/{id}/{slug}. Uses InstanceCategory enum.

Character Pages

  • Two-column layout — Hero banner with equipment in main column (3/4), stats panel and recent achievements in sidebar (1/4).
  • Shallow imports — Roster-discovered characters created as lightweight stubs. First page visit shows a loading spinner with JSON status polling; auto-refreshes when sync
    completes.
  • Character statistics — Combat stats (attributes, offense, defense, power) stored as map field, rendered in sidebar panel.
  • Hunter pets — New wow_hunter_pet entity. Synced only for Hunter characters with class-gating and pet pruning.
  • Collection pages — Mounts, pets, toys, titles each have a dedicated Views page with local task tabs. Collection cards link to their pages.
  • Achievements page — Full character achievements via Views with local task tab.
  • Title rendering — Prefix/suffix display via API display_string (Loremaster {name} vs {name} the Kingslayer).
  • Empty equipment slots — Placeholder frames for unequipped positions (shirt, tabard, off-hand).
  • Selection upgrade — Saving character selection triggers full sync for any shallow characters.

Security & Access

  • Entity access system: view own, view any, guild-based view grants.
  • Search import endpoint converted to POST + CSRF token.
  • Guild master access check for rank editing.
  • IP hashing changed from md5 to sha256.
  • Admin bypass for character refresh cooldown.
  • SAST scoped to module code only.

API Coverage Expanded

  • Spell detail + media, journal instance/encounter, character statistics, hunter pets, quest categories (181), reputation tiers (80 tier sets), guild activity feed.

Performance

  • Render cache metadata on all 13 page controllers.
  • Local-first gating on CharacterSync and GuildSync (30-day TTL).
  • RunTestsInSeparateProcesses removed from 86 test files (~12 min CI savings).

Code Quality

  • 5 new enums: Gender, ItemQuality, EquipmentSlot, InstanceCategory, GuildActivityType.
  • Search provider helpers extracted to base class.
  • Legacy hook_wow_character_page_alter() removed.
  • Stub settings forms removed from 5 submodules.
  • views_embed_view() replaced with #type => view render elements.
  • Route standardization: /wow/character/{region}/{realm}/{name}.
  • WoW class colors CSS, wow_icon formatter with config schema.

Testing

  • 949 tests (up from 831), 9,400+ assertions.
  • Pipeline-level security tests for search import (POST-only, CSRF, permission).
  • New coverage: shallow imports, statistics, hunter pets, guild access, roster sync, collection URLs, title display, icon formatter.

Documentation

  • Dashboard/settings route distinction corrected.
  • Search import contract updated (POST + CSRF + JSON).
  • Character page architecture updated (provider slots primary).
  • Editor permission prerequisites documented.
Created by: hexblot
Created on: 23 Apr 2026 at 12:21 UTC
Last updated: 23 Apr 2026 at 12:29 UTC
Bug fixes
New features

Other releases