Skip to content

WIP external defensives#89

Closed
argium wants to merge 54 commits into
mainfrom
extraicons
Closed

WIP external defensives#89
argium wants to merge 54 commits into
mainfrom
extraicons

Conversation

@argium

@argium argium commented Apr 19, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings April 19, 2026 07:50
@github-actions

github-actions Bot commented Apr 19, 2026

Copy link
Copy Markdown

Test Results

878 tests  +98   878 ✅ +98   1s ⏱️ -1s
  5 suites ± 0     0 💤 ± 0 
  5 files   ± 0     0 ❌ ± 0 

Results for commit b6646d9. ± Comparison against base commit 05e06f3.

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR broadens ECM’s “external defensives” work by introducing new external/extra icon modules, refactoring spell-color handling into scoped stores, and landing a large embedded LibSettingsBuilder v2-style API/docs/test suite update.

Changes:

  • Refactors SpellColors into per-scope SpellColorStore instances and centralizes shared bar styling in BarStyle.
  • Updates runtime layout ordering (ExtraIcons first) and adds schema V12 migration (itemIconsextraIcons.viewers), removing the old ItemIcons module.
  • Reworks/extends settings library packaging (embed.xml), docs, and tests; updates error messages and locales accordingly.

Reviewed changes

Copilot reviewed 63 out of 111 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
Tests/Modules/BuffBars_spec.lua Updates BuffBars tests to use scoped SpellColors store + BarStyle/shared helpers.
Tests/Migration_spec.lua Uses CURRENT_SCHEMA_VERSION in assertions and adds V12 migration tests.
Tests/ImportExport_spec.lua Aligns tests to new import/export error message strings.
Tests/FrameMixin_spec.lua Adds coverage for chain anchoring preference with ExtraIcons.
Tests/ECM_Runtime_spec.lua Adds tests for Runtime.GetDesiredAlpha() and ExtraIcons layout ordering.
Tests/ChatCommand_spec.lua Updates combat-blocked options message expectation.
Tests/BarMixin_spec.lua Adds test ensuring BarStyle exports shared child-bar styling helpers.
SpellColors.lua Introduces scoped SpellColorStore instances and new removal APIs; updates config/default handling.
Runtime.lua Updates layout ordering (ExtraIcons first), adds GetDesiredAlpha(), and clarifies preview comment wording.
README.md Expands project description and removes older sections; tweaks tagline text.
Modules/ItemIcons.lua Removes old ItemIcons module implementation.
Modules/BuffBars.lua Switches styling to BarStyle.StyleChildBar and routes spell colors through a store.
Migration.lua Adds V12 migration from itemIcons flags to extraIcons.viewers.
Locales/en.lua Renames/expands module strings; updates import/export and spell-colors UI strings.
Libs/LibSettingsBuilder/embed.xml Adds ordered XML loader for split LibSettingsBuilder source files.
Libs/LibSettingsBuilder/docs/TROUBLESHOOTING.md Updates troubleshooting guidance for new declarative API.
Libs/LibSettingsBuilder/docs/QUICK_START.md Replaces imperative/table-driven examples with declarative root registration examples.
Libs/LibSettingsBuilder/docs/MIGRATION_GUIDE.md Updates mapping guidance and emphasizes new canonical row types and list/input support.
Libs/LibSettingsBuilder/docs/INSTALLATION.md Updates installation steps to load embed.xml and clarifies built-in vs custom controls.
Libs/LibSettingsBuilder/docs/API_REFERENCE.md Re-documents the narrow public surface and declarative schema.
Libs/LibSettingsBuilder/Tests/Core_spec.lua Adds core tests for split-library loading, public surface, and store/default bindings.
Libs/LibSettingsBuilder/Tests/Controls_spec.lua Adds tests for mixin hook installation behavior.
Libs/LibSettingsBuilder/Tests/Collections_spec.lua Adds tests for list/sectionList initializer creation.
Libs/LibSettingsBuilder/Tests/Builder_spec.lua Adds builder tests for v2 public surface, deprecated field rejection, and pageActions.
Libs/LibSettingsBuilder/README.md Updates library README to reflect new declarative API and row types.
Libs/LibSettingsBuilder/Primitives/Layout.lua Adds layout/category creation primitives for the split library.
Libs/LibSettingsBuilder/Primitives/BlizzardControls.lua Adds scroll dropdown support and slider inline editing hooks for Settings UI.
Libs/LibSettingsBuilder/Controls/Rows.lua Adds layout row builders (Header/PageActions/Subheader/Info/Canvas/Button) and confirm dialog support.
Libs/LibSettingsBuilder/Controls/Collections.lua Adds List/SectionList row builders and refresh handling.
Libs/LibSettingsBuilder/Controls/Base.lua Adds canonical persisted controls including new input row type.
Libs/LibSettingsBuilder/CompositeControls/Lists.lua Adds composite list helpers (ColorPickerList/CheckboxList).
Libs/LibSettingsBuilder/CompositeControls/Groups.lua Adds composite group helpers (HeightOverrideSlider/FontOverrideGroup/BorderGroup).
Libs/LibEvent/LibEvent.lua Simplifies re-embed instance creation behavior.
ImportExport.lua Adjusts export/import error keys/messages and validation responses.
EnhancedCooldownManager.toc Updates load order for new modules, BarStyle, and LibSettingsBuilder embed loader.
ECM.lua Simplifies version metadata lookup and registers an additional bundled font.
Defaults.lua Replaces itemIcons defaults with externalBars + extraIcons defaults and updates type docs.
Constants.lua Replaces ItemIcons constants with ExternalBars/ExtraIcons constants and adds builtin stack/racial tables.
BarStyle.lua Introduces shared BuffBars/ExternalBars child-bar styling helpers.
BarMixin.lua Adjusts chain anchor selection to prefer ExtraIcons main anchor when enabled.
ARCHITECTURE.md Updates architecture docs for ExtraIcons-first layout and new module set + SpellColors scoping.
AGENTS.md Expands contributor guidance (simplicity, validation, deprecated APIs list).
.serena/memories/task_completion.md Refreshes validation checklist and completion guidelines.
.serena/memories/style_and_conventions.md Updates/condenses style + architecture rules.
.serena/memories/repo/options-load-order-acedb.md Adds guidance about options load order before AceDB init.
.serena/memories/project_overview.md Updates project overview for new structure and schema.
.serena/memories/externalbars-runtime-fade-ownership.md Documents Runtime ownership of fade alpha and ExternalBars restore behavior.
.luacheckrc Adds busted std for tests and expands globals/read_globals.
.github/agents/LuaReview.agent.md Adds a Lua-focused review agent definition.
.github/agents/Iterate.agent.md Adds an agent to orchestrate implement/review loops.
.github/agents/Developer.agent.md Adds a developer agent definition with repo-specific constraints.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread BarStyle.lua
Comment thread BarStyle.lua Outdated
Comment thread ImportExport.lua
Comment thread Tests/Migration_spec.lua
Comment thread Tests/Migration_spec.lua
Comment thread README.md Outdated
instance._events = instance._events or {}
instance._stats = instance._stats or {}
end

Copilot AI Apr 19, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the re-embed initialization means an existing embedded instance table that lacks _events/_stats will now keep them as nil, which can crash later when event registration assumes the tables exist. To preserve safe re-embed/upgrade behavior, reintroduce the minimal guards (e.g., instance._events = instance._events or {} / instance._stats = instance._stats or {}) when instance is already a table.

Suggested change
instance._events = instance._events or {}
instance._stats = instance._stats or {}

Copilot uses AI. Check for mistakes.
Comment thread EnhancedCooldownManager.toc
Comment thread EnhancedCooldownManager.toc
Comment thread EnhancedCooldownManager.toc

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7298a976e0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Modules/ExternalBars.lua
Combine actions on the spell colours page.
argium added 7 commits April 30, 2026 10:06
Improved readability and fixed minor grammatical issues in the README.
Updated interface and notes for Enhanced Cooldown Manager.
Removed mention of detachable and customizable aura bar colors from notes.
@argium

argium commented Apr 30, 2026

Copy link
Copy Markdown
Owner Author

@codex review this PR and fill in the description. Bucket related changes into larger omnibus bullet points. Highlight key features of extra icon and external defensives changes.

@argium

argium commented Apr 30, 2026

Copy link
Copy Markdown
Owner Author

@copilot Remove the fetch-libs call in the release pipeline. the unit test one works so review that.

Copilot AI commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

@codex review this PR and fill in the description. Bucket related changes into larger omnibus bullet points. Highlight key features of extra icon and external defensives changes.

Done — updated the PR description with omnibus bullet points covering Extra Icons, External Defensives, SpellColorStore refactor, schema migration, LibSettingsBuilder rewrite, and supporting changes.

@copilot Remove the fetch-libs call in the release pipeline. the unit test one works so review that.

The fetch-libs step was already removed from the release pipeline (commit e87f8ac). Both pipelines now match — they install Lua/LuaRocks, install test deps via luarocks, and run busted directly against committed library sources. Also addressed the unresolved LibEvent re-embed safety comment in 1c6ddca.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • dl.google.com
    • Triggering command: /usr/lib/apt/methods/https /usr/lib/apt/methods/https (dns block)
  • luarocks.org
    • Triggering command: /usr/bin/lua5.1 /usr/bin/lua5.1 /usr/bin/luarocks --lua-version=5.1 install --local busted (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@argium

argium commented Apr 30, 2026

Copy link
Copy Markdown
Owner Author

@codex review this PR and fill in the description. Bucket related changes into larger omnibus bullet points. Highlight key features of extra icon and external defensives changes.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1c6ddca914

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Modules/ExtraIcons.lua
end

local function resolveKnownSpell(spellId)
if spellId and C_SpellBook.IsSpellKnown(spellId) then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Replace deprecated spell-known lookup API

This resolver calls C_SpellBook.IsSpellKnown, which is explicitly banned by the repo rules in AGENTS.md under “Deprecated Blizzard APIs (12.0.5)”. Because this is a compatibility shim API, relying on it in core icon resolution makes ExtraIcons fragile to client updates: once the shim is removed or behavior diverges, spell-based extra icons will silently fail to resolve and disappear for users.

Useful? React with 👍 / 👎.

Comment thread UI/ExtraIconsOptions.lua
Comment on lines +107 to +109
end
ns.Runtime.ScheduleLayoutUpdate(0, "OptionsChanged")
refreshPage()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Rebuild tracked equip slots after option mutations

Option edits only schedule layout refreshes here, but ExtraIcons caches _trackedEquipSlots and uses that cache to gate PLAYER_EQUIPMENT_CHANGED handling; the cache is only rebuilt during OnEnable. After enabling/disabling equip-slot-backed entries in the options UI, equipment swaps can stop triggering immediate relayouts until reload/module re-enable, leaving trinket/equip-slot icons stale in normal runtime editing flows.

Useful? React with 👍 / 👎.

@argium argium closed this May 5, 2026
@argium argium deleted the extraicons branch May 10, 2026 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants