Impact: dedupeQuoteCards runs over the whole thread (or article) block list. Its 3-block near-duplicate window crosses thread-post boundaries, and its "image already shown in a quote" filter has no window at all.
- Posts 1 and 2 of a thread quote the same tweet. Post 2's card is merged into post 1's, and post 2 renders as a plain post.
- A later post in the thread quotes post 1. Post 1's own image is removed from post 1 and survives only inside the later quote card.
For threads, syndication re-adds the missing quote or media when that post's syndication succeeds. When it fails (404, exhausted retries) or CONFIG.useSyndication=false, the loss stands. Articles get no repair pass. The function's own comment says repeated embeds in different sections "must be kept".
Where: dedupeQuoteCards in sourcecapsule.user.js (2612-2641), called on the combined thread list (2687), the article list (2919) and after quote enrichment (8505).
Evidence: Node + jsdom repro of a two-post thread with syndication off:
--- A: both posts quote the same tweet
[post 2/2]
P 2/ Second point, quoting again. <- no QUOTE
--- B: post 2 quotes post 1
[post 1/2]
P 1/ My chart, and the tweet I am answering.
QUOTE https://x.com/critic/status/1780000000000000000 <- MyChart image gone
Environment: main 72777ef (v1.6.8). Engine loaded in Node through the module.exports guard with jsdom. No browser.
Next action: dedupe each post's blocks before combining them, stop the window at thread-marker blocks, and apply the image filter within the same post only.
Impact:
dedupeQuoteCardsruns over the whole thread (or article) block list. Its 3-block near-duplicate window crosses thread-post boundaries, and its "image already shown in a quote" filter has no window at all.For threads, syndication re-adds the missing quote or media when that post's syndication succeeds. When it fails (404, exhausted retries) or
CONFIG.useSyndication=false, the loss stands. Articles get no repair pass. The function's own comment says repeated embeds in different sections "must be kept".Where:
dedupeQuoteCardsinsourcecapsule.user.js(2612-2641), called on the combined thread list (2687), the article list (2919) and after quote enrichment (8505).Evidence: Node + jsdom repro of a two-post thread with syndication off:
Environment: main 72777ef (v1.6.8). Engine loaded in Node through the
module.exportsguard with jsdom. No browser.Next action: dedupe each post's blocks before combining them, stop the window at
thread-markerblocks, and apply the image filter within the same post only.