Three things bundled:
1. Release workflow at .github/workflows/release.yml fires on every 3-digit-semver tag push. Builds main.js + styles.css in a clean Ubuntu runner, signs all three release assets via actions/attest-build-provenance@v1 (sigstore-backed via OIDC), creates the GitHub Release with notes pulled from release-notes/<tag>.md. Identical to the workflow landing across cite-wide, image-gin, metafetch as a family-wide pattern.
2. release-notes/0.1.2.md authored in marketing-shape per content-farm/context-v/skills/changelog-conventions/SKILL.md "These are marketing artifacts" section.
3. package.json description aligned with manifest.json. Previous package.json text "A plugin for Obsidian that allows you to generate source-cited content..." still contained the bot-flagged "Obsidian" + self-reference patterns that we'd already fixed in manifest.json; this synchronises the two so anything reading from npm-style metadata gets the same active-voice description users see in the directory listing.
Version bumped 0.1.1 → 0.1.2 across manifest.json / package.json / versions.json. No source-code changes — Directory Templates, the four shipped templates, the first-run seeder, the Claude integration, the wide modals all behave identically to 0.1.1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Patch release bundling the marketplace-compliance lint pass for the
Obsidian community plugin re-submission. No user-visible behavior
changes from 0.1.0; this is the bot-clean version.
versions.json picks up "0.1.1": "1.8.10" matching the manifest's
minAppVersion.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Applies all required fixes from the bot's review of PR #12513
(obsidianmd/obsidian-releases). ESLint now passes 0 errors with the
Obsidian community ruleset; tsc passes; production build is clean.
Lint setup:
- Adopted eslint-plugin-obsidianmd@^0.2.9 in eslint.config.mjs
- Mirrored the bot's rule surface locally so violations surface in
`pnpm lint` instead of the marketplace PR thread
- Configured the ui/sentence-case rule with a brand allowlist
(Perplexity, Perplexica, Vane, Claude, Anthropic, LM Studio, Imgur,
ImageKit, OpenAI, Ollama, Sonar, Llama, GPT, YAML, JSON, URL, API)
so legitimate proper nouns aren't lowercased
Code fixes (487 → 0):
- console.log/info → console.debug across all sources (~130 sites)
- UI strings normalized to sentence case (~150 sites)
- Command IDs and names cleaned up: dropped "command" suffix, dropped
"perplexed" plugin-name prefix
- Settings tab section headers switched from createEl('h2') to
new Setting().setHeading() (5 sites)
- Inline element.style.color/width/minHeight/fontFamily migrated to
a new CSS class (.perplexed-json-textarea + .is-tall / .is-extra-tall)
in src/styles/settings-tab.css (8 textarea sites, 32 style assignments)
- Async input handlers wrapped: addEventListener('input', () => void
(async () => { ... })()) so the listener type matches (8 sites)
- forEach((opt) => dd.addOption(...)) blocks made void-returning to
satisfy no-misused-promises (9 modal sites)
- JSON.parse results typed as unknown then narrowed
- throw <string> → throw new Error(<string>)
- ${unknown} interpolations narrowed via instanceof Error
- Removed dotenv runtime dependency: published plugins shouldn't read
.env at runtime; user enters API keys via the settings tab
- Replaced builtin-modules dev-dependency with node:module's
builtinModules — same data, no extra package
- Logger console-method dispatch rewritten as a switch instead of
dynamic console[level] indexing (which the bot rejects)
Streaming exceptions:
- src/services/{perplexityService,lmStudioService,perplexicaService}.ts
retain `fetch()` for SSE / chunked streaming because Obsidian's
`requestUrl` buffers the whole body. Each site has an
`eslint-disable-next-line no-restricted-globals` with the marketplace
`/skip` justification inline. Plan to surface these on the PR with
a `/skip` reply.
Reference docs:
- context-v/issues/Obsidian-Review-Bot-Feedback-on-Perplexed-Submission.md
(issue log distilled into…)
- context-v/reminders/Obsidian-Marketplace-Compliance.md (the rules
themselves, reusable for image-gin and cite-wide submissions)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
standards
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: LICENSE
new file: context-v/plans/20206-05-02_Assuring-Obsidian-Community-Plugin-Requirements.md
modified: eslint.config.mjs
modified: main.ts
modified: manifest.json
modified: package.json
modified: src/modals/ArticleGeneratorModal.ts
modified: src/modals/ClaudeModal.ts
modified: src/modals/LMStudioModal.ts
modified: src/modals/PerplexicaModal.ts
modified: src/modals/PerplexityModal.ts
modified: src/modals/TextEnhancementModal.ts
modified: src/modals/TextEnhancementWithImagesModal.ts
modified: src/modals/URLUpdateModal.ts
modified: src/services/lmStudioService.ts
modified: src/services/perplexicaService.ts
modified: src/services/perplexityService.ts
modified: src/types/obsidian.d.ts
new file: src/utils/coerce.ts
modified: src/utils/formatDate.ts
modified: src/utils/logger.ts
modified: styles.css
modified: versions.json
definitions, just plain text
On branch development
Your branch is ahead of 'origin/development' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
new file: context-v/issue-resolutions/Getting-Claude-to-Respond-With-Research.md
new file: context-v/issue-resolutions/Widen-Modals-in-Obsidian-using-CSS.md
modified: package.json
with getting returned research objects.
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: context-v/reminders/Ideal-and-Overkill-Schema-for-Max-Flexibility.md
modified: main.ts
modified: package.json
modified: pnpm-lock.yaml
new file: src/modals/ClaudeModal.ts
new file: src/services/claudeService.ts
new file: src/styles/claude-modal.css
modified: src/styles/main.css
modified: styles.css
On branch development
Your branch is ahead of 'origin/development' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
deleted: .eslintignore
deleted: .eslintrc
new file: changelog/2026-05-02_01.md
new file: eslint.config.mjs
modified: package.json
modified: pnpm-lock.yaml
modified: src/services/perplexityService.ts
modified: styles.css
modified: tsconfig.json
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: main.ts
new file: package-lock.json
modified: package.json
modified: styles.css
On branch development
Changes to be committed:
deleted: .cursor/mcp.json
deleted: .windsurfrules
modified: README.md
modified: manifest.json
modified: package.json
modified: versions.json
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
modified: .gitignore
modified: .windsurfrules
modified: README.md
modified: package.json
On branch development
Changes to be committed:
modified: .eslintrc
modified: esbuild.config.mjs
modified: main.ts
modified: package.json
modified: pnpm-lock.yaml
modified: tsconfig.json
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
modified: .npmrc
deleted: lcontent-farm.code-workspace
modified: main.ts
deleted: package-lock.json
modified: package.json
new file: pnpm-lock.yaml
modified: versions.json