Guild Bank Ledger

*BETA* - Persistent guild bank transaction logging with automatic multi-player sync.

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 _scrollFillContainers holds 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 field self._scrollFillContainers and private method
    _RefillScrollContainers keep 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 sentinel content field 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
  • 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
  • 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