Changelog¶
All notable changes are recorded here. Beginning after v1.3.0, this file is generated by Python Semantic Release from Conventional Commit messages.
v2.11.1 (2026-08-14)¶
Bug Fixes¶
v2.11.0 (2026-08-14)¶
Features¶
Testing¶
v2.10.0 (2026-08-14)¶
Documentation¶
-
Add a README product shot and regenerate the screenshot set (#111,
f51b643) -
Correct stale FAQ assertions and v2.4-v2.9 drift (#112,
72e700d)
Features¶
v2.9.2 (2026-08-14)¶
Bug Fixes¶
-
overlay: Charge the alert floor for a kicker that has text (#108,
be1a9b1) -
overlay: Stop laying the alert viewport out zero pixels wide (#108,
be1a9b1)
v2.9.1 (2026-08-13)¶
Bug Fixes¶
Testing¶
v2.9.0 (2026-08-13)¶
Features¶
v2.8.0 (2026-08-13)¶
Bug Fixes¶
-
overlay: Explainable alert splitting, scrolling long alerts, resizable regions (#103,
6ef5b5c) -
overlay: Fit the headline to the box the Alerts region has, not the one it left (#103,
6ef5b5c) -
overlay: Stop trigger alerts losing their opening clause to the gold kicker (#103,
6ef5b5c)
Features¶
v2.7.0 (2026-08-13)¶
Bug Fixes¶
Features¶
v2.6.0 (2026-08-13)¶
Bug Fixes¶
-
dps: Derive the spell credit deadline so the window applies live (#97,
0e0c18c) -
dps: Keep a dead pet's damage in the session footer (#97,
0e0c18c) -
dps: Make both counting changes opt-in rather than default (#97,
0e0c18c)
Features¶
Testing¶
v2.5.0 (2026-08-13)¶
Bug Fixes¶
-
triggers: Keep a possessive out of the {name} token (#98,
cb79c80) -
triggers: Stop a log line's braces rewriting the overlay text (#98,
cb79c80) -
updater: Classify an over-long body as a size refusal, not a failure (#95,
45601e9)
Features¶
-
Create a trigger from a log line, and warn when a root breaks (#98,
cb79c80) -
overlays: Warn when a root breaks (port RootHasWornOffHandler) (#98,
cb79c80) -
triggers: Create a trigger from a log line (Console right-click) (#98,
cb79c80) -
updater: Say why a download was refused, and ship a macOS .app zip (#95,
45601e9)
v2.4.3 (2026-08-13)¶
Bug Fixes¶
v2.4.2 (2026-08-13)¶
Bug Fixes¶
-
Three driver-thread defects — log archiving, the EQ probe, and the timestamp parse (#92,
3ddac6a) -
logs: Archive by copy-and-truncate so the tail survives (#92,
3ddac6a) -
logs: Check the tail signature on every poll, not only on a shrink (#92,
3ddac6a) -
logs: Detect a rotation the log outgrew before the next poll (#92,
3ddac6a) -
logs: Hand the rotation to the tail instead of inferring it (#92,
3ddac6a)
Documentation¶
Performance Improvements¶
-
logs: Bound what the archive swap does on the driver thread (#92,
3ddac6a) -
pipeline: Parse the log timestamp without strptime (#92,
3ddac6a) -
socials: Probe for the EQ client off the driver thread (#92,
3ddac6a)
Testing¶
v2.4.1 (2026-08-13)¶
Bug Fixes¶
-
net: Drop queued sharing REST work when the mode goes off mid-flight (#94,
1a68e7a) -
net: Keep sharing off one-way for the session after a live off (#94,
1a68e7a) -
net: Scope the REST gate to pigparse mode, and stop on a network switch (#94,
1a68e7a) -
net: Silence the pigparse REST publishers when sharing goes off (#94,
1a68e7a) -
settings: Apply overlay durations and sharing-off without a restart (#94,
1a68e7a) -
settings: Stop the settings window promising restarts it doesn't need (#94,
1a68e7a)
Documentation¶
Testing¶
v2.4.0 (2026-08-13)¶
Bug Fixes¶
Chores¶
Features¶
v2.3.3 (2026-08-13)¶
Performance Improvements¶
v2.3.2 (2026-08-10)¶
Bug Fixes¶
v2.3.1 (2026-08-10)¶
Bug Fixes¶
Testing¶
v2.3.0 (2026-08-10)¶
Bug Fixes¶
-
dps: Keep frozen rows and session stats honest across a settings change (#62,
35c41cb) -
dps: Never drop an attacker row while the target is still being fought (#62,
35c41cb) -
dps: Stop dropping attacker rows mid-fight; count melee only by default (#62,
35c41cb)
Features¶
Testing¶
-
dumps: Stop the p99planner claim fixture expiring in real time (#62,
35c41cb) -
plugins: Stop the update check reaching the live registry mid-suite (#61,
9dde204)
v2.2.0 (2026-08-10)¶
Bug Fixes¶
-
spells: Unbreak the two disciplines that could never match a log line (#60,
3abb5bc) -
timers: Start the Mend timer on all four mend outcomes (#60,
3abb5bc) -
timers: Stop a mob-named player faking a Harm Touch cooldown (#60,
3abb5bc) -
ui: Assert the pages, not the window, stop setting the floor (
400e333) -
ui: Let the settings window be narrow (
2aae72d) -
ui: Scroll externally contributed settings pages too (
7ce8420)
Documentation¶
Features¶
-
timers: Ability reuse timers — Mend outcomes, Lay on Hands/Harm Touch, and two dead disciplines (#60,
3abb5bc) -
timers: Add Lay on Hands and Harm Touch reuse timers (#60,
3abb5bc)
v2.1.0 (2026-08-10)¶
Bug Fixes¶
-
dumps: Address review — browser False, refresh churn, unreachable sniff (#57,
44e48ee) -
dumps: Decouple upload provenance from the local history gate (#57,
44e48ee) -
dumps: Give the pending p99planner handoff a way back (#57,
44e48ee) -
dumps: Give the review link a route out when no browser opens (#57,
44e48ee)
Documentation¶
Features¶
-
dumps: Add p99planner.com as an inventory upload destination (#57,
44e48ee) -
dumps: Character dump library, with p99planner and pigparse upload (#57,
44e48ee) -
dumps: Store and organize P99 inventory and spellbook dumps (#57,
44e48ee)
v2.0.0 (2026-08-08)¶
Bug Fixes¶
- test: Read source files as utf-8 so the Windows job passes
(
03c08de)
Documentation¶
- Bring the appearance, maps and architecture notes in line
(
0aa5eb6)
Features¶
-
maps: Make the map chrome follow the skin, and let exits be turned off (
b1378d4) -
maps: Put Clear Corpse Markers on the map's own right-click menu (
32a8f76) -
overlay: Finish the skin coverage and stop clipping long alerts (
75d9427) -
ui: Add the chrome token layer under the config windows (
4ccd7e5) -
ui: Dress the config windows in the active skin (
5188ac9) -
ui: Drop the light theme and generate the app stylesheet (
765e046) -
ui: Give the config windows one muted-text treatment (
e6436da) -
ui: Share the title bar, skin the Discord strip, put the editors on the base (
d0757e4)
v1.22.0 (2026-08-07)¶
Features¶
- ui: Give the overlays a look — skins, an Appearance page, map chrome
(
07e37d6)
v1.21.1 (2026-07-31)¶
Bug Fixes¶
- plugins: Let a candidate import its own modules during validation
(
c992de9)
Code Style¶
- plugins: Run ruff format on the new install test
(
fab113b)
v1.21.0 (2026-07-31)¶
Bug Fixes¶
-
plugins: Keep validation from repointing a live plugin's module (
a53c7b0) -
sdk: Register the parent namespace package for plugin imports (
52ac844)
Chores¶
- deps: Require nparseplus-sdk >= 1.1
(
4d6d7e8)
Documentation¶
-
plugins: Document in-app updates, self-feeds, and the update check (
f5bb034) -
sdk: Document update_url and the self-feed contract (
6e2599b)
Features¶
-
plugins: Add PluginEntry.update_url and plugins.update_check (
fb94806) -
plugins: Add the Qt-free update-resolution layer (
b0da60e) -
plugins: Cache update checks on the host (
a295cb0) -
plugins: Check for plugin updates shortly after launch (
06c2120) -
plugins: Replace an installed plugin in place (
43b5e36) -
sdk: Add PluginMeta.update_url for self-hosted update feeds (
e7879a7) -
ui: Update installed plugins from Settings > Plugins (
b73bed1)
Refactoring¶
- ui: Read the update check through the host, not a copy
(
1e1d03f)
v1.20.0 (2026-07-30)¶
Documentation¶
- plugins: Say precisely what a duplicate window key drops
(
0a6eb84)
Features¶
- plugins: Give plugin windows opacity and on-top rows in Settings
(
c879afa)
v1.19.0 (2026-07-30)¶
Documentation¶
-
The SDK is on PyPI and the registry is live (
aefc544) -
plugins: Document multiple registries and what adding one means (
92f93f6)
Features¶
-
plugins: Add a registries editor widget (
e3ab025) -
plugins: Browse every enabled registry and record which one vouched (
22e9fae) -
plugins: Fetch every configured registry and report each result (
7e5e32f) -
plugins: Let settings hold more than one plugin registry (
25876b1)
Refactoring¶
- plugins: Give the host a registry list instead of one URL
(
d598693)
Testing¶
- Compare the settings-survival path as a Path, not a string
(
08eb8da)
v1.18.0 (2026-07-30)¶
Bug Fixes¶
-
plugins: Close six security and lifecycle holes in the plugin host (
c8492a1) -
plugins: Keep a misbehaving add-on from stalling or freezing the app (
d3dba7d) -
sdk: Single-source the SDK version and publish it from CI (
e331e34)
Build System¶
- packaging: Bundle nparseplus-sdk in frozen builds, ship py.typed markers
(
6b5806b)
Documentation¶
-
Document add-ons across the site and correct the plugin reference (
6ffe18b) -
plugins: User guide, security & trust, developer guide, API reference (
2f37f94) -
plugins: Versioning policy and registry specification (
0e79538)
Features¶
-
plugins: Add plugin repository template with validate/release workflows (
f16cd10) -
plugins: Add Qt-free plugin host (discovery, context, storage, installer engine) (
0ca5503) -
plugins: Browse-registry dialog and update-available status in the manager (
df3b0a7) -
plugins: Load plugins at startup — consent, plugin windows, tray folder action (
32ccda7) -
plugins: Make add-ons opt-in behind a master toggle, default off (
7b25a0c) -
plugins: Plugins manager settings page with install/uninstall (
4814725) -
plugins: Registry index schema, sha256-verified installs, install provenance (
5ceab50) -
plugins: Ship hello-timer and merchant-prices example plugins (
5580ebb) -
sdk: Add nparseplus-sdk workspace package (plugin contract, compat, validate CLI) (
597cefa) -
templates: Fix the plugin template's CI and scaffold the registry repo (
3790365)
Refactoring¶
- settings: Extensible page registry (extra_pages) in the unified settings window
(
a797149)
Testing¶
- architecture: Port the Qt poison finder to find_spec
(
d5b13e0)
v1.17.0 (2026-07-30)¶
Features¶
- timers: Fade spell-timer bars toward red as they expire
(
6b36bd7)
v1.16.3 (2026-07-30)¶
Bug Fixes¶
- timers: Sync every countdown to one whole-second grid
(
df28480)
v1.16.2 (2026-07-30)¶
Bug Fixes¶
-
build: Read the version from init.py so uv.lock cannot drift (
f7725f2) -
packaging: Stamp the real version into the macOS and Windows builds (
c9770a2)
Chores¶
- deps: Sync uv.lock to the released version
(
9b4d3c3)
v1.16.1 (2026-07-29)¶
Bug Fixes¶
- overlays: Cancel pending CH lane timers when the overlay is destroyed
(
349190b)
v1.16.0 (2026-07-29)¶
Code Style¶
- Restore blank-line separation in the screenshot tool
(
f769858)
Documentation¶
- List the macro editor in the screenshot checklist
(
beeeac3)
v1.15.0 (2026-07-29)¶
Chores¶
- Refresh uv.lock to the released version
(
7970fc0)
Documentation¶
- Document the Trigger Editor's Activity tab
(
75db3f3)
Features¶
-
triggers: Add an Activity tab to the Trigger Editor (
97f7204) -
triggers: Publish TriggerFiredEvent when a trigger fires (
64c9ffe)
Testing¶
- triggers: Cover the activity log end to end
(
fd1d9aa)
v1.14.0 (2026-07-21)¶
Documentation¶
- Capture the tray menu screenshot and document the menu
(
1260ff7)
Features¶
- maps: Perf render settings — antialias toggle, band cache, view flags
(
1363577)
Performance Improvements¶
-
bridge: Coalesce queued emissions and early-filter the fan-out (
d4f1b21) -
maps: Coalesce location-fix repaints and gate static geometry (
af02041) -
maps: Parse zone files off the GUI thread (
f524777) -
ui: Gate polling-window refreshes on visibility and real change (
ec31aa7)
Refactoring¶
- Split tray menu construction from its modal exec
(
9eb8b98)
Testing¶
- Raid-combat stress replay, bridge flood test, opt-in benchmarks
(
c456b82)
v1.13.0 (2026-07-20)¶
Continuous Integration¶
- Cross-compile x86_64 macOS DMG on Apple Silicon
(
a8194f3)
Documentation¶
-
Expand automated screenshot coverage (7 more window states) (
1f79342) -
Note the macOS updater picks the arch-matching DMG (
67619b7)
Features¶
- Add a "Check for updates" action to the tray menu
(
1061ae1)
v1.12.0 (2026-07-20)¶
Continuous Integration¶
- Enforce Conventional Commits on PRs and auto-release on merge
(
2483176)
Documentation¶
-
Add offscreen screenshot generator and capture docs screenshots (
24d8c87) -
Document auto-release on merge and the PR commit check (
50aaa7c)
Features¶
- Add x86_64 (Intel) macOS build
(
e6b8df6)
v1.11.0 (2026-07-19)¶
Bug Fixes¶
-
overlays: Position the utility region for upgraders and tidy up (
f42bbed) -
timers: Clear stale post-expiry flash style when a row is recast (
89e2b53)
Chores¶
- deps: Sync uv.lock project version to match pyproject
(
0b02a2d)
Documentation¶
-
Document the 1.11 opt-in features across settings and windows pages (
4fc06eb) -
Land the 1.11 features and refresh stale references (
6299f75)
Features¶
-
overlays: CH cadence indicator in the chain lane (
6d497b7) -
overlays: Make CH cadence detection user-editable regex (
b11c8af) -
timers: Post-expiration spell alerts with click-to-dismiss (
3fa16b3) -
timers: Redesign raid-mode grouping with per-row orientation (
aaa5a89) -
triggers: Utility built-ins routed to a dedicated overlay section (
b33fb7c) -
ui: Show app version and update status in Settings (
69ae6e9)
v1.10.0 (2026-07-19)¶
Chores¶
- net: Drop stale Kael-faction sharing TODO in spawn_timer
(
378339d)
Documentation¶
- settings: Document vestigial legacy-only settings fields
(
f11d521)
Features¶
-
timers: Add "clear other players' timers" spell-window action (
945be0c) -
triggers: Add a character-scope control to the trigger editor (
fe76767) -
triggers: Honor interrupt_speech by stopping the current utterance (
7799241) -
triggers: Scope triggers to specific characters (
2deedc7)
Performance Improvements¶
- triggers: Cache end-early regex compilation off the per-line path
(
d0c520f)
Refactoring¶
-
data: Source boat announcements from data/zones.json (
b3b9094) -
maps: Drop the raw scratch dict from legacy MapData (
8171acd)
Testing¶
- net: Guard the SharingCoordinator inbound drain stays parse-free
(
2d7be3b)
v1.9.4 (2026-07-19)¶
Bug Fixes¶
- Build the Windows release with the splash's Pillow build-dependency
(
ccb70c0)
Build System¶
- Restore Pillow as a build-time dependency for the Windows splash
(
bd10c30)
v1.9.3 (2026-07-19)¶
Build System¶
- Drop unused Pillow/pydantic-settings, move signalrcore to a probe group
(
0f3a60b)
Chores¶
- Point code TODOs at their tracking issues
(
72ed74e)
Documentation¶
- Reconcile EQTool commit refs and wire docs to the issue tracker
(
7256de9)
Performance Improvements¶
- Skip redundant DPS best-window rescans on the per-tick path
(
b25b403)
Refactoring¶
-
Dedupe helpers, drop per-line/per-row allocations, remove dead MapsSignals (
276c665) -
Remove dead code and orphaned files (
8236aef) -
Retire the backend=None pure-legacy app mode (
60d64b0)
Testing¶
- Cover LogDriver character-switch and QtEventBridge
(
376f3be)
v1.9.2 (2026-07-19)¶
Bug Fixes¶
- Sit CH chain target name 8px from the lane
(
c37ff5e)
v1.9.1 (2026-07-18)¶
Bug Fixes¶
- Suppress Windows console window on every TTS utterance
(
6612e1d)
v1.9.0 (2026-07-18)¶
Chores¶
- Sync uv.lock to current package version
(
cec7c49)
Documentation¶
- Update CLAUDE.md status for the 1.9 batch
(
134f9f3)
Features¶
-
Bundle espeak-ng in the Flatpak so Linux TTS works out of the box (
4495103) -
Enumerate all TTS voices on Windows (SAPI + WinRT natural) and Linux espeak-ng (
1c175a0) -
Voice picker lists every installed voice and applies without restart (
7e7539a)
v1.8.0 (2026-07-18)¶
Chores¶
- Sync uv.lock to the released version
(
d0f1eaa)
Documentation¶
- Update CLAUDE.md status for the 1.8 batch
(
c074d93)
Features¶
-
Delete a whole trigger group from the editor (
72087e9) -
Edge and corner resizing for frameless windows with persisted geometry (
0855249) -
Reset window positions action to bring all windows on-screen (
59235e5)
v1.7.0 (2026-07-18)¶
Chores¶
- Sync uv.lock project version to 1.6.1
(
bc1e2ca)
Documentation¶
- Update CLAUDE.md status for the 1.7 feature batch
(
4627d10)
Features¶
-
Named trigger groups with move/rename; GINA imports keep full folder paths (
88988d2) -
Preview overlay elements in position mode and allow per-region repositioning (
bc56a60) -
Restore last-open windows on launch (
e478c66) -
Sort /random rolls highest-first within their group (
c2eb338)
v1.6.1 (2026-07-18)¶
Bug Fixes¶
-
Disable raid-mode spell grouping for now (
3649555) -
Move the CH lane target name into its own column (
545eb72)
v1.6.0 (2026-07-18)¶
Chores¶
- Sync uv.lock with the v1.5.1 version bump
(
7f59811)
Features¶
-
Graduate CH chain lanes into one-second cells and sweep leaked lanes (
e5da09f) -
Sectioned, sortable spell timers, CH chain tag filter, bard counter toggle (
97b37b3)
v1.5.1 (2026-07-17)¶
Bug Fixes¶
- Spell timer window keeps its size and scrolls on overflow
(
003f586)
v1.5.0 (2026-07-17)¶
Bug Fixes¶
- Offer the right Linux artifact from the in-app updater
(
516b82c)
Continuous Integration¶
-
Deploy versioned docs to gh-pages alongside the flatpak repo (
0ed1766) -
Export the flatpak public key from the imported secret (
43d056a) -
GPG-sign the flatpak repo, summary, and bundles (
216d6f8) -
Publish the Flatpak OSTree repo so
flatpak updateworks (7e84c30) -
Timestamped phase markers in the flatpak bundle step (
01ccedc)
Documentation¶
-
Add Roadmap and Changelog pages to the site (
7c138fe) -
Add the MkDocs Material site — 43 pages, versioned via mike (
56a9118) -
Cover the new timer/settings behavior across feature pages (
eb4321c) -
Cover trigger export/import and the GINA .gtp importer (
533739a) -
Match the 1.4.1 state — flatpak updates, log files, release flow (
6c699cb) -
Shrink the README to quick start + docs-site links (
aec6053) -
Timer section toggles and right-click clearing (
df10090)
Features¶
-
Timer section hide toggles + right-click clear; /who and you-only fixes (
c22ebbc) -
Trigger export/import + GINA .gtp import (
68f985f)
v1.4.1 (2026-07-17)¶
Bug Fixes¶
-
Crash/warning log files and Linux runtime env defaults (
ed5c872) -
Legacy window on-top apply, OTHER-class crash, WebEngine guards (
c020ef2) -
Pin certifi CA bundle for websocket TLS in frozen builds (
267c62b)
Chores¶
- Add project verify skill (offscreen app-driving recipe)
(
dfdd744)
v1.4.0 (2026-07-17)¶
Features¶
- Add window presets and release automation
(
3b718b7)
v1.3.0 (2026-07-17)¶
- Added persistent map markers and corpse waypoints.
- Added respawn-timer persistence, expiry audio, and buff-fade warnings.
- Added stacked detrimental timer policies, a light theme, in-game window commands, and the Linux Flatpak release artifact.
Earlier milestone history remains available in the Git log and GitHub releases. Future entries
are generated from feat:, fix:, perf:, and other Conventional Commit subjects.
Release artifacts for every version — and the milestone-by-milestone history from before v1.3.0 — live on the GitHub releases page. For what's coming next, see the roadmap.