ChatGPT
feat: add spleeter and selected card exports
fa35534
|
Raw
History Blame Contribute Delete
8.96 kB
# Interactive UX tasks
## Status legend
| Status | Meaning |
|---|---|
| `todo` | Not started |
| `doing` | In progress |
| `partial` | Implemented as a useful first version but not complete |
| `done` | Completed for the current architecture |
| `blocked` | Waiting on prerequisite decision/work |
## Phase 0: Documentation and design capture
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-000 | Capture feature requirements | done | Requirements documented in `FEATURE_REQUIREMENTS.md` |
| UX-001 | Capture scope boundaries | done | MVP/V2/backlog documented in `SCOPE.md` |
| UX-002 | Capture feasibility matrix | done | Scores documented in `FEASIBILITY_MATRIX.md` |
| UX-003 | Capture implementation tasks | done | Task backlog documented here |
| UX-004 | Capture progress | done | Progress documented in `PROGRESS.md` |
| UX-005 | Align supplied docs with implemented project | done | All documents updated to reflect current code/API/UI behavior |
## Phase 1: State model and persistence
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-101 | Define persisted job state schema | done | `supervised_state.py` creates `supervision_state.json` with hits, clusters, constraints, events, suggestions, and undo state |
| UX-102 | Add event log | done | User/system changes append events and the event log is stored with job output |
| UX-103 | Add constraint store | done | `must-link`, `cannot-link`, `force-cluster`, `lock-cluster`, `suppress-pattern`, and `pin-representative` are saved |
| UX-104 | Add artifact/cache references | partial | State stores hit audio file refs and manifest fingerprint; feature refs and content-addressed feature cache are not implemented yet |
| UX-105 | Add deterministic replay command | todo | A job can be regenerated from source digest, params, and constraints |
| UX-106 | Add semantic undo stack | done | `POST /api/jobs/{job_id}/undo` restores the previous semantic state snapshot |
## Phase 2: Confidence and review queue
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-201 | Compute hit assignment confidence | partial | Each hit has confidence from cluster confidence, label agreement, energy rank, representative/explicit/suppressed state; feature-vector margin is not implemented |
| UX-202 | Compute cluster confidence | partial | Each cluster has confidence from purity, size, representative, lock state; true feature cohesion/stability is not implemented |
| UX-203 | Add uncertainty ranking | done | Backend returns `review_queue` sorted by priority |
| UX-204 | Add low-confidence UI emphasis | done | Hit rows and review queue emphasize low-confidence and suppressed items |
| UX-205 | Add review quick actions | partial | Accept, favorite, move, pull-out, suppress are available; split/restore/batch actions are still incomplete |
## Phase 3: Constraint-aware editing
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-301 | Move hit to cluster endpoint | done | Moving a hit creates `force-cluster` and usually `must-link` constraints |
| UX-302 | Pull hit into new cluster endpoint | done | Pulling a hit creates a new user cluster plus `cannot-link`/`force-cluster` constraints |
| UX-303 | Lock cluster endpoint | done | Locked cluster state persists and is shown in the UI |
| UX-304 | Local neighborhood recomputation | partial | Semantic state and confidence are recomputed; true cached feature-neighborhood reclustering is not implemented |
| UX-305 | Constraint violation detection | todo | Backend reports attempted changes that violate user constraints |
| UX-306 | Undo last interaction | done | User can reverse the previous semantic edit |
| UX-307 | Suggest similar moves from a hit move | partial | Heuristic suggestions are generated using label, centroid, and energy similarity |
## Phase 4: Missed onset and bleed interactions
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-401 | Add force-onset endpoint | todo | User can add onset by time; hit is sliced/classified/clustered |
| UX-402 | Add waveform click interaction | partial | Existing waveform clicks audition nearest hit; add-onset mode is not implemented |
| UX-403 | Add bleed suppression endpoint | done | User can mark hit as bleed/noise and create a suppress-pattern example |
| UX-404 | Implement similar-false-positive search | partial | Heuristic suppress suggestions are generated from energy/centroid/label similarity |
| UX-405 | Add suppression restore | todo | Suppressed hits can be restored individually or in batches |
## Phase 5: Suggestions and explanations
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-501 | Add suggestion model | done | Suggestions have type, confidence, reason, preview count, status, accept/reject state |
| UX-502 | Generate move suggestions from cluster edits | partial | Basic suggestions generated after move edits |
| UX-503 | Generate split suggestions from cannot-link edits | partial | Basic split suggestions generated after pull-out edits |
| UX-504 | Generate suppression suggestions | partial | Basic suppression suggestions generated after suppress edits |
| UX-505 | Add suggestion inbox UI | done | Suggestions are visible and can be accepted/rejected |
| UX-506 | Add explain-cluster endpoint | done | Backend returns representative, confidence reasons, outliers, constraints, label distribution |
| UX-507 | Add explanation drawer UI | done | UI renders explanation JSON for the selected cluster |
| UX-508 | Add diff previews before suggestion acceptance | todo | Suggestions show exact before/after cluster membership changes before acceptance |
## Phase 6: Counterfactuals and advanced quality features
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-601 | Add parameter diff estimator | todo | UI can preview approximate effect of parameter changes |
| UX-602 | Add cached local parameter recompute | todo | Parameter changes reuse hit features where possible |
| UX-603 | Add reconstruction error map | todo | Backend computes original-vs-reconstruction mismatch by region |
| UX-604 | Add reconstruction correction workflow | todo | User can select bad region and get likely causes/fixes |
| UX-605 | Add multi-resolution cluster hierarchy | todo | Clusters can be browsed coarse-to-fine |
## Phase 7: Preference memory / teach mode
| ID | Task | Status | Acceptance criteria |
|---|---|---|---|
| UX-701 | Persist user correction profiles | todo | Reusable preference profile stores accepted correction patterns |
| UX-702 | Apply profile to new jobs | todo | New jobs can opt into prior preferences |
| UX-703 | Add profile safety controls | todo | User can inspect, disable, delete, and scope learned preferences |
| UX-704 | Evaluate profile impact | todo | Benchmarks compare profile-on vs profile-off results |
## Current recommended next task
Start with `UX-401` plus supervised export.
Reason:
The project now has a replayable state/events/constraints foundation plus supervised edited artifact export. The largest UX gaps are cluster merge/relabel/split, cached feature-neighborhood reclustering, and edited-vs-original comparison.
## Pass 5 completed
- [x] Render semantic edits into `supervised/` artifacts.
- [x] Add force-onset endpoint and waveform add-onset mode.
- [x] Add suppressed-hit restore endpoint and button.
- [x] Add exact suggestion diff previews.
- [x] Add validation script for supervised export and force-onset.
## Next interactive tasks
- [ ] Cluster merge/relabel/split controls.
- [ ] Cached feature-vector local reclustering.
- [ ] Edited-vs-original comparison view.
- [ ] Browser tests for waveform add-onset and edited export.
## Automatic card-flow follow-up tasks
- [x] Auto-start processing after drop/upload.
- [x] Group sample cards by type.
- [x] Add draw-another-candidate interaction.
- [x] Add dismiss-card interaction.
- [x] Add simple trim/extend/save timing interaction.
- [x] Add waveform zoom/pan.
- [ ] Persist drawn candidate cards as representative overrides.
- [ ] Recluster locally after card-level decisions.
- [ ] Add browser-level tests for the card flow.
## Selected cards and separation backends
Completed:
- [x] Add Spleeter backend option.
- [x] Default new jobs to Spleeter `spleeter:4stems` + `drums`.
- [x] Keep Demucs as explicit quality/fallback backend.
- [x] Add `none` backend for full-mix preview.
- [x] Add optional `requirements-spleeter.txt`.
- [x] Add per-card checkbox selection.
- [x] Add selected-only backend export.
- [x] Persist draw-next representative overrides.
- [x] Rewrite preview audio immediately for trim/extend edits.
- [x] Add regression smoke test for selected export/card actions.
Next:
- [ ] Add card-column relabel/merge/split actions.
- [ ] Add browser-level tests for card selection/export/edit flows.
- [ ] Add localized high-quality separation refinement on short candidate windows.