Repository navigation
What's new
Capture the replies to a post, not just the post. Full text, author, timestamp, parent
id, and media links — exported as threaded Markdown plus a full-text CSV, so an agent can
read the whole conversation instead of only the original claim.
How to use it
On any opened post, click ... then:
- Capture replies (experimental) — one click walks all three of X's reply surfaces
(Latest → Top → Relevant) and merges them. A few minutes on a large conversation;
progress is reported per surface. Leave the tab in front. - Download reply archive — writes
sourcecapsule-replies-<id>.mdand.csv.
Replies accumulate across runs and never shrink: a populated field is never overwritten by
an empty one and the longer text always wins, so a truncated preview cannot clobber full
long-form text, and a reply that disappears from a later surface keeps what was already
captured. Storage is IndexedDB — and if a write fails, it says so rather than losing the
run silently.
Reply media is recorded as links only, deliberately: downloading media for thousands of
replies is out of scope.
How complete is it?
Measured on three real conversations, audited from the downloaded files:
| Replies on X | Archived with content | Known but uncaptured |
|---|---|---|
| 764 | 636 | 0 |
| 670 | 537 | 0 |
| 32 | 36 | 0 |
100% of the replies X actually delivered to the browser, in all three. The shortfall
against the counter in the first two is replies X never served at all — deleted, blocked,
restricted, or never returned by any surface — which are undetectable by construction. The
third row exceeds its counter because X appears to count direct replies only, while the
archive also captures nested replies-to-replies.
Every export reports what it captured, lists any reply id it knows about but could not
fetch, and refuses to treat X's public reply counter as a denominator. Coverage is best
effort and the receipt says so.
Why one click runs all three surfaces: on the 670-reply post, Latest alone reached 473
(88%) — Top and Relevant added 64 more (+13.5%). Relevant has the lowest reach but
contributes the most unique replies, because it reaches nested sub-threads the search
surfaces do not return.
Also in this release
- A shorter menu. The post drop-down had grown to ten items, which buried the common
actions; it is now six. Save locally + create AI link was two actions that are both
still listed separately, and Download ZIP (HTML + Markdown) is the non-Chromium
fallback that Save to library already falls back to on its own. Both remain fully
supported by the engine and the extension popup — they are simply no longer menu entries.
Fixed
- An image recorded by two capture layers is now one media link. X serves the same image
with and without a file extension before the query string, so images seen by both the DOM
and GraphQL layers were stored, counted, and listed twice — one real archive showed 311
image links covering only 162 distinct images. When two URLs name the same asset, the
full-size rendition wins. - The capture receipt no longer lists a reply as "uncaptured" when its body is in the same
file, no longer double-prints the@in the archive title, and no longer renders X's HTML
encoding (->) in reply bodies. - The root post is no longer archived as a reply to itself.
- The archive store is now created correctly on installs that had already picked a library
folder. Previously the shared database existed at an older version, the archive's table
was never created, and every write failed. - Reply capture no longer reports "no results" on a healthy conversation just because X had
not rendered its first reply yet, and no longer stalls a working run in a background tab —
it pauses only when the tab is hidden and nothing has rendered.
Full changelog: https://github.com/wolfgang-aura/SourceCapsule/blob/main/CHANGELOG.md