From a43467f0fa99f0801f15b70902499ca4ef84ce0d Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Tue, 3 Nov 2026 14:18:45 +0700 Subject: [PATCH] docs(features): running-work alerts, progress, plugin and proxy downloads, folder status --- connections/cloud-sql-proxy.mdx | 2 +- customization/notifications.mdx | 13 +++++++++---- features/connection-sharing.mdx | 10 ++++++++++ features/connection-window.mdx | 13 +++++++++++++ features/plugins.mdx | 6 +++++- features/tabs.mdx | 2 ++ features/team.mdx | 2 +- 7 files changed, 41 insertions(+), 7 deletions(-) diff --git a/connections/cloud-sql-proxy.mdx b/connections/cloud-sql-proxy.mdx index 4c7d6e19..df9f8a62 100644 --- a/connections/cloud-sql-proxy.mdx +++ b/connections/cloud-sql-proxy.mdx @@ -20,7 +20,7 @@ The transport appears for Cloud SQL instances running MySQL, PostgreSQL, or SQL gcloud auth application-default login ``` -Install the binary, or click **Download cloud-sql-proxy…** on the Network tab, which fetches 2.23.0 and checks its SHA-256 against the value pinned for your CPU architecture. +Install the binary, or click **Download cloud-sql-proxy** on the Network tab, which fetches 2.23.0 and checks its SHA-256 against the value pinned for your CPU architecture. A bar shows the download, and **Cancel** stops it. Connecting with no binary installed downloads the same one first, and the connecting card says **Downloading Cloud SQL Auth Proxy** while it does. ```bash brew install cloud-sql-proxy diff --git a/customization/notifications.mdx b/customization/notifications.mdx index 0dd0eb68..1f493639 100644 --- a/customization/notifications.mdx +++ b/customization/notifications.mdx @@ -17,19 +17,24 @@ You only get told when the result is somewhere you are not. That means TablePro | **Notify when long-running work finishes** | On | Every kind of work below | | **Only after** | 20 seconds | How long work has to run to count: 5, 10, 20 or 30 seconds, or 1, 2, 5 or 10 minutes | -The kinds that count: editor queries including Explain, Execute All Statements as one notification for the batch, saving edited rows, structure changes, imports, exports, Copy To and Duplicate Database, database dumps, fetching every row of a truncated result, and queries an AI assistant, an MCP client or [a script](/developers/applescript) runs. +The kinds that count: editor queries including Explain, Execute All Statements as one notification for the batch, saving edited rows, structure changes, imports, exports, Copy To and Duplicate Database, database dumps and restores, comparisons and sync scripts from [Compare & Sync](/features/compare-sync), fetching every row of a truncated result, and queries an AI assistant, an MCP client or [a script](/developers/applescript) runs. + +Two more ignore **Only after**, because they need you rather than report a result: + +- An [agent session](/features/agent-mode) that is waiting for your answer, or whose reply failed, while it is not on screen. Answering removes the notification, and clicking it opens the session. +- A [plugin](/features/plugins) update that failed in the background. Keep **Only after** below the [query timeout](/customization/general-settings#query-timeout), or a query that times out finishes before its notification is due. ## What a notification carries -The connection name is the title, the database is the subtitle, and the body is the outcome with a duration: "1,204 rows in 3m 12s", or "Failed after 2m 45s" with the reason. A failure adds a **Copy Error** button, and anything that wrote a file adds **Show in Finder**. Clicking the notification brings TablePro forward on the tab that ran the work. +The connection name is the title, the database is the subtitle, and the body is the outcome with a duration: "1,204 rows in 3m 12s", or "Failed after 2m 45s" with the reason. A failure adds a **Copy Error** button, and anything that wrote a file adds **Show in Finder**. Clicking the notification brings TablePro forward on the tab that ran the work, or on the Compare & Sync window for a comparison. Banners group by connection. Re-running the same kind of work in the same tab replaces that tab's earlier banner instead of stacking a second one. -## The tab dot +## The tab mark -A tab whose work finished while you were looking elsewhere carries a dot beside its name until you select it. That dot is not a notification: it appears whatever the settings say, and whether or not you ever granted permission. +A tab whose work finished while you were looking elsewhere carries a mark beside its name until you select it: a checkmark when the work succeeded, a red triangle when it failed. The mark is not a notification: it appears whatever the settings say, and whether or not you ever granted permission. ## Permission diff --git a/features/connection-sharing.mdx b/features/connection-sharing.mdx index 9a665526..9e1c816e 100644 --- a/features/connection-sharing.mdx +++ b/features/connection-sharing.mdx @@ -144,6 +144,16 @@ Groups and saved queries come across the way they do on the Mac. The review list Press `Cmd+,`, then **Settings > General > Linked Folders > Add Folder…** and point it at a directory of `.tablepro` files: a Git repo, a Dropbox folder, a network drive. Those connections appear read-only in the sidebar, and each person enters their own password. +Each folder's row says what the last scan found: how many connections, or why it found none. + +| Status | Meaning | +|---|---| +| **3 connections** | The scan read the folder and is watching it for changes | +| **2 files couldn't be read** | Those files were skipped: unreadable, not a connection file, or encrypted with a passphrase | +| **Folder not found** | The path no longer exists. Reconnect the drive or remove the folder | +| **Can't read this folder** | macOS refused access. Check the folder's permissions | +| **Not watching this folder for changes** | Read once; changes show after the next relaunch or toggle | + General pane with one linked folder, its on switch and the Add Folder button General pane with one linked folder, its on switch and the Add Folder button diff --git a/features/connection-window.mdx b/features/connection-window.mdx index 9fa54281..f046ba37 100644 --- a/features/connection-window.mdx +++ b/features/connection-window.mdx @@ -174,6 +174,19 @@ The ellipsis at the trailing end holds that surface's own commands: **Fields** a `Cmd+Option+I` opens and closes the pane, and `Cmd+Option+A` swaps an open inspector for the assistant rather than closing the column. **View > Show Inspector** and **View > Show Assistant** are the same two, each reading **Hide** once its surface is on screen. +## Work still running + +Quit, **Relaunch to Update**, closing a window, a connection or a tab, and Disconnect each check for work still running there and ask once, in one alert that lists it: + +- a query run from an editor tab +- a restore, backup, import, export, table transfer or object copy +- an agent reply, including one waiting for your answer +- a comparison or a sync script in Compare & Sync + +**Quit Anyway**, **Relaunch Anyway**, **Close Anyway** or **Disconnect Anyway** stops each item on the list. **Cancel**, or Escape, keeps everything running. Quitting lists unsaved tabs on the same alert, and closing or disconnecting lists an open transaction there. When you close a window or a connection, unsaved edits still get **Do you want to save changes?** after it. + +A stopped restore can leave the database partly restored, and a stopped sync script keeps the statements it already ran. + ## Related - [Query Tabs](/features/tabs) for the strip under the toolbar and what a tab is bound to diff --git a/features/plugins.mdx b/features/plugins.mdx index eec8ed0f..c307894b 100644 --- a/features/plugins.mdx +++ b/features/plugins.mdx @@ -62,6 +62,8 @@ A registry plugin installs where you need it: - A `.duckdb` file opened from Finder, which asks for the DuckDB driver. - **Install Parquet Export…** at the end of the format menu in the Export dialog. Parquet is selected once the download finishes. +A sheet shows the download and then the install. **Cancel**, or Escape, stops the download and leaves nothing behind; once the install step starts it runs to the end. **Settings > Extensions** shows the same install at the bottom of the list, with its own **Cancel**. + On a Mac with no network, install from a file: drag a `.tableplugin` or `.zip` onto **Settings > Extensions**, or click the **+** button there. A file for a plugin that is already loaded replaces it the next time TablePro starts. User-installed plugins live in `~/Library/Application Support/TablePro/Plugins`. Every plugin is verified before it loads. A registry download must match the SHA-256 checksum in the registry manifest, and the bundle must be signed by TablePro. A bundle signed by anyone else, ad-hoc signed or unsigned is refused, with no override. @@ -71,7 +73,9 @@ Every plugin is verified before it loads. A registry download must match the SHA Registry plugins follow the app. After a TablePro update, each plugin installed from the registry with an older build than the app is fetched again at launch: - A plugin that is not loaded, such as one rejected after the update, installs and loads at once. -- A plugin that is loaded downloads in the background and replaces the old one the next time TablePro starts. Its row in **Settings > Extensions** reads "Updates when TablePro relaunches" until then. **Relaunch to Update**, in a connection window's title bar, loads it now. +- A plugin that is loaded downloads in the background and replaces the old one the next time TablePro starts. Its row in **Settings > Extensions** reads **Downloading update…** while it runs and "Updates when TablePro relaunches" after. **Relaunch to Update**, in a connection window's title bar, loads it now. + +An update that fails stays on the plugin's row with the reason, **Try Again** and **Dismiss**, and posts a notification when **Settings > Notifications** has notifications on. Offline, the check waits and runs once the Mac is back online. If the registry has no newer build yet, the check tries again in the background, on the schedule in [A plugin will not install or load](/troubleshooting#a-plugin-will-not-install-or-load). Connecting to a database whose plugin is outdated checks again first. diff --git a/features/tabs.mdx b/features/tabs.mdx index 48ce020a..c46fb64c 100644 --- a/features/tabs.mdx +++ b/features/tabs.mdx @@ -63,6 +63,8 @@ Close Other Tabs and Close All Tabs act on the tabs in the strip, never on anoth **Close Tabs for Other Databases** takes every tab of the connection's other databases, never the tab in front of you, and never another connection's tabs. On engines that switch schemas instead, such as BigQuery, Spanner and Oracle, it reads **Close Tabs for Other Schemas**. +A tab whose query is still running asks **Close while work is still running?** first, and **Close Anyway** stops the query. A table tab still loading its rows closes without asking. See [Work still running](/features/connection-window#work-still-running). + Closing asks **Do you want to save changes?** when the tab holds unsaved cell edits, a `.sql` file that differs from disk, or staged structure, Create Table, or user and role changes. Save closes the tab once the save lands, except for user and role changes, where it opens the review sheet instead and leaves the tab open. Closing one tab selects it first, putting the work in front of you before you answer. Once it closes, or you cancel, the tab you were on comes back to the front. A bulk close asks once, and Cancel stops the rest. Save writes what it can reach in every tab it is closing: their `.sql` files and their staged structure changes, plus everything in the tab on screen. Cell edits, Create Table drafts, and staged user and role changes can only be saved from their own tab, so those tabs stay open instead and the alert says so. **Don't Save** closes all of them. diff --git a/features/team.mdx b/features/team.mdx index 7d01906f..eaf7cee5 100644 --- a/features/team.mdx +++ b/features/team.mdx @@ -54,6 +54,6 @@ Two routes, and the choice is whether your team already shares a folder. If it d Right-click a connection and choose **Share > Publish to Team Library…**, or publish saved queries from the Favorites sidebar with **Publish Saved Queries to Team…**. Only the connection definition and the query text are sent, never passwords. -Teammates get the connections in their list the way a Linked Folder delivers them, and shared queries in their Favorites sidebar labeled with whoever published each one. Their app pulls the library every 7 days. A pulled connection arrives without its startup SQL, because it lands with no confirmation step and nothing that would run by itself travels with it. +Teammates get the connections in their list the way a Linked Folder delivers them, and shared queries in their Favorites sidebar labeled with whoever published each one. Their app pulls the library every 7 days, and **Settings > License > Team** shows when it last did, with **Refresh** to pull now. A pull that fails keeps what was there and says **Couldn't refresh the team library** with the reason. A pulled connection arrives without its startup SQL, because it lands with no confirmation step and nothing that would run by itself travels with it. You review and remove what you published from your account at [tablepro.app/account](https://tablepro.app/account).