# Changelog User-visible changes, grouped by platform release (component pins for each release live in [`VERSIONS.md`](VERSIONS.md)). Each entry says what changed and what you must do — most entries need no action. "Teable `release.*`" sections record the app releases picked up by the stable channel, with their release notes synced in. Docker installs follow `latest` directly; Kubernetes installs receive the refreshed pin via that platform release's `versions.yaml`. Hot-swappable; no action needed. ## v2026.11.14 - 2026-11-10 ### Teable release.2026-11-10T05-38-53Z.3830 #### Feature Updates - Filter-based updates apply the same values to all matching records and evaluate filter conditions when the update runs. Updates that also require changes to relationships must still use record-based updates. - JWT credentials can now be searched by app or project name or ID. Bulk operations are limited to apps that match the current search and filters. - Published apps can now be refreshed with new credentials while retaining their last published code and login configuration. Apps with expired production credentials are now distinguished from apps whose refresh failed. - Default Pi sessions now support structured queries for record lists, aggregations, and time-based grouping. Follow-up requests can adjust query parameters, and unsupported requests return clearer error messages. #### Bug Fixes & Improvements - Password changes now reject a new password that matches the current password, preventing misleading success messages and unnecessary sign-outs. - Refreshing the chat page no longer restores tabs for tables hidden by role permission updates, preventing incorrect resource access restriction and “Table deleted” messages. - Locked Grid views now prevent column dragging, column resizing, and column freezing. Personal views remain editable. - Automations enabled by newly installed templates now correctly activate scheduled triggers and email receipt triggers. - Fixed an issue where pasted text beginning with lowercase “rec” (such as “recipe” or “record”) was saved incorrectly in Single line text fields. Large-batch and streaming paste operations now also preserve text consistently; previously corrupted values will not be restored automatically. - Improved the security and reliability of credential settings, management, sharing, and permanent deletion. - Improved resource title bars, toolbar labels, and view lists to make actions and current, starred, locked, and draggable states easier to distinguish. - Sharing and CSV export operations now apply to the selected view rather than the currently open view, including operations initiated from classic view tabs. - Consolidated app settings actions and improved menu behavior for login configuration, GitHub integration, and version history. - Fixed missing view information when creating, converting, changing the linked target of, or removing two-way linked record fields. Reciprocal linked fields now maintain consistent visibility and ordering, with improved reliability for self-links, linked tables, and undo/redo. - The hidden and visible field panels now support reliable drag-and-drop reordering, with the order preserved after refreshing. Fixed a crash caused by reordering fields in Grid and Kanban views before view information had finished loading. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-10T05-38-53Z.3830) ## v2026.11.13 - 2026-11-10 - **Sandbox creation gives up after 5 minutes (Kubernetes).** When the cluster has no room for a new sandbox, the request now fails with a clear timeout after 5 minutes and the pending sandbox is removed, instead of waiting up to 24 hours and starting later with nobody using it. If you supply your own `configToml`, set `sandbox_create_timeout_seconds = 300` there. ## v2026.11.12 - 2026-11-09 - **App publish status reflects the new version (Kubernetes).** Republishing an app now reports success only once the new version is serving. If it cannot start (for example, pod creation is rejected by the namespace quota), the publish is reported as failed with the reason, and the previous version keeps serving. No action needed. ## v2026.11.11 - 2026-11-06 ### Teable release.2026-11-06T11-23-32Z.3804 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-11-06T11-23-32Z.3804`. ## v2026.11.10 - 2026-11-06 ### Teable release.2026-11-06T08-34-24Z.3803 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-11-06T08-34-24Z.3803`. ## v2026.11.9 - 2026-11-06 ### Teable release.2026-11-06T03-08-47Z.3797 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-11-06T03-08-47Z.3797`. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-06T03-08-47Z.3797) ## v2026.11.8 - 2026-11-05 ### Teable release.2026-11-05T12-40-53Z.3790 #### Feature Updates - Formulas created through the CLI and AI now use the time zones of the date fields they reference, ensuring accurate calculations for `TODAY()`, countdowns, and similar operations. Explicitly configured formula time zones still take precedence. - Lookup and rollup fields created through the CLI and AI can now resolve linked tables and fields by name, including fields not previously loaded, and infer the correct type when no lookup type is specified. If a target field is missing, a clear error is now provided before any changes are made. #### Bug Fixes & Improvements - Fixed an issue where template previews could remain stuck on “Thinking deeply…” and improved template deployment error messages with specific operation details for detection and retries. - Improved search count performance for wide tables while preserving accurate results, filters, permissions, hidden fields, and field-level search conditions. - Unified time zone handling when creating formulas, fields, and tables to avoid setting unnecessary time zones for non-date formulas. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-05T12-40-53Z.3790) ## v2026.11.7 - 2026-11-05 ### Teable release.2026-11-05T10-37-52Z.3784 #### Feature Updates - Field deletion and conversion previews now show affected apps, queries, fields, and data sources, distinguishing published and latest-saved versions. Saved queries report healthy, drifted, or broken status with clearer explanations. Previews remain read-only, require confirmation before changes, and do not automatically modify affected apps. - Self-hosted administrators can map custom domains to published apps with automatic HTTPS. The Custom domain option now opens the setup guide, and sign-ins return users to the mapped domain with a fallback to the standard app link. - Administrators can configure an instance-wide OIDC provider for App Builder apps. Apps can offer “Continue with SSO” while preserving existing access rules and login methods. Existing apps may require the owner to add the SSO button and republish. - Personal access token configuration now includes four permission presets, grouped read/write levels, searchable individual permissions, and a summary before saving. Access can cover all current and future spaces and projects or selected ones. The token list shows presets, supports expiration and last-use sorting, and highlights expired or soon-to-expire tokens. - Added a mobile app download option to the user menu. Phones continue to use the classic layout. #### Bug Fixes & Improvements - Restored cross-base automations that update bidirectional linked-record fields. Existing workflows resume without republishing or manually disabling and re-enabling them. - Fixed template previews getting stuck on “Thinking deeply…” after app publishing failures involving named queries. Early failures are now retried, with clearer final errors when retries fail. - Improved performance and reduced memory use for large bulk record updates, especially on wide tables when changing only a few fields, while preserving existing results, permissions, and undo/redo behavior. - Improved table paging reliability after failed field conversions. - App Builder sessions now renew for another seven days when users revisit after at least one hour, including in embedded apps, while respecting current access settings. Existing apps must be republished for this behavior to take effect. - Improved authentication reliability for connected clients, including clearer sign-in errors and retry guidance. Temporary failures no longer unnecessarily invalidate credentials, and the CLI clearly directs users to sign in again when needed. - New chat conversations are created only after the first message is sent, preventing empty chats from accumulating. Unsent drafts now survive page refreshes. - Improved initial loading performance for chats and tables. - Reorganized Admin AI Settings into numbered Models, AI Chat, and App Builder sections with status indicators and setup guidance. Improved model configuration layouts, summaries, search, and selection, including support for both gateway and custom-provider models in chat settings. - Improved the new space layout in smaller windows, including automatic sidebar collapsing and correct positioning of the layout update prompt. - Fixed Kanban setup so the grouping-field prompt closes when complete. Records created within a column now inherit that column’s single-select value. - Improved project import cards with clearer source names and text wrapping. Resource tabs now display custom table icons when available. - Restored table import progress indicators on editable share pages and improved shared-page security. - Fixed access to artifacts generated by routines. Publishing or activating a routine now assigns ownership to that user, with notifications when ownership changes. Eligible task members can view run chats, while only the owner can continue or manage them. - Improved security and error handling for URL-based imports. - Fixed app publishing failures in projects containing large text, generated query, or GeoJSON files. - Fixed custom domain verification errors when verification results are unavailable. - Restored Android left-swipe navigation from tabs and resource lists to the originating conversation. Improved mobile gallery touch handling to reduce accidental dragging while scrolling. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-05T10-37-52Z.3784) ## v2026.11.6 - 2026-11-05 ### Teable release.2026-11-05T08-33-35Z.3779 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-11-05T08-33-35Z.3779`. ## v2026.11.5 - 2026-11-05 - **`BACKEND_CACHE_PROVIDER` is no longer set.** Docker Compose and the Helm chart drop it; Teable always uses the Redis at `BACKEND_CACHE_REDIS_URI` and ignores the variable. No action needed; you may delete it from your own env files. - **Published apps can be served on your own domains.** Map a domain to an app's access link with `APP_CUSTOM_DOMAINS` in `.env` (Docker) or `appRuntime.customDomains` (Helm); certificates are issued automatically. No action needed unless you want one. - **Caddy picks up configuration changes.** `docker compose up -d` now recreates Caddy whenever `apply.sh` re-renders its config, instead of keeping the old one until a manual restart. No action needed. ### Teable release.2026-11-04T07-59-29Z.3755 #### Feature Updates - Routines now run as their owners, and generated artifacts and run conversations belong to those owners. Publishing, activating, or running an inactive Routine may transfer ownership to the user performing the action; sandbox resources, credentials, and quotas remain bound to the Routine. - Routine members with read access can view run conversations, but only the current owner can continue, stop, rename, or archive them. Both the previous and new owners are notified when ownership changes. #### Bug Fixes & Improvements - After the first message is sent, new conversations immediately appear in the sidebar and receive focus, do not appear twice when updated to their assigned names, and remain visible during page navigation. - The title, action buttons, and table columns on the personal access token page now stay correctly positioned while scrolling. Tab spacing and the mobile scrolling experience have also been improved. - The Scraper submenu now closes automatically when scrolling the platform list, preventing the floating menu from becoming detached from its original position or being positioned incorrectly. - Artifact cards now have more consistent loading placeholders, clearer metadata placement, and improved menus and sharing indicators. - Fixed an issue that prevented users with the appropriate access permissions from opening artifacts created by Routines. - Improved batch record update performance, especially for large-scale updates involving many fields, while preserving response completeness, field and record order, permissions, undo, rollback, and API compatibility. - Fixed an issue when importing App Builder projects containing named queries via GitHub pushes: outdated autogenerated query files are now refreshed and synced back to GitHub. Manually modified autogenerated files are still rejected. - Changing or removing an App’s custom domain now releases the previous domain so it can be assigned to another App without conflict errors. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-04T07-59-29Z.3755) ## v2026.11.4 - 2026-11-04 ### Fresh installs get their own `SECRET_KEY` `apply.sh --with-app` writes a generated `SECRET_KEY` to the new `docker/all-in-one/teable-app.env`, and the Helm chart adds `secret-key` to `teable-app-secrets`. The app derives its sign-in secrets and most of its stored-data keys from it. Existing installs are left as they are; do not add one to them by hand. Action: Docker — re-run `./apply.sh --with-app` before `docker compose up -d`, which now expects `teable-app.env`. Helm — none. ## v2026.11.3 - 2026-11-04 ### Teable release.2026-11-04T04-12-18Z.3742 #### Feature Updates - Added read-only impact previews for field deletion and type conversion, table deletion and duplication, record pasting and bulk updates, and database duplication. Previews show blockers, warnings, dependencies, and unknowns, and are also available through the HTTP API and authenticated integrations. Current inputs and permissions are still validated when operations are submitted. - The Artifact gallery now displays cover thumbnails in the main gallery, “Shared with me,” and the Artifacts tab of projects. Thumbnails are automatically generated for updated Artifacts; administrators can request thumbnail generation for existing Artifacts. Cards display placeholders when no thumbnail provider is configured. - Application credentials can now be rotated in App Settings to refresh credentials for eligible published apps without creating a new version. Rotation signs out app users and may briefly interrupt requests; apps with unpublished changes must be manually republished. - Improved application credential management with filtering, status information, and bulk refresh capabilities for large deployments. #### Bug Fixes & Improvements - Word and PDF attachment previews now display a clear error message when files cannot be loaded, instead of remaining on the loading screen. - Reduced duplicate CLI upgrade reminders and limited update-check delays to two seconds when the package registry is unavailable. Older CLI versions now recommend upgrading when a failed request may indicate an API compatibility issue. - Fixed the CLI command teable artifact get --version to download the specified Artifact version instead of displaying the CLI version. - Improved security and reliability when parsing user field values and sending collaborator notifications. - Improved performance for bulk record creation and bulk field creation, especially for wide tables and large batch operations. - After switching Spaces in the new interface, opening Teable in a new browser tab now takes users to their most recently visited Space. - Expanding a project's conversation list now preserves the existing status-priority sorting instead of reordering visible conversations. - Corrected the App Builder publishing prompt to “Accessible link.” - Artifact sharing now uses the Artifact's original URL while preserving existing short links and redirecting legacy sharing links when sharing is enabled. - Guests who enter an incorrect Artifact sharing password now see a clear error message and can retry without reopening the link. - Owners who open an unshared Artifact in a third-party embedded frame now see an unavailable state instead of a retry failure message. - Optimized initial loading for database, Space, shared view, login, and settings pages, reducing compressed download sizes by 16%–44%. - Improved the reliability of structured queries while preserving existing query results and access controls. - Confirmation of destructive operations now requires an up-to-date, complete impact preview; confirmation is blocked if the preview contains blockers, has expired, or is unavailable due to an error. - AI-powered select fields now generate concise labels and respect option count limits. Fields that do not allow new options now instruct AI to choose only from existing values. - App query repair suggestions are now more accurate when data structures or referenced fields change. Queries that cannot be fully evaluated are flagged for manual review; suggestions never automatically modify app source code. - Improved the security of application credentials during downloads, project duplication, and project sharing. - Markdown-enabled long text fields in grid views now preserve list numbering and line breaks. - Improved the reliability and throughput of computation updates under large-scale workloads and sustained high-frequency writes, reducing duplicate work and latency. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-04T04-12-18Z.3742) ## v2026.11.2 - 2026-11-03 ### Teable release.2026-11-03T05-42-34Z.3718 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-11-03T05-42-34Z.3718`. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-11-03T05-42-34Z.3718) ## v2026.11.1 - 2026-11-02 ### infra-service and app runtime on Node.js 24.22.2 `teable-infra-service` and `teable-app-runtime` move from Node.js 22 to 24.22.2, which includes the October 2026 Node.js security fixes (Brotli decoding, TLS hostname verification, DNS name handling). Apps started after the upgrade run on Node.js 24. Action: none — the new images come with this release. One exception: on macOS hosts whose OpenSSL cannot generate ed25519 keys, the deploy scripts' key-generation fallback now runs `node:24-slim` instead of `node:22-slim`; offline installs should pre-pull it. ## v2026.11.0 - 2026-11-01 ### Teable release.2026-11-01T07-52-11Z.3675 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-11-01T07-52-11Z.3675`. ## v2026.10.23 - 2026-10-30 ### Teable release.2026-10-30T09-29-42Z.3673 #### Feature Updates - Global search now highlights all visible matching cells, shows the active match and total count, and supports Enter to move between results. Highlights and navigation respect filters, hidden fields, shared views, and permissions, including for multi-value fields. - Pinned Connect everything and Skill creator to the top of the skill menu and made menu ordering consistent across entry points. - Pressing Enter now confirms paste operations in the confirmation dialog. - Base share users can now navigate from expanded linked records to their source tables, with connector lines clarifying relationships. - AI chat now uses the Artifact open in the right-side panel as context. Collapsing the panel removes that context; the legacy layout is unchanged. #### Bug Fixes & Improvements - AI conversations now preserve existing project names, including in app-only and automation-only projects and conversations started through AI diagnostics. New unnamed projects stay unnamed until a user names them or the first AI conversation generates a relevant name. - Unnamed projects now consistently show a localized “Untitled project” placeholder across web, mobile, search, exports, templates, and integrations. Fixed exports of unnamed projects getting stuck in a loading state. - Improved loading performance for the space home and sidebar chat list, especially in spaces with many projects, permission rules, or routine runs. - Completed translations for Template Center, App Builder, Chat, and Base publishing workflows across Arabic, German, Spanish, French, Hebrew, Italian, Japanese, Russian, Turkish, and Ukrainian. Improved locale-specific plural forms and corrected template payout text to show the $50 threshold. - Fixed failures when duplicating Apps from Git sources and improved duplication reliability and security. - Fixed link field duplication so copies retain existing linked records across all relationship types and directions. Editing or clearing a copied field no longer affects the source field, its linked records, or the corresponding field in the related table. - Fixed Markdown list numbering when Backspace promotes the first item of a nested list to the correct level. - Fixed an “Unknown error” notification when opening link field settings after the linked table was deleted or became inaccessible. - Fixed validation errors in AI-generated queries using empty or non-empty filters, allowing affected queries and aggregations to run correctly. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-30T09-29-42Z.3673) ## v2026.10.22 - 2026-10-30 ### Teable release.2026-10-30T02-25-28Z.3658 #### Feature Updates - Improved the resource pane with resizable lists, full-name tooltips for truncated items, quick access to open tabs when collapsed, and keyboard navigation. #### Bug Fixes & Improvements - Unread email reminders now apply only to Chat tasks that run for at least 10 minutes and remain unread for 30 minutes after completion, whether successful or failed. Emails identify the task by its prompt and link directly to the relevant project and conversation. - Prevented duplicate conversations in the new layout while preserving normal conversation creation and retries after failed attempts. - Archiving or deleting the active conversation now immediately opens a new conversation. Archived conversations can be restored with Undo if you have not navigated elsewhere. - Stabilized the resource pane layout when switching between Resources and Artifacts. - Reduced repeated sidebar tooltips with a short delay and kept them hidden while a conversation’s context menu is open. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-30T02-25-28Z.3658) ## v2026.10.21 - 2026-10-28 - **Helm: optional egress fence for published apps (`runtimeNetworkPolicy.appRuntime.egress.mode`).** Set `publicOnly` to give published apps the same egress fence as sandboxes: DNS and the public internet only, with private networks and cloud metadata endpoints blocked. Apps download their artifact on every start, so also allow that path in `additionalAllowedPeers` (see `values.yaml`). Default stays `allowAll`; no action needed. ## v2026.10.20 - 2026-10-27 ### Teable release.2026-10-27T02-17-21Z.3593 #### Feature Updates - Added a unified Table Operations console for search and indexes, complexity assessment, schema integrity, and computed updates. Existing admin links retain their parameters. - Instance administrators can assess table complexity without joining the project, including dependencies, workload estimates, field-level breakdowns, and estimate quality, without exposing record contents. - MCP and CLI list-bases now support pagination and filtering by base name or space. Results default to 50 bases per page, with a maximum of 100; clients must follow nextOffset while hasMore is true. - Streamlined personal settings into seven entries grouped under Account, Preferences, and a tabbed Developer Tools section. Existing links remain compatible. - Added an Artifact Manager with a paginated, project-grouped view of accessible artifacts, share status, downloads, and direct access to the in-app viewer. - “Fix with AI” now opens a new chat in the artifact’s project with the relevant context attached. - Feishu IM bots can reuse skills already installed and enabled in the project space, keeping shared skills consistent without duplicate installation. - Structured Query v2 now supports same-project relational reporting across one-to-one, one-to-many, many-to-many, and multi-hop relations, with related-record aggregates, filtering, grouping, sorting, timezone-aware calculations, and grouped totals. Permissions apply at every hop, and missing targets return null. Cross-project relations, cyclic paths, paths beyond three hops, and direct projection or sorting of to-many fields remain unsupported; relation queries do not automatically fall back to SQL. - Added validation warnings for new SQL-based query definitions and an optional strict mode that rejects them. Existing SQL fallbacks remain supported. - Added atomic record upsert for v2 tables, allowing integrations to create, ignore, or update records using one unique text, number, or date field. Each row reports a created, updated, unchanged, or skipped result. Composite and non-unique match fields and share-view requests are unsupported. - Added an experimental headless runtime with embedded PGlite or PostgreSQL, HTTP and command-line interfaces, computed fields, local attachments, persistent local storage, and validated app bundles for repeatable installation of base structures and seed data. It does not include authentication, permissions, a UI, remote realtime transport, browser-based bundle installation, or S3 attachments; PGlite storage supports a single writer. #### Bug Fixes & Improvements - Fixed saving, rollback, import, and duplication failures for apps whose generated query files came from an older host version. Failed saves and imports no longer leave apps in an unusable state, and imports preserve unrelated source files and binary assets. - Query validation errors now identify the affected field, field type, rejected operator, and generator version when authorized. - Stale table links now return a clear not-found response, and calculation update lists retain instance-wide results, statistics, and project filters. - Large base listings now return valid, complete pages instead of oversized responses that could be truncated. - Pages opened inside the mobile app now recognize cookie consent completed at sign-in, preventing the banner from reappearing or reopening through Cookie settings. External-browser behavior is unchanged. - Improved artifact browsing and viewing, including project visibility, pagination, download error feedback, share-password handling, and transitions from dialogs to AI chats. - Improved error messages across all 12 supported languages. Field renaming now explains duplicate or invalid database names and keeps the editor open for correction; custom domain verification and removal failures provide clearer reasons. - Improved reliability and localized feedback for view updates, imports, record reordering, field time zones, and sidebar renaming. - Task cards now retain their original titles while progress notes stream and remain visible until follow-up questions are ready. - Improved Structured Query reliability for grouped reports, weighted averages, repeated relation paths, filters, timezone buckets, pagination, totals, and parameter validation. - Improved BYODB reliability during concurrent computed writes, reducing server errors and prolonged delays under heavy load. - Improved concurrent record updates involving type conversion, reducing unnecessary delays and timeouts while preserving consistent select options and coordination with field changes. - Concurrent upserts using the same unique key now avoid duplicate records, partial updates, and auto-number gaps for skipped rows while respecting permissions and workspace row limits. - Fixed linked-record copy-and-paste matching after changing the display column. Pasted values now use the selected display field; unmatched values remain unchanged and do not create linked records. - Improved the reliability of large computed-field cascades and backfills during sustained concurrent updates. - Improved security for authentication, form submissions, upserts, and application dependencies while preserving normal mobile sign-in behavior. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-27T02-17-21Z.3593) ## v2026.10.19 - 2026-10-25 - **Helm: App Runtime quota fits more published apps.** The `app-deploy` namespace now allows 2000 ConfigMaps and Secrets (was 300). Each published app keeps one of each, so with about 300 apps new publishes failed with `exceeded quota`. No action needed unless you override `appRuntime.resources.quota.hard`. ## v2026.10.18 - 2026-10-23 ### Teable release.2026-10-23T02-23-06Z.3549 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-10-23T02-23-06Z.3549`. ## v2026.10.17 - 2026-10-22 ### Teable release.2026-10-22T04-57-21Z.3531 #### Feature Updates - New apps with structured queries enabled now use `queries.yaml` for supported record and aggregate queries, including filtering, sorting, pagination, and parameters. Unsupported query shapes are clearly rejected with alternatives, while existing apps retain their current SQL behavior. - Routines now have a dedicated page for configuration and run history, with direct access to each run’s conversation. Editing includes autosave and next-run visibility, and ownership transfers to an eligible base or space owner when needed. - The command palette, opened with Cmd+K on macOS or Ctrl+K on Windows, provides quick access to project resources and common actions. It supports keyboard navigation, recent items, permission-aware results, and natural-language questions through Cuppy. - Structured sorting now supports explicit `NULLS FIRST` and `NULLS LAST` ordering for records and aggregate queries while preserving existing defaults. - AI image generation and regeneration are no longer available for lookup, formula, or other computed attachment fields. Editable source attachment fields continue to support generation, and lookup attachments continue to display, preview, and synchronize normally. #### Bug Fixes & Improvements - Fixed an issue preventing Claude.ai and Claude Desktop custom connectors from connecting to Teable MCP. Existing connectors may need to be removed and added again. - Fixed conditional rollups with multi-value filters so totals refresh correctly when source values change, including for newly created equivalent fields. - Improved field deletion dependency checks to use the current version of each authorized App, reducing response time and ensuring results reflect current dependencies. - Field deletion confirmations now identify referencing Apps and named queries, including the App, query, version, field, and usage. Queries with unresolved dependencies are marked as unknown, and checks remain advisory without changing queries or blocking deletion. - Improved routine permissions and mobile behavior so read-only members can view routine details without restricted controls, and opened run chats are titled and marked as read correctly. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-22T04-57-21Z.3531) ## v2026.10.16 - 2026-10-21 - **Long-unhealthy published apps are scaled to zero instead of deleted.** An app deployment that stays unhealthy past `infraService.appRuntime.unhealthyTtlSeconds` (default 6h) is now scaled to zero instead of being removed. The next visit wakes it for another try; if it is still not ready after 30 minutes it is scaled back to zero. Apps hit by a temporary node or image problem recover on their own; before, they had to be published again. No action needed. - **infra-service: app runtime counters on an internal metrics port.** `:9464/metrics` (Prometheus text) reports cleanup, wake and idle scale-down counts and deployment states, with no app names in labels. The port is not exposed through the Service or ingress. No action needed; scrape it if you collect cluster metrics. ## v2026.10.15 - 2026-10-21 ### Teable release.2026-10-21T02-11-07Z.3507 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-10-21T02-11-07Z.3507`. ## v2026.10.14 - 2026-10-20 - **Helm: fill preferred sandbox nodes first (`global.sandboxScheduling.packing.preferNodeLabels`).** Bin-packing places a new sandbox on the node that already runs the most. When that node is an autoscaled one, it keeps being refilled and never empties, so it never scales down even while fixed capacity sits idle. Set this to the labels of your fixed sandbox nodes (for example `{teable.io/sandbox-tier: base}`) and sandboxes fill those first; autoscaled nodes only take what does not fit and drain once load drops. Empty by default: no change unless you set it. - **Helm: optional non-root mode for git-registry and infra-service.** New `gitRegistry.podSecurityContext` / `containerSecurityContext` (and the same under `infraService`) let these pods run as uid 1000; both stay root by default. No action needed — see the comments in `values.yaml` before opting in. ## v2026.10.13 - 2026-10-16 ### Teable release.2026-10-16T07-06-34Z.3445 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-10-16T07-06-34Z.3445`. ## v2026.10.12 - 2026-10-16 ### Teable release.2026-10-16T01-06-23Z.3440 #### Feature Updates - Added This Year, Last Year, and Next Year presets to date filters. - Added “Add to chat” to the record detail menu, with correct context for records opened from linked tables or outside the current filtered view. On mobile, the action opens AI chat and reliably adds the record. - Skill activation now appears as a dedicated step in web and mobile chats, showing the skill name, description, and expandable instructions. Messages starting with /skill-name now reliably activate available skills. - Large web fetch and tool results are now available as readable files, with clearer failure handling for tool actions. #### Bug Fixes & Improvements - Improved platform security and reliability. - Creating a user field through the API without specifying shouldNotify now leaves notifications off. Explicitly setting it to true continues to send notifications. - AI-generated list views now display all stored numeric priorities, including values outside the standard High, Medium, and Low mapping. - App Builder sessions now consistently apply the latest field-display rules, including retained sessions and existing workspaces. - New single-line text values now trim surrounding spaces and replace line breaks and tabs with spaces, including writes without typecasting. Pasting multiline values into single-line primary fields also reuses matching linked records more reliably. - Long text values now trim leading and trailing whitespace while preserving internal line breaks and tabs. Values that are empty after trimming are stored as null. - Required form fields without default values now appear even if previously hidden. Required fields with defaults remain hidden as configured. - URLs in single-line and long-text cells now open on the first click, even when the cell is not selected. - Rating and checkbox icons now apply values on the first click. Clicking the current rating or a checked checkbox again clears it without an extra click. - Percentage fields now display and save values consistently across forms, expanded records, and grids. For example, entering 50 saves 0.5 and displays 50%. - Voice input now uses OpenAI’s gpt-transcribe model to maintain transcription availability. Saved configurations using legacy transcription models are automatically mapped to the new model. - Restored embedded child tables for accessible linked records, including headers, values, and record actions. Read-only record details also preserve this view and allow linked records to open; share views continue to use compact tags. - Text-to-number conversion now correctly handles currency values, numbers within text, and percentages. Text without a supported numeric value still converts to an empty value. - Number-to-checkbox conversion now treats all non-empty numeric values, including 0, as checked. Only empty values remain unchecked. - Saving single-select fields with duplicate option names now shows a clear validation error and leaves the field unchanged. Duplicate checks also ignore surrounding spaces. - Multiple-select to single-line text conversion now quotes option names containing commas, double quotes, or line breaks to preserve value boundaries. - Single- and multiple-select fields now correctly parse quoted typecast values containing commas. Select writes consistently use option names: non-typecast requests reject option IDs, while typecast requests treat ID-like values as literal names. - Table creation now returns VALIDATION_ERROR instead of validation_error when an unsupported field type is used as the sole primary field. These requests continue to be rejected without creating a table. - Date writes through the v2 API now respect field date formats and time zones, with or without typecasting. Date-to-text conversion preserves the displayed format and time zone, while text-to-date conversion uses the target field’s time zone and clears invalid values. - Renaming or deleting select options now updates unchanged defaults appropriately, preventing invalid defaults from blocking field saves or record creation. Explicit default changes remain respected, and resubmitting unchanged options without IDs no longer clears valid defaults. - Restored the time picker for empty date cells configured with a 24-hour format. Date-only inputs and calendar selections now save at midnight in the field’s configured time zone. - Formulas referencing button fields now return empty values instead of button-count data. Rollups over empty linked-record sets now return empty values for average and xor, so some existing results may change from 0 or false to empty. - Fixed cross-chat card dismissals so activity in one chat no longer closes pending cards in another. Also eliminated duplicate storage of presented files. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-16T01-06-23Z.3440) ## v2026.10.11 - 2026-10-14 ### Teable release.2026-10-14T12-10-48Z.3400 #### Feature Updates - Editors can now import CSV files and append data to existing tables without owner-level permissions. Imported records identify the importing editor as their creator. - Added reusable structured queries with field selection, aliases, filters, sorting, pagination, and aggregations, available through a unified API endpoint and CLI. - Added a versioned Query Library with stable query IDs, immutable revisions, pinned or latest-version references, sharing controls, revision restoration, and protection against conflicting updates. #### Bug Fixes & Improvements - Field PATCH requests now correctly apply supported options and constraints, including select choices, lookup display settings, rollup and formula configuration, and unique and required settings. Dependent fields and calculated values update accordingly while preserving applicable formatting. Unsupported options and constraints now return validation errors instead of success without applying changes. - Last modified time and user fields now explicitly represent “track all” with an empty field list, remove references to deleted fields, and preserve existing history during configuration changes. - Assignees now receive member-field notifications when records are duplicated. - Converting fields to single-line text now produces readable filename (token) entries for attachments, clears button click-count data, and quotes user names containing commas. - Conditional rollups now return a clear validation error for source fields outside the selected target table and prevent invalid fields from being created. - Improved reliability for automation workflows, AI field generation, workflow AI actions, routines, and media generation, reducing failures before execution. - Updated Simplified Chinese filter labels and ordering for single-user and multi-user fields. - Restored the ability for base owners and permission matrix administrators to view, restore, and permanently delete archived records when the authority matrix is enabled. - The AI chat model picker is now scrollable, with effort settings remaining visible while users browse models. - Button click limits now require positive integers in both the UI and API. Invalid API updates leave existing settings unchanged. Disabling a limit clears its maximum and reset settings, while unsaved edits are preserved without being overwritten by external field updates. - Improved security for public record sharing. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-14T12-10-48Z.3400) ## v2026.10.10 - 2026-10-14 - **Console: sandbox storage usage and JuiceFS writeback stats work again.** The chart adds a Role in `kube-system` (`infraService.juicefsWriteback.mountNamespace`) so the console can exec into JuiceFS mount pods; the web terminal stays limited to sandbox namespaces. Restricted deploy accounts: have your admin re-apply `cluster-rbac.yaml`. Not using JuiceFS? Set `infraService.juicefsWriteback.mountExec: false`. ## v2026.10.9 - 2026-10-14 - **Console security: file previews can no longer run scripts.** Files from the shared sandbox volume are served with scripts disabled: HTML, JS and XML preview as plain text, opening a raw SVG link downloads it, and raw file links only work from the console itself. Image, video, PDF and text previews look the same. No action needed. - **Console security: sandbox access tokens stay on the server.** The sandbox detail view no longer sends sandbox access tokens or other credential-like annotations to the browser, and the Preview button only signs preview ports, never the sandbox's internal control ports (execd, egress). No action needed. - **Helm: sandbox ports now require signed links.** Knowing a sandbox ID no longer opens its ports: the chart generates a signing key on install (kept across upgrades) and Teable hands out time-limited signed preview links. No action needed for a plain `helm upgrade`; if you upgrade with `--reuse-values`, use `--reset-then-reuse-values` once, and if you render with `helm template` or Argo CD, set `opensandbox-server.server.gateway.secureAccess.keys` yourself (see "Signed sandbox access" in `helm/README.md`). - **Docker: stricter sandbox preview routing** — `*.sandbox.` now only routes engine-issued sandbox ids and no longer serves the egress control ports (18080/18081). No action needed. ## v2026.10.8 - 2026-10-14 ### Teable release.2026-10-14T00-38-05Z.3367 #### Feature Updates - Added a cookie consent banner for app visitors in the EU, UK, and Switzerland when needed, with consent choices shared with the Teable website. The sign-in page now includes Cookie settings and separates product update email preferences from legal consent. #### Bug Fixes & Improvements - AI conversations are now created only when the first message is sent and appear in history after the first successful message, reducing empty chats and keeping conversations accessible without refreshing. - Improved AI chat and App Builder history reliability: unread indicators recover after reconnecting, and conversation actions handle missing or newly created chats more consistently. - Fixed computed-field error handling after linked-record fields are deleted or restored. Dependent formulas now show invalid states correctly, and lookup and conditional rollup values recover more reliably after undo. - Fixed numeric-to-date field conversion failures when dependent formulas or rollups exist. Dependent fields now update more reliably after type changes and clear incompatible formatting and display options. - Fixed built-in email client unsubscribe buttons for automation emails, Send Email API messages, and newsletters, including previously delivered emails with unsubscribe support. The existing confirmation page remains unchanged. - Fixed misleading success messages when pasted link-field values cannot be created or linked. Unsupported input is now validated more consistently, with clearer errors when linked records cannot be created. - Fixed formula field updates through the field PATCH API that could report success without applying the new expression. Valid formula options are now preserved, and result type changes apply more consistently. - Fixed conditional rollup SUM calculations to include all matching records, regardless of sorting or row limits, preventing undercounted totals. - Fixed multi-value lookups inheriting unsupported ring display settings. Compatible number formatting, such as currency and precision, is still preserved. - Lookup and conditional lookup API requests now reject button fields as source fields. Requests that previously accepted these unsupported configurations will now fail validation. - Fixed default naming and function selection for conditional rollups created through the API. Unnamed fields use source-field and target-table names, and an omitted expression defaults to counting all records. Formatting options now appear only after a rollup function is selected. - Fixed single-value formula cells using ERROR("custom error") appearing blank. They now display #ERROR: custom error and retain error details when saved or referenced. - Conditional lookups now return all matching records when the match limit is left blank, rather than defaulting to one match. The configuration hint also reflects the current limit. Existing configurations with a blank limit may now return more records. - Fixed button click counts not being saved through record create, update, and batch update APIs. Saved counts now appear consistently in API responses and subsequent reads. - Fixed TODAY() to respect the formula field’s configured time zone and return the expected local start of day. Time zone handling is also more consistent in nested formulas. - Improved the Simplified Chinese circular dependency message for conditional rollup filters, replacing raw English text and technical identifiers with a localized prompt. Invalid updates remain blocked without changing the existing configuration. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-14T00-38-05Z.3367) ## v2026.10.7 - 2026-10-13 ### Teable release.2026-10-13T10-15-34Z.3346 #### Feature Updates - Added a scraping data source catalog to discover and run endpoints by platform and data type, with data source information displayed in the menu. Agent and CLI workflows now support searching, viewing, and running endpoints and checking endpoint status, with clearer data source and endpoint details. - Scraping charges are now calculated based on the actual cost of each data source, with support for reserving credits in advance, setting a per-run credit limit, and settling charges at the end. - Removed Base-level read-only database connections and the associated connection panel. Base no longer provides credentials for direct PostgreSQL access; existing BYODB and SQL query functionality is unaffected. #### Bug Fixes & Improvements - Record updates containing only system or computed fields now succeed without changing existing values. Ignored fields such as Auto Number and Created Time remain ignored, while unknown fields still return validation errors. - Scraping menus on web and mobile now display specific data types, such as Posts, Profile, or Company, only when those types are available. Search results and platforms without distinct data types still use platform-only selection. - Improved sandbox security and reliability while retaining AI conversations, app previews, file uploads, and signed preview links. - Fixed failures in imports and bulk record creation caused by emoji near the truncation limit in long text, including Google Sheets imports. Also improved the reliability of text containing special Unicode characters during import rollback. - Project viewers can now find and open completed routine runs and the conversations they generate. Read-only access remains separate from editing actions, and permission consistency across routine history views has been improved. - Fixed an issue where forms blocked submission when required fields with configured default values were left blank. These fields now use their default values. - Improved member avatar portability across deployments and fixed delayed avatar updates in member, creator, and modifier views. - Fixed horizontal scrollbar synchronization issues when dragging across many views, including when dragging to the left and right edges. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-13T10-15-34Z.3346) ## v2026.10.6 - 2026-10-13 ### Teable release.2026-10-12T12-45-53Z.3331 #### Feature Updates - Admins can now configure sandbox CPU, memory, and temporary disk resources separately for AI chat, app builder, IM bots, and routines. Empty values inherit defaults or environment settings, and settings show effective defaults with a confirmation of resource changes before saving. - The Sandboxes page now supports filtering and batch deletion of IM bot and routine sandboxes, making it easier to recreate them with updated resource settings. - Added optional secure access for sandbox previews. #### Bug Fixes & Improvements - Fixed API-sent messages unexpectedly entering the queue instead of steering an active onboarding conversation. - Mobile chat histories now keep processed queued messages visually connected, eliminating large blank gaps between replies. - Stopping an AI reply now consistently clears the “working” state from the iOS lock screen activity. - Mobile resource change cards now retain specific resource names across split-screen and sheet chat views after opening linked boards or views. - Improved drag-and-drop feedback and folder drop detection in the mobile resource tree, making it easier to move tables, automations, and folders into subfolders. - Home conversation cards now prioritize conversations waiting for an answer, followed by unresolved failures and other unread conversations, consistently across iPhone, Android, and iPad. - Improved realtime collaboration reliability when values are cleared or clients reconnect, reducing unexpected errors and crashes while keeping shared content up to date. - Fixed changes to fields outside a table’s search coverage causing slower searches. Unrelated field changes now preserve search availability, reducing timeouts on large tables. - Improved mobile grid scrollbar touch handling. Dragging a scrollbar now stops ongoing inertial scrolling so the table follows the user’s touch more predictably. - Improved sandbox preview reliability when secure-access settings change. Shared preview links may expire after secure access is enabled and need to be refreshed or regenerated. - Clarified the link sign-in wording on the Chinese SSO settings page. - Improved trash reset reliability for large tables with many deleted views, fields, or records. - Improved computed-field update reliability when fields are deleted or link fields become unavailable, allowing unaffected fields to continue updating. - Fixed artifact viewers showing stale content, particularly on mobile after a page remains open for a long time. Displayed content now stays aligned with the selected version. - Improved security for comment images and private files. - Improved security for AI provider connections and made connection-test errors clearer and more consistent. - Base duplication now handles unavailable link fields more gracefully, preventing an affected field from causing the entire operation to fail. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-12T12-45-53Z.3331) ## v2026.10.5 - 2026-10-12 - **Helm: sandbox preview signing keys are stored as Secrets.** When `opensandbox-server.server.gateway.secureAccess.keys` is set (inject it at deploy time, e.g. `helm upgrade --set-string`), the rendered engine config and the preview gateway key string now live in Secrets instead of a ConfigMap and plain container args; `activeKey` defaults to the first key. Without keys nothing changes. No action needed. ## v2026.10.4 - 2026-10-11 ### Teable release.2026-10-10T06-11-53Z.3314 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-10-10T06-11-53Z.3314`. ## v2026.10.3 - 2026-10-10 - **Security fix: sandbox engine `v0.2.0-fix11` requires the API key on its path proxy.** `/v1/sandboxes/{id}/proxy/{port}` (HTTP and WebSocket) no longer serves requests without `OPEN-SANDBOX-API-KEY`. Browser previews are unaffected (they use the gateway on Kubernetes and the `*.sandbox` route on Docker). Kubernetes: upgrade the chart. Docker: re-run `./apply.sh` (it migrates the pin) and `docker compose up -d opensandbox-server`; local mode also needs the `*.sandbox.localhost` preview change from this release. - **Docker local mode: browser previews use `*.sandbox.localhost`.** The Teable app now hands the browser a per-port subdomain preview URL instead of the path-proxy URL on the Infra host, so previews keep app cookies in local mode too. Pull the updated `deploy/` files and run `./apply.sh local --with-app` then `docker compose up -d teable`. ## v2026.10.2 - 2026-10-09 - **Docker: sandbox previews keep cookies.** Apps that sign in inside a `*.sandbox.` preview now stay signed in. Pull the updated `deploy/` files and run `docker compose up -d caddy`. ## v2026.10.1 - 2026-10-09 - **Security fix: console web terminal hardened against cross-site WebSocket hijacking.** A page served from a same-site host (for example a sandbox preview subdomain) could open the Infra Service terminal WebSocket with the operator's login cookie and get a shell in any pod. Cookie-authenticated WebSocket and write requests now require a same-origin caller, and the `pods/exec` grant moved from the cluster-wide ClusterRole into a Role scoped to the sandbox namespace (new value `infraService.rbac.execNamespaces`, default `[sandboxNamespace.name]`). Upgrade the chart; if you pre-provision the ClusterRole yourself (`rbac.clusterScope.create=false`), drop `pods/exec` from it. ## v2026.10.0 - 2026-10-02 ### Teable release.2026-10-02T04-02-20Z.3278 #### Feature Updates - iOS sign-in now requires an existing Teable account and a server version that supports browser-based mobile authentication. Account creation through the iOS sign-in flow and sign-in to older, unsupported servers are no longer available. - The mobile app now requests AI data-processing consent before sign-in, with consent applying separately to each server. Users are prompted on launch if they have not accepted the current consent version; declining signs them out. #### Bug Fixes & Improvements - Fixed conditional lookups returning unrelated records when matching fields are empty, and improved comparison consistency between single-value and multi-value fields. Results may change for filters that previously relied on empty values matching each other. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-10-02T04-02-20Z.3278) ## v2026.9.34 - 2026-09-30 ### Teable release.2026-09-30T04-47-05Z.3276 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-30T04-47-05Z.3276`. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-30T04-47-05Z.3276) ## v2026.9.33 - 2026-09-27 ### Teable release.2026-09-27T02-14-26Z.3273 #### Feature Updates - “Contact Support” in the web user menu and mobile settings now opens a Teable Community feedback form instead of the previous anonymous form. Users can submit feature requests and issue reports to the Teable team publicly or privately. - Users can request a data export before deleting their account or permanently deleting a space from the recycle bin. The export includes CSV data, app packages, and record attachments in a downloadable archive, with a download link sent by email. Administrators can also request and send an export link when deactivating or deleting a user. #### Bug Fixes & Improvements - Improved export completeness and reliability: account exports now include spaces owned by the user that have been moved to the recycle bin; archives have a clearly defined root folder; missing attachments are reported without stopping the export; and failed app package downloads are retried. Export emails use the recipient’s language. - Fixed export confirmation prompts and success messages in the admin interface. The confirmation prompt now appears only after an export request is accepted. The self-service export quota message now correctly states “5 exports within 24 hours”; the limit has not changed. - Fixed retry behavior when loading more execution records fails while offline. Users can continue loading after reconnecting without duplicate entries or unstable retries. - Improved the reliability of login and publish status after startup or a connection interruption. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-27T02-14-26Z.3273) ## v2026.9.32 - 2026-09-25 ### Teable release.2026-09-25T09-38-50Z.3268 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-25T09-38-50Z.3268`. ## v2026.9.31 - 2026-09-25 - **Git traffic can stay inside the cluster.** New Helm value `gitRegistry.sandboxUrl` lets the Infra Service hand out an in-cluster git URL (e.g. `http://-git-registry..svc.cluster.local`) instead of the public one, so App Builder clone/push no longer hairpins through the public load balancer. The same URL is also returned to the Teable backend for publish/rollback, so set it only when the Teable backend runs inside the cluster as well. Blank keeps the previous behaviour. No action needed. ### Teable release.2026-09-25T04-01-19Z.3254 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-25T04-01-19Z.3254`. ## v2026.9.30 - 2026-09-22 ### Teable release.2026-09-22T03-34-15Z.3202 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-22T03-34-15Z.3202`. ## v2026.9.29 - 2026-09-22 ### Teable release.2026-09-21T14-48-39Z.3197 #### Bug Fixes & Improvements - Fixed numeric lookup sorting to ensure values are arranged in numerical order; also corrected the lookup grouping order for referenced linked records. - Improved AI conversation reliability during model switching and recovery, especially for long-running routines that use non-default models. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-21T14-48-39Z.3197) ## v2026.9.28 - 2026-09-21 ### Teable release.2026-09-21T07-48-52Z.3187 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-21T07-48-52Z.3187`. ## v2026.9.27 - 2026-09-21 ### Teable release.2026-09-20T13-36-35Z.3184 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-20T13-36-35Z.3184`. ## v2026.9.26 - 2026-09-20 ### Teable release.2026-09-19T11-56-47Z.3177 #### Feature Updates - Added support for connecting X and other Composio integrations that require a deployment-owned OAuth app. API-key integrations continue to use credential forms. - Sheet form designer, preview, and share panels are unavailable in this release due to compatibility limitations. #### Bug Fixes & Improvements - Fixed personal views sometimes displaying blank loading placeholders until the page was refreshed. - Redirected outdated public template links to the Teable templates page instead of returning a 404 error. - Improved request performance and reduced database load across table, record, field, and SQL query operations. - Improved BYODB query timeout handling to cancel long-running queries more reliably and reduce server errors. - Improved mobile AI resource summaries with clearer details and counts for nested changes to fields, views, and records, while preserving navigation to affected tables. - Improved mobile chat reliability so drafts clear after sending, follow-up messages are delivered, and collapsed and expanded layouts behave consistently. - Made mobile chat sheets easier to dismiss and added a more compact collapsed state. - Fixed missing page titles when opening mobile table pages from links, notifications, or resource cards. - Prevented mobile record-picker and select-editor search fields from automatically opening the keyboard and obscuring options. - Fixed recently measured collapsible content sometimes failing to expand correctly. - Reduced unnecessary refreshes and polling when view configurations change, improving realtime collaboration performance. - Improved table-list consistency after schema updates complete. - Restored scrolling in the expanded-record member dropdown for easier selection from large member lists. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-19T11-56-47Z.3177) ## v2026.9.25 - 2026-09-19 ### Teable release.2026-09-18T12-29-19Z.3168 #### Feature Updates - Starter recommendations now appear on a project’s first visit in the reader’s language and better reflect the project’s content. Suggestions can target real tables, pull relevant external data, and propose complete applications such as portals, internal tools, AI assistants, and websites. - Starter recommendations remain available while refreshed suggestions are prepared, with more reliable handling when generation fails or returns no content. - New chat messages now supersede pending authorization, connection, selection, credential, and question cards, allowing conversations to continue without getting stuck. These cards also have clearer layouts and actions. - The mobile + menu now offers clearer, grouped attachment and action shortcuts with improved subpage navigation. - Typing @ on mobile now opens the reference picker in supported contexts without triggering on email addresses. The trigger character is removed after the picker is completed or dismissed. - Added fuzzy search for mobile connectors, web scraping datasets, and the web integration picker. #### Bug Fixes & Improvements - Fixed stale cross-table computed values after linked records were updated, improving calculation consistency for chained formulas, lookups, inventory, and allocation workflows. - Fixed an issue where selecting an Assignee could unexpectedly scroll the record detail view and move the edited field out of view. - Improved integration connection screens with clearer loading feedback, loading placeholders, empty states, and mobile-safe actions. - Fixed misleading repeated “Table not found” errors during valid field changes and improved handling of pending or failed table imports. - Improved link deletion performance and reliability across required, self-referencing, one-way, bidirectional, computed, and recycled relationships. - Fixed an issue where queued App Builder messages could fail before reaching generation. Messages affected before this update must be resent. - Fixed mobile credential requests so they ask only for the required secret, and prevented confirmation-card actions from overlapping the home indicator. - Fixed grid view inconsistencies where rapid scrolling could briefly display previously viewed records in the wrong positions. - Improved reconnection for tables that have been idle by showing recovery progress and avoiding premature availability warnings. - Refined the mobile home layout, touch interactions, navigation, content refreshing, scroll restoration, and support for larger text. - Simplified settings for self-managed database spaces by hiding the irrelevant Data Database tab. - Fixed an Internal Server Error on the admin Table Query Ops page when the feature was unavailable, while preserving accessible filtering, sorting, and summary information. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-18T12-29-19Z.3168) ## v2026.9.24 - 2026-09-17 - **MinIO images now come from `ghcr.io/teableio`.** Upstream withdrew its Docker Hub images (`minio/minio`, `minio/mc`), so the same pinned builds (identical digests) are now hosted at `ghcr.io/teableio/minio` and `ghcr.io/teableio/minio-mc`, mirrored in China like every other image. Running installs are unaffected. Before your next `docker compose pull` or reinstall, set `MINIO_IMAGE` / `MINIO_MC_IMAGE` in `.env` (Kubernetes: `minio.image` / `minio.mcImage`) to the new references -- tags unchanged. - **Added recursive delete to the Infra object API.** `DELETE /s3///?recursive` removes everything at that path in one call; the plain directory form still refuses a non-empty directory. No action needed. - **The Infra object API no longer follows symbolic links.** A request whose path passes through a symlink now gets `400`, so a link planted inside one prefix cannot reach another. No action needed. ### Teable release.2026-09-15T10-15-21Z.3095 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-15T10-15-21Z.3095`. ### Teable release.2026-09-17T08-29-35Z.3144 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-17T08-29-35Z.3144`. ### Teable release.2026-09-17T13-29-16Z.3151 #### Feature Updates - App Builder now notifies users when a version cannot be saved because the artifact is too large, provides cleanup guidance, and allows users to send failure details to AI for help. - Routine runs can now continue until they complete, fail, or are manually stopped, without being subject to a fixed maximum duration. Run history also displays the start and end times. - The new chat launch card on mobile can now use project-specific recommendations more reliably and loads them in the background to reduce wait times. #### Bug Fixes & Improvements - The mobile home page and project chat history no longer display conversations from apps that have been moved to the recycle bin or permanently deleted. Conversations generated by apps remain hidden while the app is deleted and reappear after the app is restored. - Fixed Composio connection handling issues on web and mobile, including Gmail and API key-based tools, ensuring that users enter the correct connection flow and that canceled connections do not reuse unrelated accounts. - Fixed an issue where connected Composio apps could not be used by Agents. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-17T13-29-16Z.3151) ## v2026.9.23 - 2026-09-11 ### Teable release.2026-09-11T07-36-49Z.3059 #### Feature Updates - Mobile sign-in now opens the system browser, improving compatibility with OAuth providers, existing browser sessions, and bot-protection flows. Sign-in is simplified to a server address and browser authentication; native email/password sign-in has been removed. Older servers continue to use the previous web-based flow. #### Bug Fixes & Improvements - Routine runs now move to completed status promptly after chat generation finishes, avoiding delays when workers are replaced during a rollout. - Email automation trigger setup no longer shows required-field errors immediately after selecting the trigger type; validation begins after connection fields are edited. - Composio-managed Gmail connections can now be assigned to automation and app credential slots and used with connector-based email event triggers. Native Gmail and Outlook trigger connections remain retired; IMAP connections are unchanged. - CLI help now provides consistent guidance for skill scope options and environment defaults. - Chat tool calls now remain visually grouped across step boundaries and trailing reasoning. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-11T07-36-49Z.3059) ## v2026.9.22 - 2026-09-10 ### Teable release.2026-09-10T06-21-10Z.3025 #### Feature Updates - Redesigned the Scrape Data menu with clearer platform icons, easier-to-scan options, fewer truncated labels, and in-panel configuration. - Expanded AI image generation to support current GPT Image, Gemini, Seedream, Recraft, Muse, Grok Imagine, and Arrow models, with more accurate model-specific options and image-to-image support. - Retired native Gmail and Outlook connections for the “When a new email is received” trigger. IMAP remains supported, while existing Gmail and Outlook records are preserved but can no longer be configured or reauthorized. #### Bug Fixes & Improvements - Reduced unnecessary activity requests when opening Grids, providing smoother status updates while formulas, lookups, or rollups are calculating. - Fixed form validation errors appearing as unhandled failures. Errors now remain in the form with clear messages, including consistent “Required” labels for missing fields. - Improved AI image validation and output handling for newer models, including SVG-style Arrow outputs and more accurate preservation of uploaded file types and extensions. - Prevented workflows using retired Gmail or Outlook email-trigger configurations from repeatedly failing in the background, and removed unavailable connection and authorization options from setup screens. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-10T06-21-10Z.3025) ## v2026.9.21 - 2026-09-10 ### Teable release.2026-09-10T00-17-07Z.3010 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-10T00-17-07Z.3010`. ## v2026.9.20 - 2026-09-09 ### Teable release.2026-09-09T10-26-44Z.3004 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-09T10-26-44Z.3004`. ## v2026.9.19 - 2026-09-09 ### Teable release.2026-09-09T04-35-35Z.2997 #### Feature Updates #### Bug Fixes & Improvements - Improved search responsiveness for large tables with valid search indexes. - Fixed Grid views failing to load after a filtered user field was switched between single-select and multi-select modes. - Improved App Builder export security by excluding granted credentials and connection secrets from copied environment variables and downloaded source code. These credentials must now be provided separately by their owners. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-09T04-35-35Z.2997) ## v2026.9.18 - 2026-09-09 ### Teable release.2026-09-09T01-48-49Z.2993 #### Feature Updates - Expanded the Scraper catalog with additional discovery modes and targets, including X profiles, Facebook content, Amazon sellers, Walmart reviews, and Crunchbase people, with localized labels and clearer prompts. - Improved access to long-tail Scraper datasets by exposing supported modes in search results and allowing raw dataset IDs with discoverBy. - Updated the Scraper CLI so teable scrape run returns a snapshot ID immediately; use teable scrape status --wait to wait for results. - Added safer Scraper usage limits, pending-request reuse, and duplicate-charge prevention for concurrent status checks. #### Bug Fixes & Improvements - Improved table stability and reduced unnecessary network traffic during initial loading, reconnects, and periods of high activity. - Prevented compute activity subscription errors from displaying unrelated global notifications. - Fixed User field configuration changes between single-select and multi-select causing invalid filters or unloaded Grid views. Existing filters and list-based values are now preserved where supported. - Fixed empty in-table searches opened with Cmd+F leaving Grid rows stuck in a loading state. Current filters, sorting, and grouping now remain intact. - Improved computed-field reliability for BYODB PostgreSQL deployments. - Improved shared view reliability and consistency when loading field and record data. - Improved Admin table query page responsiveness in large environments while preserving summary counts and pagination behavior. - Improved Admin table query status accuracy when search is unavailable. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-09T01-48-49Z.2993) ## v2026.9.17 - 2026-09-08 - **Docker server mode accepts your own certificate.** Fill `TLS_CERT_FILE` / `TLS_KEY_FILE` in `.env` instead of the Cloudflare token. Existing installs: re-run `./apply.sh server [--with-app]` after pulling, then `docker compose up -d`. - **`PRIVATE_CA_FILE` makes the whole Docker stack trust a corporate CA** -- the Teable app, the Infra Service and every sandbox. Set it in `.env`, re-run `apply.sh`, then `docker compose up -d`. No action needed otherwise. - **A replaced certificate, CA file or engine config is applied by `docker compose up -d`** after `apply.sh` -- no `--force-recreate` or engine restart needed anymore. No action needed. - **`SANDBOX_EXTRA_BINDS` mounts extra host files into every sandbox.** No action needed. - **`CADDY_STATIC_IMAGE` points the entry at a mirrored Caddy image** for air-gapped hosts using their own certificate. No action needed unless offline. - **`doctor.sh` (server) checks the served certificate names, wildcard DNS from inside a container and private-CA trust.** No action needed. - **New private-network guide** at `docker/all-in-one/private-network.md`, with matching troubleshooting entries. No action needed. - **Docker sandboxes exit with `sudo: a password is required`** on Teable images from 2026-08-18 to 2026-09-04. Upgrade Teable to `release.2026-09-07T01-58-27Z.2952` or later; `TROUBLESHOOTING.md` has a stopgap if you cannot yet. ## v2026.9.16 - 2026-09-08 ### Teable release.2026-09-08T06-17-32Z.2983 #### Feature Updates #### Bug Fixes & Improvements - Improved field snapshot performance and reliability under high concurrency, reducing timeout-related errors. - Fixed lookup and rollup snapshots to handle saved options, converted choices, cross-base references, and version changes consistently. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-08T06-17-32Z.2983) ## v2026.9.15 - 2026-09-08 ### Teable release.2026-09-08T05-53-30Z.2982 #### Feature Updates - Updated the admin table query operations view to group search and aggregation insights by table, provide clearer index and search coverage actions, and show more readable conclusions, recommendations, and query path status. - Improved computed outbox lineage so partial-batch reruns within the same stage remain aligned, making serial retries easier to understand. - Renamed the “dirty records” metric to “estimated complexity” to better describe the displayed value. - Renamed the secret action from “Rotate” to “Edit” in app and automation credentials dialogs, without changing how secret values are updated. #### Bug Fixes & Improvements - Improved stability during table analysis on large workspaces, reducing the risk of database stalls and temporary 503 errors. - Fixed grant owner avatars in credentials and configuration dialogs; users without an avatar continue to see initials. - Improved credential usage lists so the “+N · View” popover shows only additional resources, truncates long names with hover details, keeps actions accessible, and displays when access was granted. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-08T05-53-30Z.2982) ## v2026.9.14 - 2026-09-08 ### Teable release.2026-09-08T01-36-21Z.2976 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-08T01-36-21Z.2976`. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-08T01-36-21Z.2976) ## v2026.9.13 - 2026-09-08 ### Teable release.2026-09-07T15-08-33Z.2973 #### Feature Updates - URLs in text-based fields are now automatically detected and rendered as clickable links in grid cells, expanded records, formulas, summaries, and long text, with improved support for CJK text, punctuation, mixed content, and touch interactions. - AI-created website and URL columns now use plain-text fields with automatic link detection. The previous URL display options are no longer available for new configurations; existing configurations remain valid and use automatic linking. - Full-field search now always uses the configured search index coverage. Newly added fields become searchable after the index is reconfigured; if no index is configured, ILIKE search is limited to 20 eligible fields. - Admin tools now display the search provider and indexed field coverage for each table, making search configurations easier to diagnose and manage. - The compute task timeline now provides clearer labels and lineage relationships, covering the entire process from source updates through processing and completion. #### Bug Fixes & Improvements - Improved the reliability of V2 table queries by applying sensible defaults when query options are omitted. - Improved the responsiveness of the Table Query Ops admin overview by limiting the default view to recent data. - Improved the performance and responsiveness of computed fields and conditional aggregations, especially under higher workloads. - Improved the reliability of real-time table activity during load spikes or when compute activity data cannot be loaded promptly, reducing connection errors and retry loops. - Shared and bulk data requests now ignore private activity data that users are not authorized to access instead of causing the entire request to fail. - Fixed OAuth-based app builder integrations to ensure authorization prompts are always displayed correctly, and resolved an issue where Google Sheets selection remained stuck after authorization. - Improved consistency for supported OAuth services across app builder chat, general chat, the app builder sandbox, and related CLI commands. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-07T15-08-33Z.2973) ## v2026.9.12 - 2026-09-07 ### Teable release.2026-09-07T09-32-29Z.2963 #### Feature Updates - Personal API keys and third-party connections are now managed as reusable credentials in Settings › Integrations, with per-resource access controls and clear usage visibility. - Apps, automations, and copied or imported resources retain credential placeholders instead of secret values, allowing collaborators to securely bind their own credentials. Resources can also use credentials from multiple users under separate aliases. - AI-assisted building now requires confirmation before using credentials and masks secrets in test output. - Added a Scraper option to the chat “+” menu for curated datasets, with localized prompts and access based on permissions and scraper settings. - Expanded scraper support beyond the curated catalog, including natural-language dataset discovery and clearer required input details. #### Bug Fixes & Improvements - Fixed idle tables remaining stuck on “checking calculation status” when unrelated tables had queued calculations. - Fixed text searches failing or being skipped when records contained inconsistent or unsupported date values. - Fixed credential usage summaries to count only hidden resources and improved truncation for long resource names and aliases. - Improved scraper reliability by preventing unavailable posts from being treated as verification failures and reducing premature LinkedIn timeouts. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-07T09-32-29Z.2963) ## v2026.9.11 - 2026-09-07 ### Teable release.2026-09-07T06-05-47Z.2955 #### Feature Updates #### Bug Fixes & Improvements - Improved compute activity reliability by displaying errors within the activity panel and preserving cached status when supplemental checks fail or time out. - Improved computed field updates to avoid unnecessary recalculation of linked lookups and rollups when formula results remain unchanged, while keeping dependent values accurate. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-07T06-05-47Z.2955) ## v2026.9.10 - 2026-09-07 ### Teable release.2026-09-07T03-18-00Z.2953 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-07T03-18-00Z.2953`. ## v2026.9.9 - 2026-09-07 ### Teable release.2026-09-07T01-58-27Z.2952 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-07T01-58-27Z.2952`. ## v2026.9.8 - 2026-09-06 ### Teable release.2026-09-06T12-49-30Z.2949 #### Feature Updates #### Bug Fixes & Improvements - Fixed missing or stale downstream formula values in multi-step lookup and computed-field recalculations. - Improved computed-field update performance by skipping unnecessary work when no records require recalculation. - Improved computed-field reliability for deployments using non-default PostgreSQL schemas. - Fixed AI settings crashes when provider data is missing and allowed administrators to save an empty custom provider configuration. - Improved AI model selection so Spaces can use their own models and credentials without requiring administrator-level AI configuration. - Fixed false calculation-sync warnings for tables without calculated fields and clarified empty calculation task states while preserving genuine error visibility. - Improved the admin search path setup flow with clearer explanations when a recommended option cannot be enabled. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-06T12-49-30Z.2949) ## v2026.9.7 - 2026-09-05 ### Teable release.2026-09-05T15-06-03Z.2943 #### Feature Updates #### Bug Fixes & Improvements - Improved error handling for collaboration and shared document loading, returning clearer permission-related errors when activity replay fails. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-05T15-06-03Z.2943) ## v2026.9.6 - 2026-09-05 ### Teable release.2026-09-05T12-11-06Z.2942 #### Feature Updates #### Bug Fixes & Improvements - Improved computed-field reliability by keeping unresolved calculation errors visible until recovery is verified. - Improved formula performance by avoiding unnecessary recompilation and downstream updates, with more efficient processing for large updates and backfills. - Improved full-field search reliability and performance for large tables across list, count, group, and aggregation queries, including better coverage for numeric fields, rounded values, and short search terms. - Statistical queries now stop processing when users change or cancel searches. - Fixed repeated retries for computed-field work associated with deleted or missing Bases. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-05T12-11-06Z.2942) ## v2026.9.5 - 2026-09-05 ### Teable release.2026-09-05T08-43-19Z.2938 #### Feature Updates - Lookup fields can now remove duplicate values from multiple linked records for cleaner, easier-to-read results. - Mobile sign-in now uses the system browser, allowing users to reuse existing browser sessions through a safer, user-confirmed flow. Older servers continue to use the previous embedded login experience. - The native mobile app now shares authenticated sessions across app content, while embedded pages load more consistently and avoid duplicate navigation. - Mobile chat history can now group and link general, agent, and app-generation conversations more accurately. #### Bug Fixes & Improvements - Improved full-field search performance and reliability for large tables, including list, count, grouping, aggregation, shared-view, and concurrent search requests. - Improved cancellation of statistical queries to reduce unnecessary work when searches are changed or canceled. - Fixed an error that could prevent rollup fields from being changed from “unique array” to “count all.” - Improved rollup conversions by validating formatting against the new result type. - Improved the stability and performance of nested formulas that repeatedly check whether attachment, user, or lookup fields are empty, reducing the risk of timeouts during computed field updates. - Fixed “contains any of → current user” filters on lookup fields that reference member fields. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-05T08-43-19Z.2938) ## v2026.9.4 - 2026-09-04 ### Teable release.2026-09-04T10-30-33Z.2931 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-04T10-30-33Z.2931`. ## v2026.9.3 - 2026-09-04 ### Teable release.2026-09-04T09-00-16Z.2928 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-04T09-00-16Z.2928`. ## v2026.9.2 - 2026-09-03 ### Teable release.2026-09-03T13-21-49Z.2922 #### Feature Updates - Updated computed-field pause behavior: bounded pauses can continue accepting writes within safe limits, while blocking pauses return HTTP 409 with `COMPUTE_PAUSED_WRITE_BLOCKED` and a `retryAt` time instead of a generic 503 error. - Updated Secrets manager terminology, using “Name” for secret identifiers and “Secret” for secret values across supported languages. #### Bug Fixes & Improvements - Computed fields, formulas, and rollups now retry after temporary recalculation timeouts, reducing stale values after source data changes. - Improved schema repair handling for missing columns, reducing misleading rollback errors and unnecessary computed-field fallback work. - Fixed the API Access page getting stuck when opening a table from the app sidebar and corrected the Advanced tab to use the selected table. - Fixed record context menus not opening from referenced long text fields while preserving the browser context menu for selected read-only text. - Improved Field AI cancellation messages for provider billing, quota, authentication, and account issues, including clearer errors for image generation failures. - Fixed CLI artifact operations using personal access or OAuth tokens, while consistently respecting configured scopes and space or base restrictions. - Kept artifacts aligned with their base when it moves between spaces, preserving applicable access and sharing rules. - Improved App Builder chat recovery so messages do not remain stuck in “recovering” after interrupted generation, and improved rich-content rendering stability and security. - Improved the settings page layout and navigation on mobile devices. - Fixed failed formula field creation temporarily making the affected table unavailable. - Improved record query performance for wide tables when requesting a limited selection of fields, reducing unnecessary data loading and CPU usage. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-03T13-21-49Z.2922) ## v2026.9.1 - 2026-09-02 ### Teable release.2026-09-02T10-18-27Z.2908 #### Feature Updates - Webhook automation triggers can return configurable synchronous responses, enabling URL verification flows for platforms such as Feishu/Lark, Slack, WeCom, and DingTalk. Existing automations retain the default acknowledgement unless configured otherwise. - Attachment previews now let users delete files directly and automatically move to a neighboring attachment after deletion. - Chat agents can discover and work with multiple accessible bases in the chat’s space, with per-command base targeting. #### Bug Fixes & Improvements - Improved table update reliability during connection timeouts, reducing failed schema operations and the need for manual recovery after completed rollbacks. - Webhook tests now show the incoming request instead of trigger configuration, and partial configuration edits preserve existing authorization and response settings. - Compacted linked-record rollups now return visible title strings instead of linked-record objects, preserve duplicate titles, and remain consistent across the UI and API. Integrations expecting object-shaped values may require updates. - Attachment thumbnails and previews now fall back to file icons when an image cannot be rendered. - Conditional rollup filters now preserve nested groups after saving and reopening, including in narrow settings panels, and lookup-number results remain consistent with API-configured filters. - Improved base discovery for chat users with base-level access and prevented base-specific context from carrying across shared workspaces or resumed sessions. - Fixed table update and computed-field backfill failures involving multi-value lookup or linked-record rollups, including formulas such as `max`, `min`, `and`, and `or`. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-09-02T10-18-27Z.2908) ## v2026.9.0 - 2026-09-02 ### Teable release.2026-09-02T03-16-51Z.2899 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-09-02T03-16-51Z.2899`. ## v2026.8.53 - 2026-08-31 - **`doctor.sh` now checks the AI Agent skills storage contract.** With `infraService.s3Compat.enabled` on, the Helm doctor probes the `/s3/teable-agent` endpoint end to end, verifies both claims, and -- when a sandbox pod is running -- proves the control-plane and sandbox volumes are one shared filesystem (the failure that is otherwise silent). The all-in-one doctor probes the endpoint through the entry. Installs with the default (off) just see an informational skip. No action needed. ## v2026.8.52 - 2026-08-31 ### Teable release.2026-08-31T02-56-18Z.2853 #### Feature Updates - Added full Hebrew UI support in the Community and Enterprise editions, covering language selection, locale detection, preferences, calendars, announcements, static pages, and the SDK. - Added search optimization analysis for administrators, providing one actionable recommendation for broad substring searches while identifying existing search paths and avoiding duplicate recommendations. #### Bug Fixes & Improvements - Improved right-to-left rendering in Arabic and Hebrew interfaces, including direction icons, editable fields, panels, forms, menus, selectors, gradients, and keyboard navigation. - Added missing Arabic translations that previously appeared in English on relevant pages and controls. - Updated text input in Arabic and Hebrew interfaces to follow the interface direction while preserving automatic direction detection for displayed content, improving the mixed-language editing experience. - Improved the mobile layout of the self-hosted license page, making credentials easier to view and manage on smaller screens. - Improved relationship graph accuracy by displaying only relevant relationships and preventing unrelated parent trees from appearing in the admin view. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-31T02-56-18Z.2853) ## v2026.8.51 - 2026-08-28 ### Teable release.2026-08-28T05-16-40Z.2847 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-28T05-16-40Z.2847`. ## v2026.8.50 - 2026-08-28 - **Added `infraService.appRuntime.scaleToZero` (teable-infra 0.9.0).** Tune or disable app idle scale-to-zero: `enabled`, `idleSeconds`, `intervalSeconds`. Blank values inherit the built-in defaults (enabled, 7 days idle, 600s scan), so existing installs behave exactly as before. No action needed. ## v2026.8.49 - 2026-08-28 ### Teable release.2026-08-27T15-42-00Z.2838 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-27T15-42-00Z.2838`. ## v2026.8.48 - 2026-08-27 ### Teable release.2026-08-27T15-17-30Z.2836 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-27T15-17-30Z.2836`. ## v2026.8.47 - 2026-08-27 ### Teable release.2026-08-27T08-17-18Z.2826 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-27T08-17-18Z.2826`. ## v2026.8.46 - 2026-08-27 ### Teable release.2026-08-27T05-10-16Z.2819 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-27T05-10-16Z.2819`. ## v2026.8.45 - 2026-08-27 ### Teable release.2026-08-26T10-21-34Z.2809 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-26T10-21-34Z.2809`. ## v2026.8.44 - 2026-08-25 ### Teable release.2026-08-25T14-19-49Z.2796 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-25T14-19-49Z.2796`. ## v2026.8.43 - 2026-08-25 ### Teable release.2026-08-25T08-19-19Z.2785 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-25T08-19-19Z.2785`. ## v2026.8.42 - 2026-08-25 ### Teable release.2026-08-25T05-24-44Z.2776 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-25T05-24-44Z.2776`. ## v2026.8.41 - 2026-08-21 - **Documented what AI Agent skills require.** Skills are stored as files through the Infra object API, so they need `infraService.s3Compat.enabled` plus one shared filesystem mounted by both Infra Service and the sandboxes -- see [`helm/README.md`](helm/README.md), "AI Agent skills". No action needed. - **Fixed `infraService.s3Compat.allowOverwrite: false` being ignored.** An explicit `false` still rendered as `true`, so the object endpoint kept overwriting existing objects. No action needed unless you set it. ### Teable release.2026-08-22T03-40-44Z.2744 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-22T03-40-44Z.2744`. ## v2026.8.40 - 2026-08-21 ### Teable release.2026-08-20T14-44-47Z.2730 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-20T14-44-47Z.2730`. ## v2026.8.39 - 2026-08-20 ### Teable release.2026-08-20T05-18-33Z.2723 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-20T05-18-33Z.2723`. ## v2026.8.38 - 2026-08-20 - **Added `server.sandboxNetworkPolicy.additionalAllowedPeers` (opensandbox-server 0.5.0).** Selector-based egress allow rules for the sandbox fence, targeting in-cluster platform endpoints by namespace/pod selector. Use these instead of `additionalAllowedCidrs` on CNIs that match egress policies against the post-DNAT pod IP (e.g. Alibaba Cloud Terway), where an ipBlock allow for a Service ClusterIP never matches. No action needed; existing values render the same rules. Note: repackaging the subchart also brings the `opensandbox-server` default-resource reduction announced in v2026.8.28 into the umbrella chart — the vendored subchart had drifted from its source since then, so installs relying on chart-default resources receive that change starting with this release. ## v2026.8.37 - 2026-08-19 ### Teable release.2026-08-19T09-39-21Z.2715 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-19T09-39-21Z.2715`. ## v2026.8.36 - 2026-08-19 - **Git registry repositories now use far less disk.** Pushes are stored packed, and nightly maintenance repacks oversized repositories (thresholds tunable via `gitRegistry.gcLooseObjectsThreshold` / `gcLooseSizeBytes` / `gcPacksThreshold`). No action needed. ## v2026.8.35 - 2026-08-19 - **infra-service now logs its effective configuration at start-up.** Lines are prefixed `[config]` and cover sandbox lifetime, backpressure, app scale-to-zero, app cleanup, and metrics. This is what the process is actually running with, which is not always what `kubectl get configmap` shows — a ConfigMap edit does not reach a running pod until it restarts, and `subPath` mounts never update at all. Check with `kubectl logs deploy/ | grep '\[config\]'`. No action needed. ## v2026.8.34 - 2026-08-19 ### Teable release.2026-08-19T09-57-17Z.2716 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-19T09-57-17Z.2716`. ## v2026.8.33 - 2026-08-19 - **Fixed RRSA STS exchange failing with `MissingTimestamp`.** The `AssumeRoleWithOIDC` call introduced in v2026.8.31 omitted the mandatory `Timestamp` common parameter, so enabling `artifactOss.rrsa` always failed. No action needed beyond upgrading. ## v2026.8.32 - 2026-08-18 ### Teable release.2026-08-18T10-54-07Z.2696 #### Feature Updates - Improved the Space page layout on mobile so navigation remains easy to use when the top section contains more information. - Made the desktop entry point for opening a base more prominent for quicker access. #### Bug Fixes & Improvements - Fixed failures when updating or converting number lookup fields with stale metadata, preventing invalid values from causing backfill errors. - Improved lookup field schema updates and rebuilds to reduce failed operations during display-only changes. - Improved conditional lookup and rollup processing on large tables, reducing timeouts and failed updates by using more efficient filtering and indexes. - Fixed a crash when viewing numeric lookup columns with missing formatting settings; these fields now use the default number format. - Updates now handle trashed referenced tables correctly by skipping affected steps while continuing with active tables. - Fixed billing period and timezone handling so usage dialogs, charts, and history consistently show the correct cycle for paid and free plans. - Fixed the branding link in public form footers so it opens the Teable website directly. - Fixed add-on credit resets so allowances refresh according to their own grant cycle without duplicate grants, with the reset time shown more clearly. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-18T10-54-07Z.2696) ## v2026.8.31 - 2026-08-18 - **Keyless OSS artifact store via RRSA (Alibaba Cloud ACK).** Optional `infraService.appRuntime.artifactOss.rrsa` lets infra-service use temporary STS credentials instead of a static AccessKey Secret; requires RRSA enabled on the ACK cluster. Off by default; existing setups are unaffected. ## v2026.8.30 - 2026-08-18 ### Teable release.2026-08-18T06-53-59Z.2682 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-18T06-53-59Z.2682`. ## v2026.8.29 - 2026-08-18 ### Teable release.2026-08-18T02-59-03Z.2673 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-18T02-59-03Z.2673`. ## v2026.8.28 - 2026-08-17 - **Lower default resources for `opensandbox-server` and its ingress gateway.** Chart defaults were sized far above observed production usage. Server: requests `1 CPU / 4Gi` → `100m / 512Mi`, limits `2 CPU / 8Gi` → `1 CPU / 2Gi`. Gateway: requests `1 CPU / 4Gi` → `50m / 128Mi`, limits `2 CPU / 8Gi` → `500m / 512Mi`. Installs that set `server.resources` / `server.gateway.resources` explicitly are unaffected; if you relied on the old defaults for heavy workloads, set them explicitly in your values. ## v2026.8.27 - 2026-08-14 ### Teable release.2026-08-14T12-12-01Z.2647 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-14T12-12-01Z.2647`. ## v2026.8.26 - 2026-08-14 - **npm registry mirror switch for sandboxes and app deployments.** Set `global.sandboxNpmRegistry` (e.g. `https://registry.npmmirror.com`) to route npm/pnpm installs through a mirror. Blank (the default) changes nothing. ## v2026.8.25 - 2026-08-14 ### Teable release.2026-08-14T06-35-14Z.2641 #### Feature Updates #### Bug Fixes & Improvements - Improved update reliability for large lookup conditional groups and wide computed-field cascades, preventing server errors during high-volume record changes. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-14T06-35-14Z.2641) ## v2026.8.24 - 2026-08-14 - **Fixed the sandbox benchmark failing when `OPENSANDBOX_RUNTIME_URL` uses `http://`.** The runtime client always spoke HTTPS on port 443, so an in-cluster URL such as `http://opensandbox-server..svc.cluster.local` (which serves plain HTTP on port 80) was refused. It now picks the transport and default port from the URL scheme. No action needed. ## v2026.8.23 - 2026-08-13 - **Sandbox memory backpressure now defaults to on.** Helm installs are unaffected (the chart has always set `SANDBOX_BACKPRESSURE_ENABLED` explicitly). Hand-managed Kubernetes deployments that never set it will start tainting sandbox-pool nodes under memory pressure after upgrading; set `SANDBOX_BACKPRESSURE_ENABLED: "false"` to keep the old behavior. - **Backpressure warns when its node selector matches no nodes.** A mislabeled sandbox node pool used to make the feature a silent no-op; it now logs a warning and logs again on recovery. No action needed. - **Fixed three chart numbers rendering in scientific notation** (`infraService.appRuntime.artifactMaxBytes`, `gitRegistry.repoSizeLimitBytes`, `gitRegistry.maxInputSizeBytes` — e.g. `268435456` rendered as `"2.68435456e+08"`). No action needed. - **In-code defaults now match chart defaults** for `APP_RUNTIME_ARTIFACT_STORE_PROVIDER` (`gcs` → `s3`), `IMAGE_PREHEAT_NODE_SELECTOR_VALUE` (`sandbox-pool` → `linux`), `IMAGE_PREHEAT_HOLD_IMAGE` (now the public `ghcr.io` image), and `HISTORY_WINDOW_SECONDS` (`14400` → `600`). Helm installs are unaffected; hand-managed deployments that relied on an old in-code default should set the env var explicitly. ## v2026.8.22 - 2026-08-13 ### Static image-preheater DaemonSet retired The chart no longer ships the nerdctl-based `imagePreheater` DaemonSet (the `imagePreheater.*` values are gone). The sandbox agent image is already preheated per node by the app-triggered `opensandbox-current-image-preheat` DaemonSet, which pulls through the kubelet and therefore also works on non-default containerd snapshotters (e.g. ACK image acceleration/overlaybd, where the retired DaemonSet pre-pulled into the wrong snapshotter and warmed nothing). The small engine sidecars are pulled on first use. Action: none — `helm upgrade` deletes the DaemonSet; leftover `imagePreheater.*` values are ignored. To confirm agent preheat: `kubectl -n opensandbox-system get ds opensandbox-current-image-preheat`. ## v2026.8.21 - 2026-08-12 ### Teable release.2026-08-12T12-26-10Z.2619 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-12T12-26-10Z.2619`. ## v2026.8.20 - 2026-08-11 ### Teable release.2026-08-11T13-42-32Z.2596 #### Feature Updates - Published App Builder apps can now use custom favicons, page titles, and descriptions for browser tabs, page metadata, and sharing previews. Apps without a custom favicon use the new default Teable Build favicon. - Automation Script nodes can now run for up to 180 seconds, allowing longer-running tasks to complete. - Added an instance-wide admin setting to control whether platform-managed AI API keys are automatically provided to Apps. The setting remains enabled by default; when disabled, Apps must use their own approved AI credentials. #### Bug Fixes & Improvements - Grid view grouping and sorting changes now apply immediately after saving and remain consistent across view settings, the current display, and collaborator updates. Rapid consecutive changes more reliably use the latest saved configuration. - Fixed failed AI-created tables appearing as inaccessible entries in the sidebar. Existing invalid entries are removed automatically when the sidebar next refreshes. - Fixed self-hosted license checkout being blocked when an expired, incomplete subscription was incorrectly treated as active. - Fixed truncated linked-record pills overflowing into adjacent Grid cells and standardized ellipses to display consistently. - Fixed user-grouped views showing duplicate “add record” rows, restarting row numbers, or misplacing records. Collaborators are now grouped consistently across legacy and multi-user values. - Fixed Last Modified By and Editor fields exposing internal user IDs instead of readable names. User names and fallback states are now consistent across record views, APIs, and collaborator fields. - Improved computed-field reliability when a workspace or base is paused. Deferred updates now resume correctly when the pause expires or is ended early, reducing backlogs and performance degradation. - Improved AI Chat recovery from temporary connection interruptions, reducing failed responses caused by unexpectedly dropped streams. - Fixed concurrent relational updates leaving chained lookup fields stale. Multi-level lookup results now converge more reliably on the latest values. - Restored user-field resolution and typecasting for scoped collaborators, phone numbers, and Enterprise department members. Unrelated or deleted users are now rejected, and user display data resolves more reliably. - Improved computed-field reliability for BYODB configurations with read-only targets. - Improved computed activity processing during high database contention, reducing the risk of cascading write slowdowns or freezes. - Fixed Chat showing duplicate assistant rows when a response was stopped and another message was sent immediately. Live, stopped, resent, and resumed responses now maintain a consistent message state. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-11T13-42-32Z.2596) ## v2026.8.19 - 2026-08-10 ### Teable release.2026-08-10T07-45-10Z.2574 #### Feature Updates - Space collaborators are now grouped and paginated by person, with Base-level permissions, permission levels, removal actions, and Base counts shown together. - Admins can now discard obsolete computed-task anomaly groups that can no longer be recovered. - Base imports now support webhook-only Bases without tables. #### Bug Fixes & Improvements - Improved record creation stability and latency during high-concurrency workloads by optimizing space row-count calculations and refreshes. Unlinked physical tables are no longer included in space row quotas. - Fixed stale computed-task errors and inaccurate Admin attention counts after Bases or tables are permanently deleted or moved between data stores. - Prevented record writes from freezing during heavy database contention by limiting waits and allowing nonessential activity updates to be reconciled later. - Improved lookup and cascading update performance, especially for multi-level lookup and foreign-link chains. - Improved BYODB connection security. Configurations using private or internal network database addresses may now fail validation. - Improved Base import and export reliability by preserving field descriptions and AI configuration after re-import. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-10T07-45-10Z.2574) ## v2026.8.18 - 2026-08-09 ### Teable release.2026-08-09T14-50-08Z.2564 #### Feature Updates - Added clearer BYODB health statuses, in-app notifications, admin indicators, and remediation guidance for read-only, unreachable, degraded, and recovered databases. #### Bug Fixes & Improvements - BYODB-backed writes now return a 409 conflict when the database is read-only, while computed tasks pause to prevent repeated failures and resume after recovery. - Improved BYODB health consistency and recovery detection across connection checks and write failures. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-09T14-50-08Z.2564) ## v2026.8.17 - 2026-08-09 ### Teable release.2026-08-09T13-07-40Z.2563 #### Feature Updates - Improved the Admin Outbox anomaly page by consolidating repeated database errors with changing details, making bulk recovery from incidents such as full disks more practical while preserving compatibility with existing recovery requests. #### Bug Fixes & Improvements - Improved handling of read-only databases to prevent repeated retry cycles and report failed operations more clearly. - Fixed computed field updates for imported or migrated bases containing legacy record IDs, without changing ID generation or link resolution for new records. - Improved performance for record operations that use ID-based mapping. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-09T13-07-40Z.2563) ## v2026.8.16 - 2026-08-09 ### Teable release.2026-08-09T10-14-07Z.2559 #### Feature Updates #### Bug Fixes & Improvements - Fixed inaccurate failed-task counts in the admin Outbox when underlying tasks no longer exist, while preserving actual failure history. - Improved field creation, duplication, and deletion safety to prevent rare naming conflicts from disrupting computed updates or affecting active fields. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-09T10-14-07Z.2559) ## v2026.8.15 - 2026-08-09 ### Teable release.2026-08-09T08-35-12Z.2557 #### Feature Updates - BYODB database settings now show connection details, status, and capabilities as read-only information, preventing space users from making unintended configuration changes. #### Bug Fixes & Improvements - Improved computed-field reliability after permanent table deletion by removing obsolete pending work and avoiding repeated failures. Soft-deleted tables retain pending updates for replay after restoration. - Improved computed lookup backfills for large tables with resumable batch processing, reducing timeouts and allowing interrupted updates to continue without restarting. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-09T08-35-12Z.2557) ## v2026.8.14 - 2026-08-09 ### Teable release.2026-08-09T04-03-28Z.2554 #### Feature Updates #### Bug Fixes & Improvements - Improved computed field reliability for self-linked tables and deleted source fields. Rollups and lookups now update correctly or return empty values instead of failing. - AI field model or prompt changes now save directly when they do not trigger reruns. - Field change confirmations now appear only when conversions rewrite data or affect links, with more accurate checks for rating limits and computed field errors. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-09T04-03-28Z.2554) ## v2026.8.13 - 2026-08-09 ### Teable release.2026-08-08T14-46-52Z.2550 #### Feature Updates #### Bug Fixes & Improvements - Improved computed and lookup field update performance across both small and high-fanout changes while preserving protective batching for large workloads. - Improved computed field processing reliability during database contention and prevented unnecessary retries for unrecoverable failures. - Improved responsiveness for record reads, creation, and deletion, especially for large tables and bulk operations. - Fixed deleted record snapshots not being saved correctly during bulk deletions with BYODB schemas. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-08T14-46-52Z.2550) ## v2026.8.12 - 2026-08-08 ### Teable release.2026-08-08T09-33-10Z.2547 #### Feature Updates #### Bug Fixes & Improvements - Fixed table filter errors that could prevent filters from being saved or applied, particularly in new or previously unfiltered views. - Improved the admin outbox queue browser to return more complete and reliable results when reviewing failed items or using server-side search. - Improved handling of unrecoverable computed field refresh failures, reducing unnecessary retries and making failures available for diagnosis sooner. - Fixed long text field edits, including Markdown display changes, incorrectly triggering a batch confirmation dialog when no AI run was started. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-08T09-33-10Z.2547) ## v2026.8.11 - 2026-08-08 ### Teable release.2026-08-08T06-34-24Z.2542 #### Feature Updates - The queue browser now defaults to a task-level view, while retaining access to raw delivery history. - Recovered delivery failures are hidden by default, with a count and toggle for viewing troubleshooting details. - Queue status filters and outcome badges now provide clearer labels, behavior, and explanations. #### Bug Fixes & Improvements - Fixed Conditional Rollup editor crashes when using minimum or maximum calculations on date fields after a hard refresh. - Improved Conditional Rollup loading and formatting handling to keep the editor stable when linked fields are still loading or saved settings do not match. - Improved cleanup reliability for orphaned linked fields and missing database objects, preventing failed deletions and inconsistent metadata. - User-configured SMTP failures now return clearer upstream delivery errors and preserve provider rejection details instead of appearing as generic server errors. - Prevented generation runs from becoming stuck when their associated base is missing or deleted. - Fixed shared form cover, logo, and plugin logo images failing to load when their URLs were already absolute. - Improved the mobile login layout to respect device safe areas and keep the login/register switch visible and accessible. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-08T06-34-24Z.2542) ## v2026.8.10 - 2026-08-07 ### Teable release.2026-08-07T08-07-22Z.2536 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-07T08-07-22Z.2536`. ## v2026.8.9 - 2026-08-07 ### Teable release.2026-08-07T05-00-09Z.2531 #### Feature Updates - Generated Teable Build and App Builder apps can now customize the favicon, browser title, and page description used across tabs, page metadata, and link previews. Favicon uploads are limited to 5 MB, and apps without a custom favicon use the new Teable default. #### Bug Fixes & Improvements - Improved read performance for large tables with ordered, grouped, searched, or paginated views while preserving correct pagination. - Improved compatibility with legacy column metadata so affected views open reliably without manual cleanup. - Fixed failures when creating number fields and ensured newly created fields appear correctly in grid views with incomplete metadata. - Admin tabs and settings now consistently reflect edition-based availability. Some commercial-only areas previously accessible without a valid license may now be restricted. - Fixed admin pages remaining stuck in a loading state when instance usage information could not be loaded. - Fixed an erroneous notification when opening filtered views on tables containing lookup-of-link fields. - Improved automation reliability when explicit record updates cause dependent lookup, rollup, or linked-record values to change. Watch-all automations continue to exclude updates affecting only computed host fields. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-07T05-00-09Z.2531) ## v2026.8.8 - 2026-08-06 ### Teable release.2026-08-06T02-02-38Z.2503 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-06T02-02-38Z.2503`. ## v2026.8.7 - 2026-08-05 ### Teable release.2026-08-05T11-23-43Z.2499 #### Feature Updates - Added targeted in-app announcements that admins can schedule, localize, withdraw, and display as banners, toasts, modals, or sidebar cards. - Added read-only record snapshots to the recycle bin, with filters for resource type, operator, deletion time, creator, and creation time. - Added Business-tier record archiving with browsing, restore, permanent deletion, CSV export, and longer-term retention. - Published apps now have a more visible quick-open link, clearer unpublished-change indicators, and improved version history and rollback behavior. - Added an admin maintenance check for finding and repairing users without avatars, with bulk repair and progress feedback. - Enabled WebSocket compression for realtime grid loads and record updates, reducing bandwidth usage and improving responsiveness on slower networks. - Removed outdated in-app pricing and FAQ content in favor of the current official pricing page. #### Bug Fixes & Improvements - Fixed table view filter errors, including failures when deleting the last filter, clearing filters, or opening views with incomplete date filter settings. - Filter additions and changes now appear immediately in toolbar summaries and synchronize more reliably across connected clients. - Stopping an AI generation is now handled as a graceful interruption across chat, app builder, and agent flows without showing server errors in other open windows. - Improved generation checkpoint reliability under heavy database load. - Improved computed-field processing for large and highly connected tables by splitting recalculation work into smaller stages, reducing stalled writes, memory pressure, and 503 errors. - Fixed computed-field dependency and propagation issues affecting conditional comparisons, linked records, lookups, rollups, circular dependencies, and partial recalculation batches. - Improved lookup propagation latency for bounded single-record updates. - Fixed conditional rollup analysis that could trigger excessive recomputation on complex dependency graphs. - Fixed schema updates that could become stuck when changing field types on tables with computed fields. - Standardized database time handling around UTC to prevent timestamp drift in scheduled tasks, metadata updates, and other database-driven workflows on non-UTC deployments. - Fixed AI creation workflows that could place generated nodes at the top level instead of alongside the source node, and exposed the folder option for create commands. - Share controls and operations now consistently respect user and access-token permissions, with unavailable options disabled and explained in share dialogs. - Improved audit log reliability during bulk operations and shutdowns, preserved original event times, and ensured user identity is recorded consistently. - Field creation audit entries now include the created field’s name, type, and options. - Fixed orphaned linked-record fields so they can be deleted after their referenced table has been removed. - Improved V2 compatibility across formulas, lookups, rollups, filters, sorting, grouping, search, aggregation, link validation, field lifecycle operations, and base duplication. - V2 writes now normalize cleared text, checkbox, attachment, user, link, and multi-value fields to `null`, while reliably enforcing required-field constraints. - V2 link updates now accept compatible single-link and multi-link input shapes, improving compatibility with integrations, imports, and field cardinality changes. - Improved V2 date validation so strict writes reject invalid calendar dates and typecast writes store invalid dates as empty values instead of silently changing them. - Text-to-date and formula-to-date conversions now skip invalid calendar values without blocking the entire field conversion. - Fixed rating field conversions to avoid invalid zero-star values and round decimal values consistently. - V2 record reads, updates, and deletions now apply table, row, and field permissions more consistently, including masked fields and disabled access grants. - Fixed V2 record updates involving users without custom avatars; initial-based avatar fallbacks continue to work normally. - Fixed grouped views that could fail to load when field projection omitted required grouping metadata. - Improved view reliability across creation, updates, sharing, imports, duplication, realtime updates, plugin views, and concurrent edits. - Fixed self-hosted signup so new users reliably join all eligible auto-join spaces as Viewers, including when SSO joining is also configured. - Improved the unsubscribe page so it remains usable after a successful preference change even if a subsequent refresh fails. - Fixed automations that could execute the same action chain twice, preventing duplicate messages, webhooks, and emails. - Automations watching formula fields now run when source-field changes update the formula, while avoiding duplicate runs and loops. - Improved large-delete undo and redo reliability so records are restored correctly without unexpected timeouts. - Reduced database pressure during large imports and table duplication by skipping unnecessary initial per-cell history entries; normal edit history remains unchanged. - Improved the mobile attachment preview layout, including wider spreadsheet viewing, better horizontal scrolling, non-overlapping navigation, and correct rotated-image fitting. - Improved base loading and navigation by reducing duplicate requests and opening previously visited, pinned, or eligible first-time bases directly when a safe destination is available. - Stale direct base links now fall back to the normal entry flow instead of causing redirect loops or unnecessary errors. - Improved localized validation messages for required and unique fields, including field-specific duplicate-value errors in bulk and selection-based operations. - Improved secret handling and added support for safer credential rotation. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-05T11-23-43Z.2499) ## v2026.8.6 - 2026-08-05 ### Teable release.2026-08-05T08-59-48Z.2496 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-05T08-59-48Z.2496`. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-08-05T08-59-48Z.2496) ## v2026.8.5 - 2026-08-05 ### Teable release.2026-08-05T06-42-00Z.2495 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-08-05T06-42-00Z.2495`. ## v2026.8.4 - 2026-08-05 - **Sandbox engine `v0.2.0-fix9` accepts setgid `dir_mode`.** Values above `0o777` (e.g. `0o2775`) in `[kubernetes.volume_subpath_precreate]` no longer fail server startup validation; pairs with the new Helm README recipe for sandbox volumes owned by a different identity than the sandbox user. ## v2026.8.3 - 2026-08-03 - **Infra Service now always watches the sandbox and app-deploy namespaces.** The `K8S_NAMESPACES` list automatically includes `sandboxNamespace.name` and (when app deployment is enabled) `appRuntime.namespace`, fixing default installs where active sandboxes in `teable-sandbox` were invisible to the Infra Service ([teable-deployment#1](https://github.com/teableio/teable-deployment/issues/1)). If you had manually added these to `infraService.namespaces`, you can remove them; otherwise no action needed. ## v2026.8.2 - 2026-08-02 - **App switcher targets are now configurable.** The v2026.8.1 boolean `infraService.internalAppSwitcher` is replaced by `infraService.internalAppSwitcherApps` — a list of `{name, desc, url, current}` entries pointing at your own companion control planes. Empty (default) hides the switcher. If you had enabled the boolean, move your targets into the list; otherwise no action needed. ## v2026.8.1 - 2026-08-02 - **Optional operator app switcher in the Infra Service sidebar.** New value `infraService.internalAppSwitcher` (default `false`) shows a grid button linking to companion control planes, for operators running several of them. When left off the UI is unchanged. No action needed. ## v2026.8.0 - 2026-08-01 - **The sandbox engine can run under a chosen identity.** New `opensandbox-server.server.podSecurityContext` / `securityContext` / `containerPort` values. Useful when a shared sandbox volume is owned by a uid other than the default: run the engine as that uid and its subPath pre-creation writes directories directly, with no chown. Non-root also needs `containerPort` (and `[server] port` in `configToml`) moved off port 80. ## v2026.7.28 - 2026-07-30 - **Docker server mode: storage API calls no longer fail with an empty `S3Error`.** The entry routed `//...` to MinIO but not the bare `/` path that S3 clients send as `GET /?location`, so those requests got console HTML and some app endpoints returned 500; `doctor.sh` now probes the bare path too. Existing installs: pull the updated Caddyfiles, then run `docker compose up -d --force-recreate caddy`. - **Docker mode: a new user's first sandbox no longer crashes with a permission error.** When a sandbox workspace directory did not exist yet, Docker created it owned by root, and the sandbox (running as uid 1000) failed on first write. The sandbox engine (`v0.2.0-fix8`) now pre-creates these directories with the sandbox user's ownership. Existing Docker installs: set `OPENSANDBOX_SERVER_IMAGE` to `ghcr.io/teableio/opensandbox-server:v0.2.0-fix8` in your `.env`, then re-run `apply.sh`. Kubernetes installs are not affected. ### Teable release.2026-07-30T06-45-38Z.2429 #### Feature Updates - Added mobile-friendly controls to shared pages, making key options such as sign-in easier to access on small screens. - Custom emoji icons can now be removed from tables and Bases to restore the default icons. - Added a CLI-based permission matrix configuration workflow for exporting, editing, previewing, comparing, and applying declarative permission settings, with validation and safeguards against accidental lockouts. #### Bug Fixes & Improvements - Improved initial table loading performance and prevented blank rows by ensuring consistent initial record data across different loading paths. - Rerunning an automation workflow now keeps you in the current tab and task context. - Improved stability and responsiveness when clearing large numbers of cells. - Added consistent loading states when opening, refreshing, or switching between tables, automations, apps, dashboards, and other Base content. - Fixed an issue where Grid views with many visible fields remained stuck on loading placeholders after scrolling beyond the first 100 records. - Selecting content while Chat is expanded on desktop now restores the side panel layout without losing the conversation, draft, attachments, or scroll position. The expanded layout remains unchanged when interacting with folders. - Reduced initial loading delays when opening a Base from a space, while accommodating data-saving mode and extremely slow network connections. - Question cards and confirmation cards now appear faster with more streamlined options, handle unanswered prompts more effectively, and avoid unnecessary spacing or layout shifts. - Newly created AI Chat and App Builder sandboxes now always use the latest CPU, memory, and temporary disk limits configured in System Administration. - Fixed an issue where select values temporarily disappeared after converting a field between single select and multiple select. - Improved grouped Grid views so that expanding or collapsing groups updates only the affected area, preserves scroll context, and maintains accurate layouts after view changes. - Improved stability for Bases with many calculated fields and conditional summaries, reducing redundant calculations and resource pressure during frequent updates. - Fixed incorrect variable selection in automation condition nodes following scheduled triggers. - Improved AI Chat completion response speed and failure recovery. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-30T06-45-38Z.2429) ## v2026.7.27 - 2026-07-30 - **The Teable app now trusts your private CA.** With `infraService.privateCa` enabled, the CA bundle now also mounts into the Teable app pod -- sandbox creation and app deploys no longer fail TLS verification on a private PKI. Already using the switch? `helm upgrade` is enough (Teable deployed outside this chart: see `helm/private-ca.md`). ## v2026.7.26 - 2026-07-30 - **Upgrades that skip releases can now compute their pending migrations.** `versions.yaml` gains `migrationCatalog` -- every migration this release line has ever required, with the release that introduced it -- rendered as "Upgrading across releases" in `VERSIONS.md`; `doctor.sh --from ` (Docker and Helm) prints what your install still has to run. No action needed. ## v2026.7.25 - 2026-07-29 - **`VERSIONS.md`: the sandbox-chain verification reads as its own line.** It rendered nested under the Kubernetes entry, which made it look like part of that run rather than a separate check. No action needed. ## v2026.7.24 - 2026-07-28 - **Reserve kubelet memory on dedicated sandbox nodes — action needed.** Bin-packing (`sandboxScheduling.packing`, default since v2026.7.15) fills sandbox nodes to their allocatable limit, so a node left on its provisioner's default reservation can lose its kubelet under load and drop every sandbox on it. Set `system-reserved`/`kube-reserved`/`eviction-hard` in your node provisioner, then replace existing sandbox nodes — the reservation applies at node bootstrap only. - **`VERSIONS.md` now dates the sandbox-chain verification separately.** The Docker/Kubernetes dates cover the full journey; a release that only moves the sandbox engine or execd now carries its own, current date for that chain instead of implying the whole journey was redone. No action needed. ## v2026.7.23 - 2026-07-28 - **Sandboxes can run unprivileged.** `global.sandboxSecurity.nonRoot.enabled=true` runs new sandboxes as uid 1000 with all capabilities dropped, and `seccompProfile: RuntimeDefault` hardens the profile. Both off by default; read "Hardening sandboxes" in `helm/README.md` before enabling. - **Sandbox engine `v0.2.0-fix7`, execd `v1.0.19-fix3`** (required by the switch above). Helm installs get them from `versions.yaml`; Docker installs on the next `apply.sh`. ## v2026.7.22 - 2026-07-28 - **New guide for sizing sandbox capacity.** `global.sandboxScheduling.memoryRequest` decides how many sandboxes fit on a node, and both a too-low and a too-high value fail in confusing ways. Start at `1300Mi` for a mixed AI-session and app-build workload (roughly 21 sandboxes on a 32 GiB node), then re-derive it from your own usage. The guide also covers the kubelet memory reservation bin-packing needs -- without it a full node can starve its own kubelet while the cloud console still reports the instance healthy. See `helm/sandbox-capacity.md`; if bin-packing is already on, check your node reservation against it. ## v2026.7.21 - 2026-07-28 - **Private CA trust for sandboxes is now a values switch.** Set `global.sandboxPrivateCa.enabled=true` and point `configMapName` at a ConfigMap holding a full CA bundle (public roots plus your corporate root); new sandboxes then trust it system-wide instead of in Node only. If you hand-edited `batchSandboxTemplate` for a private CA, move to the switch and drop those lines -- see `helm/private-ca.md`. ## v2026.7.20 - 2026-07-27 - **A failed app update no longer takes down the running version, and sleeping apps are no longer removed.** App Runtime keeps the previous version serving while a new version fails to become ready, and apps scaled to zero are never treated as unhealthy leftovers. Re-publish a failed update to retry; no other action needed. ## v2026.7.19 - 2026-07-27 ### Teable release.2026-07-27T10-51-13Z.2393 #### Feature Updates - Reorganized navigation on the system administration page into clearer groups. - Expanded audit logs: delete operations now include specific record IDs, each log includes the API endpoint that generated it, and space and base creation, deletion, and modification are also recorded. - Unified collaborator invitation notifications across email and in-product channels, with toast notifications for unread invitations. - Strengthened sandbox permission controls. Agents can still install user-space dependencies, while required system packages must be preinstalled. #### Bug Fixes & Improvements - Improved enterprise SSO reliability for generated applications. Authorization failures now display clear errors instead of loading indefinitely. - Improved automation reliability for external databases. - Improved audit log reliability without interrupting completed user requests. - Updated the favicon in light mode to improve its visibility and recognizability in browser tabs. - Improved AI proxy error responses when a base is missing or a token is invalid. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-27T10-51-13Z.2393) ## v2026.7.18 - 2026-07-27 - **Sandbox egress fence: allow-list private platform endpoints.** `opensandbox-server.server.sandboxNetworkPolicy.additionalAllowedCidrs` (`server.…` standalone) keeps private platform VIPs reachable while private ranges stay blocked. No action needed unless you enable the fence. - **Enabling the sandbox egress fence removes the built-in allow-all policy.** On existing clusters also delete it once: `kubectl -n delete networkpolicy teable-sandbox-allow-all-egress` (apply does not prune). - **`runtimeNetworkPolicy.*.enabled: false` now actually disables the policy.** An explicit `false` used to be treated as unset, so the allow-all kept rendering. No action needed. ### Teable release.2026-07-27T06-04-51Z.2385 #### Feature Updates - Added an organization setting that lets admins enable department keyword search across the entire organization while keeping department tree browsing limited to related departments. The option is off by default and treats wildcard characters literally. - Renamed the chat entry to “Chat in IM” and updated related terminology to use “IM bot.” #### Bug Fixes & Improvements - Cleaned up read-only template previews by removing irrelevant computing status and preventing unnecessary activity checks that could cause 403 errors. - Restored reliable sorting, filtering, and search for records with missing created or modified metadata. - Limited field change warnings for button fields to updates that may affect calculations or rewrite data, avoiding warnings for display-only changes such as button text. - Fixed grouped table views with footer aggregations failing to load for permission-restricted users when the grouping field was hidden. - Improved sandbox generation reliability by preventing abandoned runs and secondary notification failures from causing repeated retries, cross-run interference, or loss of final results. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-27T06-04-51Z.2385) ## v2026.7.17 - 2026-07-27 - **Private CA trust for published apps.** New `infraService.privateCa` values mount your corporate CA bundle into the Infra Service and published apps. Private-PKI installs: follow `helm/private-ca.md`, then republish apps. - **Console: the Git Repos page no longer blocks on repository-size scans.** The repo listing recomputes per-repo sizes with a full directory scan that can take tens of seconds on networked storage; once its 5-minute cache expired the next page load paid the whole scan. The listing now serves the previous stats immediately and rescans in the background, and the git-registry pre-warms the cache on startup, so page loads stay fast right after a deploy too. Sizes may be up to one scan-cycle stale. No action needed. - **Console: one unhealthy node no longer stalls the Sandboxes/Cluster pages.** Cluster status collected per-node PVC usage through the kubelet `stats/summary` proxy with no dedicated timeout; when a node's kubelet stopped serving (e.g. under memory pressure) every page load waited ~11s for the apiserver-side TLS handshake to fail. That call now times out after 3s and degrades to "no PVC usage data" for the affected node. No action needed. - **Console: node names now display correctly on EKS/Karpenter clusters.** The Sandboxes and Cluster pages rendered nodes as `- · 2.compute.internal` because the node pool and display name were still derived from GKE conventions. The node pool is now resolved from `teable.io/node-pool`, then `karpenter.sh/nodepool`, then `eks.amazonaws.com/nodegroup` (the GKE label is still recognized), and `ip-…compute.internal` hostnames keep their host segment, e.g. `sandbox · ip-172-31-40-231`. No action needed. - **Console: the Git Repos page has been reworked.** It now opens with summary cards (repo count, total size, repos pushed in the last 7 days, empty repos) above a sortable, paginated repository table. Clicking a row slides out a panel with the commit history, per-commit diffs and the file browser, and every repo has a **Download zip** button that fetches the latest code archive (HEAD) using your console session. Search, sort, page and the selected repo persist in the URL. No action needed. - **Console: sandbox table sorting sticks, and Usage is split into CPU / Mem columns.** Sorting on the Sandboxes page is now kept in the URL, so a refresh (or a shared link) preserves it, and CPU and memory usage sort independently. No action needed. - **Console: the Packages page has been removed.** The package-registry browser (internal registry / GCP Artifact Registry / local Docker images) saw no real usage and has been dropped, along with its `infraService.packages.*` Helm values and `PACKAGE_*` environment variables. Any leftover `packages:` block in your values file is now ignored and can be deleted. No action needed. ## v2026.7.16 - 2026-07-26 - **Helm: ingresses accept additional hostnames (`ingress.additionalHosts`).** infra-service, git-registry, the sandbox lifecycle API (`/v1`) and the sandbox preview gateway can now serve extra hostnames alongside the primary one, using the same TLS secret (issue a multi-SAN certificate listing every name in `certificate.dnsNames`). Useful for serving a permanent cluster-scoped domain next to the public domain during migrations. Empty by default. No action needed. ## v2026.7.15 - 2026-07-26 - **Helm: sandbox egress NetworkPolicy now follows `sandboxNamespace.name`.** Previously `runtimeNetworkPolicy.sandbox` had an independent namespace default, so renaming the sandbox namespace left the policy pointing at the old (deleted) namespace and the upgrade failed. Explicit `runtimeNetworkPolicy.sandbox.namespace` values still win. No action needed. - **Helm: sandbox bin-packing scheduling (`global.sandboxScheduling.packing`).** New sandboxes now prefer the fullest node instead of spreading across nodes, so clusters run fewer, fuller nodes. Placement-only change for newly created sandboxes; set `packing.enabled: false` to keep the old spread. No action needed. - **Helm: central sandbox scheduling requests (`global.sandboxScheduling.memoryRequest` / `cpuRequest`).** Sets the per-sandbox scheduling requests in one place; per-node sandbox capacity then derives from allocatable memory. Unset by default (existing behavior preserved). No action needed. - **Helm: warm-capacity balloon pods (`global.sandboxScheduling.headroom.replicas`).** Low-priority placeholder pods pre-hold sandbox slots so a new sandbox starts instantly while node provisioning happens in the background. Balloons are sized from `sandboxScheduling.memoryRequest`/`cpuRequest` (one balloon = one sandbox slot) and deploy into the sandbox namespace (`sandboxNamespace.name`). Default 0; enable only together with a cluster autoscaler. Air-gapped installs must mirror the pause image (`headroom.image`) first. No action needed. - **Helm: node memory backpressure (`global.sandboxScheduling.backpressure`).** infra-service now cordons dedicated sandbox nodes (NoSchedule taint) at 90% node memory and uncordons at 80%. It acts only on nodes labeled `teable.io/node-pool=sandbox`, so clusters without that label are unaffected; requires metrics-server and the node patch grant included when `infraService.rbac.clusterScope.create` is true. An optional `global.sandboxScheduling.memoryLimit` adds a default per-sandbox memory cap (unset by default). Set `backpressure.enabled: false` to opt out — leftover backpressure taints are swept automatically on the next service start. Make sure sandbox pod tolerations do not use a blanket `operator: Exists`, which would defeat the backpressure taint. No action needed. - **Measured effect of the scheduling changes (our fleet, 4-core/32 GiB dedicated sandbox nodes).** Per-node sandbox capacity is now derived from allocatable memory — 42 sandboxes per node at the 700 Mi `memoryRequest` we run — instead of being silently capped by CPU requests. Nodes fill up before a new one is added, and a drained node is reclaimed within minutes (6.5 min measured round-trip), where previously every load peak left one extra node running permanently. Net for us: the steady-state sandbox pool went from two always-on nodes to one — roughly half the sandbox compute cost — with unchanged sandbox performance. Your numbers depend on node size and `memoryRequest`; treat these as a reference point. No action needed. ## v2026.7.14 - 2026-07-26 ### Teable release.2026-07-26T01-04-56Z.2377 #### Feature Updates - Added admin-configurable AI concurrency limits for each space, with a default of five concurrent tasks. Additional AI requests are queued and processed fairly across field generation, automations, and other AI workflows. - Admins with the required permissions can now initiate a password reset for a specific user. Reset links are single-use, expire at the stated time, and are emailed automatically when SMTP is configured. This action is unavailable when password login is disabled. - Column reordering in grid views now updates immediately without reloading records. Failed saves safely restore the previous order and display an error. #### Bug Fixes & Improvements - Fixed lookup values remaining empty or stale after linked source data changed, including filtered records and conditional lookups. Related values now recalculate and synchronize more reliably, with improved performance for large updates. - Fixed Claw bot chats becoming stuck or losing replies after the bot was removed from the conversation’s Base. Existing chats are moved to another accessible Base where possible, and completed replies are delivered more reliably. - Improved AI task scheduling, cancellation, recovery, and progress accuracy, including when Bases are deleted or generation tasks stall. - Improved navigation from Spaces with faster Base entry and continuous loading feedback for pinned Bases, tables, views, dashboards, workflows, and apps. Repeated clicks no longer restart navigation, entry can be canceled, and native new-tab actions remain supported. - Fixed expired SSO callbacks showing a raw error after browser navigation. Users are now redirected to the app when already signed in or to the login page when authentication is required. - Improved view switching so rows, sorting, filters, grouping, controls, and permissions from the previous view no longer appear briefly. Recently used views also restore their initial layout more smoothly while fresh data loads. - Improved credit billing performance and resilience under high-volume activity. Fixed incorrect overlimit blocks after refunds or delayed charges, and improved charge and refund attribution across billing periods and add-on validity windows. - Fixed BYODB table switching failures caused by schema handling, reducing unclear errors when changing tables. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-26T01-04-56Z.2377) ## v2026.7.13 - 2026-07-23 ### Teable release.2026-07-23T12-32-52Z.2361 #### Feature Updates - Added in-app notifications for Space and Base invitations, with direct links to the relevant destination and improved notification accuracy. - Updated the welcome video on the new base page with the latest onboarding guidance. #### Bug Fixes & Improvements - Improved table navigation reliability by automatically opening the last-used or default view and preventing loading screens from becoming stuck when switching tables. - Improved computed-field responsiveness and reliability, particularly for lookups, linked records, repointing, and large fanout updates under concurrent load. - Updated CN in-app subscription pricing to match the CN website: ¥70 per seat/month for Professional and ¥140 per seat/month for Business. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-23T12-32-52Z.2361) ## v2026.7.12 - 2026-07-23 - **Helm: external gateway entry mode.** Set `global.entry.mode: external-nginx` when an external SLB/nginx terminates TLS and forwards HTTP to Services: the chart then renders no Ingress or Certificate objects anywhere (umbrella and sub-charts) and instead renders a `-nginx-routes` ConfigMap declaring every host/path → Service route for your gateway team, derived from the same values as the rest of the deployment. Requires `appRuntime.ingress.mode: gateway` (the render fails otherwise, because dynamic per-app Ingresses would have nothing serving them). Default unchanged (in-cluster Ingress, per-component flags); no action needed. - **Helm: bring-your-own PVC and static PV binding for git-registry and VictoriaMetrics.** `gitRegistry.persistence` and `infraService.victoriaMetrics.persistentVolumeClaim` now accept `existingClaim` (reuse a pre-created PVC, chart creates none), `volumeName` (bind to a specific pre-provisioned PV; an explicit empty `storageClassName` is now emitted to disable dynamic provisioning), and `accessModes`. Edge case: an explicitly empty VictoriaMetrics `storageClassName` used to fall back to `standard-rwo` and now means the cluster default StorageClass — set `standard-rwo` explicitly if you relied on that. No action needed otherwise. - **Helm: data PVCs survive `helm uninstall`.** The git-registry and VictoriaMetrics PVCs now carry `helm.sh/resource-policy: keep`; delete the PVC explicitly if you want the data gone. No action needed. - **Helm: cluster-scoped RBAC can be skipped for restricted deploy accounts.** New `rbac.clusterScope.create` toggles (infra-service, opensandbox-server, its preview gateway, opensandbox-controller, registry-gc) render only the ServiceAccount/Role/RoleBinding half when false, so a namespace-scoped deploy account can install while a cluster admin pre-provisions the ClusterRole/ClusterRoleBinding half. The mirror toggle `rbac.namespaceScope.create: false` renders only the cluster half (for producing an admin bundle with `helm template`), and the release also ships that half pre-rendered as `helm/teable-infra/manifests/cluster-rbac.yaml` (next to `crds.yaml`). `infraService.rbac.knativeCompat: false` additionally drops the temporary Knative cleanup grant. Defaults unchanged; no action needed. ### Teable release.2026-07-21T04-38-35Z.2304 - Updated the README with a cover image and an improved community layout, making the project overview clearer and easier to navigate. - Reordering columns no longer triggers a full record refresh, reducing unnecessary loading states, flickering, and duplicate requests. - When only column metadata changes, record data now remains available from the cache, improving table responsiveness during layout adjustments. - This also resolves related skeleton screen issues when moving columns. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-21T04-38-35Z.2304) ### Teable release.2026-07-22T11-07-01Z.2343 #### Feature Updates - Improved the field calculation status experience with clearer progress and status changes, a simplified activity panel, and additional translations. - Improved loading responsiveness for tables with many columns. - Added support for path-style presigned URLs for S3-compatible storage via `BACKEND_STORAGE_S3_FORCE_PATH_STYLE`, with separate internal addressing configuration available through `BACKEND_STORAGE_S3_INTERNAL_FORCE_PATH_STYLE`. - Teable Chat can now use authorized and @mentioned Apps as context, enabling AI assistance based on the App's code, structure, and configuration while excluding sensitive runtime configuration. #### Bug Fixes & Improvements - Fixed manual sorting to ensure row order remains consistent after real-time updates and page reloads. - Fixed the self-link record selector to display only fields visible in the current connection and return complete record content. - Reduced the maximum width of table descriptions to keep view tabs easily accessible and improve header layout. - When updating `visibleFieldIds` via the API, link fields and link sharing configurations now always keep the linked table's primary field visible, consistent with UI behavior. - Improved the reliability of attachment and import requests from trusted origins in runtime configuration environments. - Fixed an issue where saving a shared Base as a copy failed when it contained plugin panels outside the sharing scope. Copies now include only shared tables and panels, and safely skip invalid panel mappings in legacy archives. - Fixed views getting stuck in the "Calculating" state and improved recovery for formula- and Lookup-related calculations. - Fixed formula-based Lookup fields to ensure they remain editable and convertible, and improved the reliability of loading, saving, display settings, and error handling. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-22T11-07-01Z.2343) ### Teable release.2026-07-23T08-40-34Z.2355 #### Feature Updates - Added multiple ways to close the Kanban “Stack by” dialog: press Esc, click outside the dialog, or select “Done”. - Added a refresh action to Audit Log and improved the display of long operator, space, and Base names. #### Bug Fixes & Improvements - Improved publishing consistency, ensuring that when editing, generation, and publishing operations overlap, the published app remains consistent with the latest preview without missing or overwriting newer changes. - Optimized invitation limit handling to prevent subscribed organizations from being deactivated during legitimate bulk invitations. The hourly automatic deactivation policy no longer applies to Community Edition. - Fixed a crash when opening “Record History” from the sidebar tree menu and clarified the meanings of the “Record History” and “Recycle Bin” labels. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-23T08-40-34Z.2355) ## v2026.7.11 - 2026-07-21 ### Teable release.2026-07-20T06-51-40Z.2282 - Improved table search performance for large, high-traffic datasets, with stronger validation and safeguards for more reliable search behavior. - Added admin controls, status visibility, and field-level usage analysis to help evaluate, enable, and manage table search optimization. - Added bring-your-own-database (BYODB) health triage to help teams assess database-related issues more quickly and consistently. - Added a dedicated BYODB admin page for viewing connection summaries, creating new BYODB spaces, and binding existing spaces. - Improved BYODB migration accuracy and reliability by eliminating misleading catch-up progress and reducing write-freeze time during busy migrations. - Improved automation email polling reliability by recovering from idle mailbox connection failures and safely discarding outdated polling results. - Improved admin failure monitoring by grouping repeated anomalies by root cause, surfacing recent failed jobs, and providing clearer, privacy-conscious error diagnostics. - Improved analytics attribution for signed-out, newly registered, logged-out, and returning users to prevent activity from being associated with the wrong user. - Expanded analytics coverage for App Builder chat starts and space activity, including app and base creation, views, workflows, shares, invitations, and invitation acceptance. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-20T06-51-40Z.2282) ### Teable release.2026-07-21T00-26-02Z.2300 - Airtable imports from chat now provide clearer visible feedback by navigating to the imported table in the current base and returning links for imports into other bases. - Improved Airtable migration reliability so stalled attachment transfers, expired downloads, interrupted API responses, and slow-but-active record reads fail or retry safely instead of leaving imports hanging. - Personal access tokens can now use Airtable import endpoints when the target permissions and required integration scopes are valid. - Fixed an issue where users could see “Failed to create user record” on their first OAuth sign-in to generated apps with domain or open login enabled. - Improved the app login flow so new users are created through the app API path consistently, while existing app-token write behavior remains unaffected. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-21T00-26-02Z.2300) ## v2026.7.10 - 2026-07-20 ### Changed - **DB Pool instances can now carry a human-readable space name**: set it in the create dialog or via the new "set name" action on the instance detail page. The name shows in the instance list/detail and is propagated as a sanitized `teable.io/space-name` pod label, so monitoring dashboards can label series by space instead of the derived `dbt-*` id. Tenant Postgres pods also expose the CNPG metrics exporter (port 9187) via `prometheus.io/scrape` annotations, adding direct-connection backend counts to the metrics stack. Existing instances pick up the label and annotations in place, without a restart. No action needed. ## v2026.7.9 - 2026-07-19 ### Teable release.2026-07-18T09-45-26Z.2275 - Added a visible calculation activity status for computed fields, including formulas, lookups, and rollups, so users can more clearly see when table values are still being calculated. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-18T09-45-26Z.2275) ## v2026.7.8 - 2026-07-18 ### Teable release.2026-07-17T14-54-52Z.2273 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-07-17T14-54-52Z.2273`. ## v2026.7.7 - 2026-07-17 ### Teable release.2026-07-17T08-32-22Z.2269 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-07-17T08-32-22Z.2269`. ## v2026.7.6 - 2026-07-17 ### Changed - **App Deployments now run non-root with a restricted-compliant security context**: generated pods set `runAsNonRoot` / `runAsUser: 1001` / seccomp `RuntimeDefault`, containers drop all capabilities and forbid privilege escalation, the app-runtime image itself runs as UID 1001, and apps unpack into `/tmp/app` so redeploys pinned to older runtime images keep working on clusters that enforce PodSecurity/Kyverno `restricted`. Override or disable via `infraService.appRuntime.podSecurityContext` / `containerSecurityContext` / `appDir` (Helm) or the matching `APP_RUNTIME_*` envs (`{}` disables). No action needed. ### Teable release.2026-07-17T03-42-04Z.2260 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-07-17T03-42-04Z.2260`. ### Teable release.2026-07-17T05-20-38Z.2264 #### Fixes & Improvements * **Fixed select option editing**: Clicking existing **Single select** or **Multiple select** options now opens the dropdown reliably. * **Improved formula field stability**: Fixed failures in nested **Lookup** and **IF** formulas with certain numeric results. * **Improved many-to-many link stability**: Fixed reverse link fields not updating promptly after large-scale background update failures. * **Improved high-volume link field handling**: High-cardinality Link fields now calculate and display more reliably. * **Improved formula and lookup update speed**: Multi-stage linked record updates now refresh calculations and cascades faster. * **Improved calculation task stability**: Paused calculation tasks are no longer repeatedly awakened, reducing invalid scheduling. * **Fixed table recycle bin menu issues**: Recycled tables now only show relevant actions like restore and delete. * **Fixed deleted table restoration issues**: Restoring a table now only restores fields and views from that deletion. * **Improved AI response performance**: AI Proxy SSE and streaming responses now reduce unnecessary caching and parsing. * **Improved high-frequency background paths**: Settings reads, tracking, data cleanup, and session lookups are now lighter. * **Enhanced session file matching checks**: Session file lookups now use stricter ID validation to reduce mismatches. [Full release notes](https://github.com/teableio/teable/releases/tag/release.2026-07-17T05-20-38Z.2264) ## v2026.7.5 - 2026-07-16 ### Changed - **App Runtime default image** pinned to `20260716T154009Z`. No action needed. - **App Runtime removes legacy Knative migration behavior**: generated apps continue to use native Kubernetes resources. Before upgrading from Knative, delete its remaining app resources and conflicting `ExternalName` Services; fresh installs need no action. ### Teable release.2026-07-16T10-16-45Z.2254 `ghcr.io/teableio/teable:latest` now resolves to `release.2026-07-16T10-16-45Z.2254`. ## v2026.7.4 - 2026-07-16 ### Added - **Infra Service capability handshake (`GET /api/meta`)**: the Infra Service now reports its build version, the OpenSandbox engine version, and append-only capability tokens (for example `opensandbox.v1`, `image-preheat.v1`, `app-runtime.gateway.v1`). Newer Teable app releases call this once at boot to surface infra/app compatibility in the admin sandbox settings and to gate the admin live test; older apps never call it, and an older Infra Service answering 404 is reported by the app as "infra too old to report capabilities", not as an outage. Compose deployments gain an optional `OPENSANDBOX_SERVER_IMAGE` pass-through on the Infra Service so `/api/meta` can report the engine version from the same tag the server container runs. No action needed; hot-swappable. ### Changed - **Migration guide: the Vercel sandbox provider is hard-removed, and the upgrade order matters**: as of Teable `release.2026-07-01T11-07-52Z.2082` the Vercel sandbox provider code is gone from the app, and a leftover `SANDBOX_PROVIDER=vercel` makes the app container fail at boot with `Unknown sandbox provider type: vercel`. The migration guide now leads with this warning (change the environment first, then upgrade the image), notes that sandbox snapshots were removed in the same release (historical AI session workspaces migrate automatically), and adds the boot failure to the troubleshooting table. Action needed only if you still have `SANDBOX_PROVIDER=vercel` set: switch it to `opensandbox` (or remove it) before upgrading past that release. ## v2026.7.3 - 2026-07-15 ### Added - **Custom labels/annotations on generated app Deployments**: set `infraService.appRuntime.workloadLabels` / `workloadAnnotations` when your cluster's admission policies require specific workload metadata. Empty by default; no action needed. ## v2026.7.2 - 2026-07-15 ### Changed - **Kubernetes install re-verified end to end** on a clean cluster with a real domain. No action needed. - **Quick start installs without `--wait`**: `helm install --wait` deadlocks on a first install. Install plainly and let the doctor confirm readiness; TROUBLESHOOTING covers recovering an already-stuck `--wait` install. ## v2026.7.1 - 2026-07-15 ### Changed - **Docker install re-verified end to end** on a clean VM with a real domain. No action needed. - **Troubleshooting additions**: doctor showing `000` on the deployment VM itself (hosts-file workaround), and why S3 admin clients cannot connect through the entry (object paths only, by design). ## v2026.7.0 - 2026-07-15 First platform release — everything below ships as one verified combination. ### Added - **Release manifest**: `versions.yaml` / `VERSIONS.md` pin every component; `images/README.md` covers mirrors and air-gapped installs. - **Doctor release check**: compares what is running against `versions.yaml` and tells you whether the combination is verified. - **Private CA for sandboxes**: Kubernetes via `helm/private-ca.md`; Docker via `SANDBOX_CA_CERT_FILE` / `SANDBOX_TLS_NO_VERIFY` in `.env`. - **Automatic releases**: every release is tagged automatically and gets a GitHub Release with the matching changelog section. ### Changed - **Docker mode `cloud` renamed to `server`** (it means "a server with a real domain", intranet included). If you deployed under the old name, re-run `./apply.sh server` once; data is untouched. - **Sandbox engine `v0.2.0-fix6` and execd `v1.0.19-fix2`**: private-CA support plus an upstream permissions fix. `.env` now pins full image references (`EXECD_IMAGE` / `EGRESS_IMAGE`); the old `OPENSANDBOX_REGISTRY` variable is retired and ignored. - **All defaults pinned**: engine images default to `ghcr.io/teableio/*` (China: swap the prefix for the Shenzhen mirror, same tags), MinIO is pinned instead of `:latest`, and bare Kubernetes installs ship a pinned `appRuntime.defaultImage` so app deploys work out of the box.