Commit Graph

32 Commits

Author SHA1 Message Date
florian.berthold 5ad41f372b ci: respect GITHUB_REPOSITORY + tolerate per-asset upload failures
release / release (push) Successful in 3s
2.14.0-coa.1
2026-05-25 12:16:11 +02:00
florian.berthold 52f1f79c6a ci: add Gitea Actions release workflow (per-addon git-archive zip)
release / release (push) Successful in 3s
2026-05-25 12:01:28 +02:00
florian.berthold 576484b04b chore: remove .github/ (upstream templates, not relevant on Gitea) 2026-05-25 11:02:44 +02:00
florian.berthold 8745782014 chore(libs): sync Ace3 to coa-ace3 (WoWUIDev master @ 52e5f2c)
Bring every embedded Ace3 / CallbackHandler / LibStub copy in line with the
canonical Exiles/coa-ace3 bundle so LibStub resolution is predictable across
all Exiles forks regardless of which addons are enabled.

Libraries updated in this fork:
  AceAddon-3.0           13  (5 → 13)
  AceBucket-3.0          4
  AceConsole-3.0         7
  AceEvent-3.0           4  (3 → 4)
  AceLocale-3.0          6  (2 → 6)
  AceTimer-3.0           17  (5 → 17)
  CallbackHandler-1.0    8  (5 → 8)
  LibStub                2
2026-05-23 13:42:15 +02:00
florian.berthold da2d323018 fix(sort): refuse to sort inventory when read is inconsistent with server
Post-sort holes were caused by the planning phase, not the execution
phase. When GetContainerItemInfo/Link transiently returns nil for an
occupied slot during server lag, CreateBagFromID marks it <EMPTY>, the
sort algorithm moves real items into that "destination", and we end up
with literal gaps where the misclassified items used to be.

Validate the read against GetContainerNumFreeSlots before sorting; if
counts disagree, print a chat warning and abort instead of corrupting
the layout. User retries after a moment.
2026-05-16 10:36:16 +02:00
florian.berthold 844f9c8a4e fix(sort): retry failed pickups instead of dropping moves on lag
DoContainerMoves dropped moves entirely when PickupContainerItem didn't
land on the cursor — on a laggy server this fires constantly because
the previous swap's client state hasn't propagated yet, leaving items
un-sorted. Retry up to MAX_PICKUP_RETRIES (8 * 150ms = 1.2s) before
giving up. Also bump CONTAINER_SWAP_DELAY 50ms -> 150ms; the inline
comment already pointed at this as the knob to raise on desyncs.
2026-05-15 20:21:26 +02:00
florian.berthold f132bb1861 fix(items): also handle first-render-under-lag empty slots
Previous grace-window fix only kicked in when self.hasItem was already
set, so first-render-under-lag (login/reloadui while bag data is in
flight) still drew empty. Arm a single re-verify on any nil read so a
late-arriving item gets redrawn; the verifyArmed flag prevents
re-scheduling on genuinely empty slots — it only clears when we see a
valid link.
2026-05-15 19:53:49 +02:00
florian.berthold c955937b12 fix(items): grace window for nil-after-occupied without retry polling
GetContainerItemInfo returns nil for some occupied slots during server
lag, causing Bagnon to draw the slot empty. Earlier retry-polling
approach caused massive lag because every legitimately emptied slot
also matched the "previously had item, now nil" condition and ran ~30
live reads over 3s per move.

New approach: on a nil-after-occupied read, if we're within
GRACE_WINDOW (0.5s) of the last good draw, keep the prior draw and
queue ONE re-check at the deadline — no polling. A genuinely emptied
slot resolves at the deadline; a recovered slot redraws with correct
data. lastGoodTime is set only on non-nil reads, so persistent lag
eventually accepts the empty.
2026-05-15 16:13:34 +02:00
florian.berthold 592808792a Revert "fix(items): defer empty draw when slot reads nil after lag"
This reverts commit 1af22578d7.
2026-05-14 06:20:03 +02:00
florian.berthold af80a3003d Revert "fix(items): keep retrying nil slot reads instead of accepting after one pass"
This reverts commit 60e3cea9fd.
2026-05-14 06:20:03 +02:00
florian.berthold 0eaf815f61 Revert "fix(items): retry render when slot reads nil for a previously occupied slot"
This reverts commit 770695dc77.
2026-05-14 06:20:03 +02:00
florian.berthold 770695dc77 fix(items): retry render when slot reads nil for a previously occupied slot
The event-level retry only protected the ITEM_SLOT_UPDATE broadcast, but
ItemSlot:Update() reads GetContainerItemInfo live on every call and is
invoked from many paths (OnShow → ReloadAllItemSlots, AddItemSlot,
BAG_UPDATE_TYPE, search updates). On a laggy server those live reads
flash slots empty. Add a shared retry queue at the slot-render level so
a slot with self.hasItem set will defer rather than draw nil; cap at
RENDER_RETRY_MAX so a genuinely emptied slot still resolves within ~3s.
2026-05-14 04:27:35 +02:00
florian.berthold 60e3cea9fd fix(items): keep retrying nil slot reads instead of accepting after one pass
Single-retry was still flashing slots empty on the inventory when lag
exceeded 0.25s — the retry pass would read nil and broadcast the empty.
Track a per-slot retry counter (capped at RETRY_MAX=12, ~3s) so we keep
deferring until the link comes back or we hit the ceiling. Bank was
never affected — it goes through PLAYERBANKSLOTS_CHANGED, not BAG_UPDATE.
2026-05-14 02:12:38 +02:00
florian.berthold 1af22578d7 fix(items): defer empty draw when slot reads nil after lag
Under server lag BAG_UPDATE can fire before item data arrives, causing
GetContainerItemInfo to return nil for a still-occupied slot and Bagnon
to broadcast ITEM_SLOT_UPDATE with no link — the slot then renders empty
until the next bag event. UpdateItem now queues a single ~0.25s retry
for the bag when a previously occupied slot reads nil; the retry pass
trusts whatever it reads, so genuine empties still resolve.
2026-05-14 01:50:42 +02:00
florian.berthold 0aac38f254 feat: v2.14.0 - personal/realm bank, stat search, faster sort
- Bagnon_Forever: silence "Unknown Bank Type" for regular guild banks; mirror
  IsPersonalBank/IsRealmBank from BANK_PERMISSIONS_PAYLOAD onto GuildBankFrame
  and broadcast GUILDBANK_TYPE_DETECTED so other modules pick up the bank type
