Streaming Perplexity through a modal — Perplexed comes online
Perplexed's identity moment landed July 19, 2025: the first time an API call to Perplexity ran through the plugin's modal and streamed responses back into the note. Not perfect, but real. Logged retrospectively from 2026 — the convention came after the fact.
Why Care?
Streaming is the difference between an LLM-augmented tool that feels like part of your editor and one that feels like waiting for a foreign API. The first time tokens started arriving in the modal as they were generated, with citations slotting in alongside, was the moment Perplexed felt like a real research companion rather than a search-then-paste detour.
This is the retrospective for that moment.
What's New?
(All historical, captured retrospectively.)
init(project): initial commit for Perplexed Obsidian Plugin(2025-07-10) — manifest, package.json, README.A week of structural work shaping the modal around search-and-stream rather than copy-and-paste.
milestone(streaming): api-call to Perplexity as made through modal now works and streams responses back. Not perfect, but works!(2025-07-19) — the streaming loop closed end-to-end. The exclamation point in the commit message was earned.
The arc
Streaming was the hard part. Hitting Perplexity's API and getting a response was straightforward; turning a chunked HTTP response into incremental updates inside an Obsidian modal — preserving citation markers as they arrived, handling cancellation if the user closed the modal mid-stream, dealing with backpressure when the editor lagged behind — that's where the week went.
The July 19 milestone is the day all of that worked at once. "Not perfect, but works!" was the right framing. The plugin was rough — citations sometimes rendered out of order, the modal layout was still cramped, the cancel button didn't always cancel cleanly. But streaming was no longer the blocker. From here, the work was iteration.
What this enabled
Everything Perplexed has done since traces back to the streaming milestone:
The two-tier modal architecture (TextEnhancementModal for the basic flow, TextEnhancementWithImagesModal for parallel text-and-image fetching) — both inherit the streaming response handler from this commit.
The provider rebrand from Perplexity to Perplexica/Vane (documented in
context-v/issues/Updating-Naming-to-Reflect-Provider-Rebrand.md) — the streaming layer survived the rebrand because it was already abstracted enough.Deep Research streaming, added in late August 2025 — built on the same streaming backbone.
Retrospective notes
Written 2026-05-04, ten months after the streaming milestone.
The phrase "Not perfect, but works!" in the original commit message is exactly the right voice for a milestone commit. We've borrowed it informally as a status descriptor for many subsequent plugins.
Some of the citation-modal commits visible in this repo's early history (the
iterate(modal): ...series from July 7–8, 2025) predate the Perplexed-specific init on July 10. Repository ancestry artifact; not relevant to Perplexed's substance.