Skip to content

Releases: ChrisLovering/LootCollector

beta 0.8.7

Choose a tag to compare

@ChrisLovering ChrisLovering released this 14 Jul 20:31
359995d

Bug Fix

  • Fixed �ttempt to call global 'renderToast' (a nil value) error in ShowSpecialMessage — added forward declaration for the
    enderToast local function which was defined after its first call site.

v0.8.6 - Performance & Security Hardening

Choose a tag to compare

@ChrisLovering ChrisLovering released this 13 Jul 23:12
c0e3d47

Performance

  • Profiler disabled by default (zero overhead in release)
  • GUID generation uses single string.format instead of 11+ intermediate concatenations
  • Comm.lua: localized globals (time, pairs, string., table.) for hot paths
  • Queue processing (incoming messages, raw buffer) changed from O(n²) table.remove(t,1) to O(n) cursor+compact
  • IsValidMYSTICSCROLLSource uses hash lookup instead of linear scan
  • parseVersion hoisted out of compareVersions to avoid closure allocation per call

Security

  • Network string fields (fp, av, mid, cl) are now length-capped to prevent DB bloat from malicious senders

Bug Fixes

  • Removed duplicate dead trackInvalidSender function (also had undefined variable bug)
  • Deduplicated ScheduleAfter implementations across Core/Decay modules
  • OnChatMsgLoot retry loop now caps at 3 attempts for unresolvable items (prevents infinite rescheduling)
  • Dedup cache pruning now runs periodically even when idle (fixes memory leak during AFK)
  • rawBuffer cap enforced in chat channel handler (was previously unbounded)

LootCollector beta 0.8.5

Pre-release

Choose a tag to compare

@ChrisLovering ChrisLovering released this 13 Jul 22:50

LootCollector 0.8.5 - Fix.

  • Lua error fix

LootCollector 0.8.4 - Security, Fixes, tiny Performance fix.

  • Fixes: Fixed few bugs.
  • Network Protocol "bump": Bumped minimum compatible version to 0.8.4.

LootCollector 0.8.3 - Fix.

  • Lua error fix

LootCollector 0.8.2 - Pin Menu / Chat Linking, Fixes.

  • Added RMB Chat Link Action: Added a context-menu option on map pins to insert the item and its location into chat.
  • Improved Existing Shortcut Discoverability: Surfaced the old Ctrl+Alt+RMB behavior through the normal RMB menu so it is no longer hidden behind a modifier-only flow.
  • Fixes: .toc, code.

Credit:

  • Chat action suggestion and .toc fixes by StepOnLegos - The Chaotic Helper.

LootCollector 0.8.1 - Fix.

  • Lua error fix

LootCollector 0.8.0 - The V8 Engine Overhaul (Performance, Proximity logic, Security, QOL, CoA)

The features and code in this release were built with efficiency in mind rather than aiming for the best possible overall solution.

1. V8 Database Migration & Unified Identifiers

  • High-Precision GUIDs: Completely replaced the old 2-decimal grid coordinate system with a 4-decimal exact-match format (c-z-iz-i-x-y). (Previously, in some cases, for optimization reasons, 2-decimal coordinates were used)
  • Auto-Migration: Added a seamless sequence that recalculates the entire database and remaps all character looted history to V8 standards on login (requires 1-time reload).
  • Looted State Inheritance: Redesigned how "looted" markers behave. When pins are merged by the deduplicator or synced via imports, the surviving/new map pin automatically inherits the looted state of the consumed pin.
  • Load-on-Demand Initializers: The 200KB+ Starter Database and the Custom Import string buffers have been decentralized into independent, Load-on-Demand (LoD) addon modules. This further reduces RAM allocation and delays during the PLAYER_LOGIN event.
  • Per-Character Filter Isolation: Moved all data-driven map filters (e.g., Min Quality, Usable By Class, Hide Looted) from the global Account profile to strictly Per-Character settings. Added a silent migration to automatically copy your existing global filters to first character player logs in upon first login.
  • Code Pruning: Removed some obsolete network variables and redundant legacy structures.

2. True Yardage Logic & O(N) Deduplication

  • Euclidean Spatial Clustering: Replaced flat percentage-based map math with true yardage calculations utilizing Map.WorldMapSize and native engine coordinates.
  • O(N) Deduplicator Rewrite: The cleanup engine now uses a fast, greedy clustering algorithm grouped by Item ID. This should process the database in milliseconds without locking up the game.
  • The Highlander Rule ;D: Enforced strict rules for Worldforged items. The deduplicator sorts duplicates by Trust, absorbs consensus votes, and purges outliers to ensure only one true pin exists per WF Discovery per zone.

3. Anti-Drift Consensus & Echo-Locking Fixes

  • Exponential Moving Average (EMA): Pin coordinates now gracefully drift toward the true center of a cluster using an 80/20 EMA split.
  • Trust Weight Capping: Incoming network packets have their validation weight capped to prevent spoofed or artificially amplified network echoes from permanently locking pins in incorrect locations.
  • Toast Notifications Rework: Fixed a bug where echoing another player's drop accidentally stripped their name due to local anonymity settings. Additionally, reinforcement toasts will now hide player names to keep notifications cleaner and less intrusive.

