Skip to content

Commit 971369f

Browse files
Update appcast.xml for v0.17.0
1 parent 51df28c commit 971369f

File tree

1 file changed

+98
-22
lines changed

1 file changed

+98
-22
lines changed

appcast.xml

Lines changed: 98 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,112 @@
33
<channel>
44
<title>TablePro</title>
55
<item>
6-
<title>0.16.1</title>
7-
<pubDate>Mon, 09 Mar 2026 16:52:20 +0000</pubDate>
8-
<sparkle:version>30</sparkle:version>
9-
<sparkle:shortVersionString>0.16.1</sparkle:shortVersionString>
6+
<title>0.17.0</title>
7+
<pubDate>Wed, 11 Mar 2026 05:20:22 +0000</pubDate>
8+
<sparkle:version>31</sparkle:version>
9+
<sparkle:shortVersionString>0.17.0</sparkle:shortVersionString>
1010
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
11-
<description><![CDATA[<body style="font-family: -apple-system, sans-serif; font-size: 13px; padding: 8px;"><h3>Fixed</h3>
11+
<description><![CDATA[<body style="font-family: -apple-system, sans-serif; font-size: 13px; padding: 8px;"><h3>Added</h3>
1212
<ul>
13-
<li>Stale filter causing repeated errors when restoring tabs after schema/database switch (#237)</li>
14-
<li>Sidebar showing old tables during database/schema switch instead of loading state</li>
15-
<li>Sidebar search field disappearing when no tables match filter on macOS 15 and earlier (#235)</li>
16-
<li>Disabled plugin database types still appearing in connection form picker</li>
17-
<li>Main window not closing before reopening welcome screen on connection failure</li>
13+
<li>DuckDB database support — connect to `.duckdb` files, query CSV/Parquet/JSON files via SQL, schema navigation, and DuckDB extension management</li>
14+
<li>MongoDB configurable auth database (`authSource`) — authenticate against any database instead of hardcoded `admin`</li>
15+
</ul>
16+
<h3>Fixed</h3>
17+
<ul>
18+
<li>MongoDB Read Preference, Write Concern, and Redis Database not persisted across app restarts</li>
19+
<li>Result truncation at 100K rows now reported to UI via `PluginQueryResult.isTruncated` instead of being silently discarded</li>
20+
<li>DELETE and UPDATE queries using all columns in WHERE clause instead of just the primary key for PostgreSQL, Redshift, MSSQL, and ClickHouse</li>
21+
<li>SSL/TLS always being enabled for MongoDB, Redis, and ClickHouse connections due to case mismatch in SSL mode string comparison (#249)</li>
22+
<li>Redis sidebar click showing data briefly then going empty due to double-navigation race condition (#251)</li>
23+
<li>MongoDB showing "Invalid database name: ''" when connecting without a database name</li>
24+
</ul>
25+
<h3>Changed</h3>
26+
<ul>
27+
<li>Namespaced `disabledPlugins` UserDefaults key to `com.TablePro.disabledPlugins` with automatic migration</li>
28+
<li>Removed unused plugin capability types (sqlDialect, aiProvider, cellRenderer, sidebarPanel)</li>
29+
<li>SQLite driver extracted from built-in bundle to downloadable plugin, reducing app size</li>
30+
<li>Unified error formatting across all database drivers via default `PluginDriverError.errorDescription`, removing 10 per-driver implementations</li>
31+
<li>Standardized async bridging: 5 queue-based drivers (MySQL, PostgreSQL, MongoDB, Redis, MSSQL) now use shared `pluginDispatchAsync` helper</li>
32+
<li>Added localization to remaining driver error messages (MySQL, PostgreSQL, ClickHouse, Oracle, Redis, MongoDB)</li>
33+
<li>NoSQL query building moved from Core to MongoDB/Redis plugins via optional `PluginDatabaseDriver` protocol methods</li>
34+
<li>Standardized parameter binding across all database drivers with improved default escaping (type-aware numeric handling, NUL byte stripping, NULL literal support)</li>
35+
</ul>
36+
<h3>Added</h3>
37+
<ul>
38+
<li>Open SQLite database files directly from Finder by double-clicking `.sqlite`, `.sqlite3`, `.db3`, `.s3db`, `.sl3`, and `.sqlitedb` files (#262)</li>
39+
<li>Export plugin options (CSV, XLSX, JSON, SQL, MQL) now persist across app restarts</li>
40+
<li>Plugins can declare settings views rendered in Settings > Plugins</li>
41+
<li>True prepared statements for MSSQL (`sp_executesql`) and ClickHouse (HTTP query parameters), eliminating string interpolation for parameterized queries</li>
42+
<li>Batch query operations for MSSQL, Oracle, and ClickHouse, eliminating N+1 query patterns for column, foreign key, and database metadata fetching; SQLite adds a batched `fetchAllForeignKeys` override within PRAGMA limitations</li>
43+
<li>`PluginDriverError` protocol in TableProPluginKit for structured error reporting from driver plugins, with richer connection error messages showing error codes and SQL states</li>
44+
<li>`pluginDispatchAsync` concurrency helper in TableProPluginKit for standardized async bridging in plugins</li>
45+
<li>Shared `PluginRowLimits` constant in TableProPluginKit with 100K row default, enforced across all 8 driver plugins (ClickHouse, MSSQL, Oracle previously had no cap)</li>
46+
<li>`driverVariant(for:)` method on `DriverPlugin` protocol for dynamic multi-type plugin dispatch, replacing hardcoded variant mapping</li>
47+
<li>Safe mode levels: per-connection setting with 6 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 for stricter levels</li>
48+
<li>Preview tabs: single-click opens a temporary preview tab, double-click or editing promotes it to a permanent tab</li>
49+
<li>Import plugin system: SQL import extracted into a `.tableplugin` bundle, matching the export plugin architecture</li>
50+
<li>`ImportFormatPlugin` protocol in TableProPluginKit for building custom import format plugins</li>
51+
<li>SQLImportPlugin as the first import format plugin (SQL files and .gz compressed SQL)</li>
52+
<li>Oracle and ClickHouse shipped as downloadable plugins, reducing app bundle size for most users</li>
53+
<li>Plugin install prompt when connecting to a database whose driver plugin is not installed</li>
54+
<li>`databaseTypeIds` field on registry plugins for mapping registry entries to database types</li>
55+
<li>`build-plugin.sh` script and `build-plugin.yml` CI workflow for building standalone plugin releases</li>
1856
</ul></body>]]></description>
19-
<enclosure url="https://github.com/datlechin/TablePro/releases/download/v0.16.1/TablePro-0.16.1-arm64.zip" length="35818583" type="application/octet-stream" sparkle:edSignature="b5zP9os/ys6eWXw6RK+CNjH98IozCJ11NXgZ/E/Z0yCpy5GPc4wG2OlOWxXnxydM8OpyJ8ZOHKMff1naIhrGCQ==" sparkle:architectures="arm64"/>
57+
<enclosure url="https://github.com/datlechin/TablePro/releases/download/v0.17.0/TablePro-0.17.0-arm64.zip" length="25460981" type="application/octet-stream" sparkle:edSignature="svDu0QE+5MRTkL8rbpMQhbaGEmwbE90ObgXQDQgJm0Cjr8nsG+yZ1yFRcB4/BzdwEwyX0/YYT6DNzF25/oQeCQ==" sparkle:architectures="arm64"/>
2058
</item>
2159
<item>
22-
<title>0.16.1</title>
23-
<pubDate>Mon, 09 Mar 2026 16:52:20 +0000</pubDate>
24-
<sparkle:version>30</sparkle:version>
25-
<sparkle:shortVersionString>0.16.1</sparkle:shortVersionString>
60+
<title>0.17.0</title>
61+
<pubDate>Wed, 11 Mar 2026 05:20:22 +0000</pubDate>
62+
<sparkle:version>31</sparkle:version>
63+
<sparkle:shortVersionString>0.17.0</sparkle:shortVersionString>
2664
<sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
27-
<description><![CDATA[<body style="font-family: -apple-system, sans-serif; font-size: 13px; padding: 8px;"><h3>Fixed</h3>
65+
<description><![CDATA[<body style="font-family: -apple-system, sans-serif; font-size: 13px; padding: 8px;"><h3>Added</h3>
66+
<ul>
67+
<li>DuckDB database support — connect to `.duckdb` files, query CSV/Parquet/JSON files via SQL, schema navigation, and DuckDB extension management</li>
68+
<li>MongoDB configurable auth database (`authSource`) — authenticate against any database instead of hardcoded `admin`</li>
69+
</ul>
70+
<h3>Fixed</h3>
71+
<ul>
72+
<li>MongoDB Read Preference, Write Concern, and Redis Database not persisted across app restarts</li>
73+
<li>Result truncation at 100K rows now reported to UI via `PluginQueryResult.isTruncated` instead of being silently discarded</li>
74+
<li>DELETE and UPDATE queries using all columns in WHERE clause instead of just the primary key for PostgreSQL, Redshift, MSSQL, and ClickHouse</li>
75+
<li>SSL/TLS always being enabled for MongoDB, Redis, and ClickHouse connections due to case mismatch in SSL mode string comparison (#249)</li>
76+
<li>Redis sidebar click showing data briefly then going empty due to double-navigation race condition (#251)</li>
77+
<li>MongoDB showing "Invalid database name: ''" when connecting without a database name</li>
78+
</ul>
79+
<h3>Changed</h3>
80+
<ul>
81+
<li>Namespaced `disabledPlugins` UserDefaults key to `com.TablePro.disabledPlugins` with automatic migration</li>
82+
<li>Removed unused plugin capability types (sqlDialect, aiProvider, cellRenderer, sidebarPanel)</li>
83+
<li>SQLite driver extracted from built-in bundle to downloadable plugin, reducing app size</li>
84+
<li>Unified error formatting across all database drivers via default `PluginDriverError.errorDescription`, removing 10 per-driver implementations</li>
85+
<li>Standardized async bridging: 5 queue-based drivers (MySQL, PostgreSQL, MongoDB, Redis, MSSQL) now use shared `pluginDispatchAsync` helper</li>
86+
<li>Added localization to remaining driver error messages (MySQL, PostgreSQL, ClickHouse, Oracle, Redis, MongoDB)</li>
87+
<li>NoSQL query building moved from Core to MongoDB/Redis plugins via optional `PluginDatabaseDriver` protocol methods</li>
88+
<li>Standardized parameter binding across all database drivers with improved default escaping (type-aware numeric handling, NUL byte stripping, NULL literal support)</li>
89+
</ul>
90+
<h3>Added</h3>
2891
<ul>
29-
<li>Stale filter causing repeated errors when restoring tabs after schema/database switch (#237)</li>
30-
<li>Sidebar showing old tables during database/schema switch instead of loading state</li>
31-
<li>Sidebar search field disappearing when no tables match filter on macOS 15 and earlier (#235)</li>
32-
<li>Disabled plugin database types still appearing in connection form picker</li>
33-
<li>Main window not closing before reopening welcome screen on connection failure</li>
92+
<li>Open SQLite database files directly from Finder by double-clicking `.sqlite`, `.sqlite3`, `.db3`, `.s3db`, `.sl3`, and `.sqlitedb` files (#262)</li>
93+
<li>Export plugin options (CSV, XLSX, JSON, SQL, MQL) now persist across app restarts</li>
94+
<li>Plugins can declare settings views rendered in Settings > Plugins</li>
95+
<li>True prepared statements for MSSQL (`sp_executesql`) and ClickHouse (HTTP query parameters), eliminating string interpolation for parameterized queries</li>
96+
<li>Batch query operations for MSSQL, Oracle, and ClickHouse, eliminating N+1 query patterns for column, foreign key, and database metadata fetching; SQLite adds a batched `fetchAllForeignKeys` override within PRAGMA limitations</li>
97+
<li>`PluginDriverError` protocol in TableProPluginKit for structured error reporting from driver plugins, with richer connection error messages showing error codes and SQL states</li>
98+
<li>`pluginDispatchAsync` concurrency helper in TableProPluginKit for standardized async bridging in plugins</li>
99+
<li>Shared `PluginRowLimits` constant in TableProPluginKit with 100K row default, enforced across all 8 driver plugins (ClickHouse, MSSQL, Oracle previously had no cap)</li>
100+
<li>`driverVariant(for:)` method on `DriverPlugin` protocol for dynamic multi-type plugin dispatch, replacing hardcoded variant mapping</li>
101+
<li>Safe mode levels: per-connection setting with 6 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 for stricter levels</li>
102+
<li>Preview tabs: single-click opens a temporary preview tab, double-click or editing promotes it to a permanent tab</li>
103+
<li>Import plugin system: SQL import extracted into a `.tableplugin` bundle, matching the export plugin architecture</li>
104+
<li>`ImportFormatPlugin` protocol in TableProPluginKit for building custom import format plugins</li>
105+
<li>SQLImportPlugin as the first import format plugin (SQL files and .gz compressed SQL)</li>
106+
<li>Oracle and ClickHouse shipped as downloadable plugins, reducing app bundle size for most users</li>
107+
<li>Plugin install prompt when connecting to a database whose driver plugin is not installed</li>
108+
<li>`databaseTypeIds` field on registry plugins for mapping registry entries to database types</li>
109+
<li>`build-plugin.sh` script and `build-plugin.yml` CI workflow for building standalone plugin releases</li>
34110
</ul></body>]]></description>
35-
<enclosure url="https://github.com/datlechin/TablePro/releases/download/v0.16.1/TablePro-0.16.1-x86_64.zip" length="33499093" type="application/octet-stream" sparkle:edSignature="6YC45YB55IA2gLH97finb649p13iWzy4qfQV2IH4VMrWq+1w4pHleQPZkUAJEGIfnh8GzcasgXHal6Hj/oSfDQ==" sparkle:architectures="x86_64"/>
111+
<enclosure url="https://github.com/datlechin/TablePro/releases/download/v0.17.0/TablePro-0.17.0-x86_64.zip" length="22699103" type="application/octet-stream" sparkle:edSignature="FhP3/UeBfWnZ0UoSCTXLPlTyN+uy4m68n5MX4eEwgQJRhAqWni76M7FD57NYwu1UYY8XaXNLWhD+QCjaYWT9CQ==" sparkle:architectures="x86_64"/>
36112
</item>
37113
</channel>
38114
</rss>

0 commit comments

Comments
 (0)