Skip to content

docs: official first-party plugin research - #563

Merged
tomymaritano merged 3 commits into
developfrom
cursor/official-plugin-research-2666
Aug 22, 2026
Merged

docs: official first-party plugin research#563
tomymaritano merged 3 commits into
developfrom
cursor/official-plugin-research-2666

Conversation

@tomymaritano

@tomymaritano tomymaritano commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Research-only write-up for official first-party desktop plugins, plus a small verified slug fix for #562. No marketplace, no new install system, no iOS.

Parent context: #547 (vim/math/mermaid install that actually works), #542, #562.

Summary

Adds docs/plugins/ and a pointer from docs/PLUGIN_SYSTEM.md.

The write-up covers:

  1. How plugins install and load today (plugin-api, scanner, CLI vs Settings, update matching).
  2. What Now: Vim/math/mermaid install that actually works #547 implies, including the packaged slug bug Vim Mode install is broken in packaged 0.16.0 (registry slug, not GitHub repo) #562.
  3. GFM/editor gaps vs Inkdrop-style editor packs — hunches checked against the tree.
  4. Ranked next official packs. Out-of-scope list is explicit.

#562 — slug vs repo vs manifest id

Verified in dripnex/plugin-vim:

Role Value
Manifest / scan().id dripnex-vim-mode
GitHub repo (working install) dripnex/plugin-vim
Live registry slug missing → GET /plugins/dripnex-vim-mode 404

BrowseTab used to replace the fallback catalog and call installFromSpec('dripnex-vim-mode'). That is why Vim vanished from Install/Updates. Workaround on packaged 0.16.0: Other package → dripnex/plugin-vim.

Small fix in this PR (not a marketplace):

  • Merge COMMUNITY_CATALOG into the live registry list so Vim stays visible.
  • If a live row is dripnex-vim-mode without repositoryUrl, merge fills dripnex/plugin-vim and installSpecFor uses that repo — never the slug.
  • FIRST_PARTY_PACKAGES adds slug dripnex-vim-mode with repositoryUrl https://github.com/dripnex/plugin-vim pointing at the real v1.2.0 tarball.

