Added
- Oracle Database support via OCI (Oracle Call Interface)
- Add database URL scheme support — open connections directly from terminal with
open "mysql://user@host/db" -a TablePro(supports MySQL, PostgreSQL, SQLite, MongoDB, Redis, MSSQL, Oracle) - SSH Agent authentication method for SSH tunnels (compatible with 1Password SSH Agent, Secretive, ssh-agent)
- Multi-jump SSH support — chain multiple SSH hops (ProxyJump) to reach databases through bastion hosts
Changed
- Replace CodeEditLanguages xcframework (38 grammars) with local package compiling only SQL, Bash, and JavaScript, reducing app binary size by ~55%
Fixed
- Fix memory leak where session state objects were recreated on every tab open due to SwiftUI
@Stateinit trap, causing 785MB usage at 5 tabs with 734MB retained after closing - Fix per-cell field editor allocation in DataGrid creating 180+ NSTextView instances instead of sharing one
- Fix NSEvent monitor not removed on all popover dismissal paths in connection switcher
- Fix race condition in FreeTDS
disconnect()wheredbprocwas set to nil without holding the lock - Fix data race in
MainContentCoordinator.deinitreadingnonisolated(unsafe)flags from arbitrary threads - Fix JSON encoding and file I/O blocking the main thread in TabStateStorage
- Fix MySQL/MariaDB getting
BEGINinstead ofSTART TRANSACTIONin table operations and SQL preview - Fix port resetting to default value when editing a connection with a custom port
- Replace
.onTapGesturewithButtonin color pickers, section headers, group headers, and connection switcher for VoiceOver accessibility - Fix data race on
isAppTerminatingstatic var inMainContentCoordinatorusingOSAllocatedUnfairLock - Fix
MainActor.assumeIsolatedcrash risk inVimKeyInterceptornotification observer - Fix data race on
connpointer inLibPQConnectionduring disconnect and cancel - Fix SSH askpass script written with world-readable permissions; now uses atomic
0o700creation and immediate cleanup - Fix potential dict mutation during iteration in
DatabaseManager.disconnectAll() - Fix welcome screen showing blank panel when connections have orphaned group IDs
- Fix multiple tabs auto-executing queries simultaneously on connection restore, causing lag
- Fix welcome window becoming oversized after closing main windows due to AppKit scene restoration
- Fix unescaped identifiers in MySQL
SHOW CREATE TABLE/VIEWqueries allowing SQL injection via table names - Fix
QueryResultRowequality ignoring cell values, preventing SwiftUI from re-rendering updated rows - Fix status bar row info text rendering off-center due to duplicate spacer
- Fix
Cmd+Deletein sidebar search or right sidebar clearing the query editor