Skip to content

Commit 361f45e

Browse files
committed
release: v0.35.0
1 parent e2ece3c commit 361f45e

6 files changed

Lines changed: 80 additions & 55 deletions

File tree

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [0.35.0] - 2026-04-25
11+
1012
### Added
1113

1214
- MongoDB multi-host connections for replica sets
1315
- JSON results view mode with Data/Structure/JSON toggle in status bar
14-
- Import URL: dynamic placeholder, parsed preview, clipboard auto-paste, libSQL/D1 support, URL schemes for Oracle/ClickHouse/etcd/D1/libSQL
15-
- JSON viewer: "Open in Window" action to pop out JSON into a resizable, fullscreen-capable window
16-
- In-app feedback form for bug reports and feature requests via Help > Report an Issue
17-
- Per-connection "Local only" option to exclude individual connections from iCloud sync
18-
- Filter operator picker shows SQL symbols alongside names for quick visual recognition
19-
- SQL autocomplete now suggests column names before a FROM clause is written, using all cached schema columns as fallback
20-
- Eager column cache warming after schema load for faster autocomplete
21-
- MCP query safety: three-tier classification with server-side confirmation for write and destructive queries
16+
- JSON viewer: "Open in Window" action for resizing and fullscreen
17+
- Import URL: dynamic placeholder, parsed preview, clipboard auto-paste, libSQL/D1/Oracle/ClickHouse/etcd support
18+
- In-app feedback form via Help > Report an Issue
19+
- Per-connection "Local only" option to exclude from iCloud sync
20+
- Filter operator picker shows SQL symbols alongside names
21+
- SQL autocomplete suggests columns before FROM using cached schema
22+
- MCP query safety: server-side confirmation for write and destructive queries
2223

2324
### Changed
2425

25-
- Native macOS UI patterns: Picker(.menu) for cell editors, native alerts, native List selection, .navigationTitle for sheets, NSSearchField for welcome search, borderless toolbar buttons, chevron indicator on SET picker
26+
- Native macOS UI: menu pickers, native alerts, native List selection, NSSearchField, borderless toolbar buttons
2627
- Quit dialog defaults to Cancel on Return key
2728
- Connection form delete button moved to far left
28-
- SSH/SSL browse panels show descriptive message text
2929

3030
### Fixed
3131

3232
- Connection form overflow with SSH jump hosts and TOTP fields
33-
- Missing confirmation dialog on group deletion
33+
- Missing confirmation on group deletion
3434
- Plugin principalClass resolved off main thread
3535
- Crash when scrolling AI Chat during streaming on macOS 15.x
36-
- Connection failure on PostgreSQL-compatible databases (e.g., Aurora DSQL) that don't support `SET statement_timeout`
37-
- Schema-qualified table names (e.g. `public.users`) now correctly resolve in autocomplete
36+
- Connection failure on PostgreSQL-compatible databases without `SET statement_timeout`
37+
- Schema-qualified table names resolve correctly in autocomplete
3838
- Alert dialogs use sheet attachment instead of bare modal
39-
- Terminal copy uses responder chain instead of synthetic NSEvent
40-
- Unlocalized metadata strings in query history panel
4139

4240
## [0.34.0] - 2026-04-22
4341

@@ -1447,7 +1445,8 @@ TablePro is a native macOS database client built with SwiftUI and AppKit, design
14471445
- Custom SQL query templates
14481446
- Performance optimized for large datasets
14491447

1450-
[Unreleased]: https://github.com/TableProApp/TablePro/compare/v0.34.0...HEAD
1448+
[Unreleased]: https://github.com/TableProApp/TablePro/compare/v0.35.0...HEAD
1449+
[0.35.0]: https://github.com/TableProApp/TablePro/compare/v0.34.0...v0.35.0
14511450
[0.34.0]: https://github.com/TableProApp/TablePro/compare/v0.33.0...v0.34.0
14521451
[0.33.0]: https://github.com/TableProApp/TablePro/compare/v0.32.1...v0.33.0
14531452
[0.32.1]: https://github.com/TableProApp/TablePro/compare/v0.32.0...v0.32.1

TablePro.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2169,7 +2169,7 @@
21692169
CODE_SIGN_IDENTITY = "Apple Development";
21702170
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
21712171
CODE_SIGN_STYLE = Automatic;
2172-
CURRENT_PROJECT_VERSION = 73;
2172+
CURRENT_PROJECT_VERSION = 74;
21732173
DEAD_CODE_STRIPPING = YES;
21742174
DEVELOPMENT_TEAM = D7HJ5TFYCU;
21752175
ENABLE_APP_SANDBOX = NO;
@@ -2194,7 +2194,7 @@
21942194
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
21952195
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
21962196
MACOSX_DEPLOYMENT_TARGET = 14.0;
2197-
MARKETING_VERSION = 0.34.0;
2197+
MARKETING_VERSION = 0.35.0;
21982198
OTHER_LDFLAGS = (
21992199
"-Wl,-w",
22002200
"-force_load",
@@ -2241,7 +2241,7 @@
22412241
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
22422242
CODE_SIGN_STYLE = Automatic;
22432243
COPY_PHASE_STRIP = YES;
2244-
CURRENT_PROJECT_VERSION = 73;
2244+
CURRENT_PROJECT_VERSION = 74;
22452245
DEAD_CODE_STRIPPING = YES;
22462246
DEPLOYMENT_POSTPROCESSING = YES;
22472247
DEVELOPMENT_TEAM = D7HJ5TFYCU;
@@ -2267,7 +2267,7 @@
22672267
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
22682268
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
22692269
MACOSX_DEPLOYMENT_TARGET = 14.0;
2270-
MARKETING_VERSION = 0.34.0;
2270+
MARKETING_VERSION = 0.35.0;
22712271
OTHER_LDFLAGS = (
22722272
"-Wl,-w",
22732273
"-force_load",

TablePro/Core/Utilities/Connection/ConnectionURLParser.swift

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -96,38 +96,8 @@ struct ConnectionURLParser {
9696
scheme = String(scheme[scheme.startIndex..<plusIdx])
9797
}
9898

99-
let dbType: DatabaseType
100-
switch scheme {
101-
case "postgresql", "postgres":
102-
dbType = .postgresql
103-
case "redshift":
104-
dbType = .redshift
105-
case "mysql":
106-
dbType = .mysql
107-
case "mariadb":
108-
dbType = .mariadb
109-
case "sqlite":
110-
dbType = .sqlite
111-
case "mongodb", "mongodb+srv":
112-
dbType = .mongodb
113-
case "redis", "rediss":
114-
dbType = .redis
115-
case "sqlserver", "mssql", "jdbc:sqlserver":
116-
dbType = .mssql
117-
case "oracle", "jdbc:oracle:thin":
118-
dbType = .oracle
119-
case "clickhouse", "ch":
120-
dbType = .clickhouse
121-
case "cassandra", "cql":
122-
dbType = .cassandra
123-
case "scylladb", "scylla":
124-
dbType = .scylladb
125-
default:
126-
if let resolvedType = PluginMetadataRegistry.shared.databaseType(forUrlScheme: scheme) {
127-
dbType = resolvedType
128-
} else {
129-
return .failure(.unsupportedScheme(scheme))
130-
}
99+
guard let dbType = resolveDBType(from: scheme) else {
100+
return .failure(.unsupportedScheme(scheme))
131101
}
132102

133103
let isSrv = scheme == "mongodb+srv"
@@ -272,6 +242,37 @@ struct ConnectionURLParser {
272242
))
273243
}
274244

245+
private static func resolveDBType(from scheme: String) -> DatabaseType? {
246+
switch scheme {
247+
case "postgresql", "postgres":
248+
return .postgresql
249+
case "redshift":
250+
return .redshift
251+
case "mysql":
252+
return .mysql
253+
case "mariadb":
254+
return .mariadb
255+
case "sqlite":
256+
return .sqlite
257+
case "mongodb", "mongodb+srv":
258+
return .mongodb
259+
case "redis", "rediss":
260+
return .redis
261+
case "sqlserver", "mssql", "jdbc:sqlserver":
262+
return .mssql
263+
case "oracle", "jdbc:oracle:thin":
264+
return .oracle
265+
case "clickhouse", "ch":
266+
return .clickhouse
267+
case "cassandra", "cql":
268+
return .cassandra
269+
case "scylladb", "scylla":
270+
return .scylladb
271+
default:
272+
return PluginMetadataRegistry.shared.databaseType(forUrlScheme: scheme)
273+
}
274+
}
275+
275276
// SSH URL format: scheme+ssh://ssh_user@ssh_host:ssh_port/db_user:db_pass@db_host:db_port/db_name?params
276277
// URLComponents can't handle two user@host segments, so we parse manually.
277278
private static func parseSSHURL(

TablePro/Views/Main/MainContentCoordinator.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,6 @@ final class MainContentCoordinator {
258258
}
259259
}
260260

261-
262-
263261
/// Collect all tabs from all active coordinators for a given connectionId.
264262
static func allTabs(for connectionId: UUID) -> [QueryTab] {
265263
activeCoordinators.values

TablePro/Views/Results/JSONSyntaxTextView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ internal struct JSONSyntaxTextView: NSViewRepresentable {
188188
}
189189
let nsString = textView.string as NSString
190190
let length = nsString.length
191-
let buffer = 8000
191+
let buffer = 8_000
192192
let rawStart = max(0, visible.location - buffer)
193193
let rawEnd = min(length, visible.location + visible.length + buffer)
194194

docs/changelog.mdx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,33 @@ description: "Product updates and announcements for TablePro"
44
rss: true
55
---
66

7+
<Update label="April 25, 2026" description="v0.35.0">
8+
### New Features
9+
10+
- **MongoDB Replica Sets**: Multi-host connections for replica set clusters
11+
- **JSON Results View**: Data/Structure/JSON toggle in the status bar
12+
- **JSON Window**: Pop out JSON viewer into a resizable, fullscreen-capable window
13+
- **Feedback Form**: Bug reports and feature requests via Help > Report an Issue
14+
- **Local Only Connections**: Exclude individual connections from iCloud sync
15+
- **MCP Query Safety**: Server-side confirmation for write and destructive queries
16+
17+
### Improvements
18+
19+
- Import URL supports libSQL, D1, Oracle, ClickHouse, etcd with dynamic placeholders and clipboard auto-paste
20+
- Filter operator picker shows SQL symbols alongside names
21+
- SQL autocomplete suggests columns before FROM using cached schema
22+
- Native macOS UI across cell editors, alerts, search, and toolbar
23+
24+
### Bug Fixes
25+
26+
- Connection form overflow with SSH jump hosts and TOTP fields
27+
- Missing confirmation on group deletion
28+
- Crash when scrolling AI Chat during streaming on macOS 15.x
29+
- Connection failure on PostgreSQL-compatible databases without `SET statement_timeout`
30+
- Schema-qualified table names resolve correctly in autocomplete
31+
- Alert dialogs use sheet attachment instead of bare modal
32+
</Update>
33+
734
<Update label="April 22, 2026" description="v0.34.0">
835
### New Features
936

0 commit comments

Comments
 (0)