feat(plugins): hosted Tabularium registry + connection catalogue (fully BC)#299
Open
NewtTheWolf wants to merge 8 commits into
Open
feat(plugins): hosted Tabularium registry + connection catalogue (fully BC)#299NewtTheWolf wants to merge 8 commits into
NewtTheWolf wants to merge 8 commits into
Conversation
tabularium-sdk 0.2 exposes verified/extensions fields used by the registry integration. semver is used for version-aware install classification (install vs update vs already-installed).
…C layer
Integrate the hosted Tabularium registry (registry.tabularis.dev) alongside
the legacy static registry.json, with version-aware deep-link install.
- Merge new HTTP API catalogue with legacy registry.json (union, API wins
on id conflict) so old plugins (duckdb, ...) stay visible.
- Semver-aware install classification: install / update / already-installed.
- Tracked asset downloads via the registry redirect endpoint:
/api/plugins/{slug}/latest for unpinned, /releases/{version} for pinned.
- Host manifest parser migrated to .tabularium (JSON), legacy manifest.json
read as fallback.
All backwards-compat code lives in plugins/compat.rs and is marked with
`COMPAT(registry-ga):` at every call site, so it can be removed mechanically
once all plugins have migrated to the hosted registry.
Redesign the New Connection flow around a searchable driver catalogue that merges built-in drivers with registry plugins. - EngineCard, ConnectionCatalogue (search + paradigm facets + grid), DriverVersionPicker, InstallBanner, InstallGate components. - useConnectionCatalogue hook + connectionCatalogue normalization model. - Catalogue is step 1 of the New Connection wizard; uninstalled drivers are install-gated with inline driver install.
PluginInstallConfirmModal now renders the install action returned by the preview command: Install, Update (when a newer version exists), or an already-installed banner for an up-to-date plugin. - useDeepLinkInstall hook drives the tabularis://install flow. - PluginsTab consumes the registry base URL per plugin for its registry link.
Add registry/catalogue and deepLink (updateConfirm, alreadyInstalled) strings across all 7 locales.
…tion # Conflicts: # tests/setup.ts
- NewConnectionModal: remove unused PluginManifest import. - PluginInstallConfirmModal: key the modal by request in App.tsx so each request remounts with fresh state, replacing the synchronous state reset inside the effect (react-hooks/set-state-in-effect). Loading state now initialises from the keyed mount; the effect only sets state in its async callbacks.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge All 4 previously identified issues have been resolved in commit Resolved Issues
Files Reviewed (4 files)
Reviewed by kimi-k2.6-20260420 · 144,498 tokens |
…y version) - commands.rs: only set registry_base_url for a real Tabularium API, not a legacy `.json` base (avoids broken `…/registry.json/plugins/<id>` links). - registry.rs: fetch plugin details concurrently via join_all instead of N sequential round-trips. - useConnectionCatalogue: use hasOwnProperty instead of `in` so plugin ids like "constructor"/"toString" aren't matched against Object.prototype. - PluginInstallConfirmModal: treat empty `?version=` as no pin (|| null) for both the preview fetch and the displayed target version.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Wires up the hosted Tabularium registry (registry.tabularis.dev) and rebuilds
the New Connection flow around a driver catalogue — without breaking the old
registry format.
45 files · +4578 / −523
Backend
registry (union, API wins on id conflict), so old plugins (duckdb, …) stay
visible. (
registry.rs,commands.rs)tabularis://installhandler, version-aware viasemver: Install / Update / already-installed. (
deep_link.rs)(
/latestunpinned,/releases/{version}pinned) so installs get counted.(
tabularium.rs)compat.rs, taggedCOMPAT(registry-ga):at every call site. Legacyregistry.jsoninstall +listing and legacy
manifest.jsonstill work; deletable once all pluginshave migrated.
Frontend
facets, engine cards, version picker, install-gated uninstalled drivers with
inline install. (
ConnectionCatalogue,EngineCard,InstallGate, …)already-installed).
Compatibility
Fully backwards-compatible: the legacy registry format and
manifest.jsonarestill consumed. The in-repo
plugins/registry.jsonseed is replaced bytabularium-extensions.schema.json; the legacy format is read from the hostedsource via the BC layer.
Tests
Backend 688 ✓ · Frontend 2535 ✓