Ranked next official packs (after #547)

  1. Emacs keymap (dripnex/plugin-emacs) — only missing editor keymap; same shape as vim. No product-shape decision.
  2. Footnote insert + jump — GFM footnotes already render via remark-gfm; pack would add insert/jump, not a second renderer.
  3. Source-mode task toggle — preview click + insert + strike already ship. Ask Tomás only on where it lives (core chrome vs pack).
  4. CSV/TSV fence preview (optional) — registerCodeBlockRenderer; lower value because GFM tables already exist.

Hunches discarded: tables (already built-in dripnex-tables), footnotes-as-renderer (preview done), task-list as greenfield (mostly built-in), mermaid/math renderers as new satellites (built-in; existing satellites only insert a fence).

Out of scope

Marketplace, clipper, graph, AI-notetaker, wikilinks-as-pack, iOS plugins, extracting built-in mermaid/math/tables (#339#342 icebox). CLI vs packaged userData remains #547 remainder — not this PR.

Test plan

Docs review plus the small slug-fix unit tests.

  • Read docs/plugins/README.md then docs/plugins/official-first-party.mdVim Mode install is broken in packaged 0.16.0 (registry slug, not GitHub repo) #562 table names slug vs repo vs manifest id
  • Paths match the tree (BrowseTab.tsx, communityCatalog.ts, FIRST_PARTY_PACKAGES)
  • Install click for Vim would send dripnex/plugin-vim, not dripnex-vim-mode
  • Live dripnex-vim-mode row with no repositoryUrl still installs via dripnex/plugin-vim
  • pnpm --filter @dripnex/api test -- tests/plugins.test.ts
  • pnpm --filter @dripnex/desktop exec vitest run src/renderer/pages/settings/sections/plugins/__tests__/communityCatalog.test.ts
  • No marketplace UI, no new plugin packs, no dripnex/ios changes

Type of Change

  • Documentation update
  • Bug fix (catalog / registry slug only)
Open in Web Open in Cursor 

Inventory of desktop plugin install/load, #547 gaps, and a ranked
editor/GFM list of next official packs. Docs only — no marketplace,
no plugin code.

Co-authored-by:  Tomás Maritano <tomymaritano@gmail.com>
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@tomymaritano, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 15 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a9710fb8-6e56-49e8-9cd1-4cec70c579f4

📥 Commits

Reviewing files that changed from the base of the PR and between f155600 and f985201.

📒 Files selected for processing (9)
  • apps/desktop/src/renderer/pages/settings/sections/plugins/BrowseTab.tsx
  • apps/desktop/src/renderer/pages/settings/sections/plugins/UpdatesTab.tsx
  • apps/desktop/src/renderer/pages/settings/sections/plugins/__tests__/communityCatalog.test.ts
  • apps/desktop/src/renderer/pages/settings/sections/plugins/communityCatalog.ts
  • docs/PLUGIN_SYSTEM.md
  • docs/plugins/README.md
  • docs/plugins/official-first-party.md
  • packages/api/src/routes/plugins.ts
  • packages/api/tests/plugins.test.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Settings Browse sent dripnex-vim-mode to GET /plugins/:slug (404).
The working spec is dripnex/plugin-vim. Merge the fallback catalog
so Vim stays visible, and add a first-party registry row that
points at the v1.2.0 tarball. Documents #562 on the research write-up.

@tomymaritano tomymaritano left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looked at the #562 slug path, not the research ranking.

Install via repository (dripnex/plugin-vim) + merge-instead-of-replace is the right desktop fix. installSpecFor / mergeFallbackCatalog tests match the packaged repro. First-party API row is the Worker side of the same bug (needs deploy to help live GET /plugins/dripnex-vim-mode).

Nit, not blocking: if the live registry later lists dripnex-vim-mode without repositoryUrl, merge will not add the fallback and Install falls back to the slug again. Keep repositoryUrl on that row.

Still open for #547 (this PR does not claim them): CLI vs packaged userData on Linux/Windows (Dripnex missing from candidates), and CLI install refusing an already-installed pack.

Docs ranking (emacs → footnotes → source task toggle) is the tree-checked one. Fine that emoji/tables dropped. No new packs until vim Install actually works.

Draft + CI still running — not merging yet.

A live dripnex-vim-mode row without repositoryUrl used to skip the
fallback merge and installFromSpec fell back to the slug. Overlay
dripnex/plugin-vim from the first-party catalog and cover it in tests.

@tomymaritano tomymaritano left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit landed. Live dripnex-vim-mode without repositoryUrl now overlays dripnex/plugin-vim in merge + installSpecFor, and the unit test covers that path. Still waiting on CI; still draft. Remaining #547 (CLI userData) stays out.

@tomymaritano
tomymaritano marked this pull request as ready for review August 22, 2026 14:07
@tomymaritano
tomymaritano merged commit 99979c2 into develop Aug 22, 2026
18 of 19 checks passed
@tomymaritano
tomymaritano deleted the cursor/official-plugin-research-2666 branch August 22, 2026 14:07
tomymaritano added a commit that referenced this pull request Aug 22, 2026
)

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Packaged users can enable Vim (and mermaid/math) from Settings → Plugins
without cloning a repo. Official slugs resolve to GitHub `owner/repo`,
Browse keeps fallback cards when the live registry omits them, Updates
match id **or** repository, and the CLI writes to the same `Dripnex`
userData folder as the packaged app.

No marketplace. Official first-party packs only. AuthGate untouched.

## Type of Change

- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [x] Documentation update

## Related Issues

Closes #547
Closes #562

## What changed

1. **Install spec** — `dripnex-vim-mode` and `dripnex/plugin-vim` both
resolve to `dripnex/plugin-vim` (same for mermaid/math). `GET
/plugins/:slug` 404 no longer blocks Install. Decision:
[`docs/plugins/install-path.md`](docs/plugins/install-path.md).
2. **Browse** — already merged fallback catalog (#563). This PR also
lists mermaid/math in `COMMUNITY_CATALOG` so they stay visible if the
API drops them.
3. **Updates** — `matchRemoteForInstalled` matches `scan().id` to
registry slug **or** the same GitHub repository (and the fallback
catalog).
4. **userData (#562 addendum)** — `resolveUserDataRoot` includes
packaged `productName` `Dripnex` on Linux/Windows/macOS, prefers a root
that already has `dripnex.db` / `plugins/`, and defaults to `Dripnex` so
`dripnex-plugin install` lands in the folder the packaged app scans.

## Checklist

- [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md)
- [x] Targeted unit tests pass (`storage-core` data-paths, `plugin-cli`
installSpec, desktop `githubInstall` + `communityCatalog`)
- [x] Typecheck: storage-core, plugin-cli, desktop main + renderer
- [ ] Full `pnpm test` / `pnpm build` (not required for this path-only
change)
- [x] PR targets `develop` branch (not `main`)

## Test plan

- [ ] Settings → Plugins → Browse still shows Vim when the registry
lists it **and** when it is omitted (fallback merge)
- [ ] Install `dripnex-vim-mode` and `dripnex/plugin-vim` both land
`dripnex-vim-mode-1.2.0.tar.gz` in packaged userData `plugins/`
- [ ] Updates lists vim when a newer registry/repo version exists
- [ ] CLI and packaged app resolve the same userData root for
productName `Dripnex` (Linux `~/.config/Dripnex`, Windows
`%APPDATA%/Dripnex`, macOS `~/Library/Application Support/Dripnex`)
- [x] Unit tests: `githubInstall`, `installSpec`, `communityCatalog`,
`data-paths`
- [ ] No store UI, no clipper/graph/AI-notetaker, no `dripnex/ios` /
Psynth / Linear PSY

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-587e59ae-ed45-498d-aa39-a0238536b441?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-587e59ae-ed45-498d-aa39-a0238536b441&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 0.16.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants