v0.4.10
0.4.10 is a feature and fix release on the 0.4 line — an in-place update: tale update, then tale deploy --stop. One non-destructive Convex backfill applies automatically. Recreate the knowledge database (db on the CLI stack) so conversation_id exists; a default tale deploy leaves that container on the old image and every private knowledge search returns nothing.
Highlights
Chat can list the board, conversations, and emailed attachments — under the same assignment privacy as the Inbox. Asking "are there any open tasks?" used to match a random project description; it now lists in-scope work newest-first. Conversations are searchable (message bodies are not). Emailed attachments appear newest-arrival-first with a corpus ref for rag_fetch, and their chunk header carries the mail's subject and correspondent so "CVs for the sales role" can match a file that never says "sales". A project-bound thread is told which project it is in. Archived work stays searchable and is labelled archived. (#3002, #3003, #3006, #3007, #3008, #3014, #3029, #3033, #3035)
Task-agent work keeps going after a blip. Retry, Request changes, and a later @mention resume the same harness conversation instead of rebuilding a 10-message brief. A retryable failure re-kicks itself immediately, up to three consecutive times; dead ends (deadline, park_deadline, agent_deleted, agent_model_missing) never retry. The run error shown is the harness's own final text. (#3026, #3030)
A tale API key can run the unattended worker journey end to end. New Projects and Tasks routes find or create a client project, prepare folders, upload files, bind an automation, create and start a task, then read comments and filed results. Auth is Authorization: Bearer; visibility is re-checked per request; misses are opaque 404s. Project uploads skip RAG by default and never appear in the Hub document family. (#3032)
Breaking changes
- Knowledge-db must pick up
conversation_id. Platform now selectsprivate_knowledge.documents.conversation_id. If the column is absent, both search legs return empty and the log tells you to restart the knowledge database container (it runs dbmate at start). On the CLI single-node stack that corpus lives indb, anddbis stop-gated — recreate it withtale deploy --stop(or recreateknowledge-dbon a split compose). Per-org BYO corpora apply pending dbmate files on first touch from the new platform image; the bundled corpus does not. (#3011) X-Organization-Slugis now read. It was documented and ignored. A client that sent a slug different from the key user's last-active org now hits that slug (membership-checked) instead of silently following the dashboard. New Projects/Tasks routes never guess: a multi-org key without the header gets400 ORG_SLUG_REQUIRED. Single-org keys are unchanged. (#3032)
Security
Dependency bumps. Mermaid is rendered from chat and docs markdown; the others are hygiene — this repo does not call the affected Hono or undici APIs.
- mermaid 11.16.1 — CVE-2026-71436 (XY chart axis loop) and CVE-2026-71437 (
architecture-betaprototype pollution). (#2934) - hono 4.12.34 — CVE-2026-71848 (
languageDetectorquadratic DoS) and CVE-2026-71849 (hono/proxyhop-by-hop forward). (#2831) - undici 7.29.0 — CVE-2026-13697 (shared-cache
private="") and CVE-2026-16728 (interceptors.retry()Content-Length desync). (#2899) - postcss 8.5.23 — CVE-2026-69153 (source map path when
fromis unset). Build pipeline, not a running-instance HTTP path. (#2859)
Behaviour changes
rag_searchis two verbs.action: "search"is unchanged retrieval;action: "list"browses one kind. Missingaction+ a query still searches; missingaction+ a kind still lists. Old transcript rows stay valid. (#3029)- Archived projects and their tasks stay visible to chat, labelled
archived/projectArchived. The Documents UI still hides archived rows. (#3007) - Failed task-agent runs auto-retry (three immediate kicks) unless the failure is a named dead end. The UI shows "Auto-retry n of 3". No org kill switch in this release. (#3030)
- Emailed files index at bind, conversation-scoped, assignment-live. A reassignment moves who may read them with no rewrite. Quiet old mail stays unindexed until a poll touches it (listing ≠ indexing). (#3010, #3011, #3012)
- Inbox shows Content-ID attachments unless the HTML actually references that cid. Re-polling the cursor message reuses stored pointers instead of minting a new blob every five minutes. Assigned-mailbox ingest works again (closed validators had dropped assignee fields and killed sync). (#3000, #3009, #3013)
- REST project uploads default
skipRagIndexing: true. (#3032) - Project → Knowledge → Files can Delete from the row (legal-hold and connector-sourced still refused). "Remove from project" still detaches to org-wide — that is no longer the only path. (#3004)
- Forms mark optional fields with
(optional)instead of a red asterisk on required ones. (#2994) - Upload allowlist grows
json,yaml,yml,py,md,ac2. Automation Uploads is a real collapsed tree; withsubdirit lists only that subtree. (#3001, #3031) - A dead knowledge search (no embedding model) warns with the org id and points at Settings → Data residency; the raw error no longer reaches the user. (#3005)
Migration notes
tale deploy applies one new non-destructive Convex migration automatically; tale migrate status lists it afterwards:
0.4.1/05_backfill_mail_attachment_received_at— stampsmailReceivedAtfrom_creationTimeon boundfileMetadatarows that lack it, so attachments bound before the field existed appear in the mail-arrival index. Updating from 0.4.0 still applies 01–04 on the way, then 05.
Knowledge Postgres (not the Convex chain):
private_knowledge/00000000000008_knowledge_private_conversation_scope.sql— addsconversation_idand a partial index. Applies when the knowledge-db container starts on an image that contains the file. Defaulttale deploydoes not recreatedb.migrate:downis empty on purpose: dropping the column would silently widen conversation-scoped attachments to org-hub.
Upgrading
tale update # a 0.4.x CLI stays on the 0.4 line and picks up 0.4.10
tale deploy --stop # pulls the 0.4.10 images, recreates db/proxy, applies migrations
tale deploy without --stop updates the app images and the Convex backfill, but leaves db on the previous image. Private knowledge search then returns nothing until you recreate that container.
On 0.3.x? The 0.3 → 0.4 cutover is a fresh deployment, not an upgrade — read the v0.4.0 release notes and Upgrades → 0.3 → 0.4: breaking cutover before moving.
What's Changed
- fix(platform): replace ad-hoc required indicators and UI patterns with design system components by @AdeolaAdekoya in https://github.com/tale-project/tale/pull/2994
- fix(platform): stop email attachments starving the RAG indexing cap by @Israeltheminer in https://github.com/tale-project/tale/pull/2995
- feat(platform): let agent read tools name tasks, projects and conversations by @Israeltheminer in https://github.com/tale-project/tale/pull/2984
- feat(platform): match questions, not just typed names, in entity search by @Israeltheminer in https://github.com/tale-project/tale/pull/2983
- fix(platform): derive the document scope label from the access rules by @Israeltheminer in https://github.com/tale-project/tale/pull/2997
- fix(platform): stop re-storing an email attachment on every mail poll by @Israeltheminer in https://github.com/tale-project/tale/pull/3000
- feat(platform): let chat see the organization's tasks and projects by @Israeltheminer in https://github.com/tale-project/tale/pull/3002
- feat(platform): tell a project-bound chat which project it is in by @Israeltheminer in https://github.com/tale-project/tale/pull/3003
- feat(platform): let a project file be deleted from its own row by @Israeltheminer in https://github.com/tale-project/tale/pull/3004
- fix(platform): make a dead knowledge search visible to the operator by @Israeltheminer in https://github.com/tale-project/tale/pull/3005
- feat(platform): let chat search conversations, under assignment privacy by @Israeltheminer in https://github.com/tale-project/tale/pull/3006
- feat(platform): keep archived work searchable and label it as archived by @Israeltheminer in https://github.com/tale-project/tale/pull/3007
- fix(platform): stop hiding an email attachment that carries a Content-ID by @Israeltheminer in https://github.com/tale-project/tale/pull/3009
- feat(platform): record which conversation an email attachment arrived on by @Israeltheminer in https://github.com/tale-project/tale/pull/3010
- fix(platform): answer board questions by listing, not only by matching by @Israeltheminer in https://github.com/tale-project/tale/pull/3008
- feat(platform): scope a corpus row to its conversation by @Israeltheminer in https://github.com/tale-project/tale/pull/3011
- feat(platform): index an emailed attachment for its conversation by @Israeltheminer in https://github.com/tale-project/tale/pull/3012
- fix(platform): let mail ingest read an assigned conversation by @Israeltheminer in https://github.com/tale-project/tale/pull/3013
- feat(platform): folder-shaped inputs and uploads settings forms by @larryro in https://github.com/tale-project/tale/pull/3001
- feat(platform): resume the task-agent conversation on later kicks by @larryro in https://github.com/tale-project/tale/pull/3026
- feat(platform): split chat rag_search into search and list actions by @larryro in https://github.com/tale-project/tale/pull/3029
- feat(platform): auto-retry a failed task-agent run by @larryro in https://github.com/tale-project/tale/pull/3030
- fix(platform): collapsible uploads tree and sectioned setup gate by @larryro in https://github.com/tale-project/tale/pull/3031
- feat(platform): give an emailed attachment its mail's context by @Israeltheminer in https://github.com/tale-project/tale/pull/3014
- fix(deps): update dependency mermaid to v11.16.1 [security] by @renovate[bot] in https://github.com/tale-project/tale/pull/2934
- fix(deps): update dependency undici to v7.29.0 [security] by @renovate[bot] in https://github.com/tale-project/tale/pull/2899
- chore(deps): update dependency postcss to v8.5.23 [security] by @renovate[bot] in https://github.com/tale-project/tale/pull/2859
- fix(deps): update dependency hono to v4.12.34 [security] by @renovate[bot] in https://github.com/tale-project/tale/pull/2831
- feat(platform): projects and tasks rest machine door by @larryro in https://github.com/tale-project/tale/pull/3032
- fix(web): keep the changelog on the current release by @yannickmonney in https://github.com/tale-project/tale/pull/3034
- feat(platform): let chat list the emailed attachments in scope by @Israeltheminer in https://github.com/tale-project/tale/pull/3033
- feat(platform): list emailed attachments by arrival, affordably by @Israeltheminer in https://github.com/tale-project/tale/pull/3035