You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+20-57Lines changed: 20 additions & 57 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,72 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
-
### Changed
11
-
12
-
- Replaced fragmented Theme/DesignConstants/SQLEditorTheme/ToolbarDesignTokens with unified ThemeEngine
13
-
- Moved editor and data grid font settings into the theme system (Settings > Appearance)
14
-
- Extracted MSSQL, MongoDB, Redis, XLSX export, MQL export, and SQL import plugins from the app bundle into separately distributed plugins, downloadable from the plugin registry. MySQL, PostgreSQL, SQLite, CSV, JSON, and SQL export remain built-in
15
-
- Redesigned Plugins settings tab with HSplitView master-detail layout: plugin list on the left, detail pane on the right, matching macOS conventions. Plugin rows now show version, author/capability, and install status at a glance
16
-
- Download counts in browse tab now always fetch latest from GitHub API (5-minute in-memory cooldown per session)
17
-
- Replaced ~40 hardcoded `DatabaseType` switches across ~20 UI files with dynamic plugin property lookups via `PluginManager`, so third-party plugins get correct UI behavior (colors, labels, editor language, feature toggles) automatically
18
-
- ConnectionFormView now fully dynamic: pgpass toggle, password visibility, and SSH/SSL tab visibility all driven by plugin metadata (`FieldSection`, `hidesPassword`, `supportsSSH`/`supportsSSL`) instead of hardcoded type checks
19
-
- Replaced `AppState.isMongoDB`/`isRedis` booleans with `AppState.editorLanguage: EditorLanguage` for extensible editor language detection
20
-
- Theme colors now derived from plugin `brandColorHex` instead of hardcoded `Theme.mysqlColor` etc.
21
-
- Sidebar labels ("Tables"/"Collections"/"Keys"), toolbar preview labels, and AI prompt language detection now use plugin metadata
22
-
- Connection form, database switcher, type picker, file open handler, and toolbar all use plugin lookups for connection mode, authentication, import support, and system database names
23
-
- Converted `DatabaseType` from closed enum to string-based struct, enabling future plugin-defined database types
24
-
- Moved string literal escaping into plugin drivers via `escapeStringLiteral` on `PluginDatabaseDriver` and `DatabaseDriver` protocols; `SQLEscaping.escapeStringLiteral` now uses ANSI SQL escaping only (doubles single quotes, strips null bytes)
25
-
- SQL autocomplete data types and CREATE TABLE options now use plugin-provided dialect data instead of hardcoded per-database switches
26
-
-`FilterSQLGenerator` now uses `SQLDialectDescriptor` data (regex syntax, boolean literals, LIKE escape style, pagination style) instead of `DatabaseType` switch statements
27
-
- Moved identifier quoting, autocomplete statement completions, view templates, and FK disable/enable into plugin system
28
-
- Removed `DatabaseType` switches from `FilterSQLGenerator`, `SQLCompletionProvider`, `ImportDataSinkAdapter`, and `MainContentCoordinator+SidebarActions`
29
-
- Replaced hardcoded `DatabaseType` switches in ExportDialog, DataChangeManager, SafeModeGuard, ExportService, DataGridView, HighlightedSQLTextView, ForeignKeyPopoverContentView, QueryTab, SQLRowToStatementConverter, SessionStateFactory, ConnectionToolbarState, and DatabaseSwitcherSheet with dynamic plugin lookups (`databaseGroupingStrategy`, `immutableColumns`, `supportsReadOnlyMode`, `paginationStyle`, `editorLanguage`, `connectionMode`, `supportsSchemaSwitching`)
30
-
- Replaced remaining ~40 hardcoded `DatabaseType` switches in MainContentCoordinator (main + 5 extensions) and StructureRowProvider with plugin metadata lookups (`requiresReconnectForDatabaseSwitch`, `structureColumnFields`, `defaultPrimaryKeyColumn`, `supportsQueryProgress`, `autoLimitStyle`, `allTablesMetadataSQL`)
10
+
## [0.18.0] - 2026-03-14
31
11
32
12
### Added
33
13
34
-
- Theme registry distribution: browse, install, uninstall, and update community themes from the plugin registry (Settings > Plugins > Browse, filtered by Themes category)
35
-
- Full theme engine with 9 built-in presets (Default Light/Dark, Dracula, Solarized Light/Dark, One Dark, GitHub Light/Dark, Nord) and custom theme support
36
-
- Theme browser with visual preview cards in Settings > Appearance
37
-
- Per-theme customization of all colors (editor syntax, data grid, UI, sidebar, toolbar) and fonts
38
-
- Theme import/export as JSON files for sharing
39
-
- SSH TOTP/two-factor authentication support (auto-generate and prompt modes)
14
+
- Theme engine: 4 built-in themes (Default Light/Dark, Dracula, Nord), custom themes with full color/font/layout customization, import/export as JSON
15
+
- Theme registry: browse, install, and update community themes from the plugin registry
16
+
- App-level appearance mode: Light, Dark, or Auto (follow system), independent of theme
17
+
- Cassandra and ScyllaDB database support (downloadable plugin)
18
+
- SSH TOTP/two-factor authentication with auto-generate and prompt modes
40
19
- SSH host key verification with fingerprint confirmation
41
-
- Keyboard Interactive SSH authentication method
42
-
- Column visibility: toggle individual columns on/off via "Columns" button in the status bar or right-click header context menu "Hide Column", with per-tab and per-table persistence
43
-
-`SQLDialectDescriptor` in TableProPluginKit: plugins can now self-describe their SQL dialect (keywords, functions, data types, identifier quoting), with `SQLDialectFactory` preferring plugin-provided dialect info over built-in structs
44
-
- DDL schema generation protocol in TableProPluginKit: plugins can now optionally provide database-specific ALTER TABLE syntax (ADD/MODIFY/DROP COLUMN, ADD/DROP INDEX, ADD/DROP FK, MODIFY PK) via `PluginDatabaseDriver`, with `SchemaStatementGenerator` trying plugin methods first before falling back to built-in logic
45
-
- Plugin-provided table operations: `truncateTableStatements`, `dropObjectStatement`, `foreignKeyDisableStatements`, `foreignKeyEnableStatements` in `PluginDatabaseDriver` protocol, allowing plugins to override TRUNCATE, DROP, and FK handling SQL
46
-
-`CompletionEntry` struct and `statementCompletions` on `DriverPlugin` for plugin-provided autocomplete entries (MongoDB MQL methods, Redis commands)
47
-
-`offsetFetchOrderBy` property on `SQLDialectDescriptor` for plugin-controlled ORDER BY in OFFSET/FETCH pagination
48
-
-`createViewTemplate()`, `editViewFallbackTemplate(viewName:)`, and `castColumnToText(_:)` on `PluginDatabaseDriver` for plugin-provided view DDL templates and column casting
49
-
-`buildExplainQuery` method in `PluginDatabaseDriver` protocol: plugins can now provide database-specific EXPLAIN syntax, with coordinator falling back to built-in logic when plugin returns nil
50
-
-`SettablePlugin` protocol in TableProPluginKit SDK: unified settings pattern for all plugins with automatic persistence via `loadSettings()`/`saveSettings()`, replacing duplicated boilerplate across export/import/driver plugins
51
-
- Plugin UI/capability metadata: each driver plugin now self-declares brand color, connection mode, supported features, column types, URL schemes, and grouping strategy via the `DriverPlugin` protocol
52
-
- Driver plugin settings view support: `DriverPlugin.settingsView()` allows plugins to provide custom settings UI in the Installed Plugins panel
53
-
- Dynamic connection fields: connection form Advanced tab now renders fields from `DriverPlugin.additionalConnectionFields` instead of hardcoded per-database sections, with support for text, secure, dropdown, number, toggle, and stepper field types
54
-
- Configurable plugin registry URL via `defaults write com.TablePro com.TablePro.customRegistryURL <url>` for enterprise/private registries
55
-
- SQL import options (wrap in transaction, disable FK checks) now persist across launches
56
-
-`needsRestart` banner persists across app quit/relaunch after plugin uninstall
57
-
- Copy as INSERT/UPDATE SQL statements from data grid context menu
58
-
- Configurable font family and size for data grid (now via theme customization in Settings > Appearance)
59
-
- Plugin download count display in Browse Plugins — fetched from GitHub Releases API and cached for 1 hour
60
-
- MSSQL query cancellation (`cancelQuery`) and lock timeout (`applyQueryTimeout`) support
61
-
-`~/.pgpass` file support for PostgreSQL/Redshift connections with live validation in the connection form
62
-
- Pre-connect script: run a shell command before each connection (e.g., to refresh credentials or update ~/.pgpass)
63
-
-`ParameterStyle` enum in TableProPluginKit: plugins declare `?` or `$1` placeholder style via `parameterStyle` property on `PluginDatabaseDriver`
64
-
- DML statement generation in ClickHouse, MSSQL, and Oracle plugins via `generateStatements()` for database-specific UPDATE/DELETE syntax
65
-
- Cassandra and ScyllaDB database support via DataStax C driver (downloadable plugin)
66
-
-`quoteIdentifier` method on `PluginDatabaseDriver` and `DatabaseDriver` protocols: plugins provide database-specific identifier quoting (backticks for MySQL/SQLite/ClickHouse, brackets for MSSQL, double-quotes for PostgreSQL/Oracle/DuckDB, passthrough for MongoDB/Redis)
20
+
- Keyboard Interactive SSH authentication
21
+
- Column visibility: toggle columns on/off via status bar or header context menu
22
+
- Copy as INSERT/UPDATE SQL from data grid context menu
23
+
-`~/.pgpass` support for PostgreSQL/Redshift connections
24
+
- Pre-connect script: run a shell command before each connection
25
+
- MSSQL query cancellation and lock timeout support
26
+
- Custom plugin registry URL for enterprise/private registries
67
27
68
28
### Changed
69
29
70
-
- Moved MSSQL and Oracle pagination query building (`OFFSET...FETCH NEXT`) from `TableQueryBuilder` into their respective plugin drivers via `buildBrowseQuery`/`buildFilteredQuery`/`buildQuickSearchQuery`/`buildCombinedQuery` hooks
71
-
- Moved identifier quoting from `DatabaseType` into plugin drivers via `quoteIdentifier` method on `PluginDatabaseDriver` protocol, with each plugin providing its own quoting style (backtick, bracket, double-quote, or passthrough)
30
+
- Extracted MSSQL, MongoDB, Redis, XLSX export, MQL export, and SQL import into downloadable plugins. MySQL, PostgreSQL, SQLite, CSV, JSON, and SQL export remain built-in
31
+
- Redesigned Plugins settings with master-detail layout and download counts
32
+
- All database-specific behavior now driven by plugin metadata instead of hardcoded switches, enabling third-party database plugins
33
+
- Connection form fields, sidebar labels, and SQL dialect features are now fully plugin-driven
72
34
73
35
### Fixed
74
36
75
-
- Plugin icon rendering now supports custom asset images (e.g., duckdb-icon) alongside SF Symbols in Installed and Browse tabs
37
+
- Plugin icon rendering now supports custom asset images alongside SF Symbols
76
38
77
39
## [0.17.0] - 2026-03-11
78
40
@@ -876,7 +838,8 @@ TablePro is a native macOS database client built with SwiftUI and AppKit, design
Copy file name to clipboardExpand all lines: docs/vi/changelog.mdx
+29Lines changed: 29 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,35 @@ description: "Cập nhật sản phẩm và thông báo cho TablePro"
4
4
rss: true
5
5
---
6
6
7
+
<Updatelabel="14 tháng 3, 2026"description="v0.18.0">
8
+
### Tính năng mới
9
+
10
+
-**Theme Engine**: 4 theme tích hợp (Default Light/Dark, Dracula, Nord) với tuỳ chỉnh đầy đủ màu sắc, phông chữ và bố cục — nhập/xuất theme dưới dạng JSON
11
+
-**Theme Registry**: Duyệt, cài đặt và cập nhật theme cộng đồng từ registry plugin
12
+
-**Hỗ trợ Cassandra & ScyllaDB**: Kết nối tới cơ sở dữ liệu Cassandra và ScyllaDB qua plugin tải xuống
13
+
-**Xác thực hai yếu tố SSH**: Hỗ trợ TOTP với chế độ tự động tạo và nhắc nhở cho kết nối SSH
14
+
-**Xác minh khoá máy chủ SSH**: Hộp thoại xác nhận fingerprint cho khoá máy chủ mới và đã thay đổi
15
+
-**Keyboard Interactive SSH**: Hỗ trợ phương thức xác thực keyboard-interactive
16
+
-**Ẩn/hiện cột**: Bật/tắt cột qua nút thanh trạng thái hoặc menu ngữ cảnh tiêu đề
17
+
-**Sao chép dưới dạng SQL**: Sao chép hàng đã chọn dưới dạng câu lệnh INSERT hoặc UPDATE từ menu ngữ cảnh bảng dữ liệu
18
+
-**Hỗ trợ `.pgpass` PostgreSQL**: Tự động tra cứu mật khẩu từ `~/.pgpass` cho kết nối PostgreSQL và Redshift
19
+
-**Script trước kết nối**: Chạy lệnh shell trước mỗi kết nối qua Connection > Advanced
20
+
-**URL registry plugin tuỳ chỉnh**: Cấu hình URL registry riêng/doanh nghiệp cho phân phối plugin
21
+
22
+
### Cải tiến
23
+
24
+
- MSSQL, MongoDB, Redis, XLSX export, MQL export và SQL import được tách thành plugin tải xuống — MySQL, PostgreSQL, SQLite, CSV, JSON và SQL export vẫn tích hợp sẵn
25
+
- Thiết kế lại cài đặt Plugin với bố cục master-detail và số lượt tải
26
+
- Tất cả hành vi theo loại cơ sở dữ liệu giờ dựa trên metadata plugin thay vì mã cứng, cho phép plugin cơ sở dữ liệu bên thứ ba
27
+
- Các trường biểu mẫu kết nối, nhãn thanh bên và tính năng SQL dialect giờ hoàn toàn do plugin điều khiển
28
+
- Chế độ giao diện ứng dụng (Sáng, Tối, Tự động) độc lập với lựa chọn theme
29
+
- Hỗ trợ huỷ truy vấn MSSQL và thời gian chờ khoá
30
+
31
+
### Sửa lỗi
32
+
33
+
- Sửa lỗi hiển thị biểu tượng plugin không hỗ trợ hình ảnh asset tuỳ chỉnh bên cạnh SF Symbols
34
+
</Update>
35
+
7
36
<Updatelabel="11 tháng 3, 2026"description="v0.17.0">
0 commit comments