moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
# UX Wave 2 Plan — 2026-07-04
Source audits: `ux-audit-2026-07-04.md` (F1F12) + `ux-audit-2026-07-04-part2.md` (F13F32).
Wave 1 (F1F5, F8F11) shipped in working tree; this wave targets the
trust-critical consistency cluster + part-1 leftovers.
## Clusters
### W2-A — Workspace context stability (F13, P1)
Visiting `/` or `/workspaces` must NEVER silently switch the active workspace.
Find what mutates active-workspace state on those routes (likely a "most recent"
auto-select effect in Home/grid mount) and make selection explicit-only (click).
Breadcrumb/switcher must agree with the workspace the user last chose.
### W2-B — One truth for workspace counts + switcher (F14 partial, P1)
Home "4 workspaces waiting", switcher ~14, grid "All 55", notification "54".
Diagnose each source (endpoint/filter). Likely: grid counts ALL incl. dev-noise
+ archived; home counts a "recent" subset; switcher caps at N without saying so.
Fix: single selector/source-of-truth for workspace counts; switcher gets
current-workspace checkmark + overflow indicator ("14 of 55 — view all").
Card metadata "—" placeholder rows (F21): hide missing metadata instead of "—";
filters that can never match (Virtual/Local/Team all 0 while All=55) either get
real predicates or are removed; drop the "Table — soon" chip.
### W2-C — One truth for the current model (F15, P1)
Top-bar chip `claude-sonnet-4-6` vs Settings Model Pilot "Claude Opus 4.6" vs
raw IDs in New Agent. Diagnose: chip probably shows per-chat model; Model Pilot
shows global default; New Agent lists raw router IDs. Fix: consistent display
names via one formatting util (grep for existing model-name formatter); Model
Pilot fallback must not default to == primary; New Agent model list uses same
labels as everywhere else.
### W2-D — Memory numbers agree (F16, P1)
Timeline "617 entities · 9420 relations" vs Graph tab "No knowledge graph data";
top-bar brain 543 vs Trust "452 memories"; Trust "0 high confidence & fresh"
above rows labeled "fresh". Diagnose each pair: different endpoints? stale
cache? per-workspace vs global scope? Graph-tab emptiness while KG has data is
the highest-value bug (feature looks broken). Fix root causes, not copy.
### W2-E — Onboarding polish batch (F6, P2)
(a) "English (US)" disabled-button pill → plain text badge (or working picker if
one exists); (b) remove duplicate footer "Back" (keep header ← Back);
(c) "help with" chips: default NONE selected (placeholder greeting preview until
≥1 chosen); (d) template picker: rank/badge "Recommended" from who-are-you
role/work-type (pure mapping + test); (e) final step: restore Back + step
counter; (f) final-step suggestion chips filtered to the chosen template.
### W2-F — IA naming + empty states (F7, F12, F19 partial, P2)
Align: sidebar "Agents & tasks" ↔ page "Agent Center" → both "Agents"; sidebar
"Library" ↔ page "Artifacts" → page header "Library" (artifacts remain the
content type); "EVERYTHING ELSE" section label → "Workspace-independent" intent,
pick something plain ("General"). Agent Center sparse state (1 row + honeycomb
void): add template suggestion cards under the row. Files tab empty state gets
an Upload action; Artifacts empty-state "Browse in Library" becomes a real link.
### W2-G — Briefing modal a11y + chat error history parity (F27 + wave-1 residual)
Login-briefing modal: Escape closes; ✕ gets aria-label; "Start Working" disabled
until content ready; drop duplicated greeting (visible identically on Home
behind it). Chat: persisted failed assistant turns ("Generation failed: …")
re-render as ErrorBlock on reload (reuse isAuthShapedError), and the
server-persisted failed pair must not duplicate after a local Retry + reload.
## Deferred to wave 3 (product decisions or heavier)
- F17 Erase-all placement, F18 Never-ask friction (safety UX — quick but opinion-laden)
- F20 marketplace triplicates (needs catalog-merge design)
- F22 dedup, F23 wiki quality floor, F24 weaver explainer
- F25 notifications rework, F26 team invite moment, F28 responsive top bar
- F29 locale, F30 copy nits, F31 tier naming (Solo vs Free), F32 stale drawer/breadcrumb
## Incidental defects from wave-1 QA (2026-07-04, not UX-wave scoped)
- Ollama cloud models fail every send with server error "The database connection
is not open" (reproducible across Retry; ErrorBlock renders it correctly).
Smells like the LiteLLM no-DB bearer-key class of bug — backend triage needed.
- Onboarding template pick that collides with an existing workspace slug 409s
and silently continues INTO the existing workspace — user never learns their
"new" workspace wasn't created. Needs suffixing or a visible choice.
- Transient F2 window: during the auto-sent first task's streaming, the text
briefly also sat in the composer before clearing — an Enter there would
double-send. Cosmetic, final state correct.
- The "The database connection is not open" send failure is provider-agnostic —
it hit an Anthropic retry too, not just Ollama cloud. Intermittent, not
reproducible on demand. Backend triage (the LiteLLM no-DB class, above).
- Probe truth-gap (deeper than the wave-3 copy fix): the model gate verifies a
PROVIDER KEY, not the workspace chat's configured default model. Product
decision whether the gate should probe the actual default model instead.
- Workspace switcher: the active row lacks the "· time ago" disambiguator when
`lastActive` is null, so it can't be told apart from same-named rows.