mirror of
https://github.com/lossless-group/perplexed-plugin.git
synced 2026-07-22 06:49:50 +00:00
70 lines
5.9 KiB
Markdown
70 lines
5.9 KiB
Markdown
|
|
**Directory-template runs with `sonar-deep-research` were quietly discarding ~99% of every response — the streaming reader was taking the wrong field. 0.2.1 fixes that, keeps citations even when a long research stream drops mid-flight, adds a per-run model picker to the run dialog, and rebuilds the toolkit-profile template so the model searches the product's real name and triages SEO slop instead of citing it.**
|
||
|
|
|
||
|
|
## Why care?
|
||
|
|
|
||
|
|
If you generate research notes with Perplexed's directory templates — the "Apply directory template to current file" workflow — 0.2.1 is the release where the deep-research path actually works.
|
||
|
|
|
||
|
|
**`sonar-deep-research` runs now keep their output.** Perplexity's deep-research model does all its work server-side, then delivers the entire finished document — often 10,000+ characters — in the *first* event of its streaming response, in a field the plugin wasn't reading. The reader took `delta.content` (correct for the lighter `sonar` models, which stream token-by-token); on a deep-research response that field holds only a ~75-character tail fragment of a 10,000-character report. The other 99% arrived on the wire and was thrown away. `toolkit-profile` shipped with `sonar-deep-research` as its *default* model — so it was the default that was broken. Fixed.
|
||
|
|
|
||
|
|
**Citations survive a dropped connection.** Deep research holds a stream open for minutes; a WiFi roam or idle socket mid-stream used to discard everything, including the citations deep research delivers up front. A cut-off run now keeps whatever content and sources arrived, writes the citations footer anyway, and tells you it was truncated.
|
||
|
|
|
||
|
|
**You pick the model when you run.** "Apply directory template" now opens a run dialog with a model dropdown — and the loading toast finally names the model actually running, instead of a hardcoded "deep research" string.
|
||
|
|
|
||
|
|
## What's new
|
||
|
|
|
||
|
|
### Deep-research streaming — read the snapshot, not the fragment
|
||
|
|
|
||
|
|
Both streaming paths now treat Perplexity's cumulative `message.content` snapshot as the source of truth and append only the new tail.
|
||
|
|
|
||
|
|
| Model | How it streams | Old reader | 0.2.1 reader |
|
||
|
|
|---|---|---|---|
|
||
|
|
| `sonar`, `sonar-pro` | Token-by-token deltas | Worked | Works |
|
||
|
|
| `sonar-deep-research` | Whole document in event 1, then tiny deltas | ~75 of ~10,234 chars | Full document |
|
||
|
|
|
||
|
|
### Citations that survive a timeout
|
||
|
|
|
||
|
|
A dropped or timed-out stream no longer discards the run. The runner returns its partial content and the sources it already received, writes the citations footer, and shows a "stream cut off — saved partial content with N sources, re-run to complete" notice. The deep-research idle timeout was lengthened (90s → 270s) since deep research legitimately holds the socket silent while it researches.
|
||
|
|
|
||
|
|
### A model picker in the run dialog
|
||
|
|
|
||
|
|
"Apply directory template to current file" opens a dialog with a template dropdown and a **model dropdown** — `sonar-pro`, `sonar-reasoning-pro`, `sonar`, `sonar-reasoning`, `sonar-deep-research`. The model defaults to the template's `cft` `model:` and overrides it for that run only. The `cf_last_run_model` frontmatter stamp records the model that actually ran.
|
||
|
|
|
||
|
|
### Domain scoping — `cf_search_domains`
|
||
|
|
|
||
|
|
New `search_domain_filter` support: a `cf_search_domains:` list in a target file's frontmatter (entity-specific) or a `search-domains:` key in a template's `cft` block (generic). Plain entries allowlist, a leading `-` denylists, capped at 10. Job boards (Indeed, Glassdoor, ZipRecruiter, USAJobs) are denied automatically — a job listing is never a product source. Allowlisting is a last resort for collision-heavy names, not the everyday workflow.
|
||
|
|
|
||
|
|
### The toolkit-profile template, rebuilt
|
||
|
|
|
||
|
|
The shipped `toolkit-profile` template's system prompt was overhauled: it anchors the entity on its real name (`{{basename}}`) instead of the scraped marketing tagline; it tells the model to triage source quality — editorial authority over SEO ranking, judge each page on its merits — rather than trusting or hard-banning by domain; it adds a hard "search, don't recall" instruction and per-section length ceilings. Default model is now `sonar-pro`, with `sonar-deep-research` one dialog click away.
|
||
|
|
|
||
|
|
### Longer request timeout
|
||
|
|
|
||
|
|
The directory-template request timeout default moved 5 minutes → 10, so a `sonar-deep-research` run has room to finish.
|
||
|
|
|
||
|
|
## Verify the release assets
|
||
|
|
|
||
|
|
Every release asset is signed via [GitHub's artifact attestation system](https://docs.github.com/en/actions/security-for-github-actions/using-artifact-attestations). Before manual install, verify provenance:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
gh attestation verify main.js --repo lossless-group/perplexed-plugin
|
||
|
|
gh attestation verify manifest.json --repo lossless-group/perplexed-plugin
|
||
|
|
gh attestation verify styles.css --repo lossless-group/perplexed-plugin
|
||
|
|
```
|
||
|
|
|
||
|
|
Exit code 0 means the file came out of a legitimate build of the source repo.
|
||
|
|
|
||
|
|
## The Lossless Group plugin family
|
||
|
|
|
||
|
|
| Plugin | What it does |
|
||
|
|
|---|---|
|
||
|
|
| [**Cite Wide**](https://community.obsidian.md/plugins/cite-wide) | Stable hex-identifier citations + URL-based dedupe + LLM-paste research conversion |
|
||
|
|
| [**Image Gin**](https://community.obsidian.md/plugins/image-gin) | Recraft + Ideogram image generation, Magnific stock search, ImageKit CDN, drag-gate |
|
||
|
|
| **Perplexed** *(this release)* | Source-cited research from Perplexity, Claude, Gemini, Perplexica, or LM Studio + per-directory templates |
|
||
|
|
| [**Metafetch**](https://community.obsidian.md/plugins/metafetch) | Pull OpenGraph metadata into note frontmatter via OpenGraph.io or Microlink |
|
||
|
|
|
||
|
|
If Perplexed saves you time, [buy us a coffee](https://buymeacoffee.com/losslessgroup). The plugins are free; the coffee keeps the next one coming.
|
||
|
|
|
||
|
|
## Full release narrative
|
||
|
|
|
||
|
|
Marketing-grade narrative with the deeper context, the full eight-file changeset, and what's next: [`changelog/releases/0.2.1.md`](https://github.com/lossless-group/perplexed-plugin/blob/main/changelog/releases/0.2.1.md).
|