File Details
v0.32.4
- R
- May 15, 2026
- 359.82 KB
- 56
- 12.0.5
- Retail
File Name
GuildBankLedger-v0.32.4.zip
Supported Versions
- 12.0.5
GuildBankLedger
v0.32.4 (2026-05-15)
Full Changelog Previous Releases
- Merge pull request #25 from katogaming88/ui
Persist window position/size and enforce minimum frame dimensions (v0.32.4) - Add convention-enforcing smoke tests for fill-child registration
For every state-light tab builder, call the builder directly on a
fresh mock container and assert that_scrollFillContainersholds at
least one entry afterward. A future BuildXxxTab that forgets the
AddFillChild helper trips this test and the resize-anchor-loss bug
fails fast instead of shipping silently.
Coverage: BuildTransactionsTab, BuildGoldLogTab, BuildConsumptionTab,
BuildAboutTab, BuildChangelogTab, BuildSyncTab. Builders are wrapped
in pcall because some crash partway through under the existing mock
(e.g. Label.label:SetWordWrap is a real AceGUI feature the mock does
not stub). The crash is unrelated to the convention; what matters is
whether AddFillChild was reached BEFORE the crash, which the registry
assertion captures.
BuildSortTab and BuildLayoutTab are deliberately omitted: both need
state plumbing (RegisterMessage, bank snapshot, guild data, layout
draft, AceGUI mock SelectTab firing OnGroupSelected) larger than this
PR's scope. Tracked in the project_ui_smoke_test_gaps memory.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Rename AddScrollFillChild to AddFillChild and convert remaining sites
The original PR's resize re-anchor loop only covered the 3 scroll
containers in UI/UI.lua. Six more raw
widget.frame:SetPoint("BOTTOMRIGHT", parent.content, ...)sites
across UI/SyncStatus.lua, UI/LayoutEditor.lua (x2), UI/ChangelogView.lua,
UI/AboutView.lua, and UI/SortView.lua bypassed the helper and still
lost their fill anchor every time onResizeStop ran. Convert all 6 so
the registry holds every fill child the tab system creates.
One of those sites pins a TabGroup, not a ScrollFrame, so rename the
helper to AddFillChild and reword the registry comment header. The
internal fieldself._scrollFillContainersand private method
_RefillScrollContainerskeep their names; they are not call-site
visible.
The verbose inline comments at the LayoutEditor and SortView sites are
trimmed to a one-liner pointing at the helper; the longer explanation
now lives with the helper definition.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Add window-persistence spec for v0.32.4 wiring
Covers the SetStatusTable / SetResizeBounds / sizer-hook wiring that
ships in v0.32.4, plus the scroll-fill registry round trip:- SetStatusTable is pointed at the live db.profile.ui table (same
identity, not a copy) so MoverSizer_OnMouseUp writes flow through
AceDB. - SetResizeBounds (or SetMinResize on classic) records an 810x500 floor.
- An OnMouseUp hook is registered on sizer_se / sizer_s / sizer_e.
- AddScrollFillChild stores parent/widget pairs and anchors the child;
multiple registrations accumulate in order; firing a sizer hook
re-applies the anchor on every registered widget; tab switch drops
stale entries. - Defensive coverage for the nil-guard in _RefillScrollContainers: a
corrupt entry does not break iteration over the rest of the registry.
The mock now records args on SetStatusTable, SetResizeBounds,
SetMinResize, SetPoint, and ClearAllPoints so the spec can assert
against them. It also stubs DoLayout / OnWidthSet / OnHeightSet and
exposes a sentinelcontentfield on every widget so the post-resize
layout cascade runs cleanly under tests.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- SetStatusTable is pointed at the live db.profile.ui table (same
- Extract scroll-fill registry from onResizeStop
- AddScrollFillChild is the single entry point for tabs that need a
ScrollFrame pinned to BOTTOMRIGHT. It adds the child, applies the
anchor, and records the (parent, widget) pair on
self._scrollFillContainers. - _RefillScrollContainers walks the registry and re-applies anchors
after the layout cascade in onResizeStop. The hard-coded list of
_ledgerContainer / _goldLogContainer / _consumptionContainer is gone;
new scrollable tabs only need to call AddScrollFillChild to
participate in the resize behavior. - SelectTab clears self._scrollFillContainers before ReleaseChildren so
prior-tab registrations cannot bleed into the next tab's build. - BuildTransactionsTab, BuildGoldLogTab, BuildConsumptionTab switch to
the helper. Behavior is unchanged on resize and tab switch.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- AddScrollFillChild is the single entry point for tabs that need a
- Remove temporary resize-dimensions debug display
The OnSizeChanged → SetStatusText block was added to tune the minimum
window size and was explicitly marked TEMP. Minimum is now locked at
810×500 so the helper is no longer needed.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com - Stamp release 0.32.4 (v0.32.4)
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com - Persist window position/size and enforce minimum frame dimensions
- Route AceGUI's status tracking through db.profile.ui so position and
size survive reloads (MoverSizer_OnMouseUp writes top/left/width/height
into AceDB; ApplyStatus restores them on next session) - Set minimum frame size to 810x500 so the tab bar and filter row remain
usable at smallest allowed size - Hook sizer OnMouseUp to re-run layout cascade and restore BOTTOMRIGHT
anchors on scroll containers after resize, so the scroll area always
fills the available height - Expand mock_ace.lua with frame methods needed by the new setup code
(HookScript, SetScript, SetResizeBounds, SetMinResize, sizer stubs)
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- Route AceGUI's status tracking through db.profile.ui so position and