Skip to content

feat: ship Oracle and ClickHouse as downloadable plugins#244

Merged
datlechin merged 2 commits intomainfrom
feat/downloadable-plugins
Mar 9, 2026
Merged

feat: ship Oracle and ClickHouse as downloadable plugins#244
datlechin merged 2 commits intomainfrom
feat/downloadable-plugins

Conversation

@datlechin
Copy link
Owner

Summary

  • Remove Oracle and ClickHouse plugin bundles from the app bundle, shipping them as downloadable plugins via the plugin marketplace instead. This reduces app size for the majority of users who don't use these databases.
  • Show all database types in the connection form with a download badge for types needing plugin installation. Selecting a downloadable type auto-triggers installation.
  • Add install prompt when connecting to a saved connection whose driver plugin is missing, with one-click download and retry.
  • Add build-plugin.sh script and build-plugin.yml CI workflow for building standalone plugin releases triggered by plugin-*-v* tags.
  • Add databaseTypeIds to registry model so the app can map registry plugins to database types.

Changes

  • Data model: DatabaseType.isDownloadablePlugin, RegistryPlugin.databaseTypeIds
  • PluginManager: isDriverAvailable(for:), installMissingPlugin(for:progress:)
  • Error handling: PluginError.pluginNotInstalled thrown by DatabaseDriverFactory for downloadable types
  • Connection form: Shows all types with download badge, auto-installs on selection
  • Connection flow: WelcomeWindowView and ConnectionFormView catch missing plugin errors and prompt install
  • Build phase: Oracle/ClickHouse removed from "Copy Plug-Ins" (targets kept for dev builds)
  • Scripts/CI: build-plugin.sh + build-plugin.yml for standalone plugin releases
  • Docs: "Install Plugin" sections added to Oracle and ClickHouse pages (EN + VI)

Test plan

  • Build the app and verify it launches without Oracle/ClickHouse plugins in bundle
  • Open connection form and verify Oracle/ClickHouse appear with download badges
  • Select Oracle in connection form — verify install prompt triggers
  • After plugin install, verify the badge disappears and connection works
  • Open an existing Oracle connection from Welcome screen — verify install prompt on connect
  • Install plugin from prompt — verify connection retries and succeeds
  • Verify scripts/build-plugin.sh OracleDriverPlugin arm64 produces a valid signed ZIP
  • Run swiftlint lint --strict

@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

- Replace NSAlert.runModal() with SwiftUI state-driven .alert modifiers
- Break infinite install-retry loop with separate connectAfterInstall path
- Handle partial plugin install state (re-enable or reinstall stale entry)
- Reopen welcome window in ConnectionFormView.handleMissingPlugin
- Disable Test/Save buttons and show progress during plugin install
- Sign nested frameworks inside-out in build-plugin.sh
@datlechin datlechin merged commit 59e28e1 into main Mar 9, 2026
2 checks passed
@datlechin datlechin deleted the feat/downloadable-plugins branch March 9, 2026 17:48
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