New
- Yearly billing. Pro can now be billed yearly, with a Monthly/Yearly toggle on the billing page.
- Publish one table. Right-click a mapped table in the desktop folder tree and "Publish this table" ships only that table's approved changes; every other table's work stays local and revertible. Sits between "publish all" and single-record publish.
Better
- Supabase Live Export defaults to a new schema. Scratch creates and owns a schema for exported tables (named after the export, like
airtable_export) instead of making you drop them into an existing schema built for something else. Supabase OAuth connections authorized before this week need a one-time reconnect to pick up the permission. - Publish errors on non-writable fields say why. Instead of calling every unwritable field "read-only", the message distinguishes truly read-only fields, write-once fields (Linear dates, Shopify article blog and author), and fields the connector doesn't handle yet (ClickUp assignees, tags, and parent; Zoho tags).
- Notion parent-page search ranks real matches first. Pages whose titles contain every word you typed come first; Notion's fuzzy extras follow instead of burying them.
Fixed
- A failed connection no longer looks connected. The desktop create-connection flow advanced to Choose Tables even when the credential check failed, so a broken connection looked functional. The modal now stays open and says what went wrong.
- Deletes that never ran no longer report success. A publish delete that couldn't resolve its remote record was silently marked successful, leaving the remote record in place with no signal to you. It now fails visibly and stays in the retry path.
- Attio multi-valued attributes export every value. Multi-selects, emails, phones, and record references exported only their first value, and every object table grew a junk "Created At 2" column. Both fixed on a table's next pull.
- A stuck "add table" that left an orphaned destination table behind now reuses that table on the next save instead of colliding forever on its name.
- Notion-to-Notion syncs re-pushed people and files fields on every run even when nothing changed.
- The Bring Your Own API connect modal put benign guidance in a red error box and rendered its loading spinner white on pale yellow. Both readable now.
Under the hood
- Security work continued: a secret-rotation risk assessment and runbook, tuned secret-access alerting, a least-privilege service account for the server, and JSON parsing hardened against truncated or corrupt input.
- Groundwork for faster HubSpot publishing landed behind a flag.
- scratch-git CLI and test API calls now survive dropped connections.