# LibMatic CHANGELOG

## Unreleased

### Library consolidation

- LibMatic-CombatTextBounce-1.0 (MINOR 5), LibMatic-FitText-1.0 (MINOR 1), and LibMatic-RosterFrame-1.0 (MINOR 2) moved into this repo from the individual addons. LibMatic is now the single source of truth for all five shared modules. Consumer addons symlink `Libs/LibMatic` to this repo for development and fetch it as a BigWigs packager external for release.

### LibMatic-Settings

- **MINOR 3**: `BuildAlertPage` accepts `opts.position`, adding a "Position Alert" button to the Alert page's General tab. The button opens `LibMatic-AlertPositioner-1.0`; `opts.position` carries the `get`/`set`/`default`/`close`/`reopen` callbacks.
- **MINOR 2**: roster entries carry a `released` flag. The General page cross-addon nav block renders an addon's icon and CurseForge link only when its roster entry is `released`, so an ILA addon not yet on CurseForge does not show a dead link. RareMatic, QuestMatic, and MountMatic added to the roster as not-yet-released.
- **MINOR 1**: initial release. `BuildGeneralPage`, `BuildAlertPage`, `BuildSoundPage`, `BuildSocialPage`, `BuildChangeLogPage`, `BuildProfilesPage`, plus `ResolveShow` and `GetRoster`. Ace3 page-builder helper; the consumer keeps its own `RegisterOptionsTable` / `AddToBlizOptions`. Per-page and per-setting developer `show` flag, closure or `bind` get/set, a canonical cross-addon roster with per-faction link icons (the running addon is excluded from its own nav block), configurable alert notification format strings, and a two-option alert bounce-style picker driven by consumer-supplied get/set.

### LibMatic-AlertPositioner

- **MINOR 1**: initial release. `lib:Open(opts)`. A drag-to-place overlay for on-screen alerts: a movable frame with a looping mock crit, Accept/Cancel/Reset buttons, and Escape-to-cancel. Works in resolution-independent center-relative percentages. `LibMatic-CombatTextBounce-1.0` soft dependency for the bounce, with a local fallback.

### LibMatic-Broadcast

- **MINOR 2**: the leader/assistant `RAID_WARNING` shortcut now runs only when election is enabled. With election off, `Broadcast` is a plain direct send with no raid-warning path. An explicit `opts.channel` (for example `GUILD`) is now honored even when the player is not in a party or raid, so election-off consumers can broadcast to guild and other channels.
- **MINOR 1**: initial release. `Register`, `Get`, `Broadcast`, `GetPeers`, `SetElectionEnabled`. Group chat broadcast with an opt-in single-announcer election: one elected peer sends, receiver-side dedupe collapses simultaneous triggers, raid leader/assistant sends a `RAID_WARNING` directly, LFR uses `INSTANCE_CHAT`. The `electionEnabled` dev flag is off by default. `marker` is emitted as the locale-safe `{rtN}` token. AceComm-3.0 soft dependency with a direct-send fallback.

### LibMatic-Startup

- **MINOR 1**: initial release. `Register`, `Get`, `PrintBanner`, `GetBannerText`, `PrintHelp`, `GetHelpLines`, `GetAddOnVersion`, `GetBrandColor`. Renders the chat-frame load banner and slash-command help listing, with optional faction colouring (Alliance blue, Horde red). Renders text only and never registers slash commands.

### LibMatic-ChangeLog

- **MINOR 2**: changelog text renders in one uniform colour, default black, with no coloured version or section headers. `BuildOptionsTable` accepts `opts.profile` as a function so a consumer can register its options panel before its database exists.
- **MINOR 1**: initial release. `lib:Show(spec)`, `lib:ShowIfNew(spec, lastSeenVersion)`, `lib:Close()`, `lib:BuildOptionsTable(opts)`. Structured changelog entries, AceGUI popup with LibSharedMedia styling, StaticPopup fallback.

### LibMatic-IconPicker

- **MINOR 2**: bump strata to `FULLSCREEN_DIALOG` and set `Toplevel`. Fixes z-order conflicts where a host addon's window (also at `DIALOG` strata) painted its tab buttons and widgets through the picker.
- **MINOR 1**: initial release. `lib:Open(currentIcon, callback)`, `lib:Close()`, `lib:IsOpen()`. Callback receives chosen fileDataID or nil.

### Test harness

- `/libmatictest` (alias `/lmt`) opens the picker for visual verification. The `changelog`, `startup`, `settings`, and `broadcast` subcommands exercise the matching modules. The `settings` subcommand also builds the alert positioner button and asserts the positioner library is loaded.
