docs(release): 0.1.1 release narrative

User-facing roll-up of the per-day changelogs covering the 0.1.0 → 0.1.1 span: Directory Templates paradigm (cf/cft codefence DSL, four shipped templates, auto-seeder, streaming + image-marker pipeline, anti-incumbent editorial stance), Claude as third research provider, redesigned wide modals, selection-anchored Find Images, cite-wide-compatible sources footer, and marketplace availability through the new community.obsidian.md portal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
mpstaton 2026-05-17 22:17:28 -05:00
parent 0a016e2668
commit de4b21ce1e

140
changelog/releases/0.1.1.md Normal file
View file

@ -0,0 +1,140 @@
---
title: "Perplexed 0.1.1 — From Research Modal to Per-Directory Content Workflow"
lede: "Claude joins Perplexity and Perplexica as a first-class research provider, one template per directory now generates source-cited content across a whole folder, and shipped templates seed themselves into your vault on first install."
date_authored_initial_draft: 2026-05-17
date_authored_current_draft: 2026-05-17
date_first_published: 2026-05-17
date_last_updated: 2026-05-17
at_semantic_version: 0.1.1
status: Published
category: Release
tags:
- Release-Narrative
- Directory-Templates
- Claude-Provider
- Auto-Seeding
- Per-Directory-Content
- Obsidian-Community-Plugin
authors:
- Michael Staton
augmented_with: Claude Code (Opus 4.7, 1M context)
release_tag: "0.1.1"
release_url: "https://github.com/lossless-group/perplexed-plugin/releases/tag/0.1.1"
prior_release_tag: "0.1.0"
release_commit: "0a016e2"
---
![2026-05-09_Perplexed-Streaming-Perplexity-Deep-Research_ 6.17.34PM.gif](https://ik.imagekit.io/xvpgfijuw/Image-Gin/2026-05/2026-05-09_Perplexed-Streaming-Perplexity-Deep-Research__6.17.34_PM_VrZbicaO6d.webp)
## Why Care?
If you keep a knowledge vault — concepts, tools, vocabulary, source profiles — most of it never gets filled in. You stub a folder for every concept you encounter, every tool you evaluate, every term worth defining, intending to come back and write each one up properly. You never do.
Our Example: There are 1,600 nearly-empty profile files in your Toolkit folder, hundreds of concepts waiting in your concepts folder, vocabulary entries sitting at title-only. Filling them in one file at a time is untenable, even one at a time with LLM output. A generic "summarize this for me" pass on each file produces homogenous slop with no citations and no editorial point of view.
Perplexed 0.1.1 is the release where the plugin stops being a per-query research modal and starts being a per-directory content workflow. You drop one template into a directory describing how its files should be filled in — what to research, what tone to take, what frontmatter to stamp, where the sources footer goes — and the plugin streams source-cited content into every file in that directory (or a single file, or a folder batch), using Perplexity for research and routing the output through a citation pipeline that's already compatible with Cite-Wide's hex-citation format.
Hats off to [Text Generator](https://text-gen.com/) for the inspiration for this feature. Yes, we used Text Generator; though it was awesome, it wasn't quite the way we needed it to be.
The same release adds Claude as the third research provider alongside Perplexity and Perplexica, a first-run seeder that drops the four shipped templates into your vault automatically so you can see the format before writing your own, and Marketplace availability through the new community.obsidian.md portal.
## What's New?
### Per-directory content generation via templates
Drop a template file into a directory — one of the four shipped templates, or your own — and Perplexed can generate source-cited content for every file in that directory in one pass. The template uses a small **`cf` / `cft` codefence DSL** to describe what to research, what frontmatter to stamp, and how to format the output. Each `cf` block is a content-generation instruction; each `cft` block is a template that gets interpolated against frontmatter values in the target file.
The runtime applies the template via Perplexity research, **streams writes back into the file as the response arrives** (you see it appear in real time, not as a final block at the end), and stamps run-tracking frontmatter (`cf_last_run` timestamp + `cf_last_run_model`) so you can query for stale files later — *"which concept profiles haven't been refreshed since April?"* becomes a single Dataview query.
Four shipped templates cover the most common knowledge-vault shapes:
| Template | Lives in | What it fills |
|---|---|---|
| **concept-profile** | `concepts/` (or wherever you keep them) | A concept explainer with definition, history, examples, and editorial stance — biased against attributing the concept to tech giants when it actually originated in research labs, startup founder interviews, or earlier papers |
| **vocabulary-profile** | `Vocabulary/**` | An innovation-consultant lens definition of a term — what it means, why it matters, what it's often confused with |
| **source-profile** | `Sources/` or `Citations/` | A source dossier that handles articles, books (via Google Books URL harvesting), and other source types via nested type-handling |
| **toolkit-profile** | `Tooling/**` | A profile for a tool, library, or service the vault tracks |
Each runs as **one file at a time**, a **folder batch** that walks every file in a directory, or in **append-below** mode that writes underneath existing content rather than replacing it.
### Anti-incumbent editorial stance baked into the prompts
The `concept-profile` template's system prompt explicitly instructs the model to treat tech giants (Google, Microsoft, Meta, OpenAI, Amazon, Apple) as adopters and popularizers — not originators — of concepts. The "Examples" section caps how many big-tech examples are allowed, and the prompts actively prefer startups, research-lab papers, and founder-interview attribution over the easy "X was invented by [big company]" framing that vanilla LLM output defaults to.
This is editorial discipline you can read in the prompt, not a hand-wave. If a concept genuinely originated at a tech giant, the prompt allows it; what it pushes back against is the laziness of always attributing.
### Auto-seeding — templates arrive with the plugin
Install Perplexed, open Obsidian, and the plugin's first-run seeder drops the four shipped templates plus a README explaining the format into your vault automatically. You can see the template format before writing your own, modify the shipped ones to taste, or ignore them entirely — the README is always re-ensured on plugin load (so updates land), but the templates are treated as user-managed after first deployment (so your edits aren't overwritten).
### Claude joins as the third research provider
Anthropic's Claude is now wired in alongside Perplexity and Perplexica via a dedicated **Ask Claude** modal. Uses the official Anthropic SDK with server-side `web_search` enabled, adaptive thinking, response streaming, and a two-pass citation extraction pipeline that handles both per-claim text-block citations (the structured citation objects Claude attaches to specific sentences) and bare `web_search_tool_result` fallbacks (the looser citation form Claude sometimes returns when it can't anchor a citation to a specific claim).
So your provider choices for any research command are now:
| Provider | Endpoint | Cost | Best for |
|---|---|---|---|
| **Perplexity** | api.perplexity.ai | Paid | Source-cited research with consistent citation formatting |
| **Anthropic Claude** | api.anthropic.com | Paid | Longer-form reasoning with `web_search` and adaptive thinking |
| **Perplexica / Vane** | localhost:3030 (self-hosted) | Free | Privacy-sensitive research; runs entirely on your machine |
| **LM Studio** | localhost:1234 (local) | Free | Local-only inference, no network |
### Wide, consistent modals across all three Ask commands
The **Ask Perplexity**, **Ask Claude**, and **Ask Perplexica** modals now share a redesigned, wide, visually consistent UI. The wide-modal CSS technique (the `modalEl` rather than `contentEl` styling trick) means there's actually room for the streaming response to land in a readable column instead of a 480px-wide squeeze.
### Better Find Images — anchored to your selection, with strict domain filtering
The existing **Find Images for Selection** command now does **selection-anchored image discovery with paragraph-level placement**. Search results land near the text they relate to, not appended at the end of the document. A **strict domain filter** (`search_domain_filter`) rejects off-domain results so when you ask for images from `example.com` you get images from `example.com`, not whatever the image-search backend would have surfaced absent the filter.
### Sources Footer compatible with Cite-Wide
When the directory-template runtime writes a sources section, it emits the canonical `[N]:` reference-definition format (per the Lossless Citation Spec) so that running Cite-Wide's *Convert Numeric Citations to Hex* afterwards transforms them directly into stable `[^hex]` markers. The two plugins now compose cleanly: Perplexed generates, Cite-Wide canonicalizes.
A separator (`***`) is also emitted above the `# Sources` heading with proper blank-line spacing, so the footer reads as a deliberate section rather than appended noise.
### Sonar instructed to emit inline citations
When using Perplexity's Sonar models, the system prompt now explicitly instructs the model to emit inline `[N]` citation markers in the body of the response (not just in a trailing references list). Combined with the cite-wide-compatible sources footer above, the post-generation conversion to `[^hex]` markers is one command.
### Installable from the new Obsidian community portal
Obsidian retired the long-running PR-based submission queue (`obsidianmd/obsidian-releases`) in favor of a hosted portal at **community.obsidian.md**. Perplexed 0.1.1 is the first version published through the new portal — reachable from inside Obsidian via Settings → Community Plugins → Browse → search "Perplexed".
Sibling Lossless plugins shipped through the same portal-discipline pass: [`image-gin 0.2.2`](https://github.com/lossless-group/image-gin/releases/tag/0.2.2) and [`cite-wide 0.2.0`](https://github.com/lossless-group/cite-wide/releases/tag/0.2.0).
## Under the Hood
Each substantive piece of work shipped in 0.1.1 has its own per-day changelog under `changelog/`:
| Date | Topic | Per-day changelog |
|---|---|---|
| 2026-04-30 | **Claude provider integration** — Anthropic SDK + Ask Claude modal + web_search + adaptive thinking + streaming + two-pass citation extraction (per-claim text-block citations + bare web_search_tool_result fallbacks) | [`2026-04-30_01.md`](../2026-04-30_01.md) |
| 2026-05-01 → 2026-05-02 | **UX pass** — modal redesign + wide-modal CSS unlock; consistent UI across Ask Perplexity, Ask Claude, and Ask Perplexica modals | [`2026-05-01_01.md`](../2026-05-01_01.md) |
| 2026-05-02 | **Maintenance pass** — dependency refresh resolving Dependabot flags; streaming-citations bug fix | [`2026-05-02_01.md`](../2026-05-02_01.md) |
| 2026-05-09 → 2026-05-10 | **Directory Templates paradigm** — the headline feature. `cf` / `cft` codefence DSL, four shipped templates (concept / vocabulary / source / toolkit), streaming + cleanup pipeline with `[IMAGE N: ...]` marker placement and fallback, anti-incumbent editorial stance, cite-wide-compatible sources footer, frontmatter run-stamps, Google Books URL harvesting for book sources, first-run seeder that drops shipped templates + README into the user's vault on plugin load | [`2026-05-10_01.md`](../2026-05-10_01.md) |
| 2026-05-12 | **Marketplace compliance** — ObsidianReviewBot's recommended config; 73 sentence-case rewrites, four `fetch()` call sites refactored to `activeWindow.fetch` for `no-restricted-globals` compliance, `async` dropped on a callback and on `listTemplates` (no `await` expression), six unused catch bindings dropped to clear optional warnings; both local and bot-mirror eslint configs exit 0 | [`2026-05-12_01.md`](../2026-05-12_01.md) |
| 2026-05-17 | **Marketplace-portal submission** — release tagged `0.1.1` at commit `0a016e2` on `main`, release published with `main.js` / `manifest.json` / `styles.css` attached as binary assets through the new community.obsidian.md portal (the old `obsidianmd/obsidian-releases` PR-based queue having been retired) | release commit `0a016e2` |
The original Perplexed identity moment — first streaming API call to Perplexity through the modal, July 19 2025 — is logged retrospectively at [`2025-07-19_01.md`](../2025-07-19_01.md).
## What's Next
- **More directory templates as the patterns emerge.** The four shipped templates cover the obvious knowledge-vault shapes (concept / vocabulary / source / toolkit), but real vaults have more — research-question profiles, decision-records, retros, company-dossiers, founder-profiles, etc. Each new template is a single file in the seeder's shipped set; the runtime infrastructure doesn't need to change.
- **Per-template provider selection.** Right now the directory-template runtime defaults to Perplexity. A future pass could let each template specify its own provider (Claude for long-form reasoning templates, Perplexica for privacy-sensitive ones, LM Studio for cost-bounded batches) via the `cf` block frontmatter.
- **Diff-aware regeneration.** Files with `cf_last_run` already stamped could be skipped on subsequent runs by default, with an explicit `--force` mode for refreshes. Right now every folder-batch run regenerates every file.
- **Cite-Wide auto-invocation after directory-template runs.** The sources footer is already cite-wide-compatible (emits canonical `[N]:` format); the next step is an optional post-run hook that calls cite-wide's *Convert Numeric Citations to Hex* command automatically so the resulting file lands with `[^hex]` markers in one shot.
- **Restore brand-name casing in user-facing strings.** The marketplace lint pass forced 73 sentence-case rewrites, several of which lowercased brand-name proper nouns mid-string ("perplexity api" instead of "Perplexity API"). The bot's default brand allowlist doesn't include the providers Perplexed integrates with; once Marketplace acceptance lands, the brand casing gets restored with a custom `eslint-plugin-obsidianmd` config (or a `/skip` justification on the PR, matching the discipline that image-gin used for its own brand allowlist).
## References
- **Release on GitHub:** https://github.com/lossless-group/perplexed-plugin/releases/tag/0.1.1
- **Install from Obsidian:** Settings → Community Plugins → Browse → "Perplexed"
- **Directory-Templates substance changelog:** [`changelog/2026-05-10_01.md`](../2026-05-10_01.md)
- **Claude-provider integration changelog:** [`changelog/2026-04-30_01.md`](../2026-04-30_01.md)
- **Modal UX-pass changelog:** [`changelog/2026-05-01_01.md`](../2026-05-01_01.md)
- **Marketplace-compliance changelog:** [`changelog/2026-05-12_01.md`](../2026-05-12_01.md)
- **Lossless Citation Spec (what the sources footer conforms to):** spec lives at `cite-wide/context-v/reminders/Lossless-Citation-Spec.md` in the sibling plugin
- **Sibling-plugin releases shipped in the same marketplace-portal pass:** [`image-gin 0.2.2`](https://github.com/lossless-group/image-gin/releases/tag/0.2.2), [`cite-wide 0.2.0`](https://github.com/lossless-group/cite-wide/releases/tag/0.2.0)
- **Upstream providers referenced:** [Perplexity](https://www.perplexity.ai/), [Anthropic Claude](https://www.anthropic.com/), [Perplexica / Vane](https://github.com/ItzCrazyKns/Vane), [LM Studio](https://lmstudio.ai/)