Spaces:
Sleeping
Sleeping
File size: 8,956 Bytes
03d531b e07820e ab6f318 fa35534 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | # 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.
|