File Details
v0.35.0
- R
- Jun 24, 2026
- 389.57 KB
- 113
- 12.0.7
- Retail
File Name
GuildBankLedger-v0.35.0.zip
Supported Versions
- 12.0.7
GuildBankLedger
v0.35.0 (2026-06-24)
Full Changelog Previous Releases
- Merge pull request #48 from RussellFeinstein/restock
Restock reserves: per-item Keep field, bulk-set Keep, status cleanup (v0.35.0) - Stamp release 0.35.0 (v0.35.0)
Single version stamp for the batch of three topic-branch PRs merged under
0.35.0: restock reserves (per-item Keep field + bulk-set Keep + Restock
status cleanup), the About tab label simplification (#46), and the removal
of the Sort crafted-quality crash mitigation (#47).
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Restock: separate row target/bank with a pipe instead of parens
Reads "target N | bank M" rather than "(target N, bank M)", matching the
trimmed two-state status display.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Restock: bulk-set Keep for all items on a tab
Adds a "Keep" field to the Layout editor's "Apply to all" bulk row, so a
layout-write user can set the reserve for every item on a display tab in one
click (alongside the existing bulk Slots and Per slot). Setting Keep to 0 clears
the tab's reserves on Save.
Extracts the bulk apply into a testable GBL:_LayoutEditor_ApplyBulk method (the
button handler is now thin) plus a pure applyBulkReserve helper that coerces
itemID keys to numbers, so a synced (string-keyed) layout still writes to the
number-keyed reserve store. 15 new tests cover the helper and the orchestration
(coercion, keep=0 removal, combined slots/perSlot/keep, validation, and the
slots/perSlot-only no-reserve-write regression).
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Restock: collapse stock status to In stock / Buy N
The Restock rows showed three states: Buy N (below target), Stocked (exactly at
target), and Over N (above target, in grey). The "Over N" state was confusing,
since being above the max is not a problem. GetRestockStatusDisplay now returns
two states: "Buy N" when the bank is below the item's target, and "In stock"
when it is at or above it. The row still shows the target and bank counts.
Both states stay triple-encoded (icon + color + text, never color alone).
Updates the status-display test for the binary behavior and asserts that an
over-max bank reads identically to an at-max one.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Harden the Restock Keep field for synced layouts and concurrent edits
Code review of the v0.35 reserves producer (commit 029dcfa) found three bugs the
number-keyed tests could not catch (the mock serializer is pass-through, so
synced string-keyed layouts are never exercised):- The Keep field used the row's raw itemID as the reserve key. A synced layout
arrives string-keyed, but the reserve store is number-keyed and SetStockReserve
rejects non-number ids, so for any member who received the layout via sync the
field showed 0 and silently dropped every edit. Coerce the itemID to a number
for the read and the write, matching the existing _RestockBuildItemUniverse
guard. - _LayoutEditor_ApplyReserveDraft compared the stale draft against live and
deleted any live reserve missing from the draft. A reserve a concurrent sync
added after the editor opened would be deleted on Save and that deletion
re-advertised guild-wide. Iterate the draft keys only; removals are recorded
as an explicit 0, so they still clear. - Remove left the item's reserve behind with no way to edit it (Keep renders
only for items in a display tab). Remove now records an explicit 0 so Save
clears the reserve too.
Also correct the doc comment: SetStockReserve bumps the layout sync cursor but
does not itself force a HELLO; the Save's own HELLO advertises the change.
Adds three regression tests (string-key coercion, concurrent-sync preservation,
remove-clears), a CHANGELOG [Unreleased] entry, and the CLAUDE.md architecture
note for the reserves producer. 1386 tests, lint clean.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
- The Keep field used the row's raw itemID as the reserve key. A synced layout
- Restock reserves: add a "Keep" field to the Layout editor
Add a per-item "Keep" EditBox to each display-tab row in the Layout editor,
wired to the dormant stockReserves store. Reserves ride a parallel draft
(self._reserveDraft) alongside the layout draft, so editing Keep is consistent
with the Slots / Per slot fields: changes apply on Save and are thrown away on
Discard. Save applies only changed reserves, since SetStockReserve bumps the
layout sync cursor and forces a HELLO (one per real change, not per item).
Restock needs no change: _RestockTarget already targets max(layout demand,
reserve), so a Keep above an item's layout total raises its buy-to target, and
_RestockBuildItemUniverse already lists reserve-only items.
This is the producer half of the v0.35 reserve-targets step; the consumer
(Restock) shipped in v0.34.0. No version stamp yet (bundle-and-PR stamps at
PR-open). Adds apply-on-save and Keep-field tests; 1383 tests and lint green.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Merge pull request #47 from RussellFeinstein/layout-sort
Sort: drop the crafted-quality crash mitigation (banner + pre-warm) - Remove the Sort pre-warm step
Pre-warm loaded every unique item link before the first move to mitigate a
Blizzard-side crash on TWW crafted-quality reagents. It added up to a 3-second
delay before every sort, and recent sorts over those reagents (Flawless gems and
similar) no longer crash, so the mitigation became cost without benefit. The
sort now starts its first pass immediately.
Removes preWarmForPlan, PREWARM_CAP_SECONDS and its export, the skipPreWarm opt,
state.preWarming and the checkStall guard for it, and the pre-warm phase in
ExecuteSortPlan (now a direct startPass). Drops the now-unneeded skipPreWarm from
the 17 sort-executor test calls, which ran synchronously anyway. The crash record
stays in the ChangelogView history; if it resurfaces the mitigation can be
restored from git.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Remove the Sort tab crafted-quality crash warning banner
The banner restated that pre-warm runs to mitigate a Blizzard-side crash, but
recent sorts over crafted-quality reagents (Flawless gems and similar) did not
crash, so the banner was clutter on the preview. Pre-warm still runs before
every sort as a best-effort mitigation; only the banner and its supporting
predicate are gone.
Removes the SortView banner, the now-dead planHasCraftedQualityItems predicate,
the CRAFTED_QUALITY_ATLAS constant and its export from SortExecutor, and the
spec/ui/sortview_spec.lua file that only tested that predicate.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com - Merge pull request #46 from RussellFeinstein/ui
About tab: simplify the Ko-fi / CurseForge / license labels - Simplify the About tab labels
The Ko-fi and CurseForge copy boxes now show just "Ko-fi" and "CurseForge"
instead of repeating "select and Ctrl+C to copy" (the boxes are already
read-only copy fields), and the license line reads "MIT License".
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com