Skip to main content
March 29, 2026
v0.26.0

New Features

  • SQL File Management: Open, save, and save-as for SQL files with native macOS title bar integration
  • BigQuery Support: Google BigQuery analytics database via REST API (plugin)
  • AI Kill Switch: Global toggle to disable all AI features (Settings > AI)
  • Column Reordering: Drag to reorder columns in the Structure tab (MySQL/MariaDB)
  • Nested Groups: Hierarchical connection groups up to 3 levels deep
  • Safety Dialogs: Confirmation prompts for deep link queries, connection imports, and pre-connect scripts

Improvements

  • JSON fields in Row Details sidebar now display in a scrollable monospaced text area
  • Removed query history sync from iCloud Sync (history stays local-only)

Bug Fixes

  • SQL editor not auto-focused on new tab and cursor missing after tab switch
  • Long lines not scrollable horizontally in the SQL editor
  • Home and End keys not moving cursor in the SQL editor
  • SSH profile lost after app restart when iCloud Sync enabled
  • MariaDB JSON columns showing as hex dumps instead of JSON text
  • MongoDB Atlas TLS certificate verification failure
  • ENUM/SET dropdown chevron buttons not showing on first table open
March 27, 2026
v0.25.0

New Features

  • Connection Sharing: Export and import connections as .tablepro files. Includes import preview with duplicate detection, status badges, and per-item resolution (#466)
  • Encrypted Export (Pro): Include passwords in exported files, protected by AES-256-GCM encryption with a passphrase
  • Linked Folders (Pro): Watch a shared directory for .tablepro files. Connections appear read-only in the sidebar with per-user passwords
  • Environment Variables (Pro): Use $VAR and ${VAR} in .tablepro connection files, resolved at connection time
March 26, 2026
v0.24.2

New Features

  • Enum/Set Picker: Edit enum and set columns with a dropdown picker for PostgreSQL custom enums, ClickHouse Enum8/Enum16, and DuckDB ENUM types
  • Boolean Picker: MSSQL BIT columns and MySQL TINYINT(1) columns now use a boolean toggle instead of manual text entry

Improvements

  • Correct type classification for ClickHouse Nullable()/LowCardinality() wrappers, MSSQL MONEY/IMAGE/DATETIME2, DuckDB unsigned integers, and parameterized MySQL integer types

Bug Fixes

  • XLSX export producing corrupted files that Excel cannot open
  • Deep link cold launch missing toolbar and duplicate windows
March 26, 2026
v0.24.1

Bug Fixes

  • Keyboard shortcut hints in the welcome window footer no longer overflow and truncate when space is limited
March 26, 2026
v0.24.0

New Features

  • Multi-select Connections: Select multiple connections in the Welcome window with Cmd+Click and Shift+Click, then bulk delete (⌘⌫), move to group, or multi-connect
  • Reorder Connections: Drag to reorder connections within groups and reorder groups in the Welcome window
  • Built-in Plugins: ClickHouse, MSSQL, Redis, XLSX Export, MQL Export, and SQL Import now ship as built-in plugins (no separate installation needed)

Improvements

  • Large document safety caps for syntax highlighting (skip files >5MB, throttle >50KB)
  • Lazy-load full values for LONGTEXT/MEDIUMTEXT/CLOB columns in the detail pane sidebar

Bug Fixes

  • SSH profile connections displaying incorrect host/username on the Welcome window home screen
  • Saved connections disappearing after normal app quit (Cmd+Q) while persisting after force quit
  • Crash when disconnecting an etcd connection while requests are in-flight
  • Detail pane showing truncated values for LONGTEXT/MEDIUMTEXT/CLOB columns, preventing correct editing
  • Redis hash/list/set/zset/stream views showing empty or misaligned rows when values contained binary, null, or integer types
March 24, 2026
v0.23.2

Bug Fixes

  • MongoDB Atlas connections failing to authenticate (#438)
  • MongoDB TLS certificate verification skipped for SRV connections
  • Active tab data no longer refreshes when switching back to the app window
  • Undo history preserved when switching between database tables
  • Health monitor now detects stuck queries beyond the configured timeout
  • SSH tunnel closure and schema restore errors during reconnect now logged instead of silently discarded
  • Memory not released after closing tabs
  • New tabs opening as separate windows instead of joining the connection tab group
  • Clicking tables in sidebar not opening table tabs
March 24, 2026
v0.23.1

New Features

  • SSH Test Connection: Test SSH connectivity directly from the SSH profile editor before saving

Improvements

  • Faster type-aware sorting and lower memory usage with adaptive tab eviction
March 22, 2026
v0.23.0

New Features

  • Redis Key Tree: Browse Redis keys grouped by namespace with collapsible tree view in the sidebar (#418)
  • Keyboard Focus Navigation: Navigate connection list, quick switcher, and database switcher using Tab, Ctrl+J/K/N/P, and arrow keys
  • MongoDB SRV Support: Connect using mongodb+srv:// URIs with SRV toggle, Auth Mechanism dropdown, and Replica Set field (#419)
  • Database Type Badges: Connection form shows all available database types with install status badges (#418)

Improvements

  • MongoDB authSource now defaults to the database name per MongoDB URI spec instead of always “admin”

Bug Fixes

  • Fixed DuckDB TIMESTAMPTZ, TIMETZ, and other temporal columns displaying as null (#424)
  • Fixed onboarding “Get Started” button not rendering on macOS 15 until window loses focus (#420)
  • Faster MongoDB sidebar loading with estimatedDocumentCount and smaller schema sample
March 22, 2026
v0.22.1

New Features

  • Row Numbers Column: Show or hide row numbers in the data grid via Settings > Data Grid
  • Persistent Column Layout: Column widths and order are saved per table across tab switches, view toggles, and app restarts

Bug Fixes

  • Fixed incorrect version displayed for installed registry plugins (#410)
  • Fixed dangling pointer in release builds due to incorrect buffer handling
  • Fixed AI provider connection test error handling (#407)
  • Fixed use-after-free crash in Redis plugin
March 21, 2026
v0.22.0

New Features

  • Export Query Results: Export the results of any SQL query directly to CSV, JSON, SQL, XLSX, or MQL files via right-click context menu or File > Export Results
  • Amazon DynamoDB Support: Connect to DynamoDB with PartiQL queries, AWS IAM/Profile/SSO authentication, GSI/LSI browsing, table scanning, capacity display, and DynamoDB Local support
  • SSH Tunnel Profiles: Save SSH configurations once and reuse them across multiple connections
  • Ctrl+HJKL Navigation: Arrow key alternative for keyboards without dedicated arrow keys
  • Pro License Gating: Safe Mode (Touch ID) and XLSX export now require a Pro license

Bug Fixes

  • Fixed high CPU usage (79%+) and energy consumption when idle (#394)
  • Fixed etcd connection failing with 404 when gRPC gateway uses a different API prefix
  • Fixed data grid editing not working in query tabs (#383)
March 19, 2026
v0.21.0

New Features

  • Cloudflare D1 Support: Connect to Cloudflare D1 databases directly from TablePro
  • Autocomplete Match Highlighting: Matched characters in autocomplete suggestions are now shown in bold
  • Autocomplete Loading Indicator: Loading spinner while fetching column metadata

Improvements

  • Refactored autocomplete popup to native SwiftUI with visible selection highlight, native accent color, and scroll-to-selection
  • Autocomplete now suppresses noisy empty-prefix suggestions in non-browseable contexts (e.g., after SELECT, WHERE)
  • Autocomplete ranking stays consistent as you type with unified fuzzy scoring
  • Increased autocomplete suggestion limit from 20 to 40 for schema-heavy contexts
March 19, 2026
v0.20.4

Improvements

  • Improved performance for foreign key fetching, query history, tab persistence, and sidebar rendering

Bug Fixes

  • Fixed SQL syntax error when editing columns with reserved keyword names (e.g., database, table, order) in MySQL, PostgreSQL, and SQLite
  • Fixed high CPU usage and memory leaks at idle
  • Fixed architecture-specific update delivery
March 18, 2026
v0.20.3

New Features

  • iCloud Keychain Sync: Optionally sync connection passwords via iCloud Keychain across your devices

Bug Fixes

  • Fixed Use ~/.pgpass setting not persisting when saving a PostgreSQL connection
March 18, 2026
v0.20.2

Bug Fixes

  • Fixed safe mode badge not displaying for silent level
  • Fixed safe mode level not reflecting live toolbar changes
  • Fixed ~/.pgpass password lookup using SSH tunnel host instead of the original host
March 17, 2026
v0.20.1

Bug Fixes

  • Fixed plugin registry compatibility with PluginKit version 2
March 17, 2026
v0.20.0

New Features

  • Turkish Language: Added Turkish (Türkçe) as a new language option in Settings > General
  • etcd v3 Support: New database plugin with prefix-tree key browsing, etcdctl syntax editor, lease management, watch, mTLS, auth, and cluster info
  • Save Changes Button: New toolbar button for committing pending data edits
  • Connection Delete Confirmation: Confirmation dialog before deleting a connection
  • Unsaved Edit Protection: Confirmation dialog before sort, pagination, filter, or search discards unsaved edits

Bug Fixes

  • Fixed SSH tunnel crashes caused by concurrent libssh2 calls on the same session
  • Fixed unsaved cell edits lost when switching tabs, sorting, paginating, filtering, or switching apps
  • Fixed auto-reconnect and health monitor silently discarding unsaved changes
  • Fixed SSH tunnel recovery failing after tunnel death due to stale driver state
  • Fixed health monitor ping interfering with active user queries
  • Fixed connection test not cleaning up SSH tunnel on completion
  • Fixed test connection success indicator not resetting after field changes
  • Fixed SSH port field accepting invalid values
  • Fixed DROP TABLE and TRUNCATE TABLE sidebar operations producing no SQL for plugin-based drivers
  • Fixed foreign key navigation arrows not appearing after switching databases with Cmd+K on MySQL
  • Fixed sidebar not refreshing after creating or dropping tables
  • Fixed dropping a table disconnecting the database when the dropped table’s tab was active
March 16, 2026
v0.19.1

Bug Fixes

  • Fixed SSH tunnel connections timing out when connecting through SSH
  • Fixed plugin metadata dispatch failing for externally installed plugins
  • Improved SSH public key authentication error messages with detailed failure reasons
March 15, 2026
v0.19.0

New Features

  • iCloud Sync (Pro): Sync connections, groups, tags, settings, and query history across Macs with per-category toggles, conflict resolution, and real-time status indicator
  • SQL Favorites: Save frequently used queries with optional keyword bindings for autocomplete expansion
  • Copy as JSON: Copy selected rows as JSON from context menu and Edit menu
  • Help Menu: Quick links to website, documentation, GitHub, and sponsor page
  • BLOB Hex Display: View BLOB data as hex dump in the detail view sidebar

Bug Fixes

  • Fixed SSH agent connections failing when socket path contains ~ (e.g., 1Password agent)
  • Fixed Keychain authorization prompt appearing on every table open
March 14, 2026
v0.18.1

Bug Fixes

  • Fixed plugin download counts resetting to zero when a new plugin version is released
March 14, 2026
v0.18.0

New Features

  • Theme Engine: 4 built-in themes (Default Light/Dark, Dracula, Nord) with full color, font, and layout customization. Import/export themes as JSON
  • Theme Registry: Browse, install, and update community themes from the plugin registry
  • Cassandra & ScyllaDB Support: Connect to Cassandra and ScyllaDB databases via a downloadable plugin
  • SSH Two-Factor Authentication: TOTP support with auto-generate and prompt modes for SSH connections
  • SSH Host Key Verification: Fingerprint confirmation dialog for new and changed host keys
  • Keyboard Interactive SSH: Support for keyboard-interactive authentication method
  • Column Visibility: Toggle columns on/off via status bar button or header context menu
  • Copy as SQL: Copy selected rows as INSERT or UPDATE statements from the data grid context menu
  • PostgreSQL .pgpass Support: Automatic password lookup from ~/.pgpass for PostgreSQL and Redshift connections
  • Pre-connect Script: Run a shell command before each connection via Connection > Advanced
  • Custom Plugin Registry URL: Configure a private/enterprise registry URL for plugin distribution

Improvements

  • MSSQL, MongoDB, Redis, XLSX export, MQL export, and SQL import extracted into downloadable plugins. MySQL, PostgreSQL, SQLite, CSV, JSON, and SQL export remain built-in
  • Redesigned Plugins settings with master-detail layout and download counts
  • All database-specific behavior now driven by plugin metadata instead of hardcoded switches, enabling third-party database plugins
  • Connection form fields, sidebar labels, and SQL dialect features are now fully plugin-driven
  • App-level appearance mode (Light, Dark, Auto) independent of theme selection
  • MSSQL query cancellation and lock timeout support

Bug Fixes

  • Fixed plugin icon rendering not supporting custom asset images alongside SF Symbols
March 11, 2026
v0.17.0

New Features

  • DuckDB Support: Connect to .duckdb files, query CSV/Parquet/JSON files via SQL, schema navigation, and extension management
  • MongoDB Auth Database: Configure authSource to authenticate against any database instead of the default admin
  • Safe Mode Levels: 6 per-connection levels (Silent, Alert, Alert Full, Safe Mode, Safe Mode Full, Read-Only) replacing the boolean read-only toggle, with confirmation dialogs and Touch ID/password authentication
  • Preview Tabs: Single-click opens a temporary preview tab, double-click or editing promotes it to a permanent tab
  • Import Plugin System: SQL import extracted into a .tableplugin bundle with support for .sql and .gz compressed files
  • Open SQLite from Finder: Double-click .sqlite, .sqlite3, .db3, .s3db, .sl3, and .sqlitedb files to open them directly
  • Plugin Install Prompt: Automatic prompt to install missing driver plugins when connecting to an unsupported database type

Improvements

  • Oracle and ClickHouse shipped as downloadable plugins, reducing app bundle size
  • SQLite driver extracted from built-in bundle to downloadable plugin
  • Export plugin options (CSV, XLSX, JSON, SQL, MQL) now persist across app restarts
  • Plugins can declare settings views rendered in Settings > Plugins
  • True prepared statements for MSSQL and ClickHouse, eliminating string interpolation
  • Batch query operations for MSSQL, Oracle, ClickHouse, and SQLite, eliminating N+1 patterns
  • Unified error formatting and localized error messages across all database drivers
  • Standardized parameter binding with type-aware numeric handling and NULL literal support

Bug Fixes

  • Fixed MongoDB Read Preference, Write Concern, and Redis Database not persisting across app restarts
  • Fixed DELETE and UPDATE queries using all columns in WHERE clause instead of primary key for PostgreSQL, Redshift, MSSQL, and ClickHouse
  • Fixed SSL/TLS always being enabled for MongoDB, Redis, and ClickHouse connections
  • Fixed Redis sidebar click showing data briefly then going empty
  • Fixed MongoDB showing “Invalid database name” when connecting without a database name
  • Fixed result truncation at 100K rows being silently discarded instead of reported to UI
March 9, 2026
v0.16.1

Bug Fixes

  • Fixed stale filter causing repeated errors when restoring tabs after switching database or schema
  • Fixed sidebar showing old tables during database/schema switch instead of a loading indicator
  • Fixed sidebar search field disappearing when no tables match filter on macOS 15 and earlier
  • Fixed disabled plugin database types still appearing in connection form picker
  • Fixed main window not closing before reopening welcome screen on connection failure
March 9, 2026
v0.16.0

New Features

  • Plugin System: All 8 database drivers and 5 export formats extracted into .tableplugin bundles loaded at runtime. Enables third-party plugins
  • Plugin Marketplace: Browse, search, and install plugins from the GitHub-hosted registry with checksum verification
  • Settings > Plugins: Manage installed plugins: enable/disable, install from file or marketplace, view details
  • ClickHouse Support: Query ClickHouse databases with progress tracking, EXPLAIN variants, TLS/HTTPS, server-side cancellation, and Parts view
  • Startup Commands: Run custom SQL after connecting (e.g., SET time_zone) via Connection > Advanced tab
  • Chinese Simplified Localization: Full zh-Hans translation for the entire app UI

Improvements

  • Reduced memory by ~80-130 MB per connection: eliminated dedicated ping driver, lazy plugin loading, RowBuffer deduplication, metadata driver consolidation
  • Consolidated per-editor NSEvent monitors into shared singleton (O(n) to O(1) per event)
  • Reorganized project into domain-specific subdirectories

Bug Fixes

  • Fixed inspector separator bleeding into toolbar area with default connection color
  • Fixed inspector toggle lagging due to synchronous UserDefaults writes during animation
March 8, 2026
v0.15.0

New Features

  • Oracle Database Support: Connect to Oracle databases via OCI (Oracle Call Interface)
  • Database URL Scheme: Open connections directly from terminal with open "mysql://user@host/db" -a TablePro. Supports MySQL, PostgreSQL, SQLite, MongoDB, Redis, MSSQL, and Oracle
  • SSH Agent Authentication: Use SSH Agent for tunnel authentication, compatible with 1Password SSH Agent, Secretive, and ssh-agent
  • Multi-Jump SSH: Chain multiple SSH hops (ProxyJump) to reach databases through bastion hosts. Configure jump hosts in the connection form or import from ~/.ssh/config

Improvements

  • Reduced app binary size by ~55% by replacing CodeEditLanguages xcframework (38 grammars) with a local package compiling only SQL, Bash, and JavaScript

Bug Fixes

  • Fixed memory leak where session state objects were recreated on every tab open, causing 785MB usage at 5 tabs
  • Fixed per-cell field editor allocation in DataGrid creating 180+ NSTextView instances instead of sharing one
  • Fixed NSEvent monitor not removed on all popover dismissal paths in connection switcher
  • Fixed race condition in FreeTDS disconnect() where dbproc was set to nil without holding the lock
  • Fixed JSON encoding and file I/O blocking the main thread in TabStateStorage
  • Fixed MySQL/MariaDB getting BEGIN instead of START TRANSACTION in table operations
  • Fixed port resetting to default value when editing a connection with a custom port
  • Fixed data races in MainContentCoordinator, LibPQConnection, and VimKeyInterceptor
  • Fixed SSH askpass script written with world-readable permissions
  • Fixed welcome screen showing blank panel when connections have orphaned group IDs
  • Fixed multiple tabs auto-executing queries simultaneously on connection restore
  • Fixed unescaped identifiers in MySQL SHOW CREATE TABLE queries allowing SQL injection via table names
  • Fixed QueryResultRow equality ignoring cell values, preventing SwiftUI from re-rendering updated rows
  • Fixed Cmd+Delete in sidebar search clearing the query editor
March 6, 2026
v0.14.1

New Features

  • PostgreSQL Database & Schema Switching: Switch databases and schemas for PostgreSQL connections via ⌘K
March 5, 2026
v0.14.0

New Features

  • Microsoft SQL Server Support: Connect to SQL Server 2017+ databases via FreeTDS with schema browsing, table structure, indexes, foreign keys, and paginated queries
  • Edit and Delete Without Primary Key: Edit and delete rows in tables that don’t have a primary key

Bug Fixes

  • Fixed MSSQL connection losing selected database after disconnect and reconnect when no default database is configured
  • Fixed DELETE operations on tables without a primary key being silently dropped when row data is missing
  • Fixed high CPU and RAM usage on app launch from blocking storage init, unsynchronized health monitors, and excessive retry loops
  • Fixed slow database switcher loading by replacing N+1 metadata queries with single batched queries
  • Fixed slow Redis key browsing by pipelining TYPE and TTL commands in a single round trip
  • Fixed slow SQL export startup by batching COUNT(*) queries and dependent lookups
  • Fixed slow AI Chat schema loading by fetching all foreign keys in a single bulk query
  • Fixed O(n) string operations causing high CPU in geometry parsing, Redis driver, and autocomplete scoring
March 4, 2026
v0.13.0

New Features

  • Redis Support: Connect to Redis databases with key-value browsing, database-level sidebar (db0-db15), TTL management, and interactive CLI
  • TablePlus-compatible URLs: Open databases via command line with open -a TablePro "postgresql://user@host/db", supporting schema switching, table opening, filters, color, and environment tags

Bug Fixes

  • Fixed sidebar search field and main content area background colors not blending with macOS vibrancy
  • Fixed POINT and geometry columns showing blank values in MySQL and wrong type label in sidebar
March 3, 2026
v0.12.0

New Features

  • Amazon Redshift Support: Connect to Amazon Redshift data warehouses
  • Deep Links: Open connections, tables, queries, and import connections via tablepro:// URLs
  • Copy as URL: Right-click a connection to copy its details as a connection string (e.g., mysql://user:pass@host/db)
  • Auto-show Inspector: Automatically open the right sidebar when selecting a row (Settings > Data Grid)
  • Homebrew Cask: Install via brew install --cask tablepro

Improvements

  • ENUM and SET columns now open their picker on single click with a chevron indicator, matching boolean column behavior

Bug Fixes

  • Fixed “Table not found” error when switching databases within the same connection (Cmd+K) while a table tab is open
  • Fixed right sidebar state not persisting across native window-tabs
March 2, 2026
v0.11.1

Bug Fixes

  • Fixed MySQL second tab showing empty rows when macOS merges tab groups
  • Fixed MongoDB tab name showing “MQL Query” instead of collection name when using bracket notation
March 2, 2026
v0.11.0

New Features

  • Environment Color Indicator: Subtle toolbar tint based on connection color for at-a-glance environment identification
  • SSH Tunnel URL Import: Import database connections from SSH tunnel URLs (e.g., mysql+ssh://, postgresql+ssh://)
  • Connection Groups: Organize database connections into folders with colored headers

Improvements

  • Toolbar now uses native macOS overflow behavior with History/Export/Import in the secondary action menu
  • Redesigned right sidebar detail pane with compact field layout and type-aware editors

Bug Fixes

  • Fixed toolbar briefly showing “MySQL” and missing version info when opening a new tab
  • Fixed keyboard shortcuts not working after connecting from the welcome screen until a second tab was opened
  • Fixed toolbar overflow menu showing only one item when the window is narrow
  • Fixed AI chat showing “SQL” label and missing syntax highlighting for MongoDB code blocks
March 1, 2026
v0.10.0

New Features

  • Multiple Database Connections: Open separate windows for different database connections, each with independent session isolation
  • MongoDB Support: Connect to MongoDB databases with collection browsing, document viewing, and MQL export
  • Import from URL: Import database connections directly from connection strings (e.g., postgresql://user:pass@host:5432/db)
  • Custom About Window: New About window with version info and quick links to Website, GitHub, and Documentation

Improvements

  • Release notes now shown in the Sparkle update window

Bug Fixes

  • Fixed new row (Cmd+I) and duplicated row not appearing in data grid until manual refresh
  • Fixed PostgreSQL SSH tunnel connections failing with “no encryption” due to SSL config not being preserved
  • Fixed PostgreSQL SSL sslrootcert passed unconditionally, causing certificate verification failure in Required mode
February 28, 2026
v0.9.2

Bug Fixes

  • Fixed app bundle not ad-hoc signed. Signing step was unreachable when no dylibs were bundled
February 28, 2026
v0.9.1

Bug Fixes

  • Fixed Sparkle auto-update failing with “improperly signed” error. Release ZIPs now preserve framework symlinks and include proper ad-hoc code signatures
February 28, 2026
v0.9.0

New Features

  • Vim Mode for SQL Editor: Full Vim keybindings with Normal/Insert/Visual modes, motions (w, b, e, ^, _), operators, and :w/:q commands. Toggle in Editor Settings
  • PostgreSQL Schema Switching: Browse and switch between schemas (public, auth, custom schemas) via ⌘K database switcher

Improvements

  • Query history operations converted to native Swift async/await for faster response
  • Export and Import services consolidated to reduce UI update overhead
  • App startup uses structured Task-based retry loops instead of dispatch chains

Bug Fixes

  • Fixed cell edit showing modified background (yellow) but reverting to original value after pressing Enter
  • Fixed undo on inserted row cell edit not syncing data correctly
  • Fixed Vim Escape key not working when autocomplete popup is visible
  • Fixed Copy/Cut (⌘C/⌘X) not working in SQL editor
  • Fixed Vim yank/delete not syncing to system clipboard
  • Fixed multiple Vim motion and visual mode selection issues
  • Fixed event monitor and memory leaks in SQL editor lifecycle
  • Fixed unbounded memory growth from tab registry, sorted row cache, and schema provider retention
  • Fixed background tabs retaining full result data indefinitely
  • Fixed crash on macOS 14.x caused by missing libpq symbol. Now uses vendored static libraries
  • Fixed duplicate tabs when inserting SQL from AI Chat or History with multiple windows open
  • Fixed various coordinator lifecycle issues (teardown, destroy, cancellation)
  • Fixed DataGridView unnecessary column reconfiguration on every version bump
  • Fixed ConnectionHealthMonitor slow failure detection. Now supports immediate health checks
February 27, 2026
v0.8.0

New Features

  • Native macOS Window Tabs: The tab bar is now rendered by macOS itself. Identical to Finder, Safari, and Xcode tabs with automatic dark/light mode support, drag-to-reorder, and “Merge All Windows” for free
  • Independent Tab Windows: Each tab is a full independent window with its own sidebar, editor, and state. No more shared state between tabs

Improvements

  • Tab Switching Performance: Schema is now cached per connection so new native tabs reuse the already-loaded schema instead of re-fetching from the database (saves 500ms–2s per tab)
  • Background Schema Loading: Schema loads concurrently. Table data appears immediately while autocomplete schema loads in the background
  • Sidebar MVVM Refactor: Sidebar table list migrated to a testable SidebarViewModel architecture with extracted TableRowView and context menu components
  • Window title updates dynamically after in-place navigation (sidebar click, FK navigation)
  • 10+ SwiftUI rendering optimizations to prevent O(N) view cascades across windows

Bug Fixes

  • Fixed sidebar losing keyboard focus (arrow key navigation) after opening a second table tab
  • Fixed sidebar active state flash when clicking a table that opens in a new native window tab
  • Fixed sidebar losing active state when opening a second table in a new native window tab
  • Fixed sidebar not refreshing after switching databases via Cmd+K
  • Fixed Cmd+W in empty state doing nothing. Now closes the connection window and disconnects
  • Fixed Cmd+K database switch flooding all windows with error alerts
  • Fixed clicking a table in the sidebar replacing the current tab instead of opening a new one
  • Fixed Cmd+W on any tab disconnecting the entire session
  • Fixed Cmd+T from empty state creating two native tabs instead of one
  • Fixed native tab title showing “SQL Query” instead of the table name
  • Fixed Cmd+W on the last tab disconnecting the session instead of returning to empty state
February 25, 2026
v0.7.0

New Features

  • Combined Search & Filters: Quick search and filter rows now work together. When both are active, conditions are combined with AND for precise data discovery
  • Foreign Key Navigation: FK columns display a clickable arrow icon in each cell. Click to jump directly to the referenced table, pre-filtered to the related row

Improvements

  • Instant Metadata Loading: FK arrows, column info, and row counts now load on a dedicated parallel connection, eliminating the 200-300ms delay on initial table load
  • Instant Pagination: Approximate row count from database metadata displays immediately with data; exact count refines silently in the background
  • Syntax highlighting added to Import SQL file preview
  • XLSX export enforces Excel’s 1M row limit per sheet with reduced memory usage
  • Multiline cell editing now uses a scrollable overlay editor for better navigation
  • MySQL result fetching switched to streaming mode to reduce memory for large result sets
  • 30+ internal performance optimizations across SQL editor, tab switching, data grid, exports, and persistence

Bug Fixes

  • Fixed AND/OR filter logic mode being ignored in query execution
  • Fixed filter panel state (filters, visibility, search, logic mode) not preserved when switching tabs
  • Fixed FK navigation filter being cleared when switching to a new tab
  • Fixed PostgreSQL and SQLite LIKE/NOT LIKE expressions missing ESCAPE clause
  • Fixed SQLite regex filter silently falling back to LIKE substring match
  • Fixed PostgreSQL SQL export: newline/tab escaping, missing enum types, missing DROP IF EXISTS for types and sequences
  • Fixed memory management issue in PostgreSQL C connector (free vs deallocate)
  • Fixed FTS5 search errors from special characters like *, OR, AND
February 23, 2026
v0.6.4

Bug Fixes

  • PostgreSQL SQL Export: Fixed DDL export failing for all PostgreSQL tables with “Failed to fetch DDL” error
February 23, 2026
v0.6.3

Improvements

  • Welcome window now uses native macOS frosted glass translucency
  • Improved tab switching performance by caching row providers and change managers across render cycles

Bug Fixes

  • MySQL/MariaDB Timeout: Auto-detect server type to use the correct timeout variable (max_execution_time for MySQL, max_statement_time for MariaDB)
  • DataGrid Scrolling: Row view recycling, O(1) string length checks, cached fonts, reduced compositing overhead, deferred accessibility labels
  • Eliminated selection sync feedback loop causing redundant updates during tab switch
  • Reduced SwiftUI re-render cascades by batching state mutations during tab switch
February 23, 2026
v0.6.2

Improvements

  • Replaced generic SwiftUI colors with native macOS system colors for proper dark mode, vibrancy, and accessibility adaptation
  • Use semantic label colors (quaternaryLabelColor, tertiaryLabelColor) instead of hardcoded opacity
  • Use native shadowColor instead of Color.black for shadows
  • Replaced iOS-style Capsule badges with RoundedRectangle for native macOS look
February 23, 2026
v0.6.1

Performance

  • 45 performance fixes across the entire codebase, covering memory, CPU, data handling, network, and I/O:
    • Memory: Reference-based row buffers, index-based sort cache, streaming XLSX export, driver-level row limits (100K cap), removed redundant string copies, weak references in schema provider, undo stack depth cap, dictionary-based pending changes, weak self in Task captures, clear cached data on disconnect, AI chat message cap
    • CPU: Removed expensive Unicode operations in database drivers, cached 100+ regex patterns in SQL formatter, async Keychain reads, cached frequently-used regex patterns, O(1) change lookup index
    • Data: Auto-append LIMIT for unprotected queries, row limit caps for all drivers, batch column fetching via INFORMATION_SCHEMA, index permutation sort cache, cached row provider, clipboard 50K row cap, Int-based row IDs replacing UUID
    • Network: Phase 2 metadata cache, connect timeout for PostgreSQL, query cancellation via mysql_kill/PQcancel/sqlite3_interrupt, loading guard for sidebar, reuse cached schema for AI
    • I/O: Throttled history cleanup, async history storage migration, consolidated onChange handlers
February 22, 2026
v0.6.0

New Features

  • Inline AI Suggestions: Ghost text completions in the SQL editor. Triggers automatically on typing pause, Tab to accept, Escape to dismiss
  • Schema-Aware Completions: Inline suggestions use actual table and column names from your connected database (cached with 30s TTL)
  • VoiceOver Accessibility: Added accessibility labels to data grid, filter panel, toolbar buttons, editor tab bar, and sidebar controls

Improvements

  • Migrated notification observers to async sequences for modern Swift concurrency
  • Migrated tab state persistence from UserDefaults to file-based storage in Application Support for faster app launch
  • Refactored menu and toolbar commands to @FocusedObject pattern. Direct method calls instead of global notifications
  • Redesigned connection form with tab-based layout (General / SSH Tunnel / SSL/TLS / Advanced)
  • Revamped connection form UI to native macOS grouped form style with automatic label alignment
  • SQLite connections now only show relevant tabs (General and Advanced)
  • Added async/await wrapper methods to query history storage

Bug Fixes

  • Fixed thread safety race condition in SQLite driver. Serialized all handle access with a dedicated actor
  • Fixed SwiftUI sheet presentation reliability. Consolidated multiple .sheet modifiers into a single .sheet(item:)
  • Fixed SSH tunnel setup blocking the UI. Replaced synchronous process waiting with async port probing
  • Fixed potential deadlocks in MySQL and PostgreSQL connection cleanup
  • SQL editor now respects the macOS accessibility text size preference with live updates
  • Fixed retain cycle in update checker and leaked observer in SQL editor coordinator
  • Eliminated tab switching delay. Kept NSViews alive across switches, moved I/O to background threads
  • Reduced tab-switch CPU spikes from 40-60% to ~10-20% by eliminating redundant data grid reloads
  • Table open now shows data instantly. Metadata loads in the background without blocking the grid
  • Eliminated 20-80ms overhead when clicking an already-open table in the sidebar
  • Fixed Keychain writes silently failing. Return values are now checked and logged
  • Added proper service identifiers to all Keychain queries to prevent collisions with other apps
  • Fixed leaked async tasks in import dialog and AI provider settings
February 19, 2026
v0.5.0

New Features

  • AI Chat Panel: Right-side panel for AI-assisted SQL queries with multi-provider support (Claude, OpenAI, OpenRouter, Ollama, custom endpoints). Includes schema-aware context, markdown rendering, and code blocks with Copy/Insert to Editor buttons
  • AI Provider Settings: Configure multiple AI providers in Settings > AI with API key management, endpoint configuration, model selection, and connection testing
  • AI Feature Routing: Map AI features (Chat, Explain Query, Fix Error, Inline Suggestions) to specific providers and models
  • Per-Connection AI Policy: Control AI access per connection (Always Allow, Ask Each Time, Never) in the connection form
  • Keyboard Shortcut Customization: Rebind any menu shortcut in Settings > Keyboard via press-to-record UI with conflict detection and “Reset to Defaults”
  • Structure View Undo/Redo: Full undo/redo support (⌘Z / ⇧⌘Z) for all column, index, and foreign key operations in the structure editor
  • Structure View Type Picker: Database-specific type picker popover: searchable, grouped by category, supports freeform input for parametric types like VARCHAR(255)
  • Structure View Dropdowns: YES/NO dropdown menus for Nullable, Auto Inc, and Unique columns
  • Tab Reuse Setting: Opt-in option in Settings > Tabs to reuse clean table tabs when clicking a new table in the sidebar
  • Switch Connection Shortcut: ⌘⌥C to quickly open the connection switcher popover
  • SQL Autocomplete Enhancements: New clause types (RETURNING, UNION, OVER/PARTITION BY), smart clause transitions, qualified column suggestions in JOINs, compound keywords, richer column metadata, keyword documentation, and expanded function/keyword coverage

Improvements

  • Migrated 5 NSPopover controllers (Enum, Set, TypePicker, JSONEditor, ForeignKey) to SwiftUI with shared PopoverPresenter utility
  • Replaced AppKit history panel (5 files) with single pure SwiftUI HistoryPanelView
  • Replaced ExportTableOutlineView (757 lines) with SwiftUI ExportTableTreeView (~146 lines)
  • Replaced KeyEventHandler NSViewRepresentable with native .onKeyPress() modifiers
  • Improved layout architecture. Eliminated KVO observation hacks and recursive view tree traversal
  • Structure tab grid columns now auto-size to fit content on data load
  • SQL autocomplete now uses 50ms debounce and optimized fuzzy matching

Bug Fixes

  • Fixed structure view undo/redo not working. Undo-delete no longer duplicates rows, and undoing deletion of unsaved items works correctly
  • Fixed structure view save button remaining enabled when validation errors exist
  • Fixed structure view incorrectly handling multi-column foreign keys and column renames on MySQL/MariaDB
  • Fixed PostgreSQL DDL tab missing constraints and primary key detection in structure grid
  • Fixed SQL injection vulnerability in driver schema queries with special characters in table/database names
  • Fixed SQL editor undo/redo (⌘Z / ⇧⌘Z) being blocked by responder chain mismatch
  • Fixed SQL autocomplete issues: subquery clause detection, block comment handling, database-specific types, schema suggestions after CREATE TABLE, function completion inserting incomplete parentheses
  • Fixed data grid column order flashing/swapping when sorting
  • Fixed “Copy Column Name” and “Filter with column” context menu copying sort indicators
  • Fixed AI chat “Ask Each Time” policy silently falling through to “Always Allow”
February 16, 2026
v0.4.0

New Features

  • SQL Preview: Review all pending SQL statements before committing changes with a new toolbar button (eye icon) or shortcut (⌘⇧P)
  • Multi-Column Sorting: Shift+click column headers to add columns to the sort list; regular click replaces with single sort. Priority indicators (1▲, 2▼) shown in headers
  • Copy with Headers: Copy selected rows with column headers as the first TSV line via ⇧⌘C or the data grid context menu
  • Column Width Persistence: Resized columns retain their width across pagination, sorting, and filtering reloads within a tab session
  • Dangerous Query Confirmation: DELETE/UPDATE statements without a WHERE clause now prompt a confirmation dialog summarizing affected queries
  • SQL Editor Horizontal Scrolling: Long lines scroll horizontally without word wrapping
  • Find Panel Scroll-to-Match: SQL editor find panel now scrolls to each match during navigation

Improvements

  • Raised minimum macOS version from 13.5 (Ventura) to 14.0 (Sonoma)
  • Changed Export/Import keyboard shortcuts from ⌘E/⌘I to ⇧⌘E/⇧⌘I to avoid conflicts with standard text editing shortcuts
  • URLSession now waits for network connectivity in analytics and license services
  • Improved SQL statement parser to handle backslash escapes within string literals, preventing false positives in dangerous query detection

Bug Fixes

  • Fixed SQL editor not updating colors when switching between light and dark mode
  • Fixed sidebar retaining stale table selections and pending operations for tables removed since the last refresh
February 14, 2026
v0.3.2

Bug Fixes

  • Fixed launch crash on macOS 13 (Ventura) x86_64 caused by accessing NSApp.appearance before NSApplication is initialized during settings singleton setup
February 14, 2026
v0.3.1

Bug Fixes

  • Fixed syntax highlighting not applying after paste in SQL editor by deferring frame-change notification so the visible range recalculates after layout
  • Fixed data grid not refreshing after inserting a new row
February 13, 2026
v0.3.0

New Features

  • Language Setting: Choose between System, English, or Vietnamese in Settings > General with full Vietnamese localization (637 strings)
  • ENUM/SET Column Editor: Double-click ENUM columns for a searchable dropdown, SET columns show multi-select checkboxes with OK/Cancel buttons
  • PostgreSQL Enum Support: User-defined enum types resolved via pg_enum catalog lookup
  • SQLite Pseudo-Enum Detection: CHECK constraint-based enum detection for SQLite columns
  • Connection Health Monitoring: Automatic 30-second health checks with exponential backoff auto-reconnect (3 retries)
  • Anonymous Usage Analytics: Opt-out toggle available in Settings > General > Privacy

Improvements

  • Migrated Libs/*.a static libraries to Git LFS tracking to reduce repository clone size
  • Replaced filter { }.count with count(where:) across 7 files
  • Replaced print() with Logger in documentation examples
  • Aligned Xcode SWIFT_VERSION build setting from 5.0 to 5.9

Bug Fixes

  • Fixed launch crash on macOS 13 caused by missing asyncAndWait symbol in CodeEditSourceEditor 0.15.2
  • Fixed SQL injection vulnerability in PostgreSQL pg_enum lookup and SQLite sqlite_master queries by escaping single quotes
  • Fixed ENUM column nullable detection to use actual schema metadata instead of heuristic rawType check
  • Fixed PostgreSQL primary key modification to query actual constraint name from pg_constraint
February 11, 2026
v0.2.0

New Features

  • SSL/TLS Connection Support: Secure connections for MySQL/MariaDB and PostgreSQL with configurable modes (Disabled, Preferred, Required, Verify CA, Verify Identity) and custom certificate file paths
  • CSV Clipboard Paste: RFC 4180-compliant CSV parser with auto-detection of CSV vs TSV format when pasting from clipboard
  • Explain Query: New button in the SQL editor toolbar and menu item (⌥⌘E) for viewing query execution plans
  • Connection Switcher: Quick-switch popover for active and saved connections directly from the toolbar
  • Date/Time Picker: Dedicated date picker popover for editing date, datetime, timestamp, and time columns in the data grid
  • Read-Only Mode: Connection-level read-only toggle with toolbar badge and full UI enforcement. Disables editing, row operations, and save changes
  • Query Timeout: Configurable execution timeout in Settings > General (default 60s, 0 = no limit) with per-driver enforcement via statement_timeout (PostgreSQL), max_execution_time (MySQL), max_statement_time (MariaDB), and sqlite3_busy_timeout (SQLite)
  • Foreign Key Lookup: Searchable dropdown for FK columns showing values from the referenced table with both ID and descriptive display column
  • JSON Column Editor: Popover editor for JSON/JSONB columns with pretty-print formatting, compact mode, real-time validation, and explicit save/cancel buttons
  • Excel Export: Export to .xlsx format with a lightweight pure-Swift OOXML writer. Supports shared strings deduplication, bold headers, numeric type detection, and multi-table export to separate worksheets
  • View Management: Create View (opens SQL editor with template), Edit View Definition (fetches existing definition), and Drop View from sidebar context menu

Bug Fixes

  • Fixed crash on launch on macOS 13 (Ventura) caused by missing Swift runtime symbol
  • Fixed redo functionality in data grid (⌘⇧Z now works correctly)
  • Fixed redo stack not being cleared when new changes are made
  • Fixed canRedo() always returning false in data grid coordinator
  • Wired undo/redo callbacks directly to data grid for proper responder chain validation
  • Fixed MariaDB connection error 1193 “Unknown system variable ‘max_execution_time’” by using the correct max_statement_time variable
  • Query timeout errors no longer prevent database connections from being established

Improvements

  • Replaced all print() statements with structured OSLog Logger across 25 files for better debugging via Console.app
February 9, 2026
v0.1.1

New Features

  • CodeEditSourceEditor Migration: SQL editor now powered by tree-sitter via CodeEditSourceEditor for improved syntax highlighting and performance
  • Multi-Statement Execution: Execute multiple SQL statements in a single run
  • Show Structure: Right-click any table in the sidebar to quickly view its structure
  • Improved Filter Panel: Redesigned filter UI for a better experience
  • SwiftUI Tab Bar: New pure SwiftUI editor tab bar replacing the AppKit implementation
  • GPL v3 License: Project is now licensed under the GNU General Public License v3
  • Auto-Update: In-app updates via Sparkle 2 with EdDSA signing. Check for updates from the TablePro menu or Settings > General

Bug Fixes

  • Fixed MySQL 8+ connections failing with caching_sha2_password plugin error by rebuilding libmariadb with the auth plugin compiled statically
  • Fixed Delete key on data grid rows incorrectly marking the table as deleted
  • Downgraded all APIs to support macOS 13.5 (Ventura)

Maintenance

  • CI release notes now read from curated CHANGELOG.md instead of auto-generating from commits
  • Removed redundant prepare-libs CI job, speeding up the build pipeline by ~5 minutes
  • Added SPM Package.resolved for CodeEditSourceEditor dependencies
  • Updated build and test commands with -skipPackagePluginValidation
February 8, 2026
v0.1.0
The first public release of TablePro: a native macOS database client built with SwiftUI and AppKit.

Features

  • Multi-Database Support: Connect to MySQL, PostgreSQL, and SQLite databases
  • SQL Editor: Full-featured editor with syntax highlighting, autocomplete, and line numbers
  • Data Grid: Browse and edit table data with sorting, filtering, and pagination
  • SSH Tunneling: Secure database connections via SSH tunnels
  • Query History: Track and replay your SQL queries
  • Table Structure: View and modify table schemas, indexes, and constraints
  • Import/Export: Import SQL files and export data in CSV, JSON, and SQL formats
  • Keyboard Shortcuts: Keyboard navigation for power users
  • Native Tab Bar: AppKit-powered tab bar with drag-to-reorder support
  • Dock Menu: Quick access to welcome window and recent connections
  • License Activation: RSA-signed license verification with offline support

Performance

  • Optimized SQL editor for large files with viewport-only syntax highlighting
  • Native AppKit tab bar for lightweight tab management
  • Efficient data grid rendering for large result sets
  • Lightweight memory footprint with native Apple frameworks