MarketSync

Synchronizes auction data across your guild to build a shared, offline-accessible pricing network with instant chat price checks.

File Details

MarketSync Beta v0.4.5

  • B
  • Feb 21, 2026
  • 50.13 KB
  • 10
  • 2.5.5
  • Classic TBC

File Name

MarketSync.0.4.5-beta.zip

Supported Versions

  • 2.5.5

[0.4.5] - 2026-02-20

Fixed

  • Fixed: A critical sender coroutine starvation bug that caused mid-transfer disconnects. When large stretches of items were skipped (unparseable dbKey formats), the coroutine would run for too long without yielding, causing WoW to silently kill the execution frame. A safety yield every 500 scanned entries now prevents this.
  • Fixed: ADV item count inflation. CountRecentItems was counting ALL dbKeys in the Auctionator database (including unparseable suffix formats like "12345:0:0:0"), but RespondToPull could only send items with recognized key formats (%d+, g:%d+, p:%d+). The advertised count now matches the actual transferable count, preventing receivers from seeing partial sync percentages that never reach 100%.
  • Fixed: Personal Scan snapshot inflation. SnapshotPersonalScan was cloning every entry from the Auctionator database—including ~20,000 items with unparseable dbKey formats—into the PersonalData pool. The snapshot now filters with the same parseable-key validation used by the sync engine, so the reported item count matches what can actually be displayed in the Browse tab.
  • Fixed: Sync freshness backwards compatibility with v0.4.3 clients. When the sender doesn't include TSF (legacy client), the system now correctly falls back to item count comparison instead of silently failing the freshness check.

Improved

  • Improved: Explicit END packet for verified sync completion. The sender now transmits a dedicated END;itemsSent;messagesSent;senderTSF control message when the transfer finishes, allowing the receiver to immediately commit instead of waiting for an 8-second idle timeout.
  • Improved: Verified full-sync validation. The receiver compares its RxCount against itemsSent from the END packet. Only when RxCount >= itemsSent does it stamp its freshness. Partial or timed-out syncs remain eligible for re-PULL on the next ADV cycle.
  • Improved: Sender TSF passthrough prevents ping-pong sync loops. The receiver stamps the sender's original PersonalScanTime (not time()) so both clients share the same TSF watermark and neither sees the other as "fresher."
  • Improved: ADV and PULL suppression during active transfers. Clients no longer broadcast advertisements or initiate new PULLs while actively sending or receiving data, eliminating redundant sync cycles.
  • Improved: Personal Scan snapshot isolation. SnapshotPersonalScan() is no longer called after guild sync commits — the Personal Scan tab only updates when the player personally visits the Auction House.
  • Improved: Guild Sync tab redesigned as "Best Available Data" view. Instead of only showing items tagged with network metadata, the Guild Sync tab now indexes the complete live Auctionator database—your personal scan as baseline plus any incoming guild sync data merged on top. This ensures the Guild tab always shows the most up-to-date prices regardless of source. When you scan the AH, the index is automatically invalidated and rebuilt with your fresh data.
  • Improved: Automatic data migration on login. If existing PersonalData contains unparseable legacy keys from pre-0.4.5, the addon automatically re-snapshots on login to clean up inflated counts—no manual data wipe required.
  • Improved: Debug Console line caps set to 500 lines (network log, cache stream) and 50 lines (swarm queue) to prevent unbounded RAM growth during long sessions.
  • Improved: Cache builder coroutine ticker now respects the Cache Speed slider interval instead of hardcoded 0.01s.

[0.4.4] - 2026-02-20

