122 Commits

Author SHA1 Message Date
308434a5f2 fix(web): position drag grips beside project labels and add data trust panel
- Move drag grip buttons inside the title row with absolute positioning
  relative to the flex container (left-1, vertically centered)
- Add pl-8 padding to title buttons so text doesn't overlap grips
- Add DataTrustPanel component showing privacy indicators in sidebar
  (encrypted, local storage, no tracking)
2026-09-23 16:49:52 +00:00
4b58776584 feat(web): add Privacy & Data settings section and remove Google Fonts
- Remove unused Google Fonts links from index.html (no external CDN)
- Add Privacy & Data settings section with:
  - Privacy posture indicator (data local, no analytics, no cloud sync)
  - Connection details panel (API, auth, DB, sandbox)
  - Data export button
  - Account deletion with confirmation
- Add ShieldCheck icon to settings nav
- Fix: DataTrustPanel import removed (was not used)
2026-09-23 16:04:19 +00:00
bd3c6c2d47 fix(web): resolve React multi-version hook error via Vite alias
- 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
2026-09-23 13:18:08 +00:00
476c1ffc18 feat(web): drag-to-reorder projects in sidebar
- Add @dnd-kit/core@6.3.1 + sortable@8.0.0 for mouse/touch drag reorder
- SortableGroup.tsx: sortable wrapper with GripVertical handle icon
- project-sidebar-order.ts: localStorage persistence (rakazo:project-sidebar-order)
- Shell.tsx: DndContext + SortableContext around project sidebar
- Folder icon replaces Lock icon for project entries
2026-09-23 12:00:09 +00:00
e70f0bd414 feat(web): drag-to-reorder projects in sidebar
- Add @dnd-kit (core, sortable, utilities) for mouse + touch drag reorder
- SortableGroup.tsx: sortable wrapper with grip handle icon
- project-sidebar-order.ts: localStorage persistence for order
- Shell.tsx: DndContext + SortableContext around project sidebar
- Folder icon for projects instead of lock icon
2026-09-23 10:48:06 +00:00
f1ac32fd61 fix(web): wire browser-preview-context and extend RakazoDesktop interface
- Create browser-preview-context.ts (missing file causing Vite crash)
- Add browserPreview property to RakazoDesktop contract
- Fix executor-shell-guard.ts non-null assertion for body[cursor]
2026-09-23 09:42:24 +00:00
cynarAI
de2a64f070 fix(web): read sidebar trading mode from the bot status API (#80)
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>
2026-09-22 22:10:18 +02:00
8ad8040d60 fix(cors): proper CORS with credentials for Tailscale IPs
- Disable Vite built-in CORS (sets wildcard * which fails with credentials)
- Add custom CORS middleware that echoes request origin
- Handle OPTIONS preflight explicitly
- Proxy uses changeOrigin: false to preserve request origin
- API's trusted origin detection handles Tailscale IPs
2026-09-22 16:45:01 +00:00
cce793151e fix(ui): remove Integrations button from sidebar, add E2E tests
- Remove 'Integrationen' button from sidebar (Shell.tsx)
- Fix auth heading text: 'Create your Rakazo' → 'Create your EvOo'
- Fix completeOnboarding helper: handle setup progress, dismiss overlays
- Fix vite proxy CORS: use proxyRes handler instead of headers option
- Add local provider fallback in modelSetup
- Add 4 new E2E tests (all passing):
  - sidebar-integrations-removed: Integrations button not in sidebar
  - sidebar-nav: expected nav items present, no Integrations
  - message-send: composer interactive, message appears
  - onboarding-complete: full onboarding flow works
- Add playwright config: PLAYWRIGHT_NO_SERVER support
2026-09-22 15:46:05 +00:00
cynarAI
5ae8f15931 feat(web): Ingo UX — Proaktivität, Oo-Gesicht, dezentes Audio (#76)
* feat(web): Ingo UX — proactivity signals, Oo face richness, soft audio

Priority S: Heute Brief buckets (Needs you ≤3 / Doing / Done), roster doing-verbs
and Braucht-dich chips, sidebar badge on Heute, need-you ping on waiting states.

Priority A/B: Web Audio cues (app-start shimmer, interact tick, success-resolve,
need-you ouh), reaction vocals with cooldown, optional eOo cold-open voice mark.
Oo eyes gain iris/specular detail and asymmetric blink; hands reduced to rest
except punctuation poses; speaking mouth animates.

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>

* fix(web): biome format and unused import in HeuteBrief

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>

* fix(web): a11y and import order for Heute badge

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>

* docs+motion: Motion God craft — pose stagger, audio bus, ducking

Add MOTION-EVOO-CHARACTER.md (Brand Soul brief): eyes lead, mouth ~80%,
hands punctuation, 40–80 ms eye→mouth lag, 220–320 ms springs, SFX LUFS
and duck-under-TTS/PTT, nod mh/Mhh, reduced-motion rules.

Implement motion-tokens, staggered mouthPose in EvooMascot, shared
oo-audio-bus with voice-lane ducking, mint→gold success, hm nod vocal.

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>

* fix(web): align conversation roster with bot-only sidebar groups after rebase

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>
2026-09-22 14:39:40 +02:00
cynarAI
8ca23ad609 Voice UX: Kann sprechen ohne Kokoro-Branding (#75)
* 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>
2026-09-22 14:35:36 +02:00
cynarAI
1ed4868dcf feat(web): WOW mobile-first onboarding look picker with swipe previews (#74)
* feat(web): WOW mobile-first onboarding look picker with swipe previews

Replace the form-style emoji step with category chips and a swipeable
look carousel. Each preset maps to existing color, shape, and pose
taxonomies; avatarValue still lands as color::shape on bot create.

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>

* style(web): format onboarding look picker files

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>
2026-09-22 14:31:56 +02:00
629346fe89 fix(web): resolve Shell.tsx TypeScript errors from PR #71 bot-picker refactoring
- 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>
2026-09-22 10:43:46 +00:00
cynarAI
cf6ac7270e feat: rich project creation with folder and git wiring (#73)
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>
2026-09-22 12:29:25 +02:00
cynarAI
83302961ba feat(web): replace Heute iframe with native daily brief (#72)
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>
2026-09-22 12:21:05 +02:00
cynarAI
0474875142 feat(web): Unterhaltungen-IA, Bot-Picker und schlanker Chat-Header (#71)
- 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>
2026-09-22 12:18:23 +02:00
a3eac211bd fix: clean up remaining pre-existing TypeScript errors
- dictation.ts: Uint8Array cast for getByteTimeDomainData
- user-help-vibe.test.ts + user-profile-harvest.test.ts: computerHost 'evo' → null
- executor-utils.ts: import AgentRunRequest from adapter-kit, MessageBlock from contracts
- pi-model-config.ts: import AgentToolExecutionResult from adapter-kit

Results: apps/web 0 TS errors (was 4), packages/adapters 15→6 errors
2026-09-22 04:37:18 +00:00
Cursor Agent
57c968dc8b fix(web): keep project create in shell, not onboarding
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>
2026-09-21 23:41:58 +00:00
Cursor Agent
cc59fce7bd fix(web): Projekte + opens project create, not group form
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>
2026-09-21 23:30:57 +00:00
9aeb2c01f8 feat: emoji-first onboarding flow with accessory/pose customization, language step
- Rewrite Onboarding.tsx: 5-step flow (emoji → preferences → language → integrations → bot)
- Remove model selection from onboarding entirely
- Add shape selector (8 GrokShapes), color picker (12 colors), accessory (9 options), pose (8 poses)
- Add user preference form (name, timezone, hobbies, work style, communication style)
- Add language selection step with 9 locales persisting to localStorage
- Persist avatarValue ({color}::shape_{index}) on bot creation
- Persist user preferences to bot instructions
- Update onboarding-discovery: 3 items (profile, tools, crew), no model
- Update OnboardingDiscoveryShell: remove model-ready source label
- Export GROK_COLOR_LIST, GROK_SHAPES, GrokColorDef, SHIPPED_SHAPE_KEYS from ui-web
- Update onboarding-discovery.test.ts with proper mock types
2026-09-21 23:18:34 +00:00
a570e9e71b feat: complete onboarding redesign + major file splits
Onboarding: emoji-first flow with shape/color selection, user preferences,
language setup (9 locales), and bot creation with avatarValue persistence.

executor.ts: split 4928→4159 lines into 8 modules (completion, computer,
effects, model, utils, tools, attachments, types).

pi-runtime.ts: split 1726→561 lines into 2 modules (model-config, tool-utils).

E2E: new onboarding-emoji-first tests + updated completeOnboarding helper.
2026-09-21 22:52:04 +00:00
cynarAI
6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00