Tale v0.4.1
0.4.1 is a feature and fix release on the 0.4 line — an in-place update: tale update, then tale deploy. Four non-destructive data migrations ship with it and apply automatically during deploy; there are no manual steps. Two deliberate behaviour changes are listed below — read them if your organization leans on org-wide knowledge search or a shared inbox pool.
Highlights
Inbox, synced from real mailboxes. Every connected mail credential now syncs into the shared Inbox for triage, each on its own watermark so repeat syncs pick up where they left off, per mailbox (#2915, #2916). Email attachments are stored at ingest and follow the conversation (#2914), and a mailbox's "From" mirrors the IMAP login instead of guessing at an address (#2924, #2925).
Agent runs you can steer and review. Write into a live agent run and it picks your message up mid-flight instead of waiting for the next run (#2921). Agent task work can name a human reviewer: approving settles the task, requesting changes sends it back to the agent with the comment (#2927). Runs whose finishing step died mid-flight now recover instead of stranding the task (#2920), and a running run's badge keeps spinning (#2926).
A provenance layer for regulated processes. Every settled agent run writes one immutable entry to the organization's tamper-evident audit chain: the models actually served, the capability snapshot the run held, spend, produced outputs with checksums, the knowledge it read, approvals raised, and the reviewer linkage (#2947). Project agents and automation nodes accept an autonomy tier (a1 declares posture, a2 parks every outbound write for approval, a3 refuses outbound writes outright), admins can grant competence records, and a review policy can require an independent, competent reviewer. Documents gain opt-in controlled records — draft → in-review (frozen) → approved (immutable), with checksum-addressable approved versions — visible and manageable from the project Files tab (#2954).
Tasks and projects. Tasks get a start date (#2930) and notify assignees when a task starts or comes due (#2943); labels are promoted from freeform strings to a project-scoped catalog with colours (#2929, migrated automatically); your own assignments stand out at a glance (#2944). The projects list shows live open/done task and agent counts (#2939, backfilled), a project with a bound automation gets an Automations tab (#2952), and the list's bulk delete is replaced by reversible bulk archive (#2953).
Plus: conversation privacy is built-in (#2923, see below), skills drop the retired usage-mode and — for new skills — private visibility (#2922), the share-chat dialog is redesigned with neutral feedback buttons (#2946), error toasts say what went wrong (#2935), the dark-mode date picker is readable again (#2945), and row actions are named for screen readers (#2937).
Behaviour changes
- Knowledge retrieval now enforces document visibility. Team- and project-scoped documents were documented as scoped but remained retrievable org-wide through knowledge search; after the automatic backfill they are returned only to users who can see the document. If someone relied on the org-wide behaviour, share those documents with their team or move them to the org hub. (#2947)
- Conversation privacy is built-in, not a policy. A thread assigned to a team or person is visible to exactly them (admins and owners see everything); unassigned mail is admin triage, no longer visible to every member. If inbound mail should reach a group on arrival, point conversation routing at a team queue. The old opt-in
conversation_accesspolicy is ignored. (#2923)
Migration notes
tale deploy applies four non-destructive migrations automatically; tale migrate status lists them afterwards:
01_automation_pins_to_bindings— automation project pins become explicit binding rows; an automation can now be bound to several projects.02_task_labels_to_catalog— freeform task labels become the project's label catalog, and tasks reference it.03_backfill_project_rollup_counts— pre-existing projects get their open/done/agent counters computed.04_backfill_corpus_document_scope— knowledge-corpus rows inherit their document's team/project scope (the retrieval change above).
Upgrading
tale update # a 0.4.x CLI stays on the 0.4 line and picks up 0.4.1
tale deploy # pulls the 0.4.1 images and applies the migrationsOn 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
- feat(platform): explain sandbox session pools on hover by @larryro in #2918
- chore: prune dead i18n keys and retired-surface reserves by @larryro in #2919
- fix(platform): recover agent runs whose settle died mid-flight by @larryro in #2920
- fix(platform): reseed the skill editor when switching skills by @Israeltheminer in #2912
- feat(ui): stack settings rows for narrow panes by @Israeltheminer in #2913
- feat(platform): store email attachments on ingest by @Israeltheminer in #2914
- feat(platform): give each mail credential its own sync watermark by @Israeltheminer in #2915
- feat(platform): sync and triage every connected mailbox by @Israeltheminer in #2916
- feat(platform): steer live agent runs and paste task attachments by @larryro in #2921
- feat(platform): make conversation privacy built-in, not a policy by @Israeltheminer in #2923
- fix(platform): mirror the IMAP login into the mailbox From by @Israeltheminer in #2924
- fix(platform): stop reading a stranger's address as our mailbox by @Israeltheminer in #2925
- fix(ui): keep a running run's badge spinning by @Israeltheminer in #2926
- Retire skill usage-mode and private visibility by @larryro in #2922
- feat(platform): name a human reviewer for agent task work by @larryro in #2927
- docs: refresh the manual test guides across platform, web, and docs by @yannickmonney in #2917
- fix(platform): document preview polish, table truncation, copy pass by @AdeolaAdekoya in #2928
- feat(platform): promote task labels to a project catalog by @Israeltheminer in #2929
- fix(platform): restore a green main after the preview polish by @Israeltheminer in #2932
- fix(ui): give task detail panel content room to read by @Israeltheminer in #2931
- feat(platform): give tasks a start date by @Israeltheminer in #2930
- fix(platform): error toast infrastructure, userMessage convention, skills UI polish by @AdeolaAdekoya in #2935
- fix(platform): unbreak main after the userMessage convention by @Israeltheminer in #2936
- fix(platform): stop dark-mode date picker painting white on white by @Israeltheminer in #2945
- feat(platform): make "assigned to me" visible at a glance by @Israeltheminer in #2944
- fix(platform): name the row-action column for screen readers by @Israeltheminer in #2937
- chore(platform): remove the project stats query nothing reads by @Israeltheminer in #2938
- fix(platform): share chat redesign, neutral feedback buttons, credential cards by @AdeolaAdekoya in #2946
- fix(platform): unbreak the UI and Unit suites on main by @Israeltheminer in #2948
- chore: make bun run check actually run the UI suite by @Israeltheminer in #2949
- feat(platform): count a project's open, done and agent rows by @Israeltheminer in #2939
- feat(platform): notify on task start and due dates by @Israeltheminer in #2943
- chore(platform): drop the Files column from the projects list by @Israeltheminer in #2950
- chore(platform): restore alphabetical module order in api.d.ts by @Israeltheminer in #2951
- feat(platform): give a project an Automations tab once one is bound by @Israeltheminer in #2952
- feat(platform): swap the projects list's bulk delete for bulk archive by @Israeltheminer in #2953
- feat(platform): add compliance provenance layer by @larryro in #2947
- feat(platform): surface controlled records on the project Files tab by @larryro in #2954
- chore(platform): refresh betterAuth generated component types by @larryro in #2955
- fix(platform): rebalance projects list column widths by @Israeltheminer in #2956
Full Changelog: v0.4.0...v0.4.1