Update 07flip to adec535#12084
Merged
runelite-github-app[bot] merged 1 commit intoMay 21, 2026
Merged
Conversation
|
This plugin requires a review from a Plugin Hub maintainer. The reviewer will request any additional changes if needed. Internal use only: Reviewer details Maintainer details |
29d4bc7
into
runelite:master
2 of 3 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Update 07flip plugin to commit adec535.
Trade-sync regression fix + automatic backlog recovery. Two paired plugin-side fixes for a server-submission regression that landed in our May 14 release.
The regression
The May 14
correctness passcommit (43c634f) moved server submission from per-fill POSTs to terminal-state-only - the right call, because the per-fill version was producing duplicate rows server-side. But the new gating routes the POST throughrecordTrade, which is gated upstream byrecordIfNewFills'sif (deltaQty <= 0) return;early-return.When a fast-filling offer maxes
quantitySoldin its lastBUYING/SELLINGtick (very common for liquid items), the subsequentBOUGHT/SOLDevent arrives withdeltaQty=0, the early-return fires, and the terminal POST never happens. Local recording continued working (clearPartialFlagran), but the trade was silently never sent upstream. The server side confirmed this matched the nginx data exactly: tracker POSTs dropped from ~100/day to 0-2/day immediately on May 14.Fix 1 - POST on zero-delta terminal observations
recordIfNewFills's early-return now checks the offer's state. If it'sBOUGHT/SOLD/CANCELLED_BUY/CANCELLED_SELL, it routes to a newfinaliseAndPostExistingRowhelper that mirrorsrecordTrade's tail: flipspartial=falselocally forBOUGHT/SOLD, then POSTs the row to/api/runelite/tracker. Same gating as the existing path (shareTradeData+ non-emptyapiKey). The server's fingerprint dedup makes any incidental duplicate POST a safe no-op.Fix 2 - Startup bulk re-sync via /tracker/bulk
Adds
postTradeRecordsBulkto the API client and a matchingdoBulkSyncToServerplugin method that runs once at startup right after the existing pull-directiondoSyncTrackerHistory. Walks the localtradeHistory(capped atMAX_TRADE_HISTORY=200, well under the endpoint's 500-row request cap) and ships the lot in a single request. Server dedups viaunique_trade(userId, itemId, tradedAt, isBuy)so already-known rows come back in the duplicate counter rather than as inserts.This recovers every affected user's May 14 ? fix-release backlog automatically - no user action needed, no UI button. Affected accounts will see their missed trades populate on the first client restart after this build lands.
Reviewer notes
/tracker/bulkendpoint was added on the 07flip.com side specifically for this recovery. Same Bearer-apiKey auth as/tracker, same User-Agent, byte-identical field shape so the existing serialiser maps over cleanly./tracker/bulk: 5 req/min/IP, well under our once-per-startup usage.shareTradeDatatoggle + apiKey gating are honoured exactly as in the existing tracker code./tracker/bulkjust batches the same row shape as/tracker.