Summary
v2.6.0 finalizes the GMCP/MSDP refresh and brings the MUD much closer to modern client-panel support while also collecting the major runtime, media, loot, and content updates since v2.5.0.
Highlights
- Delivered the GMCP/MSDP refresh feature branch with native GMCP negotiation, connection handling, package support flags, and protocol regression tests.
- Added native GMCP panels for vitals, status, progression, stats, currencies, combat, affects, personal quests, global quests, group state, equipment, carry state, and belt slots.
- Added matching MSDP structures for grouped character/combat data, quest and global quest state, group state, equipment, carry state, and belt snapshots.
- Replaced legacy MSDP AFFECTS as the supported effects surface with native Char.Affects.
- Improved copyover behavior by preserving native GMCP support flags, resyncing protocol state after recovery, and dynamically sizing larger GMCP frames.
- Added type-safe MSDP-over-GMCP JSON conversion so numeric scalars remain JSON numbers for client scripts.
- Reworked client media support toward MCMP/GMCP media packages, including OGG media references, background music playlists, gameplay sound cues, and duplicate room-update suppression.
- Added git-backed version metadata and updated MSSP/server metadata.
- Improved reconnect/copyover safety, login protocol timing, compression/telopt handling, and real client IP propagation from proxy headers.
- Tuned leveling loot and ObjGen behavior, expanded loot simulation helpers, and documented leveling loot profile analysis.
- Updated area/audio content, including Lordaeron rebalance work, Draenor and Orgrimmar music, broader area music playlists, greeting/name polish, optional paging disablement, and login prompt cleanup.
Documentation
- Updated CHANGELOG.md for v2.6.0.
- Archived the release checklist as docs/changes/v2.6.0-TODO.md.
- Updated docs/gmcp-msdp-report-June26.md with the v2.6.0 implementation summary and client examples.
Validation
- make -C src test_protocol
- make -C src
- git diff —check
Note: local copyover was attempted during finalization, but Docker reported that the mud service was not running in that environment.