93 lines
3.7 KiB
Markdown
93 lines
3.7 KiB
Markdown
# 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 (what’s making it feel uninspiring/confusing)
|
||
- **Unclear hierarchy**: “Search”, “Preview”, and “Synthesis Engine” compete; users don’t 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 doesn’t feel like a guided sequence.
|
||
- **Controls feel detached from state**: Buttons don’t always read as “locked until selection”; the reason for disabled state isn’t 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 step’s 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 (320–430px)
|
||
- long titles wrapping
|
||
|
||
## Non-goals
|
||
- No changes to the core synthesis engine behavior or backend.
|
||
- No copywriting/wording changes in this pass.
|
||
|