Catch — turn an OrbitPilot reply into a Blink
What Catch does
Next to Copy and the thumbs-up/thumbs-down on every OrbitPilot reply is a bookmark icon — Catch. Tap it and that reply becomes a Blink: the text (cleaned up — no stray Markdown, no "from your file"/"my memory is stale" notices, just what OrbitPilot actually told you), a title suggested from the first line, and a link back to the exact conversation it came from.
You can also catch the whole conversation in one action, from the ☰ menu → "Catch this conversation" (in the full chat page, the same button sits in the conversation's header). That makes ONE Blink containing everything said so far.
Already caught?
Once a reply (or the session) has been caught, the bookmark icon fills in and the button becomes "Already caught" — a link straight to the Blink. Catching the same reply again never makes a second Blink; it just takes you back to the one you already have.
A session catch is a snapshot, not a window
Catching the whole conversation freezes it at that moment. If you keep chatting afterward, that Blink does not grow — the Blink itself says so, in these words: "Contains this conversation up to <date/time>. Later messages are not included." The conversation's own header also shows this: once new messages arrive past your last catch, it tells you so and lets you catch again — which makes a new Blink with its own, later "up to" time. Your earlier snapshot is never silently rewritten.
A very long conversation is truncated rather than dropped: the Blink keeps the most recent part and says plainly how many earlier messages were cut, so nothing is lost without you knowing.
Two-way links
The Blink and the conversation always point at each other. Open the Blink and you'll find a link back to "OrbitPilot conversation" (the exact reply, when it was a per-reply catch); open the conversation and you'll see the "Already caught" marker linking straight to the Blink.
Guests
Signed-out visitors see the Catch icon too — tapping it is the moment to invite you to create a free account, the same sign-up prompt shown at the free-preview limit. Nothing is saved for a guest until they register.
After it's caught
A caught Blink is a normal Blink — it flows into your OrbitPilot memory the same way any new or edited Blink does (if your plan has that automatic "fast lane" turned on by your admin), shows the same memory-status badge as everything else in your Library, and can be edited, categorised, or deleted like any Blink you wrote by hand.
For developers
All of the decision logic — cleaning the reply text, suggesting a title, the
idempotency guarantee, the session snapshot and its truncation, both halves of the
two-way link — lives in orbitpilot/catch.py
(catch_message / catch_session), called from two thin views,
orbitpilot_catch_message and orbitpilot_catch_session
(orbitpilot/views.py), both rate-limited, login-required, and ownership-
scoped at the message/conversation. Provenance is stored two ways:
OrbitPilotCatch (a new model — conversation/message → Blink, unique
per message) is the reverse lookup the conversation page reads; a BlinkLink
row (the existing "attach a URL to a wink" model) is the Blink's own forward link, so no
new provenance mechanism was invented. A caught Blink is created through the ordinary
Blink.objects.create(), so BL-161's fast-lane post_save signal
picks it up exactly like any other Blink — nothing in this feature talks to the memory
pipeline directly.
Related pages
Docshub: "OrbitPilot core, the booklet, and the fast lane" (memory/BL-161).
docs/orbitpilot/TASKS.md.