Commit graph

18 commits

Author SHA1 Message Date
mpstaton
13aff6f478 feat(release): 0.2.0 — Ask Gemini joins the lineup, with the per-claim citations Claude's web_search can't keep
Gemini lands as the fourth research provider — Google Search grounded,
per-segment citation attribution via groundingSupports[] (the layer Claude's
web_search_20260209 dynamic-filter sandbox loses), redirect URLs resolved
through Obsidian's requestUrl with canonical/og:url + <title> parsing so
citations land with real source URLs and real page titles.

Plus the partials + preambles paradigm (vault-visible shared rules across
the four directory templates), the addClass token bug that was silently
breaking eight settings sections finally fixed, system-prompt textareas
promoted from 200px right-edge slots to full-width 3-line rows, seeder
made idempotent at both folder and file layers, and ERR_NETWORK_CHANGED
mid-stream errors translated into plain-English re-run guidance.

Per-day changelogs:
- changelog/2026-05-19_01.md — partials + preambles + 11 hidden sections fix
- changelog/2026-05-19_02.md — Gemini provider lands
- changelog/2026-05-20_01.md — Obsidian-shipping pass (today)

Release narrative: changelog/releases/0.2.0.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 01:35:31 -05:00
mpstaton
b1ff11c687 chore(release): 0.1.2 — workflow-driven releases + artifact attestations + package.json description alignment
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>
2026-05-18 03:11:03 -05:00
mpstaton
4423052f04 chore(release): 0.1.1
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>
2026-05-09 02:53:38 -05:00
mpstaton
7b17b3b6e7 chore(marketplace): pass ObsidianReviewBot lint cleanly
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>
2026-05-09 02:39:06 -05:00
mpstaton
46e4f24755 align(requirements): align Perplexed to Obsidian's plugin community
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
2026-05-02 14:46:59 -05:00
mpstaton
b5a70c72a4 stuck(claude): claude not returning research citations or reference
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
2026-05-02 03:38:03 -05:00
mpstaton
9d5bc80ecf progress(model-provider): attempt to add new model, claude. Struggling
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
2026-05-02 03:18:11 -05:00
mpstaton
d5e78076f6 update(dependencies): update all dependencies for Perplexed
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
2026-05-02 01:08:20 -05:00
mpstaton
c81ca99aa8 improve(settings): improve settings UI
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
2025-07-19 21:08:45 +03:00
mpstaton
7e6831c315 init(project): initial commit for Perplexed Obsidian Plugin with basic readme, manifest, package.json
On branch master
 Changes to be committed:
	modified:   README.md
	modified:   manifest.json
	modified:   package.json
2025-07-10 00:00:49 +03:00
mpstaton
7e2aeb7bb5 update(packages): updated packages and dependencies to latest
On branch master
 Your branch is up to date with 'origin/master'.
 Changes to be committed:
	modified:   package.json
	modified:   pnpm-lock.yaml
2025-07-09 23:34:17 +03:00
mpstaton
5de4339c6c save(state): save state of starter code for any obsidian plugin
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
2025-07-09 23:18:48 +03:00
mpstaton
220876d2a5 clean(starter): clean starter code
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
2025-07-06 17:23:37 +03:00
mpstaton
644582d3dd add(packages): add Fastify, MCP, and Zod
On branch development
 Changes to be committed:
	modified:   package.json
	modified:   pnpm-lock.yaml
2025-06-08 00:51:01 +03:00
mpstaton
424b7871fc upgrade(packages): all packages are now up to date
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
2025-06-07 19:20:42 +03:00
mpstaton
1f74e2d86a update(packages): update several packages not breaking
On branch master
 Your branch is up to date with 'origin/master'.
 Changes to be committed:
	modified:   package.json
	modified:   pnpm-lock.yaml
2025-06-07 18:55:24 +03:00
mpstaton
0145a51fd7 switch(pnpm): add pnpm get rid of npm
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
2025-06-07 18:25:25 +03:00
mpstaton
fbfaa55bf7 start(project): initial setup from example Obsidian plugin with our developer preferences 2025-06-07 15:37:58 +03:00