Skip to content

feat: extract non-core plugins from app bundle to registry distribution#317

Merged
datlechin merged 6 commits intomainfrom
extract-plugins-to-registry
Mar 14, 2026
Merged

feat: extract non-core plugins from app bundle to registry distribution#317
datlechin merged 6 commits intomainfrom
extract-plugins-to-registry

Conversation

@datlechin
Copy link
Owner

@datlechin datlechin commented Mar 14, 2026

Summary

  • Removed MSSQL, MongoDB, Redis, XLSX export, MQL export, and SQL import plugins from the "Copy Plug-Ins" build phase so they are no longer embedded in the app bundle
  • Marked MongoDB, Redis, and SQL Server as isDownloadable: true in PluginMetadataRegistry so the UI shows download prompts instead of treating them as built-in
  • All 6 extracted plugin targets remain as build dependencies for development, but are distributed separately via the plugin registry (same pattern as Oracle, ClickHouse, DuckDB)

Built-in (5): MySQL, PostgreSQL, CSV, JSON, SQL export
Registry-distributed (9): MSSQL, MongoDB, Redis, XLSX, MQL, SQLImport, Oracle, ClickHouse, DuckDB

Test plan

  • Build the app and verify only MySQL, PostgreSQL, CSV, JSON, SQL export plugins are in TablePro.app/Contents/PlugIns/
  • Verify MSSQL/MongoDB/Redis show as downloadable in the connection type picker
  • Test installing an extracted plugin from the registry (e.g., Redis) and verify it loads correctly
  • Verify built-in plugins (MySQL, PostgreSQL) still load and work normally

Summary by CodeRabbit

  • New Features

    • MSSQL, MongoDB, Redis drivers; XLSX and MQL exports; and SQL import are now available as separate, downloadable plugins from the plugin registry.
  • Changes

    • Core app now ships a streamlined set of built-in plugins (MySQL, PostgreSQL, CSV/JSON/SQL export); other drivers/exporters download on demand.
  • Documentation

    • Release docs, developer guides, and settings pages updated to reflect plugin distribution, installer behavior, and expanded theming options (9 presets, custom themes/fonts).

@coderabbitai
Copy link

coderabbitai bot commented Mar 14, 2026

Warning

Rate limit exceeded

@datlechin has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 5 minutes and 29 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d23908db-65e7-4d56-9c60-fbdc079e553a

📥 Commits

Reviewing files that changed from the base of the PR and between fadcab2 and 2b9a663.

📒 Files selected for processing (10)
  • .claude/skills/release/SKILL.md
  • .github/workflows/build-plugin.yml
  • CHANGELOG.md
  • CLAUDE.md
  • TablePro.xcodeproj/project.pbxproj
  • TablePro/Core/Plugins/PluginMetadataRegistry.swift
  • docs/customization/settings.mdx
  • docs/development/architecture.mdx
  • docs/vi/customization/settings.mdx
  • docs/vi/development/architecture.mdx
📝 Walkthrough

Walkthrough

The PR extracts six plugins (MSSQL, MongoDB, Redis, XLSX export, MQL export, SQL import) from the bundled app into separately distributed, downloadable plugins; updates Xcode build phases to remove them; marks several plugins as downloadable in metadata; and propagates the change through docs, release skills, and CI/plugin build workflows.

Changes

