Files
motif/docs/home-ux-audit.md
T
2025-12-20 14:08:53 +00:00

93 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Home UX audit + improvements (arcade-first)
This doc is a saved copy of the current home UX audit plan (no code changes).
## Current UX issues (whats making it feel uninspiring/confusing)
- **Unclear hierarchy**: “Search”, “Preview”, and “Synthesis Engine” compete; users dont instantly see the main thing to do.
- **Weak step-by-step guidance**: The app is a 3-step flow (Search → Select → Run engine), but the UI doesnt feel like a guided sequence.
- **Controls feel detached from state**: Buttons dont always read as “locked until selection”; the reason for disabled state isnt visible.
- **Results table is dense** on mobile: long titles wrap unpredictably, selection highlight is subtle.
- **Copy and concept drift**: “emulator/engine” and “MIDI scrape/analyse” copy varies; the story should be consistent and confident.
- **iOS audio state**: The “Enable Audio” banner is reactive but not integrated into the flow (and can appear “random”).
## Target outcome
Arcade cabinet vibe with a clear, dramatic main CTA:
- **Primary action**: “Run the engine” (Generate & Play)
- Secondary: preview the MIDI
- Stronger “insert coin” style guidance: show step chips and a big engine panel.
## Proposed UX changes (high impact, low risk)
### 1) Make the flow explicit
Update `index.html`:
- Add a compact “Steps” row near the top:
- Step 1: Search
- Step 2: Pick a MIDI
- Step 3: Run the engine
- Tie each steps visual state to app state:
- Step 2/3 show “locked” styling until available.
### 2) Promote “Synthesis Engine” as the hero module
- Move the engine card visually above Preview (or keep order but make engine card visually dominant).
- Make engine CTA bigger and more arcade:
- Primary button: **Run the engine**
- Secondary: Stop
- Volume + progress remain but visually subordinate.
- Add a small one-line “what this does” under the button, not as a paragraph.
### 3) Preview becomes clearly “optional”
- Rename to “Listen to the source MIDI (optional)”
- Collapse preview by default on mobile (or add a “Show preview” toggle) to reduce overwhelm.
### 4) Results list readability + selection confidence
- Increase row tap targets and selection contrast.
- Add a right-side “Selected” chip on the selected row.
- On mobile:
- clamp long titles to 2 lines
- reduce columns (hide Source or Duration) based on width.
### 5) iOS audio UX integrated into the engine (subtle)
- Only on iOS-like browsers and only when audio is locked.
- Show a small under-section link: “Having trouble on iOS? Enable audio”
- Clicking expands a compact CTA row (Enable Audio button + tiny state line).
- Avoid a big persistent banner that could confuse non-iOS users.
### 6) Copy pass
Deferred for now: keep copy changes out of this pass.
## Implementation plan (concrete)
### Files
- Primary: `index.html`
- Minor TS adjustments (state-driven CSS classes): `src/main.ts`
### Approach
- Add a small set of **state CSS classes** on `body` (or on `.container`):
- `state-has-results`
- `state-has-selection`
- `state-audio-locked`
- In `src/main.ts`, toggle these classes when:
- results are loaded
- a selection is made
- audio unlock state changes
- Use CSS to:
- style locked sections
- highlight the engine CTA
- improve mobile responsiveness
## Test plan
- Desktop Chrome/Safari:
- search → select → engine run
- preview optional still works
- iOS Safari:
- first run shows “arm audio” only when needed
- no random banner when audio is already running
- Visual:
- mobile widths (320430px)
- long titles wrapping
## Non-goals
- No changes to the core synthesis engine behavior or backend.
- No copywriting/wording changes in this pass.