- TitleFrame: show "Personal Bank" / "Realm Bank" instead of always "Guild Bank";
  re-render on GUILDBANK_TYPE_DETECTED to handle event-ordering races
- LibItemSearch: full-tooltip text scan (substring across every line, cached);
  bare-text search now falls back to it at 3+ chars so typing "Agility" or
  "Strength" finds matching gear. Explicit prefix tt:<text> also works
- SortBtn: rewrite DoContainerMoves to use the 3-pickup swap pattern with
  client-side cursor verification and an explicit 50ms inter-swap delay;
  much faster than the old link-verify loop without outpacing the realm
  server and desyncing after ~10 moves
v2.14.0
2026-05-13 08:02:49 +02:00
florian.berthold da85c0b9fb ci: preserve upstream line endings (CRLF) for clean upstream diffs 2026-05-08 04:02:57 +02:00
Simon Moe Sørensen 5b7a73a9c2 fix(db): 🐛 Fixes an issue where personal and realm bank information wouldn't get updated (#11)
* fix(db): 🐛 Fixes an issue where personal and realm bank information wouldn't get updated

Introduce the "Blizzard_GuildBankUI" addon in constructor, ensuring that the `GuildBankFrame` is loaded for bank type detection.
Hide the Blizzard Guildbank to avoid both Bagnon and Blizzard banks being shown at the same time.

This breaks the red color from the bank tabs

* refactor(db): ♻️ Use old implementation for personal and guild bank detection

* fix: 🐛 Fix issue where personal and realm bank wasn't identified on guild bank change event

* fix(db): 🐛 Fixes an issue where only current guild bank tab would be added to db

Use `QueryGuildBankTab` to preload items in guild bank tabs and identify trigger in GUILDBANKBAGSLOTS_CHANGED event to update bags when items are ready

* fix(db): 🐛 Correctly index realm and personal banks on initial load
2026-01-19 12:48:24 -07:00
Kian Soltani 53749e8ec5 fixed sorting personal and realm banks (#9) 2025-12-24 17:18:10 -07:00
Matthew Rodrigues 81842487b5 feat: changed TOPLEVEL to DIALOG frame strata (#8)
This was made because someone was looking for and not only that but within Bagnon when changing the frame layer there's "HIGH" and "TOPLEVEL", and both of them were doing the same thing
2024-02-19 22:37:21 -07:00
andrew6180 e10dcfca1b Remove enchant search, fix lua error with elvui 2023-08-09 15:06:48 -07:00
RealityWinner 7ee7e7e7bd Fix bank sort button and make weapons first (#7)
This fixes bank sorting in bagnon (the button would sort your inventory bags) and makes weapons first in sorting to fit next to Armor.
2023-07-03 19:09:07 -07:00
Matthew Rodrigues 4fe6ff79c3 fixed mystic enchants search thingy (#6)
* fixed RE search in player bags

* mystic enchants can also be searched in guildbank
2023-02-12 20:51:53 -07:00
Andrew6810 06a5c77a47 Bagnon/Bag: Embed aceevent and acetimer for acebucket to work 2023-01-16 15:49:44 -07:00
Andrew6810 112858b773 Bagnon/Bag: Embed aceevent and acetimer for acebucket to work 2023-01-16 15:48:47 -07:00
Andrew6810 8dba2f1dca Use AceBucket to handle mass BAG_UPDATE events when re-instancing 2022-12-31 14:57:43 -07:00
timothy-adam 6bae860635 Add realm bank support (#5)
* Update db.lua

Add support for realm bank.
Treat realm as a separate character

* Update localization.lua

* Update tooltips.lua
2022-12-14 08:03:58 -07:00
timothy-adam 8802eb045b Add personal bank support to database function (#4)
* Add personal bank support to database function (#1)

* Update localization.lua

Add new localization for personal bank

* Update db.lua

Add support for personal bank

* Update tooltips.lua

Use personal bank info in tooltip

* Update db.lua

Fix duplicated function

* Update db.lua

Remove accidently added equality sign that is unneeded
2022-11-16 11:53:05 -07:00
Matt ac47731f19 fix spacement when optionBtn gone (#2) 2022-10-31 10:26:03 -07:00
Andrew a778a33f99 Merge pull request #1 from mattcapazz/add-sort-feature
Added Sort Button into the addon.
2022-10-26 02:38:12 -07:00
Matthew Rodrigues e3c3e45ad0 added sort btn & configs. to enable or disable 2022-10-26 09:43:00 +01:00
Andrew6810 4e3aff9d89 init 2022-10-21 06:37:39 -07:00
Andrew 9fd56e0908 Initial commit 2022-10-21 06:30:58 -07:00