github TableProApp/TablePro v0.38.0

3 hours ago

Added

  • Welcome window: "Check for Updates" link next to the version number
  • Window menu: dedicated Integrations Activity window for the MCP activity log and connected clients. Sidebar, native search, filter, refresh, export. Position remembered across launches
  • Sample database (Chinook) bundled. Open from welcome screen with one click; reset via File menu
  • Connection string detection: paste a postgres://, mysql://, redis://, or mongodb:// URL to auto-fill the form
  • MCP: protocol versions 2025-06-18 and 2025-11-25 (in addition to 2025-03-26). Includes structured tool output (structuredContent), tool annotations (readOnlyHint, destructiveHint, etc.), completions capability, and streaming progress notifications via notifications/progress
  • MCP: pairing redirect carries error=denied when the user clicks Deny
  • MCP: re-pairing the same client name revokes the previous token
  • Oracle 10G password verifier auth, matching DBeaver/JDBC/sqlplus (#483)
  • Oracle Test Connection: diagnostic sheet on auth failure with copy-able info, suggested actions, and an issue link
  • Oracle connection negotiation matches python-oracledb 23ai (TTC4 boundary, TTC5 token/pipelining/sessionless, OCI3 sync, dequeue selectors, sparse vectors)
  • SSH tunnel resolves ~/.ssh/config host aliases at connection time, with full ssh_config(5) semantics: glob Host patterns, all Match types, ProxyJump, hostname canonicalization, Include. Live (no app restart). Applies to primary host and jump hosts (#977)

Changed

  • Welcome window aligned to macOS HIG: subtle drop shadow on the app icon (no accent glow), dynamic text styles, "Sponsor" button removed, "Create connection" uses the bordered style, toolbar + / new-group buttons gain a hover background, native window vibrancy via NSVisualEffectView
  • Settings > Integrations is a flat preferences pane per macOS HIG. Activity log and connected-clients moved to the new Integrations Activity window; setup snippets to a "Connect a Client…" sheet
  • MCP: idle session timeout 5 → 15 minutes
  • MCP: server, stdio bridge, and protocol dispatcher rewritten for spec compliance. Public API of MCPServerManager and the on-disk handshake format unchanged; clients do not need to re-pair
  • Security: non-syncing keychain items use kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. Keeps local-only secrets out of unencrypted device backups. Existing items keep their accessibility class until you re-save
  • Settings > Sync > Passwords: caption clarifies the toggle only affects new saves

Removed

  • SSH useSSHConfig per-connection toggle. ~/.ssh/config is always consulted now; explicit form values still take precedence
  • Legacy-keychain migration and password-sync-state migration. Both violated Apple's Data Protection keychain contract on sandboxed macOS and corrupted credentials. Stale items in the legacy keychain can be cleaned via Keychain Access

Fixed

  • Welcome / connection form / feedback panel now remember position and size across launches (frame autosave was missing on the underlying NSWindow/NSPanel)
  • Saved connection passwords no longer disappear after relaunch. The legacy-keychain migration was deleting the only copy on sandboxed macOS; removed entirely
  • Cmd+Z after editing a cell now clears the yellow "modified" highlight (the coordinator's dataTabDelegate was being nilled too eagerly)
  • Tab switching: rapid Cmd+Number no longer leaves a tail of tab transitions after key release. AppKit switches now apply synchronously via NSAnimationContext with duration = 0
  • Oracle: TIMESTAMP variants, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, DATE, RAW, and BLOB render through typed decoders. INTERVAL YEAR TO MONTH and BFILE no longer crash on row fetch. Unknown types show <unsupported: type> instead of crashing (#965)
  • Oracle: 23ai cloud and container handshakes no longer fail with uncleanShutdown. OOB urgent-byte send now requires TNS_ACCEPT_FLAG_CHECK_OOB advertisement (#483)
  • Plugin install prompt reopens when connecting to a downloadable database type whose plugin is disabled or uninstalled (#975)
  • Redshift: schema switcher no longer empty for non-admin users. Reads from pg_namespace filtered by has_schema_privilege instead of information_schema.schemata (#971)
  • MCP: GET /mcp opens a real SSE notification stream
  • MCP: concurrent tool calls no longer serialize at the dispatcher loop
  • MCP: server validates protocolVersion and MCP-Protocol-Version; rejects unknown versions with -32600 invalid_request
  • MCP: 429 responses include a real Retry-After header from the rate-limiter lockout
  • MCP: token revocation cancels in-flight requests and terminates sessions
  • MCP: CORS reflects the request Origin against an allowlist (localhost, 127.0.0.1, claude.ai, app.cursor.com)
  • MCP: stale Mcp-Session-Id after idle timeout returns JSON-RPC -32001 "Session not found" with HTTP 404, letting clients re-initialize cleanly instead of hanging until a 4-minute client timeout
  • MCP: stdio bridge uses FileHandle.bytes AsyncBytes (no more silent exit on briefly empty stdin)
  • MCP: SSE responses stream incrementally instead of buffering
  • MCP: rate limiter keys on (client_address, principal_fingerprint) to close localhost auth-DoS
  • MCP: in-app setup snippets use the stdio command form for tablepro-mcp (Claude Desktop rejected the URL form)
  • MCP: duplicate initialize returns invalid_request instead of overwriting clientInfo
  • MCP: xcodebuild test no longer leaves an orphan TablePro.app running
  • MCP: server start cleans stale handshake file from a crashed previous PID
  • MCP: activity log auto-refreshes when new audit entries are written

Don't miss a new TablePro release

NewReleases is sending notifications on new releases.