4. Networking, Security & Spam Shields

  • Infinite Payload Chunking: Comm.lua can now natively slice massive payloads (like vendor inventories) into 250-byte chunks (M1, M2, M3) and reassemble them.
  • Memory & Injection Shields: Implemented strict memory ceilings for message assembly and added another layer of upstream database injection limits per sender to prevent malicious database bloating.
  • Regex Garbage Eradication: Rewrote the DBSync.lua network parser to use a high-performance plain-text crawler instead of Lua Regex, eliminating massive RAM garbage spikes during bulk syncs.
  • PvP Instance Hard Block: Added a hardcoded rule that completely ignores local loot events while inside Battlegrounds or Arenas.
  • Sharing: Further network duplication optimization.

5. Engine Performance & Stutter Fixes

  • Accelerated C-Side Caching: If Ascension's native C_AssetQueryService is active, the background cache queue processing delay is dropped from 3-6 seconds down to a highly responsive, randomized 0.5 to 0.7 seconds per item (pcall for now).
  • Unified C-API Scanner: Eliminated hidden UI tooltip scraping for Mystic Scrolls. The new module Scanner.lua instantly queries Ascension's native C_MysticEnchant APIs in O(1) time (this requires more testing but hopefully will work as is :>).
  • Time-Budgeted Decay: The background Decay.lua scanner now processes items within a strict 4-millisecond frame window (~0 FPS loss on any hardware).
  • Minimap & Arrow Optimization: The Auto-Tracking arrow now searches only within Core.ZoneIndex[currentZoneID] instead of the global DB. Minimap rendering uses cached math functions and a fast-fail bounding box (distYards * distYards > maxDistSq) to skip heavy trigonometry. It also has a (crude sorry ;p) failsafe mechanism for the Astrolabe nil glitch.
  • Bag Scanner Debounce: Added a 0.2-second debounce timer to BAG_UPDATE to stop the game from freezing when looting multiple items or using auto-sorters.
  • Toast Ticker: The scrolling UI toast ticker now cycles just two objects. This produces smoother scrolling and eliminates possible memory bloat caused by string concatenation.
  • Reduced Load Freeze: Completely rewrote the Viewer array compiler into a time-budgeted, asynchronous background loader. It now processes exactly 8ms of data per frame, allowing massive 10000-item databases to load seamlessly in the background without dropping frames or freezing the game. (Toggleable via Settings).
  • Annihilated some Garbage Collection (GC) Stutters: Reduced memory bloat across the entire addon. The Viewer now utilizes Object Pooling (Table Recycling). Instead of creating and abandoning 10000 tables during searches/filters (forcing GC stutters), it securely overwrites existing memory blocks, significantly dropping active RAM allocation.
  • Pre-Computed Sort Keys: Eliminated screen stutter when clicking table column headers (like "Zone" or "Name"). Complex string/API resolutions are now pre-computed during the background load, rendering UI sorting an instantaneous O(1) math operation.
  • Persistent Core Scanner & RAM 'Hydration': Added a permanent SavedVariables cache for lightweight core stats (Worldforged, Level, Class). Heavy tooltip text required for "Deep Searching" is now quietly 'hydrated' into a transient RAM cache over time via a silent background 1.0ms ticker.
  • Contextual Minimap Caching & Math Bypass: Minimap tracking now uses "fast", local Lua arithmetic instead of bridging to Ascension C-APIs hundreds of times a second.
    -Unified Database Pass Optimization: Consolidated independent O(N) database sweeps into a single, cohesive pass, significantly reducing login maintenance overhead.

6. Dynamic AOE Deadzones

  • AOE Tombstones (Deadzones): The addon can now set invisible 50-yard exclusion bubbles to instantly annihilate corrupted item data (for example, false WF drops spawned by Guardian of Time upgrades).
  • MS Vendor Deadzones: Implemented a permanent, localized 70-yard deadzone surrounding all recorded Mystic Scroll Vendors. This prevents random, duplicated MS map pins from clustering on top of vendors.

7. Diagnostics

  • Bug Report Generator: Added a dedicated Report a Bug Button (Bug icon) to the Viewer. Users can input a Title and Description to generate a fully compressed, deflated !LCDBG1! payload string containing their environment data, active addon list, database metrics, and profiler health.

8. Quality of Life & Event Suppression

  • Bags Filter: Added by @Raxxlian. Hides Bags from Discoveries. Map->LC->Hide->"Hide Bags".
  • Clear Looted History Button: Added by @Raxxlian. Interface->LootCollector(+)->Discoveries->Looted->"Clears All Looted".
  • New Viewer feature - "Deep Search (Stats & Effects)"!: Added by @Raxxlian. Toggle this in Veiwer to include Stats & Effects search!
    • Additional updates to Raxxlian's "Deep Search":
    • The toggle state of "Deep Search" is now properly saved and loaded across reloads and game sessions.
    • Visual Highlights: Discoveries matched exclusively via tooltip descriptions are highlighted in the list with a distinct golden [DS] tag.
    • Keystroke Debouncing: Added a 0.2-second typing delay to the Viewer's search box to completely eliminate interface lag while typing. Highlights are instantly cleared when search queries are emptied.
  • CoA Archetypes & Localized Menus:
    • Standard vanilla retail classes are now completely filtered out of the Map and Viewer "Usable by" lists on CoA realms.
    • Dropdown menus now strictly display the clean localized display names.
  • Hide Non-Essential Messages: Added a new Visibility toggle to suppress verbose chat output (such as routine background database scan/cache notifications, login maintenance stages, and automatic cleanup reports).
  • Hibernation Mode: The "Pause" feature has been entirely rewritten into a true "Hibernation Mode". Turning this on instantly purges all network queues, halts background caching, stops local detection, and clears map + minimap pins, reducing CPU overhead.
  • Auto-Hibernation: Added Settings toggles to ...
Read more