Fixed

  • Fixed: A severe ambiguity bug in the Swarm consensus logic. Previously, if two users scanned on the exact same "day" (e.g., today), the sync receiver would aggressively reject the upload if the incoming payload had superficially fewer items due to natural Auction House churn over the span of a few hours. The Swarm Receiver now intelligently parses the exact Realm Timestamp (TSF), prioritizing absolute time freshness over volatile item count differentials.
  • Fixed: Unregistered outgoing broadcast events. The Debug Console's Network Monitor previously ignored CHAT_MSG_ADDON packets matching your own character name, making it impossible to see your own data transmissions. Outgoing [ADV], [PULL], and [ACCEPT] signals are now natively hooked to safely bypass the chat filter, visually printing to your console so you know exactly when your client pings the guild.
  • Fixed: A cross-character data leak involving SyncStats. The all-time database seeding leaderboards were improperly writing your network statistics directly into the global MarketSyncDB root instead of your isolated MarketSync.GetRealmDB() partition. The counters have been rerouted to prevent cross-realm data contamination.

Improved

  • Improved: Complete conversion of all local timestamps to Realm Time (RT). Timestamp displays on the Personal Scan tab, Guild Sync tab, and Chat Price Checks now uniformly reflect the server's timezone, negating confusion across different geographical locations.
  • Improved: The Personal Scan tab date formatting was rewritten. It now dynamically calculates the physical Realm Time offset to accurately display Today at XX:XX RT, Yesterday at XX:XX RT, or Month DD at XX:XX RT. This replaces the static (and often incorrect) "Today at" text applied to legacy database entries. Local timezone acronyms (EST, PST, CEST, etc.) were completely stripped from the UI to match the new unified Realm Time standard.
  • Improved: Swarm Network Protocol upgraded. The [ADV] broadcast data packet now transmits a discrete 5th parameter specifically representing the rigid Realm Timestamp (TSF) of your data cache, allowing all clients in the swarm to accurately reconstruct chronological sync timelines.

[0.4.3] - 2026-02-20

Improved

  • Improved: Swarm sync engine completely rewritten for maximum throughput within WoW's documented addon message limits. The system now uses 3 parallel data channels (MSyncD1, MSyncD2, MSyncD3) with round-robin dispatch at 1 msg/sec per prefix, achieving 3 messages per second sustained (744 bytes/sec, well under the 2000 CPS safe limit). Combined with base-36 payload encoding (~30% compression), each message packs ~16 items into 248 bytes. Total throughput: ~48 items/sec. A full 2355-item sync completes in ~50 seconds in a single pass with zero drops, down from 5-6 retry cycles over 25+ minutes.
  • Improved: The BRES bulk sync protocol has been upgraded to v3. All numeric fields (itemID, price, quantity, day) are now base-36 encoded per-item (id:price:qty:day), and transmitted on dedicated data channel prefixes separate from control messages. The receiver auto-detects encoding format and is fully backwards-compatible with decimal v1/v2 data from older clients.
  • Improved: The Network Monitor window has been expanded into a full Debug Console. It now contains three panels: the Sync Network event log, the Swarm Queue tracker, and a new Cache Processing Stream that emits live timestamped entries as the index builder reads, resolves, and commits Personal and Guild data — so you can see exactly what the cache engine is doing at any given moment.
  • Improved: Item history attribution has been upgraded from a single flat "last writer wins" source stamp to a per-scan-day attribution model. Each day in an item's history now independently credits the player who actually contributed that specific day's price data, so the History popup correctly displays the original contributor per day rather than crediting the most recent sync partner for every row. Old save data gracefully falls back to legacy attribution.

Added

  • Added: Sender and receiver both now emit checkpoint progress notifications to the Debug Console every 100 items, showing exact counts of items sent, messages transmitted, database entries scanned, and total items received — providing full visibility into sync progress.
  • Added: A "Reset Data" button has been added to the Settings tab. This securely wipes all MarketSync tables and immediately processes a fresh Personal Scan snapshot, entirely without deleting or tampering with your legacy Auctionator system data.
  • Added: A "Rebuild Caches" button has been added to the Settings tab. This lets you manually trigger a re-index of the Personal and Guild databases so you can see the cache processing status update in real-time.

Removed

  • Removed: The "Run Bulk Sync" button and /ms sync slash command have been removed. The passive sync system automatically advertises and syncs every 5 minutes, making manual triggers redundant.