- Add Vite resolve.alias for react/react-dom to root node_modules
- Removes duplicate React instances from pnpm transitive deps
- Create E2E smoke test verifying no React hook errors
- Fix: pnpm resolves @dnd-kit deps to react@19.2.8, conflicting with
app react@19.2.3 causing 'Invalid hook call' at runtime
Fixes: dark screen / Invalid hook call on /app
The Live Trading control stored its mode in localStorage, so the shell could
claim live money while the bot was in dry-run. Show the Tradingbot status
when TRADING_BOT_URL is set, and an unknown state when it is not.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Voice UX: simple speak toggle, onboarding pick, chat voice change
Replace Kokoro-branded settings with a Kann sprechen / Spricht nicht toggle,
onboarding voice personalization, and local chat commands for voice changes.
German voice presets (Eva, Bernd) surface as friendly names; Kokoro stays
under the hood via KOKORO_BASE_URL.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix import order in voice onboarding and settings
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>
- ConversationBotPicker now receives full Bot[] instead of SpaceBot[]
- conversationSidebarGroups render simplified to BotAvatar-only (no groups)
- projectSidebarGroups render uses GroupAvatar with proper type cast
- Dead code eliminated: kind===group checks in conversation sidebar
Co-Authored-By: Claude Code <noreply@anthropic.com>
Extend the existing NewSpaceDialog project flow so an optional host
folder becomes the space workspace root. When .git metadata is present,
remote URL, default branch, and head commit are stored on the space.
Team Computer file APIs expose the linked folder under project/ without
a second VCS stack. Desktop adds a native folder picker; web falls back
to an absolute path field.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
Replace Mission Control iframe on the Heute pillar with a native React
brief that surfaces actionable runs, unread replies, and today’s threads.
Mission Control remains available via a small footer link for power users.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
- Sidebar: Unterhaltungen (1:1-Bots im Home-Space) und Projekte
(Projekt-Spaces + Gruppen) getrennt; Projekt-Spaces erscheinen nicht
mehr unter Team/Unterhaltungen
- + in Unterhaltungen öffnet Bot-Picker (bestehenden Bot öffnen oder
neuen Bot erstellen)
- Chat-Header: Bot-Avatar wieder sichtbar, Status nur bei Aktivität,
kein doppeltes „1:1 conversation“
- Composer: generisches „Nachricht…“ statt Name dreifach
- OoStage: kein doppelter Bot-Name bei laufendem Verlauf
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
Projekte + shared the new-space post-create path and always sent users
to /onboarding. Route project variant to /app with the new space selected;
keep /onboarding for global New space when a first bot is still needed.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
Wire the Projekte sidebar + and empty-state action to NewSpaceDialog
with project labels instead of the group creation panel. Keep space
wording for the global create menu. Add de locale strings and an e2e
regression test.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>