Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
8a9ed73
feat(datagrid): highlight rules that color rows or cells by value (#2…
datlechin Sep 11, 2026
6189396
fix(plugin-postgresql): read SQLSTATE from the right libpq field (#2739)
datlechin Sep 11, 2026
3b9a51a
fix(plugin-mysql): set the session character set on connect and decod…
datlechin Sep 11, 2026
e163916
feat(plugin-mysql): add OceanBase MySQL-mode connection type
cursoragent Sep 11, 2026
432ea60
fix(plugin-postgresql): pin client_encoding to UTF8 in the startup pa…
datlechin Sep 11, 2026
5327a06
fix(plugin-mysql): spell OceanBase binary literals as MySQL bit-strings
J2TeamNNL Sep 11, 2026
b2f02e3
fix(ios): set the MySQL session character set on iPhone and decode re…
datlechin Sep 11, 2026
af1c60e
ci(plugin-mysql): retrigger macOS tests after XcodeGen checksum flake
J2TeamNNL Sep 11, 2026
9aa90bd
fix(datagrid): draw the data grid in the theme's own colors (#2745)
datlechin Sep 11, 2026
33b8e8c
fix(export): report a restore into an older PostgreSQL server as comp…
datlechin Sep 11, 2026
dedfe65
fix(plugin-mysql): replay a statement across a dropped connection onl…
datlechin Sep 11, 2026
30eb207
fix(datagrid): carry every per-table setting through a rename and a c…
datlechin Sep 11, 2026
5ebe4a8
fix(plugin-postgresql): read column comments for every relation kind …
datlechin Sep 11, 2026
7f128f4
Merge remote-tracking branch 'origin/main' into pr-2741-oceanbase
datlechin Sep 11, 2026
3bb83f1
fix(plugins): decode every SQL import chunk in the file's own encodin…
datlechin Sep 11, 2026
fb89978
fix(datagrid): keep the value-filtered display order stable across a …
datlechin Sep 11, 2026
a399adb
docs(changelog): scope the foreign key label fix to engines with a sc…
datlechin Sep 11, 2026
cc37e8f
feat(plugins): refresh materialized views, show view DDL and edit obj…
datlechin Sep 11, 2026
2751c60
fix(plugin-mysql): take the open transaction from the server and hold…
datlechin Sep 11, 2026
42903a7
fix(plugin-postgresql): end COPY state so the connection stays usable…
datlechin Sep 11, 2026
ba311ae
fix(plugins): decode ClickHouse values per column and N-prefix SQL Se…
datlechin Sep 11, 2026
c0fe860
refactor(plugin-mysql): identify OceanBase by its version comment and…
datlechin Sep 12, 2026
e98fb5f
fix(plugin-postgresql): pair composite foreign-key columns by positio…
datlechin Sep 12, 2026
586e622
fix(plugin-postgresql): force standard_conforming_strings on every se…
datlechin Sep 12, 2026
c015a0e
fix(datagrid): key pending edits by row identity instead of display p…
datlechin Sep 12, 2026
2c62b15
feat(datagrid): mark a pending change on the value, not only behind i…
datlechin Sep 12, 2026
b5d7bdb
test(storage): stop the preference key guard flagging dictionary and …
datlechin Sep 12, 2026
4d8daca
fix(plugin-mssql): write every SQL Server string literal the app buil…
datlechin Sep 12, 2026
49b3ee8
fix(plugin-mssql): send a binary parameter as binary and keep a brack…
datlechin Sep 12, 2026
0b0720c
fix(plugin-postgresql): support PostgreSQL 9.1 and later in catalog r…
datlechin Sep 12, 2026
5bb3af6
fix: follow the PostgreSQL server version in the dashboard, backup, p…
datlechin Sep 12, 2026
b700347
fix(plugin-postgresql): detect a lost connection from libpq, not the …
datlechin Sep 12, 2026
af95320
fix(plugin-postgresql): generate DDL older PostgreSQL servers accept …
datlechin Sep 12, 2026
01ee1ba
fix(plugin-postgresql): read materialized view columns in the structu…
datlechin Sep 12, 2026
3d69ab5
refactor(settings)!: rebuild the theme engine on a slot registry with…
datlechin Sep 12, 2026
3b339f0
fix(plugin-clickhouse): keep binary values through export, object cop…
datlechin Sep 12, 2026
66e56b3
fix(plugin-postgresql): write table and column comments into SQL expo…
datlechin Sep 12, 2026
006fffb
fix(plugin-cockroach): read DDL and indexes from the object's own sch…
datlechin Sep 12, 2026
242b76e
fix(plugin-postgresql): quote every catalog literal so a backslash ca…
datlechin Sep 12, 2026
f626098
feat(plugin-weaviate): add Weaviate REST driver (#2742)
J2TeamNNL Sep 12, 2026
5c175dd
fix(plugin-mysql): apply the query timeout to OceanBase statements th…
datlechin Sep 12, 2026
3f39ea9
Merge remote-tracking branch 'origin/main' into pr-2741-oceanbase
datlechin Sep 12, 2026
72b735a
test(datagrid): give the pending-change palette the boolean colors it…
datlechin Sep 12, 2026
3837a73
test(plugins): count OceanBase in the built-in database types
datlechin Sep 12, 2026
3a837d6
fix(sidebar): offer maintenance only where it applies and preview the…
datlechin Sep 12, 2026
7bd3a06
fix(datagrid): offer only the structure edits an object's kind accept…
datlechin Sep 12, 2026
7d44702
docs(weaviate): name the filter operators the way the filtering page …
datlechin Sep 12, 2026
ac96638
feat(settings): theme the content panes outside the editor and the da…
datlechin Sep 12, 2026
d4273f6
fix(ios): share PostgreSQL catalog quoting with the iOS driver
J2TeamNNL Sep 12, 2026
09530ed
build(ios): compile the PostgreSQL literal quoting the shared foreign…
datlechin Sep 12, 2026
bd0aa8c
merge(main): bring maintenance descriptors and later main into OceanBase
J2TeamNNL Sep 12, 2026
4376381
fix(datagrid): clip the row-number strip to the grid's scroll view (#…
datlechin Sep 12, 2026
27e570f
docs(claude-md): record that NSAppearance is the only native lever a …
datlechin Sep 12, 2026
e5e0e36
fix(hig): show the whole statement in the query confirmation dialog (…
datlechin Sep 12, 2026
a075464
merge(main): pick up iOS PostgreSQL quoting, grid clip, and confirmat…
J2TeamNNL Sep 12, 2026
697150a
test(plugins): pin Weaviate PluginKit to current ABI and theme-colore…
J2TeamNNL Sep 12, 2026
fe1b97f
fix(ios): keep shared catalog quoting off the iOS main actor
J2TeamNNL Sep 12, 2026
81597db
test(settings): scroll the Editor pane to the Vim mode toggle
J2TeamNNL Sep 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions .github/plugin-registry.json
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,20 @@
"category": "database-driver",
"homepage": "https://docs.tablepro.app/databases/typesense"
},
"weaviate": {
"target": "WeaviateDriverPlugin",
"bundleName": "WeaviateDriverPlugin",
"bundleId": "com.TablePro.WeaviateDriverPlugin",
"bundled": false,
"displayName": "Weaviate Driver",
"summary": "Weaviate driver over the REST API with a GraphQL console",
"databaseTypeIds": [
"Weaviate"
],
"icon": "weaviate-icon",
"category": "database-driver",
"homepage": "https://docs.tablepro.app/databases/weaviate"
},
"xlsx": {
"target": "XLSXExport",
"bundleName": "XLSXExport",
Expand Down
133 changes: 132 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- OceanBase MySQL-mode connection type. (#1748)
- Strikethrough on a row queued for deletion, and an underline on a new row or an edited value.
- Google Cloud Spanner as a registry plugin over the REST API. (#1226, #2480)
- Weaviate as a registry REST plugin, collections as tables. (#1724)
- TiDB and Databend connection types on the MySQL driver. (#1066, #2514)
- Empty state in the inspector and the assistant for a connection that is not up.
- **Check connections** in Settings > General, including Only when I use the connection. (#2700)
Expand All @@ -20,9 +23,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Remove Invisible Characters** in the Query menu. (#2717)
- **Show invisible characters** in Settings > Editor. (#2717)
- Warnings in the SQL editor for full-width punctuation, curly quotes and non-ASCII spaces. (#2717)
- Highlight rules that color data grid rows or cells by value. (#2723)
- **Encoding** option for MySQL and MariaDB connections, with **UTF-8 via Latin 1** for databases written through a Latin 1 client. (#2725)
- Header, grid line, selection and focus colors in the theme editor.
- Themes that name a system color for a slot, so the built-in themes keep the system's own contrast settings.
- Reason shown in Settings > Appearance for a theme file that could not be loaded.
- Panel and status colors in the theme editor, covering the results, inspector, structure, compare and query plan panes.
- **Refresh Materialized View…** on PostgreSQL, with a concurrent refresh where the view qualifies. (#2726)
- **Show DDL** and **Copy DDL** for views and materialized views. (#2726)
- **Edit Comment…** for PostgreSQL tables, views, materialized views and foreign tables. (#2726)
- UTF-16 LE, UTF-16 BE and Windows-1252 in the SQL import encoding menu.

### Changed

- Query confirmation shows the statement syntax highlighted and scrollable, with **Copy All** and the name of whatever asked to run it. (#2759)
- 5 MB smaller app bundle.
- 7 MB smaller DMG download.
- Connect progress reads as a labelled bar, with a step named only where the app is waiting on something outside itself.
Expand All @@ -32,22 +46,87 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Open Project Folder… in File > Import.
- First-launch tour replaced by a one-page welcome sheet, shown again from Help > Getting Started.
- Beancount connections held at Safe Mode Read-Only. (#2030)
- MySQL sessions on the server's default `utf8mb4` collation.
- Theme file format 2. Themes written for earlier versions are not read and need to be recreated.
- Editor Font and Data Grid Font moved to Settings > Editor and Settings > Data & Results, and kept per Mac.
- Editor font size range of 10 to 24 points everywhere, including zoom.
- Structure editor options the connected PostgreSQL server does not support left out: generated columns before 12, BRIN before 9.5, and the MySQL-only FULLTEXT and SPATIAL index types.
- Structure tab read-only on a view, a materialized view, a foreign table or a system table outside PostgreSQL. (#2726)

### Removed

- Focus Border color in the theme editor.
- Interface, Sidebar and Toolbar color groups from the theme editor and the theme file.
- Fonts from the theme file.

### Fixed

- Query confirmation dialog cut to the first 200 characters of the statement. (#2759)
- Statement folded onto one line and cut at 400 characters in an MCP client's approval prompt.
- Blank line under "Are you sure you want to execute this query?" when confirming a rename.
- Row numbers and their divider painted over the find bar, the filter panel and the result tab bar.
- iOS PostgreSQL foreign-key listing after catalog quoting moved to the shared helper. (#2726)
- iOS MySQL driver after maintenance operations moved to a shared helper.
- Empty Columns tab and no autocomplete for PostgreSQL materialized views. (#2726)
- Discard restoring a different row than the one edited under a column value filter.
- Add Row under a column value filter selecting and opening the wrong row for editing.
- Data grid ignoring the theme's background, text, alternate row, NULL, boolean and row number colors.
- Interface, Sidebar and Toolbar colors having no effect anywhere in the app.
- Line Number color having no effect on the editor gutter.
- Default Light used for the dark theme when the chosen dark theme could not be loaded.
- Editor zoom lost on the next appearance or theme change.
- DDL, trigger and SQL import previews keeping the previous theme's colors.
- Query history preview ignoring the theme and the editor font.
- Theme editor changing the active theme instead of the theme selected for the slot being edited.
- Malformed theme files loading as Default Light under their own name.
- Content panes outside the editor and the data grid ignoring the theme.
- JSON and PHP tree values colored differently from the same values in the row inspector.
- Autocomplete icon colors ignoring the theme.
- Color with a typo in it rendering as a different color instead of being reported.
- Text past the first 64 KB of a UTF-16 SQL import arriving byte-swapped.
- SQL import failing on a file whose encoding is not UTF-8 when a character lands on a 64 KB boundary.
- Garbled non-Latin text saved from iPhone and iPad to MySQL servers that force a Latin 1 session. (#2725)
- **Encoding** ignored on iPhone and iPad by a MySQL connection synced from the Mac. (#2725)
- Binary MySQL columns shown as text on iPhone and iPad, and searched with `LIKE`.
- Crash opening a MySQL result whose column has no name on iPhone and iPad.
- Wrong SQLSTATE code in PostgreSQL, Redshift, CockroachDB and PGlite error messages.
- Read-only write explanation never shown on PostgreSQL servers.
- Trigger editing and the New Trigger template failing on PostgreSQL 13 and earlier.
- Reindexing a whole PostgreSQL database failing before PostgreSQL 16.
- Schema copy, check constraint rename, column reorder and role editing failing on older PostgreSQL servers.
- FULLTEXT and SPATIAL index types creating a plain B-tree index on PostgreSQL.
- Table list, foreign keys, triggers, check constraints, types and grants failing on PostgreSQL 9.1 to 9.5. (#2734)
- Wrong index column order on PostgreSQL 9.4 and earlier.
- Sequences missing from SQL dumps of PostgreSQL 9.6 and earlier.
- Create Database failing on PostgreSQL 9.6 and earlier.
- PostgreSQL unique and primary key indexes shown as plain indexes.
- PostgreSQL triggers shown as disabled.
- PostgreSQL `NOT VALID` check constraints shown as validated.
- Redshift `DISTKEY` missing from a table's indexes.
- `CYCLE` dropped from PostgreSQL sequences in SQL dumps.
- PostgreSQL index columns and enum labels containing a comma or a space split apart.
- Foreign keys to a partitioned table listed once per partition on PostgreSQL 12 and later.
- PostGIS values left as hex after switching schema.
- Open transaction aborted when a PostGIS value could not be converted.
- PostgreSQL all-tables metadata failing for a mixed-case table name.
- Default PostgreSQL schema taken from the schema list rather than the search path.
- Safe Mode minimum from a configuration profile missing from the toolbar, the Database menu and the connection form. (#2030)
- PostgreSQL connection hanging after running `COPY FROM STDIN` or `COPY TO STDOUT` in the query editor and on iOS.
- Table, view and column comments missing from a PostgreSQL SQL export. (#2726)
- Stop not ending queries on MySQL and MariaDB servers without TLS.
- Wrong results after MySQL retakes a dropped connection, on a session that had set a variable, a session setting or a database.
- Session state set by the `/*! ... */` statements a MySQL dump writes counting as a comment.
- Users & Roles failing, Stop not ending queries and sequences listed as tables on TiDB servers opened as MySQL.
- Update release notes show all changes for the offered version, with new features before fixes and properly formatted Markdown. The full changelog is also available from Help and Software Update settings.
- Blank welcome window list when a search matched nothing and a favorite existed.
- Welcome window reading No Connections while a tag filter hid every connection.
- Favorited connection inside a group listed twice on the welcome window.
- Missing red wash on a row deleted together with a new, unsaved row.
- Welcome window tag filter stuck on a tag no connection carries any more, hiding every connection.
- Collapsing every group on the welcome window undone at the next launch.
- Linked Folders and Team Library connections ignoring the welcome window search, with no context menu.
- Dragging a connection in filtered welcome window results snapping back without moving it.
- Welcome window context menu leaving linked connections out of a mixed selection.

- Idle metadata connections held open for the life of the app, up to six per connection. (#2700)
- MongoDB connections reading as healthy after the server went away. (#2700)
- Password prompt raised by a background reconnect, on whichever window was in front. (#2700)
Expand Down Expand Up @@ -121,10 +200,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Line and paragraph separators (U+2028, U+2029) shown as line breaks the database does not see. (#2717)
- Stop on Cloudflare D1, libSQL and Trino cancelling a sidebar read instead of the running query.
- Numeric-looking filter values sent unquoted to text columns when a table first opens or after a foreign key jump.
- Missing column comments on PostgreSQL views, partitioned tables and foreign tables, and missing identity and generated flags on partitioned and foreign tables.
- Wrong primary key columns when another table reuses the key's constraint name on PostgreSQL and Redshift.
- Restore reported as failed after a complete restore into a PostgreSQL server older than `pg_restore`.
- Garbled non-Latin text saved to MySQL and MariaDB servers that force a Latin 1 session. (#2725)
- Garbled non-Latin text when restoring a MySQL or MariaDB SQL export through a Latin 1 client. (#2725)
- Curly quotes, € and other Windows-1252 symbols shown as invisible characters after `SET NAMES latin1`.
- `Illegal mix of collations` comparing a column with a user variable on MySQL 8.
- GEOMETRY values from a parameterized MySQL query shown as raw bytes.
- Earlier row's text repeated in later rows of a parameterized MySQL query once a value passed 64 KB.
- Wrong row deleted or updated after an edit took a row out of a column value filter.
- Garbled non-ASCII text on PostgreSQL databases not encoded in UTF-8 after `RESET ALL` or `DISCARD ALL`.
- Garbled or double-encoded non-ASCII text on iOS with PostgreSQL databases not encoded in UTF-8.
- Garbled non-ASCII text when restoring a PostgreSQL SQL export into a database not encoded in UTF-8.
- Display As formats and foreign key labels lost on a rename, and kept with column layouts after deleting a connection.
- Composite foreign keys listing mismatched column pairs on iOS, CockroachDB and Redshift.
- Foreign keys missing on iOS for a PostgreSQL role that does not own the table.
- Redshift foreign keys from other schemas shown on a table.
- PostgreSQL view definitions without `security_barrier`, `security_invoker` or the check option. (#2726)
- PostgreSQL view definitions that bind to another schema's tables when run elsewhere. (#2726)
- `CREATE TABLE` in Structure > DDL for a PostgreSQL view or materialized view. (#2726)
- **Edit View Definition** in the Database menu opening a same-named view from the browsed schema. (#2726)
- **Edit View Definition** enabled in the Database menu on a read-only connection. (#2726)
- Enum types and sequences written in front of a PostgreSQL view's DDL. (#2726)
- Display As formats lost on a rename, and kept with column layouts after deleting a connection.
- Garbled ClickHouse text whenever another value in the same result held binary data.
- Carriage returns, quotes, NUL bytes and Enum type names shown with backslash escapes on ClickHouse.
- Edits and deletes matching no row on ClickHouse tables with a binary value in the row.
- Binary ClickHouse values written as replacement characters by an export, an object copy and a compare. (#2725)
- ClickHouse export with a **Row limit** failing with a syntax error. (#2725)
- Non-ASCII SQL Server filter values turned into `?` and matching the wrong rows on non-Unicode collations.
- Empty structure, missing indexes and failed renames for non-ASCII SQL Server object names on non-Unicode collations.
- Changing a defaulted SQL Server column failing when a name contains a quote or non-ASCII text.
- CockroachDB DDL, view definition and index reads ignoring the schema of an object outside the current schema. (#2726)
- Silent replay of a PostgreSQL statement on a new connection after a drop, a lost `COMMIT` reported as saved included.
- Query timeout and startup commands missing after the PostgreSQL driver reconnected on its own.
- Server Dashboard sessions, metrics and slow queries failing on PostgreSQL 9.6 and earlier.
- One unanswered metric emptying the whole Server Dashboard metrics panel on PostgreSQL, Redshift and CockroachDB.
- MCP `get_server_dashboard` reporting a panel the server could not read as an empty list.
- Backup and restore failing on PostgreSQL 9.1 when the `pg_dump` or `pg_restore` found first is version 15 or later.
- Missing execution time in query plans on PostgreSQL 9.3 and earlier.
- Cross-engine copy and JSON import creating `jsonb` columns on PostgreSQL 9.3 and earlier.
- SQL Server edits and deletes matching no row when the row is identified by a binary column.
- SQL Server parameters sent to the wrong placeholders when a column name holds a question mark.
- Maintenance offered on views and sequences, where the server skips or refuses it. (#2726)
- Maintenance running against a same-named object in another schema. (#2726)
- Maintenance SQL preview showing a statement the app never runs. (#2726)
- `[` in a SQL Server filter value read as a wildcard.
- Non-ASCII text turned into `?` by Copy as INSERT, Copy as IN, Preview Referenced Row, compare scripts and column defaults on SQL Server.
- Structure tab offering column, index and constraint edits that views and materialized views refuse. (#2726)

### Security

- BigQuery Google sign-in accepting an authorization response without PKCE or a state check.
- PostgreSQL sessions inheriting `standard_conforming_strings = off`, which let a backslash break out of any quoted literal.
- PostgreSQL catalog, comment and password literals escaped by quote doubling alone, which a backslash can break out of. (#2726)
- An MCP token without Full Access approving its own write and skipping TablePro's confirmation dialog.

## [0.73.0] - 2026-09-09

Expand Down
Loading
Loading