v0.1.5-forever
What's new
# Changelog
## v0.1.5 (2026-10-09)
Everything in v0.1.5-beta1, plus the fixes from a code review of the protocol and persistence:
- A character whose name merely extends ours ("Dea Onex", "Deaone", or our first name alone) can no longer replay our hello and become our identity, taking our hosted games' ownership with it (#62, #72). On classic realms the realm is part of the identity too (#76).
- Another host can no longer poison a game's squares by announcing a set under that game's hash: a set is trusted only when its hash comes out of its content and it came from the game's own host, in memory and in the saved library (#63, #73).
- A snapshot that arrives after newer calls no longer rolls the game back and erases them (#64).
- A follower that missed the last call before a game closed now recovers it: the host stays around to answer, keeps answering until the final state is through, and History ends up with the full result (#65, #74).
- Handing a game over is reliable: a recipient that missed a call before the handoff, or the handoff message itself, still takes over; the old host resends until the new host's first card and refuses to call meanwhile (#66, #75).
- Logging in on an alt no longer rejoins the main's games; joined games are saved per character (#67).
- A join whose request or welcome was lost is asked again, a few times, before the addon says it could not join (#68).
- `/dea undo` on a square that was never called no longer calls it (#69).
- The chip and the toast anchor come back where they were dragged after a reload (#71).
- CI fails when the headless client smoke fails (#70).
## v0.1.5-beta1 (2026-10-09)
- The game tab can also shrink in height, to 440; the other tabs keep the full minimum and the window grows back on leaving the game tab (#61).
## v0.1.4 (2026-10-09)
- Addon messages sent while the Forever client is in a chat lockdown (encounters) wait in a queue and go out, in order, when it lifts; only the newest heartbeat per game is kept. `/dea status` says whether the lockdown is on and how many messages wait (#43).
- A send made in the second after a lockdown lifts no longer overtakes the messages still held (#45).
- The queue keeps the newest heartbeat, hello and sync request per destination, and no longer lets a whispered heartbeat evict the broadcast one (#46).
- One held message failing to send no longer loses the ones behind it (#47).
- A held group message goes out on the channel the group has when it leaves, not the one it had when it was held (#48).
- During a lockdown a follower no longer marks the host away or reports a held call request as lost; the timers restart when it lifts (#44).
- A join request held through a lockdown still gets its welcome accepted when it finally goes out (#49).
- A sender or guild roster name the client hands over as a secret value no longer reaches the debug tap or the roster match (#52).
- The window built by a reload mid-fight comes up dimmed and unclickable, like one that saw the fight start (#53).
- In combat the window's header stays live: the close button and the title-bar drag work while the rest is dimmed (#54).
- A text box that had the keyboard when combat started lets it go, so keys reach the game again (#55).
- A confirmation card closes with the window (Escape, a reload) and when combat starts, instead of staying up with a stale action behind its button (#56).
- Calls that land in a burst after a fight make one tick, not one per call; a bingo always sounds (#57).
- A send the client refuses for a lockdown that began after the check, or that the chat library had already spooled, goes back to the front of the queue; `/dea net` counts refusals and `/dea debug` shows the client's result code (#50).
- The queue also drains the moment the client reports the restriction over, not only on the next tick (#51).
- The game tab can shrink to the board alone: below the full width the standings and calls rail hides and the board takes the window; the other tabs keep the full minimum and widen the window back (#59).
- A hello held through a lockdown still teaches the client its own server-side name from the echo when it finally goes out (#60).
## v0.1.3 (2026-10-09)
- Standings: each player on two lines, the whole name (Forever names are two words) then the meter and the CALLER flag, so rows no longer collide (#40).
- Hover a player in the standings to see their grid as dots, like the chip's: called squares lit, a winning line brighter. Positions only, never their square text (#41).
- Calling: a caller's click calls the square, a click on a called square undoes it, with no confirmation; any call can be undone and redone. Others still click a square to read its full text (#42).
## v0.1.2 (2026-10-09)
- Version shown on the Options tab and in the minimap tooltip, with a note on the Options tab when a newer release is around.
- Resizing the window: the History and Games lists now widen with it, and the Options rows no longer lose their hints and buttons.
- The website's footer one-liners, retold for the addon, in the window footer on the Games, History and Options tabs. A new one every 30 seconds.
## v0.1.1 (2026-10-09)
- Update notice: players hear once per session when a newer release is around, and a release can set a minimum version to join.
- Crest textures re-keyed from the source: the shield interior stays filled, so the D and A no longer show black counters and the speckle between the letters is gone. `design/crest-key.py` regenerates them.
- Options tab scrolls: at the minimum window height the rows ran past the panel.
Includes everything from v0.1.1-beta1 below.
## v0.1.1-beta1 (2026-10-07)
Prerelease for guild testers: every fix from the 2026-10-07 review (GitHub issues #1 to #35).
- Ownership and identity: no takeover by a higher generation, no identity replay, welcomes only after a join request.
- Capacity: paged snapshots, a 120-player cap, items cached from the broadcast, retitle keeps items, rate buckets per role.
- UI: real diagonals and diamond marks, board rows that grow instead of clipping, tabs that always leave history, a larger minimum size, toasts and chip clear of raid warnings, combat scrim, paste card fixes, reduce-motion option, clear history.
- Protocol: transfer wired with a confirmation, sync back-off, closed games reach lobbies, audience checks, sanitised wire times, website rules on closed games.
- Release: single release path with top-section notes, pinned libraries and actions, licence texts shipped.
## v0.1.0 (2026-10-07)
First playable build for the World of Warcraft: Forever beta.
- Host-authoritative game sync over addon messages, guild or group audience.
- Board, standings and call log in one window with tabs: Game, Games, History, Options.
- Click a square to call it after a confirmation; an alphabetical caller list with a filter.
- Toast with a Join button when a game opens; chip with a dot grid while the window is closed.
- Minimap button with an attention badge; sounds on call, undo and bingo, silent in combat.
- Setup with paste-a-list and a picker of previous games; finished games kept under History.
- The DEA crest in the header and as the free centre square.
This mod has no additional files

