v1.2.2-bcc
What's new
Changelog
All notable changes to this project are documented in this file. The format is based on Keep a Changelog.
1.2.2 (2026-09-23)
Fixed
- A bet title cut short with "..." in the bet list or the detail pane now shows its full text in a tooltip on hover.
- The Close betting button no longer shows once a bet is already CLOSED, where it had nothing left to do.
1.2.1 (2026-09-22)
Added
- The mail payout panel's Fill button turns into a "Sent?" checkbox once pressed. Checking it marks that due as paid by hand, for when the automatic detection of a sent mail somehow misses it.
Fixed
- Recipient, amount and bet title now each get their own line in the mail payout panel: a long guild-realm name used to cut the amount off.
1.2.0 (2026-09-22)
Added
- FixedBets now notices when you join, switch, or leave a guild, live and even when the change happened while FixedBets was not running on that character, and prints one chat line about it. Switching guilds does not touch the previous guild's bets; they are simply not shown until you are back in that guild.
- A guild's saved data is dropped automatically once your account has not seen that guild in over 180 days, so the saved file does not keep growing across every guild a character ever passed through.
- The guild bank panel shows what a stake would pay if its option wins, updated as you type, pick an option, or as other players' stakes change the odds.
- A new bet from anyone else prints a chat line naming its title, so you notice it without having the window open. Not shown for a bet you created yourself, and can be turned off in Settings.
Security
- Addon messages from anyone who is not on your guild roster are ignored, for every message type. Live events, hellos and relays are only accepted from the guild channel, and answers to a hello only as whispers.
- Size and rate limits: a message is refused when its text is too long, it expands to more than 256 KiB (a decompression bomb can no longer freeze the game), or it carries too many events or bet ids. Each member also has a per-second allowance (5 messages a second, enough for a whole ledger of small bets at chat throttling speed), and long answers are split into several messages so that a full sync still fits.
- One message may carry at most 2000 snapshot entries (the entries of the stakes in a result or cancel) in all, and every 50 of them cost one event of the sender's allowance. Before, one snapshot shared by many events made a 6 KB message use megabytes of memory.
- Your client answers the hello of a given member at most once a minute, and the ids of a "bet removed" or "bet wanted" message are counted, limited to 200 per message and looked at once each, so a small forged message can no longer make every client serialize its whole ledger or work out the same bet hundreds of times.
- Every event is rebuilt from its known fields, with types and lengths checked, before it is stored or passed on, and names and ids may not contain control characters or the
|that starts a colour or texture code. The saved data gets the same check when you log in; events that fail are set aside in a quarantine list instead of breaking the window, a saved field of the wrong type is reset, and one damaged bet no longer raises an error on every refresh. - Limits on stored data, built so that one member cannot use them to lock the others out: each kind of event has its own share of a bet (900 stakes, 900 confirmations, 3 results, 3 cancellations, 3 closings, 200 payments, 200 payment undos), one author may hold 300 events of a bet, and 2000 events per bet stay as the last resort, so junk stakes can never keep the admin from ending or paying a bet. A ledger holds at most 450 bets, and a hello always lists at most the newest 500, so a flood of finished bets cannot make every hello invalid. An author may have 20 open bets, or 100 when the events come live from that author (they cannot be forged). Up to 100 bets that never received their start event are kept for 7 days and can still get their start event later. The 200 latest changes of the treasurer ranks are kept.
- A "bet removed" notice from another player now removes only a settled bet older than 30 days, so a forged notice can no longer erase a bet that still has unpaid dues. A bet that can never settle here, because its result is over 60 days old and names stakes this client never received, is removed by the regular clean-up.
- Sync protocol version 2. Versions before 1.2.0 cannot sync with 1.2.0 in either direction (they tell their players that a newer version is needed), so the whole guild has to update.
- The hidden
/fbets spikediagnostics command and its saved report were removed. - The message about a newer version is shown only after two different members have sent a newer protocol version, so one modified addon cannot show it to everyone.
- The bundled LibDeflate has a new method,
DecompressDeflateLimited, that stops at an output size limit;DecompressDeflateis unchanged, so other addons that share the library keep working. FixedBets checks the library again whenever that function is replaced by another addon and turns sync off if the limit is not enforced. The patch is documented indocs/local-library-patches.md. - Saved data is upgraded to schema 2 automatically the first time 1.2.0 runs.
Fixed
- Payments stay valid when the Guild Master changes the treasurer ranks afterwards. Before, the dues of earlier payments looked unpaid again and could be paid twice.
- Only the first guild member to answer a sync request sends its data. Before, every member whose data differed answered every request.
- Withdraw remembers the gold you already withdrew and have not paid out yet, so pressing it twice no longer takes the same dues twice. The bank panel shows what is still to withdraw and what is already withdrawn.
- The result and cancel confirmation checks the stakes again when you press Confirm, and submits nothing if a stake changed while the dialog was open, instead of rejecting stakes you never saw listed.
- The guild roster is requested at login and every 5 minutes, and sync waits until it is known. Before, messages that arrived while the roster was still empty were dropped as coming from strangers.
- A repeated request for the same bet no longer makes your client rebroadcast it more than once a minute.
- A pending deposit that is not found in the bank log within 7 days is dropped from your list with a chat message (the gold stays in the guild bank, ask your Guild Master). Before, it stayed there for good.
- Bank log matching tolerates old entries: the allowed time difference grows with the age of the entry, so a stake is still confirmed when the log entry is more than a month old.
- Trade payouts to a player from a connected realm are recognised, instead of being reported as an amount mismatch.
1.1.0 (2026-09-21)
Added
- Optional minimum and maximum stake for a bet, set in the New bet dialog (both empty by default, whole gold). The guild bank panel shows the allowed range next to the gold box and refuses a stake outside it before any gold moves. A stake outside the limits is rejected for good, like a late one, and its gold stays in the guild bank.
Changed
- Payouts: long titles use the free width of the row instead of being cut off with an ellipsis after 340 pixels.
Known limitations
- Stake limits are enforced by clients running 1.1.0 or later. A guild member who still runs 1.0.0 does not see the limits and can deposit a stake outside them. Up-to-date clients reject that stake, but if a 1.0.0 admin then sets the result, 1.0.0 clients still count it, so the payout amounts can differ between versions. Do not use limits until the whole guild has updated.
1.0.0 (2026-09-21)
Added
- Create, close, resolve and cancel guild bets with 2 to 10 options and an optional closing date (
dd.mm.yyyy) and time. - Staking through the guild bank: the addon deposits the stake plus a 12 copper marker fee and verifies the deposit automatically against the guild bank money log.
- A fresh money log scan before a result is set or a bet is cancelled, so unconfirmed stakes are settled correctly.
- Parimutuel payouts: the pool is split in proportion to the winning stakes, and stakes are refunded when nobody backed the winner or the bet is cancelled.
- Payouts by mail, by trade or manually, detected or recorded automatically, with undo.
- Withdraw the unpaid total from the guild bank with one button, within your withdraw limit and the bank balance.
- Guild-wide sync without a leader over the GUILD and WHISPER addon channels at low priority, with a manual Sync button (10 second cooldown) and
/fbets sync. - Log window with a bet filter, technical entries and selectable text.
- Result popup with a sound (can be turned off in Settings).
- Treasurer ranks set by the Guild Master in Settings.
- Settled bets are cleaned up 30 days after their last event, together with their local notification and pending-deposit data; bets with unpaid dues are never removed.
- Minimap button.
- A flat "Mono" interface with the bundled Inter font.
- Slash commands:
/fbets,/fbets log,/fbets syncand/fbets minimap.
Known limitations
- The guild bank money log keeps only the 25 latest transactions, so a stake can drop out of it before anyone confirms it.
- The client cannot fill in the trade money, so for trade payouts the payer types the amount by hand.
- The interface is English only.
This mod has no additional files
