82 lines
3.3 KiB
Markdown
82 lines
3.3 KiB
Markdown
# Milestone v1.6: Media Features Polish
|
|
|
|
**Status:** ✅ SHIPPED 2026-03-03
|
|
**Phases:** 26-27
|
|
**Total Plans:** 5
|
|
|
|
## Overview
|
|
|
|
v1.6 addressed usability issues in JamTrack (loading sequence bug, sizing, navigation) and Backing Track (sync integration). Metronome responsiveness was determined to be satisfactory after phases 26-27 improvements and was descoped.
|
|
|
|
## Phases
|
|
|
|
### Phase 26: JamTrack Polish
|
|
**Goal**: JamTrack player works correctly from selection through playback without freezes
|
|
**Depends on**: v1.5 complete
|
|
**Requirements**: JT-01, JT-02, JT-03, JT-04
|
|
**Success Criteria** (what must be TRUE):
|
|
1. User sees loading indicator while backend processes track (not premature stem UI)
|
|
2. JamTrack player fits properly in popup window without scrollbars
|
|
3. "Create custom mix" button opens JamTrack editor in new tab
|
|
4. No console warnings about leaked callbacks when closing JamTrack or navigating away
|
|
**Plans**: 4 plans
|
|
|
|
Plans:
|
|
- [x] 26-01-PLAN.md - Fix window sizing and create custom mix navigation ✓
|
|
- [x] 26-02-PLAN.md - Add callback cleanup and defer controls rendering ✓
|
|
- [x] 26-03-PLAN.md - Remove 'idle' from valid render states (gap closure) ✓
|
|
- [x] 26-04-PLAN.md - Trigger loadJamTrack when not synchronized (gap closure) ✓
|
|
|
|
**Completed:** 2026-02-25
|
|
|
|
### Phase 27: Backing Track Sync
|
|
**Goal**: Backing Track appears in session screen when opened
|
|
**Depends on**: Nothing (independent of Phase 26)
|
|
**Requirements**: BT-01, BT-02
|
|
**Success Criteria** (what must be TRUE):
|
|
1. Opening a backing track file shows the track in session screen (not just popup)
|
|
2. No "state update on unmounted component" warnings when closing backing track quickly
|
|
**Plans**: 1 plan
|
|
|
|
Plans:
|
|
- [x] 27-01-PLAN.md - Use openBackingTrack action and add async cleanup ✓
|
|
|
|
**Completed:** 2026-02-26
|
|
|
|
---
|
|
|
|
## Milestone Summary
|
|
|
|
**Descoped Phases:**
|
|
- Phase 28: Metronome Responsiveness — descoped as responsiveness was satisfactory after Phase 26-27 improvements
|
|
|
|
**Key Decisions:**
|
|
- Keep WindowPortal for Metronome (consistency with JamTrack, BackingTrack, Chat)
|
|
- 300ms debounce for responsive UI while avoiding excessive native client calls
|
|
- WindowPortal sizing should match content dimensions plus padding (420px + 40px = 460px)
|
|
- Use noopener,noreferrer for security on window.open calls
|
|
- cleanupJamTrackCallbacks is a simple function (not thunk) since it only manipulates window globals
|
|
- Controls render when downloadState is 'synchronized' only (removed 'idle' from conditions)
|
|
- Call checkJamTrackSync BEFORE dispatching setSelectedJamTrack/setJamTrackStems
|
|
- Call loadJamTrack when syncResult.isSynchronized is false to trigger download flow
|
|
- Use openBackingTrack action instead of direct jamClient call for centralized sync
|
|
- Use ignore flag pattern (not AbortController) for simple async cleanup
|
|
|
|
**Issues Resolved:**
|
|
- JamTrack player showed empty controls before backend processing complete
|
|
- JamTrack player window had scrollbars due to incorrect sizing
|
|
- "Create custom mix" button did nothing
|
|
- Memory leaks from unreleased JamTrack callbacks
|
|
- Backing track didn't appear in session screen (only popup)
|
|
- State update warnings when closing backing track quickly
|
|
|
|
**Issues Deferred:**
|
|
- Metronome debounce (MET-01, MET-02) — responsiveness satisfactory
|
|
|
|
**Technical Debt Incurred:**
|
|
- None identified
|
|
|
|
---
|
|
*For current project status, see .planning/ROADMAP.md*
|
|
*Archived: 2026-03-03*
|