Tale v0.5.60
One merged pull request (#3498, the S3 fixes from the 2026-09-26 platform evaluation) and fourteen direct commits since v0.5.59. Migrations 0119–0121 (backfills, applied at boot); API contract 2.0.0 → 2.1.0; the proxy image changes, so run tale update and then tale deploy --stop (recreates db, object-store and proxy with a brief downtime).
Behaviour changes
- Mounting the WebDAV root
/dav/<org>/now lists two folders,documents/and.trash/; dot-segment paths (..,%2e%2e) are refused with 404 at the edge and in the app. (#3498) - OIDC ID tokens carry
acr: "0"(better-auth hard-codes it); relying parties pinned to the bronze URN have not matched since v0.5.45, and the docs now say so. (#3498) - The
llm-gatewaynetwork alias and itsNO_PROXYentries, kept since the June rename tosandbox-llm-gateway, are gone. (4f6b310) - Deleting a project agent clears its task assignments; removing a member revokes every competence grant; feedback is attributed by the rated message. The three migrations backfill the rows written before. (#3498)
Chat
- A stopped reply settles to its saved text without a reload; "B is better" switches the composer to model B; the losing Arena column goes to Trash at settle. (#3498)
- The chat assistant finds a task by its
KEY-nid; dictation reports a denied microphone; a new chat focuses the message box. (#3498) - A ⌘K chat hit shows plain prose cut around the match instead of raw markdown from the start of the message. (d94390c)
Knowledge
- Knowledge entries render as Markdown; the copyable id is labelled Version ID; Owners and Admins can pick any team for a document, synced teams included. (#3498)
- Server refusal reasons reach the user for websites, products and contacts; folder duplicates show the right toast; product forms refuse negative or oversized prices and stock; bulk import names the refused rows instead of rejecting the file. (#3498)
- Deleting the credential the embedding model uses is refused (
CREDENTIAL_IN_USE); deleting a product or replacing its image releases the managed image, legal holds honoured. (#3498)
Projects and tasks
- Board drops land in the lane under the pointer; opening a task pushes history; a subtask links to its parent; a deep link to a missing task says so. (#3498)
- Projects pick an icon and colour; an archived project is read-only (
PROJECT_ARCHIVED); a mixed upload ends in one summary toast; project rows open from the keyboard. (#3498)
Automations
- Run lists name who started a run and why it waits;
startedViaon run reads. (#3498) - One cron validator serves client and server; the Blank wizard previews the schedule and hands over the one-time webhook URL; revoking or rotating a webhook URL asks first. (#3498)
- Paused and undeployed schedules say so; new trigger bindings start disabled; stopped runs show where they stopped and who stopped them; a deleted automation's runs stay reachable. (#3498)
- Validation warns about a model the organization does not serve (
LLM_MODEL_UNAVAILABLE); a connector node without a usable credential fails before an approval is requested. (#3498)
Governance and settings
- Team names are unique per organization (
TEAM_NAME_TAKEN, also on SCIM); deleting an organization requires typing its name; Branding Reset commits everything in its confirm. (#3498) - Lists say "Showing the first N — scroll for more"; a Member's admin deep link is refused once; blocked erasure receipts say when a hold was released; Trash names chats. (#3498)
- Chat-health merges provider-less rows; harness-turn metrics add up and name the harness. (#3498)
- Password policy rules are switches like every other toggle; the account's change-password section is titled Password; an unconfigured OAuth app is explained once, not under every row. (8fe16bf, b66ed24, 858a7aa)
Developer surfaces and shell
- Docs search indexes whole pages and keeps inline code, so error codes, headers and env vars are findable. (#3498)
- Cold-load JavaScript drops from 2604 to 1928 KB gzipped, and the build guards the budget. (#3498)
- The offline overlay fires on
offlineand while the backend is unreachable; light-theme muted text and sidebar ages meet AA contrast. (#3498) - The environment reference drops the
RAG_RERANKING_*variables nothing reads; the image no longer setsSANDBOX_STORAGE_INTERNAL_BASE_URL. (bd2c518, 6d04ce7) - Dead code and 23 unused platform dependencies are removed: unrendered UI, the Slack notification renderer, the Convex upload lane, app doors nothing called. (94145dd, acc87b9, 271a8df, f1c5d42, 5c89086, fe56bd8)
API contract changes
The contract moved from 2.0.0 to 2.1.0 (136 → 136 operations). Read the API reference's versioning section before upgrading a pinned client.
Added operations: none.
Removed operations: none.
Changelog
2.1.0 — 2026-09-27: startedVia (schedule | webhook | event) on RunSummary and Run — which kind of trigger started a trigger:<id> run, read off the run's own input so it stays true after the binding changes kind; absent on a run a person or an API key started. A listing could not tell a scheduled run from a webhook delivery before. DELETE /api/v1/products/{id} answers 409 LEGAL_HOLD_ACTIVE under an organization-wide legal hold or a custodian hold on the uploader of the product's image, the way document and contact deletes do — the response is now documented on the operation.
Full Changelog: v0.5.59...v0.5.60