Cohort / File(s) Summary
Build configuration (Xcode)
TablePro.xcodeproj/project.pbxproj
Removed multiple Copy Plug-Ins entries (reduced plug-ins listed), removed PBXContainerItemProxy and PBXTargetDependency entries for MSSQL/MongoDB/Redis/XLSX/MQL/SQLImport, and simplified the Copy Plug-Ins phase and target dependency lists.
Plugin metadata
TablePro/Core/Plugins/PluginMetadataRegistry.swift
Toggled isDownloadable to true for MongoDB, Redis, and SQL Server plugins (marking them as downloadable).
CI / build plugin workflow
.github/workflows/build-plugin.yml
Added new resolver cases for mssql, mongodb, redis, xlsx, mql, and sqlimport with corresponding TARGET, BUNDLE_ID, DISPLAY_NAME, icons, and metadata.
Release automation / skill
.claude/skills/release/SKILL.md
Expanded lists and steps to treat MSSQL, MongoDB, Redis, XLSX, MQL, and SQLImport as separate plugin bundles and updated validation/tag examples and release step references.
Changelog & meta docs
CHANGELOG.md, CLAUDE.md
Added changelog entry and rewrote plugin table to include a Distribution column; reclassified plugins as Built-in or Registry.
User & developer docs
docs/*, docs/vi/* (e.g., docs/customization/settings.mdx, docs/development/architecture.mdx, localized variants)
Updated settings/architecture/docs to add Distribution column, mark MySQL/PostgreSQL as built-in, list other drivers as registry-downloadable, and expanded theme/display descriptions.
Other
(minor manifest/one-line edits) CHANGELOG.md etc.
Small textual updates to reflect extraction and distribution changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 Six plugins bound for open skies,
From bundle burrows they arise.
Downloadable hops, light on their feet,
Registry treats them tidy and neat.
TablePro winks — a leaner beat. ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and concisely describes the main change: extraction of non-core plugins from the app bundle to registry distribution, which is reflected throughout the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch extract-plugins-to-registry
📝 Coding Plan
  • Generate coding plan for human review comments

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

@datlechin datlechin force-pushed the extract-plugins-to-registry branch from c40fa8a to e58486f Compare March 14, 2026 05:17
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@CHANGELOG.md`:
- Line 12: Update the CHANGELOG.md entry that currently reads "Extracted MSSQL,
MongoDB, Redis, XLSX export, MQL export, and SQL import plugins from the app
bundle into separately distributed plugins, downloadable from the plugin
registry. MySQL, PostgreSQL, SQLite, CSV, JSON, and SQL export remain built-in"
by removing "SQLite" from the built-in plugins list so it correctly lists only
"MySQL, PostgreSQL, CSV, JSON, and SQL export"; locate the sentence in
CHANGELOG.md (the line beginning with "Extracted MSSQL, MongoDB...") and edit
that phrase to match the actual packaged plugins.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 770ee6fc-3a57-4fa1-996a-5f1dcbf449f1

📥 Commits

Reviewing files that changed from the base of the PR and between 8d29ca8 and e58486f.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • TablePro.xcodeproj/project.pbxproj
  • TablePro/Core/Plugins/PluginMetadataRegistry.swift
  • TablePro/Resources/Localizable.xcstrings

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/build-plugin.yml:
- Around line 96-110: The workflow currently assigns category: "database-driver"
for all plugins; update the mapping for the new TARGETs so XLSXExport and
MQLExport are published with an export category (e.g., "exporter") and SQLImport
is published with an import category (e.g., "importer") instead of
"database-driver". Locate where TARGET (XLSXExport, MQLExport, SQLImport) values
are set and ensure the manifest-generation step uses a CATEGORY variable (or
per-TARGET mapping) to write the correct category field into the registry
manifest rather than the hardcoded "database-driver".

In `@CLAUDE.md`:
- Around line 58-67: The plugin matrix table is missing the DuckDB entry; add a
row for DuckDBDriverPlugin with Database Types set to "DuckDB", the C Bridge set
to "CDuckDB" (or the appropriate DuckDB C bridge identifier), and Distribution
set to "Registry" so the table matches the distribution summary; update the
table row list including the unique symbol "DuckDBDriverPlugin" to ensure
consistency with the summary above.

In `@docs/customization/settings.mdx`:
- Around line 379-389: The plugins table in docs/customization/settings.mdx
omits DuckDB; update the table (the Plugin/Database Types/Default
Port/Distribution rows) to include a DuckDB entry (Database Types: DuckDB,
Default Port: --, Distribution: Registry) or alternatively add a clear note
above/below the table stating it is a partial list and that DuckDB is also
included in the registry-distributed drivers; reference the table rows for
MySQL/PostgreSQL/SQLite as examples when adding the DuckDB row or the
partial-list note.

In `@docs/vi/customization/settings.mdx`:
- Around line 377-386: The plugins table headed by "| Plugin | Loại Database |
Cổng Mặc định | Phân phối |" is missing DuckDB; either add a DuckDB row (e.g.,
"DuckDB | DuckDB | -- | Registry") to the table to match the current plugin list
or add a short parenthetical note under the table stating this is a
non-exhaustive list and DuckDB is available; update the table section in
settings.mdx accordingly so the documentation matches the actual plugins.

In `@docs/vi/development/architecture.mdx`:
- Around line 210-219: Add a missing DuckDB row to the plugin table: insert a
new table row with the plugin identifier DuckDBDriverPlugin, Database Types set
to DuckDB, C Bridge set to the project's DuckDB C API (e.g., libduckdb / C API)
and Distribution matching how DuckDB is shipped in the repo (likely Tích hợp
sẵn); locate the table around the existing rows like MySQLDriverPlugin,
PostgreSQLDriverPlugin, SQLiteDriverPlugin and add the DuckDBDriverPlugin entry
to keep the architecture docs in sync with the current drivers.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: aac5b4c4-a17d-4937-b91c-de3bd6b6d5be

📥 Commits

Reviewing files that changed from the base of the PR and between e58486f and fadcab2.

📒 Files selected for processing (7)
  • .claude/skills/release/SKILL.md
  • .github/workflows/build-plugin.yml
  • CLAUDE.md
  • docs/customization/settings.mdx
  • docs/development/architecture.mdx
  • docs/vi/customization/settings.mdx
  • docs/vi/development/architecture.mdx

@datlechin datlechin merged commit 7f1b20e into main Mar 14, 2026
3 checks passed
@datlechin datlechin deleted the extract-plugins-to-registry branch March 14, 2026 05:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant