Save home UX audit doc.

This commit is contained in:
b1rdmania
2025-12-20 14:08:53 +00:00
parent 90b3450aa9
commit 3993b26b9a
+92
View File
@@ -0,0 +1,92 @@
# 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.