Plugin registry platform
The plugin registry is currently a single static `plugins/registry.json` file checked into the website repo. Every new plugin or version means a maintainer PR. This initiative replaces it with a dedicated platform on a subdomain of tabularis.dev: developers sign in with GitHub or Codeberg OAuth, claim a plugin namespace, link their repo, and new releases get picked up automatically. Plus per-plugin download analytics. The registry stays a catalog + trust layer — binaries keep living in the author's Releases. Picked up by Dominik Spitzli (@NewtTheWolf) on [#196](https://github.com/TabularisDB/tabularis/issues/196).
How the registry works today
The registry is one file: plugins/registry.json in the website repo. Each plugin is an entry, each version a block under releases:, each asset URL a direct link to a GitHub Releases download on the plugin author's repo. The app reads this JSON at install time.
What this means in practice:
- Adding a new plugin means a PR on the website repo. Maintainer reviews and merges.
- Shipping a new version means another PR. Same flow.
- The plugin author has no way to publish on their own schedule. There's no "I own this plugin id" — it's whatever the JSON says.
- No download numbers, anywhere.
- No validation beyond "the JSON parsed and I trusted the PR."
It worked while the registry had three plugins and one author. It doesn't scale to an ecosystem.
What we want
A dedicated registry platform, hosted on a subdomain of tabularis.dev. Concretely:
- OAuth-based ownership. Plugin authors sign in with GitHub or Codeberg and claim a namespace. Ownership is tied to the OAuth identity, not to a JSON entry that the maintainer merged.
- Linked-repo publishing. An author links their plugin repo. New releases on the linked repo are picked up automatically (webhook or polling) and become installable from the app — no website PR, no maintainer in the loop.
- Hybrid storage. The registry is a catalog + trust layer, not a CDN. Plugin binaries keep living in the author's GitHub / Codeberg Releases. The registry indexes them, validates the manifest, and serves the metadata.
- Download analytics. Per-plugin, per-version, per-platform counts that authors can see on their own dashboard, plus enough aggregate data on the public listing for users to gauge what's actually used.
- Manifest validation at publish time — schema, required platforms, version monotonicity.
- Client install unchanged. The existing pipeline (
manifest.json+install.sh+~/.local/share/tabularis/plugins/<id>/) stays exactly as it is. The registry only changes how plugins are discovered and resolved — install itself doesn't move.
v1 ships plugins only. Themes, snippets and SQL templates slot into the same pipeline later with a different kind: in the manifest.
Direction
Adapt an existing open-source plugin/extension marketplace rather than build one from scratch. Building a marketplace eats months and the work isn't where Tabularis adds value.
Top candidate: Eclipse Open VSX. It already has namespaces, publisher claim via OAuth, search, a REST API and a published web UI. What needs to change: rebrand, add Codeberg next to GitHub as an OAuth provider, swap the manifest schema for ours.
Other options still on the table: fork of Gitea's package registry, or Backstage's plugin marketplace (likely overkill). Final platform choice is being scoped by Dominik on #196.
Out of scope
- The client-side install path. Untouched.
- Hosting the binaries ourselves. The whole point of the hybrid model is not to become a CDN.
- A payment / paid-plugins layer. Not on the table for v1.
Status
Dominik Spitzli (@NewtTheWolf) is driving this initiative — assigned on #196. Platform selection and scoped sub-issues land there as the work progresses. Follow the issue for updates.
