Releases: NennMichSchinken/LumenUI
Releases · NennMichSchinken/LumenUI
Release list
v0.9.107-beta
LumenUI
v0.9.107-beta (2026-07-03)
Full Changelog Previous Releases
- Merge pull request #48 from NennMichSchinken/dev
Beta update: shell redesign v2 + performance audit (v0.9.107) - Merge pull request #47 from NennMichSchinken/feature/perf-audit
Feature/perf audit - shell: build the first screen one frame after show, never cache hidden-built screens
Building inside OnShow ran before the panel subtree had valid rects after
/reload - widgets computed layout from width 0 and could stay degenerate
(no slider track/thumb, blank value box) until a scroll forced a re-layout.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com - shell: fix cold-start slider glitch — warm fonts per size, repaint slider on show
Co-Authored-By: Claude Fable 5 noreply@anthropic.com - perf: split raidframe render by event, cache shell screens
Audit package (A1-A5, B1, E):- render split: health ticks no longer re-scan auras; dispel result
cached per frame; aggro only on threat events - unit-event handler bails on one hash lookup (fires for all world units)
- whitelist resolved once per spec, not per UNIT_AURA render
- PLAYER_SPECIALIZATION_CHANGED filtered to the player (raidframes + click-cast)
- calculator max-health mode set once; learnedIID wiped on world enter
- blizzard-frame suppression no longer calls Hide() on protected frames in combat
- shell: screens cached per section/tab (frames are never GC'd), tab buttons
pooled, cache dropped on any data change / profile switch / spec change
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
- render split: health ticks no longer re-scan auras; dispel result
- Merge pull request #46 from NennMichSchinken/feature/shell-redesign
Feature/shell redesign - shell: add buttons go secondary gold (green dropped), tabs remember last selection per section
Co-Authored-By: Claude Fable 5 noreply@anthropic.com - shell: phase 4 sweep — success as palette E3, two-gold rule on arrows/select, D3 disabled
Co-Authored-By: Claude Fable 5 noreply@anthropic.com - shell: sidebar runs full height, wordmark moves into the nav brand block
Co-Authored-By: Claude Fable 5 noreply@anthropic.com - shell: phase 3 chrome — gold nav/tab fills, tab badge, drop runes+footer
Co-Authored-By: Claude Fable 5 noreply@anthropic.com - tracking: trash icon permanently red, catalog size (22px), no tooltip
Florian feedback: grey icon drowned next to the row text; the icon tooltip
fought the row's spell tooltip (jumpy on hover-across); 18px too small.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com - shell: phase 2 — v2 button hierarchy + refinements 1/2/3/5
- W.Button: flat v2 variants — primary = interactive-gold fill (gradient
removed), NEW secondary = gold outline, neutral = grey element (ghost is
now an alias of it), danger = red outline; success kept for the catalog - field labels: primary text instead of gold (gold stays reserved for
headers/actives/brand) - spell-picker trigger restyled as a secondary button (transparent, gold
outline) - stack:section(title, opts): count chip right of the title (muted at 0)
- quiet header action link (muted, golden on hover)
- tracking: count + 'Restore defaults' moved into the section header (the
footer keeps only '+ Add spell'); rows on element surface with hover =
elementHover + brand-gold left edge; 'Remove' text button replaced by a
quiet trash icon (red on hover); empty categories show a dashed
empty-state box with a proper sentence (new deDE string) - new shared dims: sectionCountGap/H/Pad; tracking.trash replaces removeW
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- W.Button: flat v2 variants — primary = interactive-gold fill (gradient
- shell: measurement schema — UI.LAYOUT now mirrors the nav tree
Same principle as the color palette, applied to measures:- UI.WIDGET = ONLY shared component dimensions (rule: visible in more than
one screen -> WIDGET; exactly one screen -> LAYOUT.) - UI.LAYOUT restructured to mirror the left nav top-down:
global.profile / clickcast / raidframes.{base,sizeArrange,tracking} - moved screen-specific keys out of UI.WIDGET: track* -> raidframes.tracking
(rowH/removeW), sort* -> raidframes.base.sort, cc* -> clickcast - trackIcon -> spellIcon (genuinely shared: picker, tracking rows, catalog)
- consolidated tab-top spacing: base.topToToggle + clickcast.topToHead ->
general.tabTop (one value, same meaning) - dropped dead keys (transparenz block, 3x lebensbalken, 3x general)
- German category names -> English (lebensbalken -> healthbar etc.)
Pure refactor — zero visual change. luacheck 0/0.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- UI.WIDGET = ONLY shared component dimensions (rule: visible in more than
- docs: last German word in a code comment -> English
- shell: v2 feedback round 1 — uniform picker rows, neutral popover borders, lighter card headers, roomier tracking rows
- spell picker: drop the zebra alternation (was element vs card = too harsh
on the v2 palette); uniform element cells + faint separators, hover uses
elementHover - popover borders (spell picker, confirm/import dialogs, tooltip) neutral
B2 instead of gold; gold stays on open/active control edges - signature top accents + section accent bars = brand gold C1
- section card header bar now LIGHTER than the card body (P.element), per
Florian's mockup - tracking rows 36->44 with 8px gaps — the Remove button breathes
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- spell picker: drop the zebra alternation (was element vs card = too harsh
- shell: phase 1 of design line v2 — central A/B/C/D/E palette block
- Tokens.lua: new UI.P palette (Florian's locked v2 values) as the single
source of every color; legacy UI.C names remapped onto it so all widgets
and screens pick up the new look without call-site changes (phases 2/3
migrate call sites onto UI.P directly) - UI.line: structural lines now neutral (B1/B2) instead of gold-at-opacity;
gold remains only on active/open states and hover washes - unify in-game accents onto brand gold C1 #E9BB69 (mouseover/target edge,
edit-mode overlay, ESC-menu button, chat print incl. deDE key) - bump version to 0.9.105
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- Tokens.lua: new UI.P palette (Florian's locked v2 values) as the single
- ci: prevent duplicate release runs for the same tag (concurrency guard)
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
v0.9.104-beta
LumenUI
v0.9.104-beta (2026-07-02)
Full Changelog Previous Releases
- Merge pull request #45 from NennMichSchinken/dev
docs: add honest About + Contributing sections to README - docs: add honest About + Contributing sections to README
- Merge pull request #44 from NennMichSchinken/dev
added logo - added logo
- Merge pull request #43 from NennMichSchinken/dev
dev into main - Merge pull request #42 from NennMichSchinken/libs-drop-unused-AceTimer;-docs-README-+-remove-stale-AceConfig-refs
libs: drop unused AceTimer; docs: README + remove stale AceConfig refs - libs: drop unused AceTimer; docs: README + remove stale AceConfig refs
- Merge pull request #41 from NennMichSchinken/feature/3-clickcast-catalog
clickcast: action-catalog UI redesign + EUI catalog (Stage 2) - clickcast: action-catalog UI redesign + EUI catalog (Stage 2)
Replace the per-binding panels with a compact action catalog: one card row
per binding (icon + name, keybind, options gear, enable switch, delete), in
Standard + Custom-spells sections. One keybind field routes click vs hover by
key type; modifiers captured inline. Adds the EUI spell catalog (external
defensives, smart rez, trinkets) with smart per-class defaults + migration.
New widgets: Switch, SectionLabel, MenuButton, SquareIcon, IconButton, gear
popover, bare pickers, dashed/solid keybind border. Settings + delete icons
(Icons8) as gold-tinted TGA textures. All row metrics central in UI.WIDGET.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com - Create SECURITY.md for security policy
Added a security policy document outlining supported versions and vulnerability reporting. - Merge pull request #40 from NennMichSchinken/feature/3-hovercast
clickcast: rebuild hovercast (race/clear/keybind-grab fixes - clickcast: rebuild hovercast (race/clear/keybind-grab fixes
- Merge pull request #39 from NennMichSchinken/feature/1-aura-restructure
raidframes: per-context aura settings + collapsible (Feature 1) - raidframes: per-context aura settings + collapsible (Feature 1)
Dissolve the standalone Auras tab; the aura display knobs (enabled,
max icons, spacing, auto-fit, swipe, debuff filter) are now per context
and live in a collapsible section at the bottom of the Raid and Group
tabs. The tracked-spell list stays shared in the Tracking tab. New
W.Collapsible widget; collapsed by default, state remembered per
context. No data carry-over (fresh defaults); Core migrate v5 strips
the obsolete shared aura knobs.
Also fixes found while testing on the renamed (LumenUI) folder:- assets: build font/texture paths from the addon-folder name (ADDON)
instead of a hardcoded Lumen, so a folder rename no longer breaks
fonts/textures. - shell: derive the scroll range from the content height instead of the
frame-late GetVerticalScrollRange, fixing an oversized/overflowing
scrollbar after collapsing a section.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- assets: build font/texture paths from the addon-folder name (ADDON)
- Merge pull request #38 from NennMichSchinken/dev
Dev - chore: english comments in .pkgmeta and release workflow
- brand: rename product to LumenUI (formal name)
Formal product name -> LumenUI everywhere the user sees/types it:
.toc Title + filename (Lumen.toc -> LumenUI.toc), package-as,
AceAddon name (chat prefix), ESC-menu button, Shell wordmark,
/lumenui slash command (/lumen + /lu kept as aliases), README.
Short name 'Lumen' kept in running prose (locale strings) and for
internal identifiers that no user sees or that would force churn:
SavedVariables LumenDB, frame names (LumenShellFrame, LumenUnit*,
LumenCC*), and the Share export-code tag (payload.addon='Lumen',
kept for code compatibility).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com - release: link CurseForge project (X-Curse-Project-ID 1590189)
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com - release: add BigWigs packager workflow + .pkgmeta
Tag (v*) -> BigWigs Packager -> CurseForge/Wago. Libs are bundled
from the committed Libs/ folder (no externals). Dev artifacts
(.luacheckrc, tools, .github, *.md) excluded from the package.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com - Merge pull request #37 from NennMichSchinken/i18n-remaining-strings
i18n: localize remaining UI strings, drop dead widget gallery - i18n: localize remaining UI strings, drop dead widget gallery
Wrap the last German user-facing strings in ns.T() with deDE pairs:
ClickCast KEY_DISPLAY/MOD_DISPLAY (filled on locale-ready) and the
"No spec" fallback; Widgets search/empty/confirm/keybind placeholders;
Shell error print. Delete the unreachable Gallery sandbox screen and its
file-level locals; the dead else-branch becomes a no-op. Bump to 0.9.87.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com - Merge pull request #36 from NennMichSchinken/cleanup-english-comments-part2
cleanup: translate remaining code comments to English (part 2) - cleanup: translate remaining code comments to English (part 2)
- Merge pull request #35 from NennMichSchinken/cleanup-remove-ace-shell-and-english-comments
cleanup: remove the AceConfig backup shell + translate comments to En… - cleanup: remove the AceConfig backup shell + translate comments to English (part 1)
The suite shell is now the only UI, so the old AceConfig backup is gone, and
the code starts moving to English comments for an international repo.
Remove AceConfig backup shell:- Delete Options.lua; OpenConfig just toggles the suite shell (no "ace" arg,
no fallback); drop the SetupOptions() call in Core. - Drop now-unused libs from embeds.xml and Libs/: AceGUI-3.0, AceConfig-3.0,
AceDBOptions-3.0.
Localize the Lumen texture dropdown labels (Shield/Heal-absorb): the stored
value stays the German key ("Lumen Schild"/"Lumen Heilabsorb", needed for
texture/pattern matching), only the shown label is translated.
Translate comments to English (part 1): GameMenu, EditMode, Style, Core,
Modules/MiniCC, Modules/Share, Locales/Locale, Locales/deDE (comments only,
German values kept). Remaining large files (Tokens, ClickCast, Shell, Screens,
Widgets, Raidframes) follow in a part 2.
luacheck 0/0. Version 0.9.85.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- Delete Options.lua; OpenConfig just toggles the suite shell (no "ace" arg,
- Merge pull request #34 from NennMichSchinken/shell-localization-i18n
i18n: localize the suite shell (English default + German, auto-detect) - i18n: localize the suite shell (English default + German, auto-detect)
Add a lightweight localization layer so the suite shell is usable
internationally: English is the code default, German is a full
translation, and the WoW client language is auto-detected.- Locales/Locale.lua: ns.T("english") / ns.L lookup (key = English
source, falls back to the key). ns.onLocaleReady registry +
RunLocaleReady so string-bearing module constants (dropdown option
lists etc.) are built AFTER the language is resolved. - Locales/deDE.lua: ~240 German translations.
- Language resolved from db.global.language ("auto" | "enUS" | "deDE")
in Core:OnInitialize; "auto" follows GetLocale(). Manual picker
(Auto / English / Deutsch) added to the Global > Base tab; switching
prompts a reload. - All user-facing strings wrapped in T() across Screens, Widgets, Shell
(ComingSoon + nav tooltip), Core print, Share error texts, Raidframes
reload popup + aggro text, ClickCast mouse/modifier/action labels. - SECTIONS nav/tab labels and module/brand names stay English on
purpose (they double as ns.Screens lookup keys / §4.1 product terms).
Note: Options.lua (the /lumen ace backup config) is still German and
will be localized in a follow-up. Version bumped to 0.9.84.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- Locales/Locale.lua: ns.T("english") / ns.L lookup (key = English
- Merge pull request #33 from NennMichSchinken/raidframes-add-aggro-only-in-dungeon/raid-option-(default-on)
raidframes: add "aggro only in dungeon/raid" option (default on) - raidframes: add "aggro only in dungeon/raid" option (default on)
- Merge pull request #32 from NennMichSchinken/raidframes-exempt-own-tank-spec-from-aggro-overlay-when-role-unassigned
raidframes: exempt own tank spec from aggro overlay when role unassigned - raidframes: exempt own tank spec from aggro overlay when role unassigned
- Merge pull request #31 from NennMichSchinken/Global-tab-(profile-mgmt-+-export/import-popup)-
shell: Global tab (profile mgmt + export/import popup) + coming-soon … - shell: Global tab (profile mgmt + export/import popup) + coming-soon nav + UI.Border position fix
- Merge pull request #30 from NennMichSchinken/clickcast-shell-screen
clickcast: suite-shell screen (mouse bindings); hovercast deferred to P2 - clickcast: suite-shell screen (mouse bindings); hovercast deferred to P2
Click-Cast als Suite-Shell-Screen (ein Tab "Klick auf Frame"), verdrahtet gegen ns.ClickCast.- Maus-Bindings: Maustaste / Aktion / Modifier (Dropdown), Spell-Auswahl per W.SpellPicker
(suchbar/scrollbar, mit Icon), Keycap-Kopf, "Nur ausserhalb Kampf" jetzt auch fuer Menue
(verhindert versehentliche Menues im Kampf - wirkt nur auf Lumens Frames). - ClickCast.lua...
- Maus-Bindings: Maustaste / Aktion / Modifier (Dropdown), Spell-Auswahl per W.SpellPicker