* Fix red main: typecheck, lint, i18n and stale unit tests
Direct pushes to main left typecheck, lint and 16 unit tests red.
- Typecheck: AskCard test uses the current ask block shape, the sandbox
fault test calls the two-argument desktop writeFile, removing a queued
message notifies with the thread's latest event seq, and the replay
fixture only reads ref from steps that carry one.
- Lint: format and import order.
- i18n: transcript status labels were German source strings; they are
English now with German translations, catalogs re-extracted, and the
mobile "Failed to remove message" string is translated.
- Tests follow intended behavior changes: the time instruction now
closes the system prompt, short chat turns start at low reasoning,
owner-owned read-only files (git objects) pass the home check, and the
desktop computer may read and write host files outside its home. The
old desktop write-containment suite is replaced by a host file test.
- The composer task pill test mocks the Lingui macros like other tests.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TnT7eVHuaCzZKY5CnYzpr1
* Bump Expo patch releases so expo install --check passes
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TnT7eVHuaCzZKY5CnYzpr1
* Bring web E2E back in line with the new side panel
The side panel lost its computer tab, which left the full computer window
(take control, teach, release) unreachable from the web app. The browser
view now offers an "Open in full window" button, and opening the panel no
longer boots a stopped computer.
Also: the slash picker scrolls instead of growing under the header, user
skills come first in it, the agent overview hides an empty routines block,
the hover time hides again with collapsed details, and the light destructive
token meets contrast on the sidebar. E2E specs follow the new panel layout,
and the cursor and hover tests no longer race the UI.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TnT7eVHuaCzZKY5CnYzpr1
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Name 1:1 senders after their bot and reach the computer from a group
In a 1:1 chat bot messages fell back to the label "evOo" because only group
members were looked up; they now use the bot's name. The main conversation
and project chats show the computer button and open their lead bot's computer.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
* Translate the stage's collaboration lines
Subagent, handoff, delegation and peer-reply lines on the stage were English
in every language. They now go through the catalog, with German filled in.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Name a run's chat once when its group carries the bot's name
A project's main conversation is named after its lead bot, so Today
showed "Chief · Chief". Web and mobile now share one title helper that
drops the repeated name.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
* Drop the "1:1 with" line under a conversation's title
The stage header repeated what the chat already shows, such as
"1:1 with Chief" under a project's name. The title and the phase pill
remain.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
* Let the stage's translated thinking lines speak while a bot works
A running bot raised a "working" awareness event whose English line,
such as "Chief is working on your request.", replaced the translated
thinking lines and added an "In progress" strip next to the phase pill.
The strip now only shows collaboration.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
* Ask bots to describe their steps without naming tools
Long runs showed lines such as "I'm using browser_navigate" in the chat.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
* Announce the stage phase as status and keep following after a tap
The working strip used to be the only status region while a bot worked; the
stage's phase pill now carries that role. A tap at the latest message no
longer stops the transcript from following new messages.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ
---------
Co-authored-by: Claude <noreply@anthropic.com>
Kokoro-FastAPI ships English, Spanish, French, Hindi, Italian, Japanese,
Portuguese and Chinese voices only. The German presets pointed at voice
ids no Kokoro server has, so German users either got English voices or
picked a voice that failed to speak.
The local voice now also lists the German voices whose Piper model is
installed (PIPER_BASE_URL) and speaks them through Piper's /synthesize
as WAV. Thorsten, the clearest model, is the German default. Mobile
plays WAV as well as MP3, and the E2E voice stub stands in for Piper.
Claude-Session: https://claude.ai/code/session_01KWEAjTw26eRf3ZXTXfRjmD
Co-authored-by: Claude <noreply@anthropic.com>
* Fix first-run onboarding UX: naming, locale, voices, Heute route, mobile drawer
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix biome import order and formatting
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix biome formatting on OoStage and E2E specs
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix E2E specs for onboarding name step and Heute reload route
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix German onboarding heading matcher in E2E
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix German signup E2E, Escape menu stacking, and Heute rhythm click
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Make onboarding E2E helpers locale-aware for German UI
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix completeOnboarding language skip for Skip · locale label
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Use language-step Skip · locale button in completeOnboarding
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix German E2E: Nachricht composer, voice loading wait, Heute rhythm
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Stabilize Heute reload URL and German voice E2E assertions
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix Heute bootstrap redirect and German onboarding voices
When Kokoro lists no locale-matched voices, onboarding now uses offline
presets instead of showing English-only options. Shell bootstrap skips
bot redirects while the user is on /app/heute.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Relax German voice E2E name matching for voice labels
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Harden Heute route and German voice onboarding E2E
Rebased onto main with Expo SDK 57 typecheck fixes. Voice options expose
stable test ids; Shell keeps /app/heute across bootstrap and redirects
legacy /app/heute bot URLs. Heute coach E2E asserts URL after reload.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Format Shell after Heute route helper
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>