Skip to content

Commit 37a9a8e

Browse files
authored
feat: redesign Plugins settings with HSplitView master-detail layout (#313)
* feat: redesign Plugins settings with HSplitView master-detail layout * docs: add CHANGELOG entry and update plugin settings docs for HSplitView layout * fix: address PR review feedback from CodeRabbit
1 parent d8ba974 commit 37a9a8e

10 files changed

Lines changed: 519 additions & 343 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Changed
1111

12+
- Redesigned Plugins settings tab with HSplitView master-detail layout: plugin list on the left, detail pane on the right, matching macOS conventions
1213
- 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
1314
- 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
1415
- Replaced `AppState.isMongoDB`/`isRedis` booleans with `AppState.editorLanguage: EditorLanguage` for extensible editor language detection

TablePro/Resources/Localizable.xcstrings

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,9 @@
864864
}
865865
}
866866
}
867+
},
868+
"%lld%%" : {
869+
867870
},
868871
"%lldm %llds" : {
869872
"localizations" : {
@@ -1904,6 +1907,9 @@
19041907
},
19051908
"Alert (Full)" : {
19061909

1910+
},
1911+
"All" : {
1912+
19071913
},
19081914
"All %lld rows selected" : {
19091915
"localizations" : {
@@ -2032,8 +2038,12 @@
20322038
}
20332039
}
20342040
}
2041+
},
2042+
"Also handles" : {
2043+
20352044
},
20362045
"Also handles:" : {
2046+
"extractionState" : "stale",
20372047
"localizations" : {
20382048
"vi" : {
20392049
"stringUnit" : {
@@ -2398,6 +2408,9 @@
23982408
},
23992409
"Authentication required to execute write operations" : {
24002410

2411+
},
2412+
"Author" : {
2413+
24012414
},
24022415
"AUTO" : {
24032416
"extractionState" : "stale",
@@ -2641,8 +2654,12 @@
26412654
}
26422655
}
26432656
}
2657+
},
2658+
"Bundle ID" : {
2659+
26442660
},
26452661
"Bundle ID:" : {
2662+
"extractionState" : "stale",
26462663
"localizations" : {
26472664
"vi" : {
26482665
"stringUnit" : {
@@ -2724,8 +2741,12 @@
27242741
}
27252742
}
27262743
}
2744+
},
2745+
"Capabilities" : {
2746+
27272747
},
27282748
"Capabilities:" : {
2749+
"extractionState" : "stale",
27292750
"localizations" : {
27302751
"vi" : {
27312752
"stringUnit" : {
@@ -2756,6 +2777,9 @@
27562777
}
27572778
}
27582779
}
2780+
},
2781+
"Category" : {
2782+
27592783
},
27602784
"Cell Renderer" : {
27612785
"extractionState" : "stale",
@@ -4971,8 +4995,12 @@
49714995
}
49724996
}
49734997
}
4998+
},
4999+
"Database Type" : {
5000+
49745001
},
49755002
"Database Type:" : {
5003+
"extractionState" : "stale",
49765004
"localizations" : {
49775005
"vi" : {
49785006
"stringUnit" : {
@@ -5277,8 +5305,12 @@
52775305
}
52785306
}
52795307
}
5308+
},
5309+
"Default Port" : {
5310+
52805311
},
52815312
"Default Port:" : {
5313+
"extractionState" : "stale",
52825314
"localizations" : {
52835315
"vi" : {
52845316
"stringUnit" : {
@@ -5656,6 +5688,9 @@
56565688
}
56575689
}
56585690
}
5691+
},
5692+
"Dismiss" : {
5693+
56595694
},
56605695
"Display" : {
56615696
"localizations" : {
@@ -7032,6 +7067,9 @@
70327067
}
70337068
}
70347069
}
7070+
},
7071+
"Failed to Load" : {
7072+
70357073
},
70367074
"Failed to load databases" : {
70377075
"localizations" : {
@@ -7066,6 +7104,7 @@
70667104
}
70677105
},
70687106
"Failed to load plugin registry" : {
7107+
"extractionState" : "stale",
70697108
"localizations" : {
70707109
"vi" : {
70717110
"stringUnit" : {
@@ -8570,6 +8609,7 @@
85708609
}
85718610
},
85728611
"Install from File..." : {
8612+
"extractionState" : "stale",
85738613
"localizations" : {
85748614
"vi" : {
85758615
"stringUnit" : {
@@ -8600,6 +8640,9 @@
86008640
}
86018641
}
86028642
}
8643+
},
8644+
"Install plugin from file" : {
8645+
86038646
},
86048647
"Installation Failed" : {
86058648
"localizations" : {
@@ -8634,6 +8677,7 @@
86348677
}
86358678
},
86368679
"Installed Plugins" : {
8680+
"extractionState" : "stale",
86378681
"localizations" : {
86388682
"vi" : {
86398683
"stringUnit" : {
@@ -8648,6 +8692,9 @@
86488692
}
86498693
}
86508694
}
8695+
},
8696+
"Installing..." : {
8697+
86518698
},
86528699
"Invalid argument: %@" : {
86538700
"extractionState" : "stale",
@@ -9365,6 +9412,7 @@
93659412
}
93669413
},
93679414
"Loading plugins..." : {
9415+
"extractionState" : "stale",
93689416
"localizations" : {
93699417
"vi" : {
93709418
"stringUnit" : {
@@ -10648,6 +10696,7 @@
1064810696
}
1064910697
},
1065010698
"No plugins found" : {
10699+
"extractionState" : "stale",
1065110700
"localizations" : {
1065210701
"vi" : {
1065310702
"stringUnit" : {
@@ -13346,6 +13395,9 @@
1334613395
}
1334713396
}
1334813397
}
13398+
},
13399+
"Requires" : {
13400+
1334913401
},
1335013402
"Reset to Defaults" : {
1335113403
"localizations" : {
@@ -13426,6 +13478,9 @@
1342613478
}
1342713479
}
1342813480
}
13481+
},
13482+
"Retry Install" : {
13483+
1342913484
},
1343013485
"Reuse clean table tab" : {
1343113486
"extractionState" : "stale",
@@ -14169,6 +14224,12 @@
1416914224
}
1417014225
}
1417114226
}
14227+
},
14228+
"Select a Plugin" : {
14229+
14230+
},
14231+
"Select a plugin to view details" : {
14232+
1417214233
},
1417314234
"Select a Query" : {
1417414235
"localizations" : {
@@ -14806,6 +14867,7 @@
1480614867
}
1480714868
},
1480814869
"Source:" : {
14870+
"extractionState" : "stale",
1480914871
"localizations" : {
1481014872
"vi" : {
1481114873
"stringUnit" : {
@@ -15313,6 +15375,9 @@
1531315375
}
1531415376
}
1531515377
}
15378+
},
15379+
"Status" : {
15380+
1531615381
},
1531715382
"Stop" : {
1531815383
"localizations" : {
@@ -16699,6 +16764,9 @@
1669916764
}
1670016765
}
1670116766
}
16767+
},
16768+
"Uninstall %@" : {
16769+
1670216770
},
1670316771
"Uninstall Failed" : {
1670416772
"localizations" : {
@@ -16715,6 +16783,9 @@
1671516783
}
1671616784
}
1671716785
}
16786+
},
16787+
"Uninstall plugin" : {
16788+
1671816789
},
1671916790
"Uninstall Plugin?" : {
1672016791
"localizations" : {
@@ -17006,6 +17077,7 @@
1700617077
}
1700717078
},
1700817079
"User" : {
17080+
"extractionState" : "stale",
1700917081
"localizations" : {
1701017082
"vi" : {
1701117083
"stringUnit" : {
@@ -17086,6 +17158,7 @@
1708617158
}
1708717159
},
1708817160
"v%@" : {
17161+
"extractionState" : "stale",
1708917162
"localizations" : {
1709017163
"vi" : {
1709117164
"stringUnit" : {
@@ -17100,6 +17173,19 @@
1710017173
}
1710117174
}
1710217175
}
17176+
},
17177+
"v%@ · %@" : {
17178+
"localizations" : {
17179+
"en" : {
17180+
"stringUnit" : {
17181+
"state" : "new",
17182+
"value" : "v%1$@ · %2$@"
17183+
}
17184+
}
17185+
}
17186+
},
17187+
"v%@+" : {
17188+
1710317189
},
1710417190
"Validation Failed" : {
1710517191
"localizations" : {
@@ -17148,8 +17234,12 @@
1714817234
}
1714917235
}
1715017236
}
17237+
},
17238+
"Verified" : {
17239+
1715117240
},
1715217241
"Verified by TablePro" : {
17242+
"extractionState" : "stale",
1715317243
"localizations" : {
1715417244
"vi" : {
1715517245
"stringUnit" : {
@@ -17196,6 +17286,9 @@
1719617286
}
1719717287
}
1719817288
}
17289+
},
17290+
"Version" : {
17291+
1719917292
},
1720017293
"Version %@" : {
1720117294
"localizations" : {
@@ -17236,6 +17329,7 @@
1723617329
}
1723717330
},
1723817331
"Version:" : {
17332+
"extractionState" : "stale",
1723917333
"localizations" : {
1724017334
"vi" : {
1724117335
"stringUnit" : {

0 commit comments

Comments
 (0)