Skip to content

Commit 60c8be7

Browse files
committed
release: v0.39.0
1 parent 6b4b458 commit 60c8be7

3 files changed

Lines changed: 78 additions & 80 deletions

File tree

CHANGELOG.md

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

88
## [Unreleased]
99

10-
### Fixed
11-
12-
- New tab via Cmd+T no longer flashes focus back to the previous tab in the same window group
13-
- Cmd+X with no selection cuts the current line, matching VS Code, Sublime, and Xcode (#1075)
14-
- Cmd+A on a query ending with a newline now highlights every line, not just the first (#1075)
15-
- Editor windows now remember their size, position, and zoom state across launches, instead of always opening at 1200x800
16-
- iOS: data browser and query result lists no longer crash with "Index out of range" when rows shrink during a SwiftUI update pass
17-
- iOS: connecting to MySQL, PostgreSQL, or Redis with an out-of-range port now reports a readable error instead of crashing on integer overflow
18-
19-
### Added
20-
21-
- AI Chat: tool calling support for the GitHub Copilot provider. Copilot can now invoke the same database tools (list_tables, describe_table, execute_query, etc.) the other providers do, gated by chat mode and the per-card approval flow. Older Copilot language servers without the `conversation/registerTools` API gracefully degrade to chat-only.
22-
- AI Chat: per-card tool approval. Write and destructive AI tool calls now show inline `Run`, `Always for this connection`, and `Cancel` buttons on the tool card instead of interrupting with a modal dialog. "Always for this connection" persists the tool name on the connection so future calls run without prompting. Cancel ends only that tool call; the assistant sees an error result and continues the conversation. Read-only tools auto-run; Read-only safe mode still blocks writes outright.
23-
- AI Chat: panel layout redesign. The right inspector has a Details / AI Chat segmented picker at the top, with conversation history and new-conversation actions trailing on the same row. The chat tab is composer-focused: composer is a rounded multi-line input with an Apple Intelligence focus glow, and a single-row footer (mention, slash commands, mode picker, model picker, send). The mode picker (Ask / Edit / Agent) is saved to settings but does not yet change provider behavior.
24-
- AI Chat: inline model picker in the composer with per-turn model attribution. Switch between configured providers and any of their available models without leaving the chat. The model that produced each assistant turn is shown in the message footer.
25-
- AI Chat: slash commands `/explain`, `/optimize`, `/fix`, and `/help`. Type the command in the composer or pick from the slash menu next to the model picker. `/explain`, `/optimize`, and `/fix` operate on the current query in the active editor. `/help` lists the commands inline.
26-
- AI Chat: attach context to a message via the `@` menu next to the slash menu, or by typing `@` directly in the composer.
27-
- Pick Schema, a specific Table, the Current Query, or recent Query Results.
28-
- Typing `@` opens a caret-anchored picker that filters as you type. Up/Down navigates, Return or Tab inserts, Escape dismisses.
29-
- Attachments render as chips above the input and inside the user message bubble.
30-
- Editing a sent message restores its typed text and chips so you can adjust both before resending.
31-
- AI Chat: tool calling. The AI can look up your database on demand instead of relying on context you attached up front.
32-
- Read-only tools: `list_connections`, `get_connection_status`, `list_databases`, `list_schemas`, `list_tables`, `describe_table`, `get_table_ddl`.
33-
- Tool calls and their results render as expandable pills in the assistant's reply.
34-
- Supported providers: Anthropic, OpenAI, OpenRouter, Gemini, Ollama (model-dependent), GitHub Copilot, and custom OpenAI-compatible endpoints.
35-
- AI Chat: attach a saved query as a chip via `@`. Type `@` and pick a saved SQL query to send its name and body to the AI alongside your message.
36-
- AI Chat: user-defined slash commands. Create your own commands in Settings -> AI -> Custom Slash Commands. Templates support `{{query}}`, `{{schema}}`, `{{database}}`, and `{{body}}` placeholders that get substituted at send time.
37-
- AI Chat: tool calling can now run write queries (`execute_query`) and destructive DDL (`confirm_destructive_operation` after the AI passes the verbatim phrase). The connection's safe mode policy still gates execution, so the user remains the final approver.
38-
- AI Chat: per-connection rules. Add custom guidance (table conventions, PII columns, naming) in the connection's AI Rules tab; the AI sees it on every chat turn for that connection.
39-
40-
### Changed
41-
42-
- AI Chat: new installations default to opt-in context. Schema, current query, and query results no longer auto-include in every prompt; attach them via the `@` menu when you want them. Existing users keep their current Settings -> AI -> "Include schema/current query/query results" choices unchanged.
43-
- AI Chat: the Ask / Edit / Agent mode picker now changes which tools the provider sees. Ask exposes read-only schema lookups. Edit adds `execute_query` for SELECT/INSERT/UPDATE/DELETE. Agent adds destructive DDL via `confirm_destructive_operation`. The connection's safe mode policy still gates execution.
44-
45-
### Fixed
46-
47-
- New tab via Cmd+T no longer flashes focus back to the previous tab in the same window group
48-
- AI Chat Retry button no longer appears for errors retry can't fix (authentication failure, deprecated model, invalid endpoint). The error message stays so the user can act on it.
49-
- AI Chat code blocks render with syntax highlighting and the Insert button even when the AI omits the language tag, by detecting SQL/JavaScript heuristically from the code content.
50-
- AI Chat Insert button stays enabled when the chat panel itself has focus instead of the editor, by falling back to `CommandActionsRegistry` when `@FocusedValue` returns nil.
51-
52-
## [0.39.0] - 2026-05-07
10+
## [0.39.0] - 2026-05-08
5311

5412
### Added
5513

14+
- AI Chat: tool calling with per-card approval, Ask / Edit / Agent modes, and 7 providers (Anthropic, OpenAI, OpenRouter, Gemini, Ollama, GitHub Copilot, custom OpenAI-compatible)
15+
- AI Chat: `@` mentions for Schema, Table, Current Query, Query Results, and saved queries
16+
- AI Chat: slash commands (`/explain`, `/optimize`, `/fix`, `/help`) plus user-defined commands
17+
- AI Chat: inline model picker with per-turn model attribution
18+
- AI Chat: per-connection rules for the assistant
5619
- Linked SQL Folders: two-way sync between Favorites and a folder of `.sql` files
57-
- Database type chooser sheet for new connections, grouped by category with search
58-
- Connection URL import moved into the database type chooser
20+
- Database type chooser sheet for new connections
21+
- Connection URL import in the database type chooser
5922

6023
### Changed
6124

62-
- iOS: streaming data layer; large queries no longer buffer the full result set
63-
- Toolbar leads with a tinted engine icon to distinguish multiple windows on the same database (#1044)
64-
- XLSX export is free for everyone
65-
- Safe Mode (Touch ID, Full, Read Only) is free for everyone
66-
- Favorites sidebar is connection-scoped; opening a second tab no longer reloads
67-
- Connection Form rebuilt with sidebar navigation and native window-toolbar actions
25+
- iOS: streaming data layer for large queries
26+
- Toolbar shows a tinted engine icon to distinguish windows on the same database (#1044)
27+
- XLSX export is free
28+
- Safe Mode is free
29+
- Favorites sidebar is connection-scoped
30+
- Connection Form: sidebar navigation with native toolbar actions
6831
- "Read-Only" / "Read-Write" renamed to "Read Only" / "Read & Write"
6932
- ER diagram nodes scale with system text size
70-
- Hero icons, list views, search fields, and form sheets aligned with macOS HIG
71-
- Welcome, Connection Form, and Integrations Activity windows use SwiftUI scenes
33+
- Welcome, Connection Form, and Integrations Activity use SwiftUI scenes
7234

7335
### Fixed
7436

75-
- New connection chooser falsely prompted "MariaDB plugin is not installed" for built-in lazy drivers
76-
- Schema selection from Cmd+K Quick Switcher silently ignored on SQL Server and Oracle
37+
- "MariaDB plugin not installed" prompt for built-in lazy drivers
38+
- Cmd+K Quick Switcher schema selection on SQL Server and Oracle
7739
- iOS: crash opening some MySQL tables
78-
- iOS: connections to `.local` and local-network addresses timed out silently
79-
- Data grid column headers misaligned with result-cell horizontal inset
80-
- Toolbar connection status lost its left inset when no connection tag was shown
81-
- SQL editor jumped to end after committing IME-marked words like "测试" (#1012)
82-
- External-contributor builds failed on personal Apple Developer teams (#1020)
83-
- SSH auth-failure alerts mislabelled the cause when the verification code was wrong (#1005)
84-
- TOTP codes that crossed a 30-second rotation boundary were rejected
85-
- SSH Auth Method = Password failed against keyboard-interactive-only servers (#1005)
86-
- SSH connections requiring Google Authenticator failed with Password + TOTP (#1005)
87-
- Up arrow on first line and Down on last line failed at end-of-document caret
88-
- Caret at end of query lost its line-number color in the gutter
89-
- Cmd+Left/Right at the end of a line with no trailing newline did nothing (#1007)
40+
- iOS: silent timeout on `.local` and local-network addresses
41+
- iOS: row list "Index out of range" crash on shrink (#1094)
42+
- iOS: out-of-range port crash on MySQL, PostgreSQL, Redis (#1094)
43+
- IME editor jump after committing words like "测试" (#1012)
44+
- Cmd+T tab focus flash
45+
- Cmd+X with no selection now cuts the line (#1075)
46+
- Cmd+A on a query with a trailing newline (#1075)
47+
- Editor window size, position, and zoom across launches
48+
- Personal Apple Developer team builds (#1020)
49+
- SSH auth-failure alerts labelled the wrong cause (#1005)
50+
- TOTP codes rejected across rotation boundary
51+
- SSH Password against keyboard-interactive-only servers (#1005)
52+
- SSH Password + Google Authenticator (#1005)
53+
- Up/Down arrow at end-of-document caret
54+
- Caret line-number color in the gutter
55+
- Cmd+Left/Right at end of a line without a trailing newline (#1007)
9056
- Multi-window tab persistence dropped all but one tab on relaunch
91-
- Filter value autocomplete popover stole focus on Full Keyboard Access
92-
- Toolbar database name was empty after relaunch with a restored last-used database
93-
- Cmd+K database switch reverted in Cmd+T, query history, AI prompts, and tab-creation paths (#1043)
94-
- AI provider settings showed `unsupported URL` while editing a draft endpoint
57+
- Filter autocomplete focus on Full Keyboard Access
58+
- Toolbar database name on relaunch
59+
- Cmd+K database switch reverted in Cmd+T and other paths (#1043)
60+
- AI provider Test Connection showed `unsupported URL` on draft endpoint
61+
- Connection Form coordinator rebuilt on every parent re-render (#1102)
62+
- MongoDB SRV connection strings include the port (#1101)
63+
- AI Chat composer: IME, scroll bar, Shift+Return (#1100)
64+
- AI Chat tool roundtrip limit raised 5 → 10 (#1096)
65+
- AI Chat per-connection rules CloudKit sync (#1098)
66+
- AI Chat Retry button on non-recoverable errors
67+
- AI Chat code blocks without a language tag
68+
- AI Chat Insert button focus
69+
- MCP errors surface readable messages (#1095)
70+
- Data grid column header inset
71+
- Toolbar connection status left inset
9572

9673
## [0.38.0] - 2026-05-04
9774

TablePro.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2286,7 +2286,7 @@
22862286
CODE_SIGN_IDENTITY = "Apple Development";
22872287
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
22882288
CODE_SIGN_STYLE = Automatic;
2289-
CURRENT_PROJECT_VERSION = 77;
2289+
CURRENT_PROJECT_VERSION = 78;
22902290
DEAD_CODE_STRIPPING = YES;
22912291
DEVELOPMENT_TEAM = D7HJ5TFYCU;
22922292
ENABLE_APP_SANDBOX = NO;
@@ -2318,7 +2318,7 @@
23182318
);
23192319
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/Libs/dylibs";
23202320
MACOSX_DEPLOYMENT_TARGET = 14.0;
2321-
MARKETING_VERSION = 0.38.0;
2321+
MARKETING_VERSION = 0.39.0;
23222322
OTHER_LDFLAGS = (
23232323
"-Wl,-w",
23242324
"-force_load",
@@ -2363,7 +2363,7 @@
23632363
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
23642364
CODE_SIGN_STYLE = Automatic;
23652365
COPY_PHASE_STRIP = YES;
2366-
CURRENT_PROJECT_VERSION = 77;
2366+
CURRENT_PROJECT_VERSION = 78;
23672367
DEAD_CODE_STRIPPING = YES;
23682368
DEPLOYMENT_POSTPROCESSING = YES;
23692369
DEVELOPMENT_TEAM = D7HJ5TFYCU;
@@ -2396,7 +2396,7 @@
23962396
);
23972397
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/Libs/dylibs";
23982398
MACOSX_DEPLOYMENT_TARGET = 14.0;
2399-
MARKETING_VERSION = 0.38.0;
2399+
MARKETING_VERSION = 0.39.0;
24002400
OTHER_LDFLAGS = (
24012401
"-Wl,-w",
24022402
"-force_load",

docs/changelog.mdx

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@ description: "Product updates and announcements for TablePro"
44
rss: true
55
---
66

7-
<Update label="May 7, 2026" description="v0.39.0">
7+
<Update label="May 8, 2026" description="v0.39.0">
88
### New Features
99

10-
- **Linked SQL Folders**: Point TablePro at a folder of `.sql` files for two-way sync with Favorites. Edit in TablePro or your editor; changes flow both ways. Frontmatter sets `@name`, `@keyword`, and `@description`; save-time conflicts show a side-by-side diff. Free.
11-
- **Database Type Chooser**: New Connection now opens a categorised, searchable sheet listing every supported driver (Relational, Document, Key-Value, Analytical, Wide-Column, Cloud Native, Coordination & Config). Editing an existing connection skips the chooser
10+
- **AI Chat Tool Calling**: The assistant can look up your database on demand. Read-only tools (`list_tables`, `describe_table`, `get_table_ddl`, etc.) auto-run; write and destructive ops show inline approval pills (Run / Always for this connection / Cancel). Works with Anthropic, OpenAI, OpenRouter, Gemini, Ollama, GitHub Copilot, and custom OpenAI-compatible endpoints. Ask / Edit / Agent mode picker controls which tools the model sees. Safe mode still gates execution
11+
- **AI Chat `@` Mentions**: Attach Schema, a Table, the Current Query, recent Query Results, or a saved SQL query as chips. Type `@` in the composer or pick from the menu
12+
- **AI Chat Slash Commands**: Built-in `/explain`, `/optimize`, `/fix`, `/help`, plus user-defined commands in Settings -> AI -> Custom Slash Commands with `{{query}}`, `{{schema}}`, `{{database}}`, `{{body}}` placeholders
13+
- **AI Chat Per-Connection Rules**: Add custom guidance about table conventions, PII columns, and naming in the connection's AI Rules tab; the assistant sees it on every chat turn
14+
- **AI Chat Panel Redesign**: Composer-focused chat tab with inline model picker and per-turn model attribution
15+
- **Linked SQL Folders**: Point TablePro at a folder of `.sql` files for two-way sync with Favorites. Edit in TablePro or your editor; changes flow both ways. Frontmatter sets `@name`, `@keyword`, and `@description`; save-time conflicts show a side-by-side diff. Free
16+
- **Database Type Chooser**: New Connection opens a categorised, searchable sheet listing every supported driver (Relational, Document, Key-Value, Analytical, Wide-Column, Cloud Native, Coordination & Config)
1217
- **Free XLSX Export**: Excel export no longer requires Pro
1318
- **Free Safe Mode**: Touch ID, Full, and Read Only Safe Mode levels no longer require Pro
1419

@@ -19,7 +24,8 @@ rss: true
1924
- **Connection-Scoped Favorites**: Opening a second tab on the same connection no longer reloads the favorites tree or flashes a spinner. Selection persists across windows
2025
- **Connection Form Redesign**: Rebuilt around macOS HIG sidebar navigation (General, SSH Tunnel, SSL/TLS, Customization, Advanced). Cancel, Save, and Save & Connect live in the native window toolbar; Test Connection inline
2126
- **Connection URL Import**: Moved into the database type chooser; paste a URL there instead of inside the form
22-
- **HIG Polish**: Hero icons scale with system text size, search fields use native `NSSearchField`, validation banners use the standard warning convention, and form sheets switch to grouped Form layouts
27+
- **AI Chat Opt-In Context**: New installs no longer auto-include schema, current query, and query results in every prompt; attach via `@` when you want them. Existing users keep their current settings
28+
- **HIG Polish**: Hero icons scale with system text size, search fields use native `NSSearchField`, validation banners use the standard warning convention, form sheets switch to grouped Form layouts
2329
- **Native Windows**: Welcome, Connection Form, and Integrations Activity now use SwiftUI scenes, fixing an assertion crash and restoring Integrations Activity at next launch
2430
- **ER Diagram Accessibility**: Diagram nodes scale with system text size
2531
- **Terminology**: "Read-Only" / "Read-Write" renamed to "Read Only" / "Read & Write" to match macOS HIG
@@ -29,8 +35,15 @@ rss: true
2935
- **Schema Switching on SQL Server / Oracle**: Cmd+K Quick Switcher schema selection no longer silently ignored
3036
- **iOS MySQL Crash**: Fixed `EXC_BREAKPOINT` when opening some MySQL tables
3137
- **iOS Local Network**: Connections to `.local` hostnames and local-network addresses (10.x, 192.168.x, link-local, IPv6 ULA) no longer time out silently
38+
- **iOS Row List Crash**: Data browser and query result lists no longer crash with "Index out of range" when rows shrink mid-update (#1094)
39+
- **iOS Port Validation**: Out-of-range port for MySQL, PostgreSQL, or Redis reports a readable error instead of crashing (#1094)
3240
- **MariaDB Install Prompt**: New connection chooser no longer falsely prompts to install built-in lazy drivers
3341
- **IME Editor Jump**: SQL editor no longer jumps to the end after committing Chinese, Japanese, or Korean words like "测试" (#1012)
42+
- **MongoDB SRV Port**: Connection strings strip the port from the host per the URI spec (#1101)
43+
- **Cmd+T Focus Flash**: New tabs no longer flash focus back to the previous tab
44+
- **Cmd+X No Selection**: Cuts the current line, matching VS Code, Sublime, and Xcode (#1075)
45+
- **Cmd+A Trailing Newline**: Selecting all on a query ending with a newline highlights every line (#1075)
46+
- **Editor Window State**: Windows remember size, position, and zoom across launches
3447
- **Personal Team Builds**: External-contributor builds on personal Apple Developer teams now work without an iCloud entitlement (#1020)
3548
- **SSH Auth Errors**: Auth-failure alerts now point at the actual cause (wrong password, wrong verification code, rejected key) (#1005)
3649
- **TOTP Rotation**: Codes that crossed a 30-second rotation boundary are no longer rejected
@@ -43,7 +56,15 @@ rss: true
4356
- **Toolbar Database Name**: No longer empty after relaunch when the last-used database is restored
4457
- **Cmd+K Database Switch**: Switching databases no longer reverts in Cmd+T, query history, AI prompts, or several tab-creation paths (#1043)
4558
- **AI Provider Test**: No longer shows `unsupported URL` while editing a draft endpoint
46-
- **Data Grid Header Inset**: Column headers now align with result-cell horizontal inset
59+
- **Connection Form Coordinator**: No longer rebuilds on every parent re-render (#1102)
60+
- **AI Chat Composer**: IME safety, visible scroll bar, and Shift+Return for newline (#1100)
61+
- **AI Chat Tool Limit**: Roundtrip limit raised from 5 to 10 (#1096)
62+
- **AI Chat Rules Persistence**: Per-connection rules persist through `StoredConnection` and CloudKit sync (#1098)
63+
- **AI Chat Retry Button**: Hidden for non-recoverable errors (auth failure, deprecated model, invalid endpoint)
64+
- **AI Chat Code Blocks**: Render with syntax highlighting and Insert even when the language tag is missing
65+
- **AI Chat Insert**: Stays enabled when the chat panel has focus instead of the editor
66+
- **MCP Errors**: Surface a readable message via `LocalizedError` (#1095)
67+
- **Data Grid Header Inset**: Column headers align with result-cell horizontal inset
4768
- **Toolbar Status Inset**: Connection status keeps its left inset when no connection tag is shown
4869
</Update>
4970

0 commit comments

Comments
 (0)