Skip to content

Tale v0.4.0

Choose a tag to compare

@larryro larryro released this 04 Aug 11:46
a9faeba

0.4.0 is a breaking minor: it requires a fresh deployment. There is no upgrade path between 0.3.x and 0.4 — in either direction. If you operate a 0.3.x instance, read the breaking changes below before touching anything.

Highlights

0.4 rebuilds Tale's AI backend, and with it the data model, from a clean baseline on a minimal YAML-config core (#2857). Automations are versioned configurations you upload and deploy in one click; task agents work a task end to end, with a live step timeline, run details, and output attachments on the board; and chat is scoped to what it does best — ask and retrieve — with complex jobs handed to tasks and automations (#2877). The "integration" concept is retired in favour of rebuilt credential and skill catalogs (#2876, #2889).

Knowledge ingestion, the website crawler, chat image attachments, and audio transcription were rebuilt on the new backend — the crawler now also handles documents, URL lists, and JS-rendered pages. The versioned-migration framework restarts at the 0.4.0 baseline: 0.4+ releases carry migrations for what they ship, and nothing older.

Breaking changes

  • No 0.3 → 0.4 in-place upgrade — 0.4 requires a fresh deployment. The versioned-migration history was reset at the 0.4.0 baseline; no 0.4+ binary carries the pre-0.4 migrations. Nothing from a 0.3 instance is carried over: chats, automations and their run history, knowledge entries, task history, users and sign-ins. Files in a BYO-S3 bucket physically remain in the bucket, but the new instance has no references to them.
  • Guard rails, if you skip this: tale deploy with a 0.4 CLI refuses to touch an instance whose running version is below 0.4.0, before pulling an image or writing anything; a container booted over pre-0.4 data exits fatally with the [migrations][breaking-cutover] log marker. The expert override — tale deploy --accept-data-loss, or TALE_ACCEPT_DATA_LOSS=1 on the container — exists for deliberately reusing a host whose old volumes you have already dealt with: pre-0.4 data on that instance becomes permanently unreadable.
  • Downgrading below 0.4.0 is equally unsupported. A 0.3.x release cannot read data created by 0.4+ — restore a pre-0.4 snapshot or deploy 0.3.x fresh instead.

Staying on 0.3.x

Staying on 0.3.x for a while is a supported choice: the release/0.3 branch keeps receiving security and critical fixes. Check your CLI version first (tale --version):

  • 0.3.12 or newer — you are set: tale update stays within the 0.3.x line and never crosses to 0.4 on its own.
  • 0.3.11 or older — pin the line explicitly with tale update --version 0.3.12. CLIs older than 0.3.12 target the newest release regardless of line, so a bare tale update fetches the 0.4 CLI. That is harmless for your data — a 0.4 CLI refuses to deploy over a 0.3 instance — but you would then have to downgrade the CLI the same way.

Moving to 0.4

Moving is a re-onboarding, not an upgrade — the full walk-through is in Upgrades → 0.3 → 0.4: breaking cutover.

# 1. Leave the 0.3 instance untouched (it keeps serving).

# 2. Get the 0.4 CLI (a 0.3.12+ CLI never offers 0.4 on its own — cross lines explicitly):
tale update --version 0.4.0
# ...or on a fresh machine:
curl -fsSL https://raw.githubusercontent.com/tale-project/tale/main/scripts/install-cli.sh | bash

# 3. Deploy fresh in a NEW project directory:
mkdir tale-04 && cd tale-04
tale init
tale deploy

# 4. Re-onboard: organizations, users (invite / SSO), configuration,
#    documents and knowledge re-upload.
# 5. Decommission the 0.3 instance once the new one is accepted.

What's Changed

  • fix(platform): cascade an integration reconnect to agents and schedules by @Israeltheminer in #2865
  • fix(platform): keep section headers out of searchable-select filtering by @Israeltheminer in #2866
  • feat(platform): link the assignee picker to auto-assign settings by @Israeltheminer in #2867
  • feat(platform): render IMAP/SMTP flags as switches and mirror the sender by @Israeltheminer in #2868
  • feat(platform): move Disconnect into the connected view, name the confirm target by @Israeltheminer in #2869
  • feat(platform): duplicate an integration into a second instance by @Israeltheminer in #2870
  • feat(platform): delete an unconnected duplicate instance by @Israeltheminer in #2871
  • feat(platform): reconnect an integration without re-entering credentials by @Israeltheminer in #2872
  • feat(platform): rewrite the AI backend on a minimal YAML-config core by @yannickmonney in #2857
  • docs(platform): genericize VAT-flavored comments in task plumbing by @larryro in #2875
  • refactor(platform)!: retire "integration" and rebuild the credential catalogs by @yannickmonney in #2876
  • feat(platform)!: chat = ask/retrieve — the Chat·Task·Automation boundary model by @larryro in #2877
  • feat(platform): restore chat image attachments, RAG ingestion, and the website crawler by @larryro in #2880
  • feat(platform): guide failed RAG indexing to the embedding settings by @larryro in #2881
  • chore(platform): clean up example fixtures and docs by @larryro in #2882
  • feat(platform): guarantee automation run liveness after lost wakes by @larryro in #2883
  • fix(platform): bound the log an automation run stores by @Israeltheminer in #2885
  • feat(platform): retain and erase automation runs by @Israeltheminer in #2886
  • fix(platform): advance agent live timeline on tool-only activity by @larryro in #2884
  • feat(platform): crawl documents, URL lists, and JS-rendered pages by @larryro in #2887
  • feat(platform)!: turn the credential and skill catalogs into tables by @yannickmonney in #2889
  • feat(platform): transcribe audio attachments in chat by @Israeltheminer in #2888
  • fix(platform): keep audio transcripts off the chat bubble by @Israeltheminer in #2890
  • feat(platform): replace task run dialog with a step timeline by @larryro in #2893
  • feat(platform): task agent run details, live transcript, and output attachments by @larryro in #2894
  • fix(platform): collect a connector's declared config fields by @Israeltheminer in #2878
  • fix(platform): resolve pack model ids across catalog dialects by @Israeltheminer in #2891
  • feat(platform): restore imap-smtp split SMTP auth and live transport by @Israeltheminer in #2892
  • feat(platform): sync mailboxes into the shared Inbox by @Israeltheminer in #2895
  • fix(platform): align imap-smtp TLS mode with well-known ports by @Israeltheminer in #2896
  • fix(platform): automations list, archive split, credential errors, UI polish by @AdeolaAdekoya in #2897
  • fix(platform): agent transcript durability, dialog polish, vision pick guards by @larryro in #2909
  • fix(platform): download file chips under their real names by @larryro in #2910
  • feat(platform): scope project metrics with a visible picker by @Israeltheminer in #2900
  • fix(platform): list only managed-capable harnesses by @Israeltheminer in #2902
  • fix(ui): give a section header's description the full width by @Israeltheminer in #2903
  • fix(ui): paint stat-card grid dividers with a gap by @Israeltheminer in #2904
  • feat(platform): make capped list overflow discoverable by @Israeltheminer in #2905
  • feat(platform): send actionable emails through the org's mailbox by @Israeltheminer in #2906
  • feat(platform): trail the automation name in the area header by @Israeltheminer in #2907
  • refactor(platform): sit the trigger and projects panels side by side by @Israeltheminer in #2908
  • feat(platform): offer one-click deploy after automation upload by @larryro in #2911

Full Changelog: v0.3.12...v0.4.0