Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
0594f9f
feat: redesign Plugins settings with HSplitView master-detail layout
datlechin Mar 13, 2026
1de2c0d
docs: add CHANGELOG entry and update plugin settings docs for HSplitV…
datlechin Mar 13, 2026
1972a6c
fix: address PR review feedback from CodeRabbit
datlechin Mar 13, 2026
e34177c
fix: clear needsRestart flag before early return guard in loadPending…
datlechin Mar 13, 2026
635b03b
refactor: replace HSplitView with NavigationSplitView for modern macO…
datlechin Mar 13, 2026
16a5435
fix: revert NavigationSplitView to HSplitView to fix settings layout
datlechin Mar 13, 2026
29a1eb3
refactor: move enable/disable toggle from list rows to detail pane
datlechin Mar 13, 2026
dc2134a
refactor: remove compact install button from browse list rows
datlechin Mar 13, 2026
2de2a64
feat: add search filter to installed plugins list
datlechin Mar 13, 2026
258ebb2
fix: show loading/empty/error states full-width in browse tab
datlechin Mar 13, 2026
e5bc453
fix: make empty/loading states fill available space in browse tab
datlechin Mar 13, 2026
48dd573
refactor: polish plugin settings UI layout and consistency
datlechin Mar 13, 2026
599345d
refactor: remove dead RegistryPluginRow and update docs for toggle lo…
datlechin Mar 13, 2026
4aac87a
merge: resolve conflicts with main for plugin settings hsplitview
datlechin Mar 14, 2026
818a202
feat: enrich plugin list rows with version, status badges, and downlo…
datlechin Mar 14, 2026
9d71e29
docs: update plugin settings docs for enriched rows (en, vi, zh)
datlechin Mar 14, 2026
7f76702
fix: address PR review — extract PluginIconView, fix disabled conditi…
datlechin Mar 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- Redesigned Plugins settings tab with HSplitView master-detail layout: plugin list on the left, detail pane on the right, matching macOS conventions
- Replaced ~40 hardcoded `DatabaseType` switches across ~20 UI files with dynamic plugin property lookups via `PluginManager`, so third-party plugins get correct UI behavior (colors, labels, editor language, feature toggles) automatically
- ConnectionFormView now fully dynamic: pgpass toggle, password visibility, and SSH/SSL tab visibility all driven by plugin metadata (`FieldSection`, `hidesPassword`, `supportsSSH`/`supportsSSL`) instead of hardcoded type checks
- Replaced `AppState.isMongoDB`/`isRedis` booleans with `AppState.editorLanguage: EditorLanguage` for extensible editor language detection
Expand Down
6 changes: 3 additions & 3 deletions TablePro/Core/Plugins/PluginManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ final class PluginManager {
/// Load all discovered but not-yet-loaded plugin bundles.
/// Safety fallback for code paths that need plugins before the deferred Task completes.
func loadPendingPlugins(clearRestartFlag: Bool = false) {
if clearRestartFlag {
_needsRestart = false
}
guard !pendingPluginURLs.isEmpty else { return }
let pending = pendingPluginURLs
pendingPluginURLs.removeAll()
Expand All @@ -124,9 +127,6 @@ final class PluginManager {
}

validateDependencies()
if clearRestartFlag {
_needsRestart = false
}
Self.logger.info("Loaded \(self.plugins.count) plugin(s): \(self.driverPlugins.count) driver(s), \(self.exportPlugins.count) export format(s), \(self.importPlugins.count) import format(s)")
}

Expand Down
94 changes: 94 additions & 0 deletions TablePro/Resources/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -864,6 +864,9 @@
}
}
}
},
"%lld%%" : {

},
"%lldm %llds" : {
"localizations" : {
Expand Down Expand Up @@ -1904,6 +1907,9 @@
},
"Alert (Full)" : {

},
"All" : {

},
"All %lld rows selected" : {
"localizations" : {
Expand Down Expand Up @@ -2032,8 +2038,12 @@
}
}
}
},
"Also handles" : {

},
"Also handles:" : {
"extractionState" : "stale",
Comment thread
datlechin marked this conversation as resolved.
Outdated
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -2398,6 +2408,9 @@
},
"Authentication required to execute write operations" : {

},
"Author" : {

Comment thread
datlechin marked this conversation as resolved.
Outdated
},
"AUTO" : {
"extractionState" : "stale",
Expand Down Expand Up @@ -2641,8 +2654,12 @@
}
}
}
},
"Bundle ID" : {

},
"Bundle ID:" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -2724,8 +2741,12 @@
}
}
}
},
"Capabilities" : {

},
"Capabilities:" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -2756,6 +2777,9 @@
}
}
}
},
"Category" : {

},
"Cell Renderer" : {
"extractionState" : "stale",
Expand Down Expand Up @@ -4971,8 +4995,12 @@
}
}
}
},
"Database Type" : {

},
"Database Type:" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -5277,8 +5305,12 @@
}
}
}
},
"Default Port" : {

},
"Default Port:" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -5656,6 +5688,9 @@
}
}
}
},
"Dismiss" : {

},
"Display" : {
"localizations" : {
Expand Down Expand Up @@ -7032,6 +7067,9 @@
}
}
}
},
"Failed to Load" : {

},
"Failed to load databases" : {
"localizations" : {
Expand Down Expand Up @@ -7066,6 +7104,7 @@
}
},
"Failed to load plugin registry" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -8570,6 +8609,7 @@
}
},
"Install from File..." : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -8600,6 +8640,9 @@
}
}
}
},
"Install plugin from file" : {

},
"Installation Failed" : {
"localizations" : {
Expand Down Expand Up @@ -8634,6 +8677,7 @@
}
},
"Installed Plugins" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand All @@ -8648,6 +8692,9 @@
}
}
}
},
"Installing..." : {

},
"Invalid argument: %@" : {
"extractionState" : "stale",
Expand Down Expand Up @@ -9365,6 +9412,7 @@
}
},
"Loading plugins..." : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -10648,6 +10696,7 @@
}
},
"No plugins found" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -13346,6 +13395,9 @@
}
}
}
},
"Requires" : {

},
"Reset to Defaults" : {
"localizations" : {
Expand Down Expand Up @@ -13426,6 +13478,9 @@
}
}
}
},
"Retry Install" : {

},
"Reuse clean table tab" : {
"extractionState" : "stale",
Expand Down Expand Up @@ -14169,6 +14224,12 @@
}
}
}
},
"Select a Plugin" : {

},
"Select a plugin to view details" : {

},
"Select a Query" : {
"localizations" : {
Expand Down Expand Up @@ -14806,6 +14867,7 @@
}
},
"Source:" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -15313,6 +15375,9 @@
}
}
}
},
"Status" : {

},
"Stop" : {
"localizations" : {
Expand Down Expand Up @@ -16699,6 +16764,9 @@
}
}
}
},
"Uninstall %@" : {

},
"Uninstall Failed" : {
"localizations" : {
Expand All @@ -16715,6 +16783,9 @@
}
}
}
},
"Uninstall plugin" : {

},
"Uninstall Plugin?" : {
"localizations" : {
Expand Down Expand Up @@ -17006,6 +17077,7 @@
}
},
"User" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -17086,6 +17158,7 @@
}
},
"v%@" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand All @@ -17100,6 +17173,19 @@
}
}
}
},
"v%@ · %@" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "v%1$@ · %2$@"
}
}
}
},
"v%@+" : {

},
"Validation Failed" : {
"localizations" : {
Expand Down Expand Up @@ -17148,8 +17234,12 @@
}
}
}
},
"Verified" : {

},
"Verified by TablePro" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down Expand Up @@ -17196,6 +17286,9 @@
}
}
}
},
"Version" : {

},
"Version %@" : {
"localizations" : {
Expand Down Expand Up @@ -17236,6 +17329,7 @@
}
},
"Version:" : {
"extractionState" : "stale",
"localizations" : {
"vi" : {
"stringUnit" : {
Expand Down
Loading
Loading