Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- uses: actions/checkout@v4
with:
repository: AlexAllocated/libchev
ref: 484a7f54aaf46c0ec042ff813b06f69bba94628f
ref: 445c0cf5b3dd40d36461f6e0b9adc2feb8dfb16b
path: library
- run: sudo apt-get update && sudo apt-get install -y lua${{ matrix.lua }}
- run: lua${{ matrix.lua }} scripts/test.lua
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# NoPoizen changelog

## 1.1.1 — 2026-09-24

Keep overlapping debug consoles and their controls in one native stacking group through private libchev 1.1.3. Category menus stay with their owning console.

Validation: 123 tests pass in both orders under Lua 5.1/5.2, plus Retail/Forever smoke simulations, packaging and runtime-source checks. Live multi-window interaction remains a separate client check. Forever poison monitoring remains unsupported; diagnostics and tests are available.

## 1.1.0 — 2026-09-24

Use the same private libchev 1.1.2 debug console across all three addons, including category/search filters, copy controls, test results, diagnostic reports, timestamps when available, and a single final test summary. Fix stretched native frame artwork with explicit texture bounds.
Expand Down
6 changes: 4 additions & 2 deletions LIBCHEV_INTEGRATION.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Shared library integration

NoPoizen privately embeds **libchev 1.1.2**, pinned to immutable commit [`484a7f54aaf46c0ec042ff813b06f69bba94628f`](https://github.com/AlexAllocated/libchev/commit/484a7f54aaf46c0ec042ff813b06f69bba94628f). The vendored bytes and SHA-256 manifest live in `Libs/libchev/`; the loader binds `namespace.LibChev`. There is no global library registry or compatibility alias.
NoPoizen privately embeds **libchev 1.1.3**, pinned to immutable commit [`445c0cf5b3dd40d36461f6e0b9adc2feb8dfb16b`](https://github.com/AlexAllocated/libchev/commit/445c0cf5b3dd40d36461f6e0b9adc2feb8dfb16b). The vendored bytes and SHA-256 manifest live in `Libs/libchev/`; the loader binds `namespace.LibChev`. There is no global library registry or compatibility alias.

## Shared behavior and addon policy

Expand All @@ -18,7 +18,7 @@ The consumer adapter supplies a private dynamic history store, version/environme
- All 20 Lua files parse under both interpreters; all 18 TOC paths resolve in order and exclude offline scripts. Consumer formatting and diff whitespace checks pass.
- Upstream `vendor.py --check` and packaging validate the immutable manifest and compare all six payloads to the upstream commit. The installable ZIP includes 63 runtime/package files; three packaging regressions and one runtime-source regression check reproducibility, missing sounds, and tampered library rejection.

Runtime library load order is `libchev.lua`, `Debug.lua`, `DebugWindow.lua`, `ReportWindow.lua`, and `SelfTests.lua`, before consumer code. Update only with the upstream vendor script and a reviewed immutable revision; never edit embedded files. CI uses the same revision for independent source verification. Prepared addon version: `1.1.0`.
Runtime library load order is `libchev.lua`, `Debug.lua`, `DebugWindow.lua`, `ReportWindow.lua`, and `SelfTests.lua`, before consumer code. Update only with the upstream vendor script and a reviewed immutable revision; never edit embedded files. CI uses the same revision for independent source verification. Prepared addon version: `1.1.1`.

## Forever fixture correction and native console

Expand All @@ -31,3 +31,5 @@ The shared library supplies native-style artwork on unnamed addon-owned frames a
Offline fixtures do not establish engine-level taint safety, client rendering, audio, or actual poison detection. In Retail, run `/np test` (123 passed, 0 failed expected), inspect/copy the shared console, use category/search/clear and diagnostics, and check restriction transitions. Verify native Edit Mode drag/click/Save/Cancel, `/np edit`, loading, and audio behavior. In Forever, confirm the unsupported-monitor message and diagnostic capture; poison mechanics still require the observations described in the audit.

For the stable release, the user confirmed the shared frame appearance after the texture-bounds correction. This visual confirmation does not establish every gameplay or restriction path.

The 1.1.3 console keeps each window and its child controls in one native stacking group; its category menu stays inside that group. Live interaction with overlapping windows remains a separate client check.
12 changes: 11 additions & 1 deletion Libs/libchev/DebugWindow.lua
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@ local function Create(controller)
Call(controller, frame, "SetSize", 900, 560)
Call(controller, frame, "SetPoint", "CENTER")
Call(controller, frame, "SetFrameStrata", "DIALOG")
-- Keep the window and its children in one native render group, and let
-- clicks on any child raise the whole window instead of interleaving UI.
Call(controller, frame, "SetToplevel", true)
Call(controller, frame, "SetFlattensRenderLayers", true)
Call(controller, frame, "SetClampedToScreen", true)
Call(controller, frame, "EnableMouse", true)
Call(controller, frame, "SetMovable", true)
Expand Down Expand Up @@ -266,7 +270,13 @@ local function Create(controller)
Call(controller, state.popup, "Hide")
Call(controller, state.popup, "SetPoint", "TOPLEFT", state.category, "BOTTOMLEFT", 0, -2)
Call(controller, state.popup, "SetWidth", 240)
Call(controller, state.popup, "SetFrameStrata", "TOOLTIP")
-- The menu belongs above our controls, but must not escape the window's
-- stacking group and cover another addon's foreground console.
local level = LibChev.Number(Call(controller, frame, "GetFrameLevel"))
if not level then
error("debug window frame level unavailable", 0)
end
Call(controller, state.popup, "SetFrameLevel", level + 3)
Call(controller, state.popup, "EnableMouse", true)
Call(controller, state.popup, "EnableMouseWheel", true)
TiledBackground(state.popup, "Interface\\FrameGeneral\\UI-Background-Marble")
Expand Down
2 changes: 1 addition & 1 deletion Libs/libchev/libchev.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-- Private embedding: every addon receives its own library through its loader
-- namespace. No global registry, Blizzard mutation, hooks, events or saved data.
local _, namespace = ...
local LibChev = { VERSION = "1.1.2", API_VERSION = 1 }
local LibChev = { VERSION = "1.1.3", API_VERSION = 1 }
local unpackValues = unpack or table.unpack
local secret = type(issecretvalue) == "function" and issecretvalue or nil
local accessible = type(canaccessvalue) == "function" and canaccessvalue or nil
Expand Down
8 changes: 4 additions & 4 deletions Libs/libchev/manifest.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"schema": 1,
"repository": "https://github.com/AlexAllocated/libchev",
"revision": "484a7f54aaf46c0ec042ff813b06f69bba94628f",
"version": "1.1.2",
"revision": "445c0cf5b3dd40d36461f6e0b9adc2feb8dfb16b",
"version": "1.1.3",
"files": {
"libchev.lua": "aeecde6d435baaba32cf0c23cca59a92e0fd883e7d300bda8842a9a2e9a591ad",
"libchev.lua": "e0d6bae4a49d2bf9945fae6a6176af5a47b7af45384696b2c707e18aac897c4f",
"Debug.lua": "1a9b8354d9b9b4e38e8fff3bb97ba2a9916200bf03ad1fb494a071c22091e8b6",
"DebugWindow.lua": "c9bf308c65b497a1374d62524dbe8eedf92a3e25fd1f5f21398d20ed24455870",
"DebugWindow.lua": "b0777bf7f0cb25a0629c82ed09f50b330f7598aca53b9e862954acbb1cf59ac4",
"ReportWindow.lua": "925e0dde12cb01e0575442343b3cddf462c6b57e7c741b5aba0b9ddb35aaa125",
"SelfTests.lua": "0ba6b144616dd8264ce9417b05d3efbf73166fae876a730421f7de9112daaef0",
"LICENSE": "d1bc39a4c90fbac0fc97b6a98786200011eab7ff77a29c2274603ae4e12fe03b"
Expand Down
2 changes: 1 addition & 1 deletion NoPoizen.toc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Interface: 120000, 120001, 120100, 16001
## Title: NoPoizen
## Version: 1.1.0
## Version: 1.1.1
## Notes: Warns Rogues when lethal/non-lethal poisons are missing.
## SavedVariablesPerCharacter: NoPoizenDBChar
## Author: Chev
Expand Down
3 changes: 3 additions & 0 deletions scripts/smoke.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ for _, name in ipairs({
"SetHeight",
"SetAllPoints",
"SetFrameStrata",
"SetFrameLevel",
"SetToplevel",
"SetFlattensRenderLayers",
"SetClampedToScreen",
"SetMovable",
"RegisterForDrag",
Expand Down
Loading