Skip to content

Commit 2b06eb7

Browse files
committed
release: v0.56.0
1 parent 4d4b7d5 commit 2b06eb7

4 files changed

Lines changed: 177 additions & 24 deletions

File tree

CHANGELOG.md

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.56.0] - 2026-07-09
11+
1012
### Added
1113

12-
- Custom AI slash commands now sync across your Macs with iCloud Sync, alongside your other settings.
13-
- Join a team by pasting the invite code your team owner sent where a license key goes, in Settings > Account or the activation window. Owners manage members and seats from their account on tablepro.app.
14-
- Connections can take their password from 1Password (op://), HashiCorp Vault, or AWS Secrets Manager, resolved at connect time so the secret is never stored in TablePro.
15-
- Team plan: publish connections to a shared folder your team reads from, without sending passwords. Right-click a connection, then Share > Publish to Team Catalog. Teammates add the folder under Settings > Linked Folders.
16-
- Team Library: share connections and saved queries with your team through your account instead of a shared folder. Right-click a connection and choose Share > Publish to Team Library, or publish your saved queries from the Favorites sidebar. Teammates see shared connections in their connection list and shared queries in their sidebar, and you manage the library from your account on tablepro.app. Passwords are never included.
17-
- Saved SQL queries and their folders now sync across your Macs when iCloud Sync is on. Toggle "Saved Queries" under Settings > Sync.
18-
- Recent section at the top of the sidebar tracks the last 10 tables you opened per connection and database, in every sidebar layout, and remembers them between launches. It records a table when you open it, not while you arrow through previews. Click a recent table to reopen it, or right-click to remove one or clear the list. Off by default, turn it on in Settings > General > Sidebar. (#1352)
19-
- Saving now asks you to confirm before it permanently deletes rows, so a bulk delete can't be committed by accident. (#1823)
14+
- Custom AI slash commands now sync across your Macs with iCloud Sync.
15+
- Join a team by pasting your invite code where a license key goes, in Settings > Account. Owners manage members and seats on tablepro.app.
16+
- Connections can pull their password from 1Password, HashiCorp Vault, or AWS Secrets Manager at connect time, so the secret is never stored in TablePro.
17+
- Team plan: publish connections to a shared folder for your team, without passwords. Right-click a connection, then Share > Publish to Team Catalog; teammates add the folder under Settings > Linked Folders.
18+
- Team Library: share connections and saved queries with your team through your account. Right-click a connection or use the Favorites sidebar to Publish to Team Library. Teammates see them in their list and sidebar; you manage the library on tablepro.app. Passwords are never included.
19+
- Saved SQL queries and their folders now sync across your Macs. Turn on Saved Queries under Settings > Sync.
20+
- A Recent section at the top of the sidebar lists the last 10 tables you opened per connection and database, and remembers them between launches. Click one to reopen it, or right-click to remove or clear. Off by default; turn it on in Settings > General > Sidebar. (#1352)
21+
- Saving now asks you to confirm before it permanently deletes rows. (#1823)
2022

2123
### Changed
2224

23-
- The sidebar filter now matches table and view names by substring and prefix instead of fuzzy matching, so typing the start of a name narrows the list instead of keeping every loose match. Names that start with what you typed sort to the top. (#1822)
25+
- The sidebar filter now matches table and view names by substring instead of fuzzy matching, and sorts names that start with what you typed to the top. (#1822)
2426

2527
### Fixed
2628

27-
- Typing in the SQL editor no longer crashes the app, and the autocomplete popup appears again as you type. A hidden background view kept reading a character position past the end of the text during each edit, which raised an error that both quit the app and stopped the keystroke before autocomplete could open. (#1835)
28-
- Deleting many rows at once no longer freezes the app or the machine. Multi-row deletes now run as one batched statement, chunked to stay within the database's limits, instead of one query per row. (#1823)
29-
- Deleting rows from a table without a primary key now matches on every column instead of treating the first column as a key, so it won't remove other rows that happen to share that value. (#1823)
30-
- Sorting a table column no longer discards your rows-per-page setting. Clicking a column header to sort, or clicking again to clear the sort, now keeps the page size and returns to page 1 instead of loading the whole table. (#1826)
31-
- Sorting a column no longer fails with a SQL error on tables whose name contains a word like limit or offset, for example user_rate_limits. (#1825)
32-
- Elasticsearch connections using Username & Password now show a Password field, so basic auth on a secured cluster can be set up. It was hidden before, leaving only the Username field. Update the Elasticsearch plugin to get the fix. (#1816)
33-
- Switching schemas on an Oracle connection no longer hangs on an infinite loading spinner. Oracle now switches by schema like BigQuery, the sidebar lists every schema with its tables loading on expand, Oracle queries respect the query timeout setting and reconnect automatically after a timeout, and a schema load that fails shows an error with a Retry button instead of spinning forever. Works with an already-installed Oracle plugin; updating the plugin adds the query timeout enforcement. (#1807)
29+
- Typing in the SQL editor no longer crashes the app, and the autocomplete popup appears again as you type. (#1835)
30+
- Deleting many rows at once no longer freezes the app. Multi-row deletes now run as one batched statement instead of one query per row. (#1823)
31+
- Deleting rows from a table without a primary key now matches on every column, so it won't remove other rows that share the first column's value. (#1823)
32+
- Sorting a table column no longer discards your rows-per-page setting. It keeps the page size and returns to page 1 instead of loading the whole table. (#1826)
33+
- Sorting a column no longer fails with a SQL error on tables whose name contains a word like limit or offset. (#1825)
34+
- Elasticsearch connections using Username & Password now show a Password field, so you can set up basic auth on a secured cluster. Update the Elasticsearch plugin to get the fix. (#1816)
35+
- Switching schemas on an Oracle connection no longer hangs on an infinite spinner. Oracle now switches by schema, loads each schema's tables on expand, respects the query timeout with automatic reconnect, and shows an error with a Retry button when a schema fails to load. Update the plugin to get query timeout enforcement. (#1807)
3436
- Resizing a data grid column no longer triggers a sort. Dragging a column edge only resizes it; clicking the header still sorts. (#1815)
35-
- Hidden columns stay hidden. The columns you choose to show are remembered per table across sessions, and resizing a column no longer brings the hidden ones back. Column widths and order are remembered per table too, now kept separately for each connection, database, and schema so two tables with the same name no longer overwrite each other's layout. A Reset Columns button in the Columns popover puts widths, order, and visibility back to defaults. Existing saved column layouts (widths, order, and which columns are hidden) reset once as part of this change. (#1815)
36-
- Query and filter errors now appear in a banner you can read, select, and copy, with a Fix with AI button, instead of a small dialog that cut the message off. The banner sizes to the message, staying a single line for short errors and scrolling only when the message is long. (#1815)
37+
- Hidden columns stay hidden, and resizing a column no longer brings them back. Column widths, order, and visibility are remembered per table, kept separately for each connection, database, and schema so tables with the same name don't overwrite each other. A new Reset Columns button in the Columns popover restores defaults. Existing saved column layouts reset once with this change. (#1815)
38+
- Query and filter errors now appear in a banner you can select and copy, with a Fix with AI button, instead of a dialog that cut the message off. The banner sizes to the message. (#1815)
3739
- The filter autocomplete no longer pops up on empty input, and pressing Escape to close it no longer also closes the filter bar. (#1815)
38-
- The editor autocomplete popup drops below the line you're typing instead of covering it, no longer overlaps the Columns and Add buttons on the right, and dismisses when you click anywhere on it that isn't a suggestion. (#1815, #1831)
40+
- The editor autocomplete popup drops below the line you're typing instead of covering it, no longer overlaps the Columns and Add buttons, and dismisses when you click anywhere on it that isn't a suggestion. (#1815, #1831)
3941

4042
## [0.55.0] - 2026-07-04
4143

@@ -2452,7 +2454,8 @@ TablePro is a native macOS database client built with SwiftUI and AppKit, design
24522454
- Custom SQL query templates
24532455
- Performance optimized for large datasets
24542456

2455-
[Unreleased]: https://github.com/TableProApp/TablePro/compare/v0.55.0...HEAD
2457+
[Unreleased]: https://github.com/TableProApp/TablePro/compare/v0.56.0...HEAD
2458+
[0.56.0]: https://github.com/TableProApp/TablePro/compare/v0.55.0...v0.56.0
24562459
[0.55.0]: https://github.com/TableProApp/TablePro/compare/v0.54.0...v0.55.0
24572460
[0.54.0]: https://github.com/TableProApp/TablePro/compare/v0.53.0...v0.54.0
24582461
[0.53.0]: https://github.com/TableProApp/TablePro/compare/v0.52.1...v0.53.0

TablePro.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2882,7 +2882,7 @@
28822882
CODE_SIGN_IDENTITY = "Apple Development";
28832883
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
28842884
CODE_SIGN_STYLE = Automatic;
2885-
CURRENT_PROJECT_VERSION = 104;
2885+
CURRENT_PROJECT_VERSION = 105;
28862886
DEAD_CODE_STRIPPING = YES;
28872887
DEVELOPMENT_TEAM = D7HJ5TFYCU;
28882888
ENABLE_APP_SANDBOX = NO;
@@ -2914,7 +2914,7 @@
29142914
);
29152915
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/Libs/dylibs";
29162916
MACOSX_DEPLOYMENT_TARGET = 14.0;
2917-
MARKETING_VERSION = 0.55.0;
2917+
MARKETING_VERSION = 0.56.0;
29182918
OTHER_LDFLAGS = (
29192919
"-Wl,-w",
29202920
"-force_load",
@@ -2959,7 +2959,7 @@
29592959
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
29602960
CODE_SIGN_STYLE = Automatic;
29612961
COPY_PHASE_STRIP = YES;
2962-
CURRENT_PROJECT_VERSION = 104;
2962+
CURRENT_PROJECT_VERSION = 105;
29632963
DEAD_CODE_STRIPPING = YES;
29642964
DEPLOYMENT_POSTPROCESSING = YES;
29652965
DEVELOPMENT_TEAM = D7HJ5TFYCU;
@@ -2992,7 +2992,7 @@
29922992
);
29932993
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/Libs/dylibs";
29942994
MACOSX_DEPLOYMENT_TARGET = 14.0;
2995-
MARKETING_VERSION = 0.55.0;
2995+
MARKETING_VERSION = 0.56.0;
29962996
OTHER_LDFLAGS = (
29972997
"-Wl,-w",
29982998
"-force_load",

TablePro/Resources/Localizable.xcstrings

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1914,6 +1914,16 @@
19141914
}
19151915
}
19161916
},
1917+
"%@ requires the %@ plan" : {
1918+
"localizations" : {
1919+
"en" : {
1920+
"stringUnit" : {
1921+
"state" : "new",
1922+
"value" : "%1$@ requires the %2$@ plan"
1923+
}
1924+
}
1925+
}
1926+
},
19171927
"%@ rows" : {
19181928
"localizations" : {
19191929
"tr" : {
@@ -5928,6 +5938,9 @@
59285938
}
59295939
}
59305940
}
5941+
},
5942+
"Activate a Team license to publish to the team library." : {
5943+
59315944
},
59325945
"Activate License" : {
59335946
"localizations" : {
@@ -10539,6 +10552,7 @@
1053910552
}
1054010553
},
1054110554
"Ask AI to Fix" : {
10555+
"extractionState" : "stale",
1054210556
"localizations" : {
1054310557
"tr" : {
1054410558
"stringUnit" : {
@@ -14558,6 +14572,9 @@
1455814572
}
1455914573
}
1456014574
}
14575+
},
14576+
"Choose a shared folder for your team's connection catalog. Teammates add this folder under Settings > Linked Folders to see published connections." : {
14577+
1456114578
},
1456214579
"Choose AI provider and model" : {
1456314580
"localizations" : {
@@ -14670,6 +14687,9 @@
1467014687
}
1467114688
}
1467214689
}
14690+
},
14691+
"Choose Folder" : {
14692+
1467314693
},
1467414694
"Choose port automatically" : {
1467514695
"localizations" : {
@@ -21387,6 +21407,12 @@
2138721407
}
2138821408
}
2138921409
}
21410+
},
21411+
"Couldn't publish to the team catalog" : {
21412+
21413+
},
21414+
"Couldn't publish to the team library" : {
21415+
2139021416
},
2139121417
"Couldn't reach the plugin registry. Check your connection and try again." : {
2139221418

@@ -25155,6 +25181,9 @@
2515525181
}
2515625182
}
2515725183
}
25184+
},
25185+
"Delete %lld rows?" : {
25186+
2515825187
},
2515925188
"Delete Check Constraint" : {
2516025189
"extractionState" : "stale",
@@ -25644,6 +25673,9 @@
2564425673
}
2564525674
}
2564625675
}
25676+
},
25677+
"Delete this row?" : {
25678+
2564725679
},
2564825680
"Delete token?" : {
2564925681
"localizations" : {
@@ -30202,6 +30234,7 @@
3020230234
}
3020330235
},
3020430236
"Enter your license key to unlock Pro features." : {
30237+
"extractionState" : "stale",
3020530238
"localizations" : {
3020630239
"tr" : {
3020730240
"stringUnit" : {
@@ -30228,6 +30261,9 @@
3022830261
}
3022930262
}
3023030263
}
30264+
},
30265+
"Enter your license key, or a team invite code to join a team." : {
30266+
3023130267
},
3023230268
"Enterprise SQL with PL/SQL" : {
3023330269
"localizations" : {
@@ -36074,6 +36110,9 @@
3607436110
}
3607536111
}
3607636112
}
36113+
},
36114+
"Fix with AI" : {
36115+
3607736116
},
3607836117
"Focus an already-open tab by id (returned from list_recent_tabs)." : {
3607936118
"localizations" : {
@@ -42568,6 +42607,9 @@
4256842607
}
4256942608
}
4257042609
}
42610+
},
42611+
"Key %@ was not found in the secret JSON." : {
42612+
4257142613
},
4257242614
"Key File" : {
4257342615
"localizations" : {
@@ -60111,6 +60153,36 @@
6011160153
}
6011260154
}
6011360155
}
60156+
},
60157+
"Publish" : {
60158+
60159+
},
60160+
"Publish %d Connections to Team Catalog..." : {
60161+
60162+
},
60163+
"Publish %d Connections to Team Library..." : {
60164+
60165+
},
60166+
"Publish connections to a shared folder your team reads from. Passwords are never included." : {
60167+
60168+
},
60169+
"Publish Saved Queries to Team..." : {
60170+
60171+
},
60172+
"Publish saved queries to your team?" : {
60173+
60174+
},
60175+
"Publish to Team Catalog..." : {
60176+
60177+
},
60178+
"Publish to Team Library..." : {
60179+
60180+
},
60181+
"Published %d saved queries to your team." : {
60182+
60183+
},
60184+
"Published to the team library" : {
60185+
6011460186
},
6011560187
"Purchase License" : {
6011660188
"localizations" : {
@@ -64336,6 +64408,12 @@
6433664408
}
6433764409
}
6433864410
}
64411+
},
64412+
"Reset column widths, order, and visibility to defaults" : {
64413+
64414+
},
64415+
"Reset Columns" : {
64416+
6433964417
},
6434064418
"Reset Layout" : {
6434164419
"localizations" : {
@@ -67232,6 +67310,9 @@
6723267310
}
6723367311
}
6723467312
}
67313+
},
67314+
"Saved Queries:" : {
67315+
6723567316
},
6723667317
"Saved Query" : {
6723767318
"localizations" : {
@@ -70235,6 +70316,9 @@
7023570316
}
7023670317
}
7023770318
}
70319+
},
70320+
"Share connections and saved queries with your team through your account. Passwords are never included." : {
70321+
7023870322
},
7023970323
"Shell script to run before connecting. Non-zero exit aborts connection." : {
7024070324
"localizations" : {
@@ -74124,6 +74208,9 @@
7412474208
}
7412574209
}
7412674210
}
74211+
},
74212+
"Starter" : {
74213+
7412774214
},
7412874215
"Starting service…" : {
7412974216
"localizations" : {
@@ -77320,6 +77407,15 @@
7732077407
},
7732177408
"Tags: %@" : {
7732277409

77410+
},
77411+
"Team" : {
77412+
77413+
},
77414+
"Team Catalog" : {
77415+
77416+
},
77417+
"Team Library" : {
77418+
7732377419
},
7732477420
"Template" : {
7732577421
"extractionState" : "stale",
@@ -77949,6 +78045,9 @@
7794978045
}
7795078046
}
7795178047
}
78048+
},
78049+
"The catalog location is not a folder: %@" : {
78050+
7795278051
},
7795378052
"The ChatGPT account could not be identified." : {
7795478053
"localizations" : {
@@ -78671,6 +78770,9 @@
7867178770
}
7867278771
}
7867378772
}
78773+
},
78774+
"The secret manager did not return valid JSON." : {
78775+
7867478776
},
7867578777
"The selected backup file is not readable." : {
7867678778
"localizations" : {
@@ -79069,6 +79171,9 @@
7906979171
}
7907079172
}
7907179173
}
79174+
},
79175+
"There are no connections to publish." : {
79176+
7907279177
},
7907379178
"This %1$@ has no %2$@ yet." : {
7907479179
"localizations" : {
@@ -79892,6 +79997,9 @@
7989279997
}
7989379998
}
7989479999
}
80000+
},
80001+
"This permanently deletes the selected rows from the database and can't be undone." : {
80002+
7989580003
},
7989680004
"This plugin is not in the registry, so it can't be updated automatically." : {
7989780005
"localizations" : {
@@ -84189,6 +84297,9 @@
8418984297
}
8419084298
}
8419184299
}
84300+
},
84301+
"Upgrade Plan" : {
84302+
8419284303
},
8419384304
"Uptime" : {
8419484305
"localizations" : {
@@ -86920,6 +87031,9 @@
8692087031
}
8692187032
}
8692287033
}
87034+
},
87035+
"You have no saved queries to publish." : {
87036+
8692387037
},
8692487038
"You have unsaved changes" : {
8692587039
"localizations" : {
@@ -87172,6 +87286,12 @@
8717287286
}
8717387287
}
8717487288
}
87289+
},
87290+
"Your team can now see %d shared connections. Passwords were not included." : {
87291+
87292+
},
87293+
"Your team will see the names and SQL of %d saved queries. This replaces what you previously published." : {
87294+
8717587295
},
8717687296
"Zed" : {
8717787297
"localizations" : {

0 commit comments

Comments
 (0)