Skip to content

v0.246.0: m One AI language for everything the AI says about your mail

Choose a tag to compare

@jsnjack jsnjack released this 31 Aug 14:54
· 11 commits to main since this release
Widens yesterday's summary-language setting to every surface that talks to
the reader about their mail, since a setting that covers two of them is the
same problem in a smaller box:

  - the conversation summary and the per-message gist (as before)
  - the phishing verdict and its reasons
  - the reason on an AI-suggested snooze time
  - what Translate translates into (and the key its cache is stored under)

So Prefs.SummaryLanguage becomes Prefs.AILanguage, Assistant.SetLanguage
replaces SetSummaryLanguage, the prompts share languageClause (a sentence)
and languagePhrase (a parenthetical, where a strict output format leaves no
room for one), and the Preferences row is now AI Features → Language
("Summaries, translation, AI notes"). Translate cannot honour "Same as the
email" — a mail translated into its own language is a no-op — so it falls
back to the default there, and its button tooltip names the language it
will produce.

Nothing that writes mail *as* the user follows the setting: a draft, a
refined reply, a proofread, a subject or a quick reply stays in the
correspondent's language, which is the only right answer there.

The phishing verdict needed one extra step. Naming its three judgements as
English literals ('Verdict: Looks legitimate', …) does not survive a
language change — the model copies them, and a Russian analysis came back
headed by an English verdict above four Russian reasons (measured twice,
including with "translated in full" bolted onto the literals). Off English
the literals are gone and the judgements are described as meanings instead.

store.ClearSummaries becomes ClearAINotes and takes message_analyses with
it: an analysis is cached forever like a summary, so the language change has
to drop it too. Translations stay — they are keyed by target language
already, so a change simply misses and translates afresh.

Verified in the sandbox against the local model: the row saves ai_language,
clears 7281 cached rows, and Russian then comes out of the gist, the
translation, the verdict and its reasons, and a snooze reason (whose
machine-readable timestamp still parses).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>