A trust & legibility redesign — the everyday signal moves onto the page you're already reading, the popup becomes a multi-tab mission-control that can't fail silently. This pass grounds the in-page surfaces in real authenticated ChatGPT & Claude.ai dark UIs and resolves the two placement strategies into one boundary. Buildable as MV3 popup + shadow-DOM overlay, no remote assets, daemon-offline as a calm normal state.
F2/F3 (floating chip + slide-over) and F4 (blended into the host's own action row) aren't alternatives — they're a passive layer and an on-demand layer, split by one rule:
Two elements slot into the host's existing copy/feedback/regenerate row at the same ~30px ghost size: a capture-status dot and a save-to-Polylogue action. Always present, reads as native, zero layout shift. Answers "is this captured?" without a click.
A corner chip (⌥P) opens a slide-over holding everything with no host equivalent: session cost, archive recall, relevant judged assertions, the "what Polylogue did" timeline. Deliberately its own surface — inventing host-blended UI for this would read as foreign.
Near the composer, Polylogue shows one small "archived through this message" chip — placed beside ChatGPT's model badge / Claude's weekly-limit banner, at the same weight, in the same docked zone. It reads as one more piece of session meta, not an injected panel competing for the same space.
Not an error. Captures queue locally and sync the moment it's back.
Captured visible text only — the app's native data wasn't available. Branches & attachments may be missing.
Receiver rejected the envelope — bearer token invalid.
The page has moved past what's archived. Nothing lost — just newer.
Every conversation Polylogue sees gets a timeline entry — capture, decision, or skip-with-reason. "Saw it and did nothing" is impossible: doing nothing is itself a logged, visible event. No more reading 160 lines of debug JSON by hand.