evOo-local/docs/PRODUCTION-READINESS.md
Cursor Agent c077ff4415
Production readiness phase 1: journeys doc, onboarding persistence, teardown, chat UX
- Add docs/PRODUCTION-READINESS.md with journey matrix and defect backlog
- Persist onboarding draft in session storage across reload
- Localize onboarding discovery main-bot role; German Chief of Staff string
- Destroy team sandboxes and home folders when deleting an account
- Keep composer/transcript visible during queued runs; extend send watchdog
- Add Playwright specs: reload persistence, DE intake, queued progress, console guard

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
2026-10-07 07:42:02 +00:00

8.1 KiB
Raw Blame History

evOo-local production readiness (Phase 1)

Audit of user journeys, automated coverage, known defects, and Phase 2 backlog. Scope: web app (apps/web), API, shared packages; mobile (apps/mobile) noted where CI does not cover it.

Product surfaces

Surface Entry Locales in CI
Desktop web ≥768px viewport EN + DE in targeted specs
Mobile web 390×844, touch EN + DE in targeted specs
API / Postgres journeys packages/testkit EN
Mobile native Expo app Maestro smoke only (not full matrix)

User journey inventory

Legend: E2E = Playwright under apps/web/e2e/; Unit = vitest in app/packages; PG = postgres journey in testkit; Gap = missing or partial automation.

First run & onboarding

Journey Routes / UI Desktop E2E Mobile E2E Unit/PG Gaps
Sign up /sign-up golden, first-run-onboarding-ux same auth PG —
Look category & swipe /onboarding emoji step onboarding-oo-swipe, onboarding-emoji-first swipe spec (desktop viewport) — Mobile-specific swipe gestures
Name Oo name step first-run-onboarding-ux partial — —
Language language step first-run-onboarding-ux, ui-locale DE skip label — —
Voice voice step first-run-onboarding-ux, voice DE voices — Kokoro offline errors
Integrations / scan optional steps onboarding-discovery, onboarding-complete — onboarding PG —
Reload mid-onboarding /onboarding onboarding-reload-persistence (this PR) same onboarding-draft.test —
Intake cards (focus, goal, rhythm, quiet hours) /app/g/… onboarding-intake onboarding-intake-de onboarding-intake PG Full DE rhythm/quiet copy
Deep link /onboarding while signed in redirect rules partial via auth specs — — Explicit deep-link matrix

Session & auth

Journey Routes E2E Gaps
Sign in / out /sign-in, / auth-lifecycle, browser-auth Tailscale / cookie edge cases
Password reset /forgot-password, /reset-password auth-lifecycle —
Session unavailable / retry /app loading module-recovery —
Welcome (signed out) / smoke —

Heute (daily brief)

Journey Route E2E Gaps
Open Heute /app/heute heute-brief Mobile layout overflow audit
Coach / goals list Heute UI heute-brief —
Deep link reload /app/heute partial Console errors on cold load

1:1 & group chat

Journey Route E2E Gaps
Main conversation /app/g/:groupId main-conversation, first-conversation —
Bot thread /app/:botId many specs —
Send message composer message-send —
Streaming / progress transcript chat-progress-messages (fixture), chat-queued-progress Real LLM latency (mocked)
Queued / slow model UI composer + transcript chat-queued-progress Multi-run queue depth
Errors & retry composer banner run-failure, computer-screen-error —
Stop run composer golden —
Peer / group /app/g/… group-chats, peer-messages —
Console cleanliness main paths journey-console-errors Full matrix all routes

Oos (bots)

Journey E2E Gaps
Create / name / archive / delete bot-crud, new-bot-ux —
Switch bot / sidebar sidebar-nav, unterhaltungen-sidebar —
Avatar / look oo-avatar, look-suggestion —
Capabilities bot-capabilities —
Team vs dedicated computer team-computer Real docker teardown in PG

Projekte

Journey E2E Gaps
Create project space spaces, adaptive-workspace —
Bind folder + git project-main-agent —
Timeline / goals project-main-agent Voice-first goal card
Empty project partial Dedicated empty-state spec

Settings

Journey E2E Gaps
General / account settings-shell, user-profile —
Language (UI locale) ui-locale —
Voice voice, media-settings —
Goal / intake copy (DE) onboarding-intake-de Profile fact values remain EN from server
Privacy / delete account settings-privacy Docker/network cleanup verified in adapters unit; PG journey extension
Model connection model-settings, models-managed Offline model banner
Notifications / quiet hours notification-settings —
Messaging messaging-settings —

Account & space deletion

Journey E2E / PG Gaps
Delete account (API) PG journey 11 Team sandbox + data/homes/team-* cleanup added in API (this PR); PG assertion Phase 2
Delete empty space authorization PG —

Empty, error, offline

Journey Coverage Gaps
No model connected model-settings, composer banner —
Server unreachable SessionUnavailable UI E2E
Empty inbox / no bots partial —
Teaching blocks composer Shell copy E2E

Navigation, keyboard, a11y

Journey E2E Gaps
Escape closes mobile drawer first-run-onboarding-ux mobile —
Command palette command-palette —
Mention picker keyboard mention-picker-keyboard —
Collapsible sidebar collapsible-sidebar-sections, mobile-sidebar-swipe Touch target audit (44px)
Focus management on drawer close mobile esc test Broader focus trap review

Integrations & MCP

Journey E2E Gaps
Integration setup integration-setup —
MCP OAuth callback mcp-oauth —
GraphQL integrations graphql-integrations —

Prioritized defect list

Severity: P0 ship blocker · P1 major UX/trust · P2 polish · P3 nice-to-have

Fixed in Phase 1 (this PR)

ID Sev Issue Fix
PR1-1 P1 Reload during onboarding lost look/name/step Session draft via onboarding-draft.ts
PR1-2 P1 DE UI: goal placeholder / discovery “Chief of Staff” English Lingui for discovery; intake DE E2E
PR1-3 P1 Account delete left team sandbox + homes destroySpaceSandboxes on account delete
PR1-4 P1 Chat felt idle while queued / slow send Composer sending+run chrome; queued label; 120s watchdog
PR1-5 P2 Console errors on main journeys journey-console-errors spec

Remaining — Phase 2+

ID Sev Issue Notes
R2-1 P1 Profile fact values (e.g. focus goal text) stored/displayed in English in DE UI Server-side localization or locale-aware fact rendering
R2-2 P1 PG journey: assert filesystem/docker cleanup after account delete Extend journey 11 with fake sandbox + temp data dir
R2-3 P2 Five persona-test console/network errors (root causes) Need symbolicated list from persona run logs
R2-4 P2 390px layout overflow on long German strings Audit Heute, settings, project timeline
R2-5 P2 Touch targets <44px in dense sidebar rows Measure sidebar-unterhaltungen rows
R2-6 P2 Deep link every route while signed out/in Table-driven Playwright matrix
R2-7 P2 Offline / model-not-connected on mobile web No E2E
R2-8 P3 Mobile native parity for onboarding reload Expo secure store draft
R2-9 P3 Intake card English questions in non-EN tests Extend locale matrix beyond DE
R2-10 P3 NPS/SUS follow-ups from persona round 2 Product research, not CI

CI gates (Product)

Lint · Typecheck · Unit · Postgres journeys · Production builds · Web E2E (Playwright). Desktop Electron E2E runs in CI virtual display only.

How to extend this doc

When adding a journey spec, update the table row and move defects from Remaining to Fixed with PR link. Keep user-visible copy quoted in PR descriptions when introducing new strings.