chore: complete v1.6 milestone
Archived: - milestones/v1.6-ROADMAP.md - milestones/v1.6-REQUIREMENTS.md Deleted (fresh for next milestone): - ROADMAP.md - REQUIREMENTS.md Updated: - MILESTONES.md (new entry) - PROJECT.md (requirements → Validated) - STATE.md (reset for next milestone) v1.6 Media Features Polish shipped: - JamTrack loading sequence, sizing, navigation fixed - Backing track sync to session screen - Prevent multiple media players simultaneously - 2 phases, 5 plans, 7 days Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
51f7cb105a
commit
4c4ee9253b
|
|
@ -1,5 +1,32 @@
|
|||
# Project Milestones: JamKazam Media Features Modernization
|
||||
|
||||
## v1.6 Media Features Polish (Shipped: 2026-03-03)
|
||||
|
||||
**Delivered:** Fixed JamTrack loading sequence, window sizing, and navigation; enabled backing track sync to session screen; prevented opening multiple media players simultaneously.
|
||||
|
||||
**Phases completed:** 26-27 (5 plans total)
|
||||
|
||||
**Key accomplishments:**
|
||||
- Fixed JamTrack loading sequence - defer UI until backend processing completes
|
||||
- Fixed JamTrack player window sizing (460x350) without scrollbars
|
||||
- Implemented "Create custom mix" navigation to JamTrack editor in new tab
|
||||
- Added callback cleanup to prevent memory leaks in JamTrack
|
||||
- Backing tracks now sync to session screen when opened
|
||||
- Added async cleanup to prevent unmount state warnings
|
||||
- Prevented opening multiple media players simultaneously
|
||||
|
||||
**Stats:**
|
||||
- 44 files modified
|
||||
- +5,210 / -403 lines of JavaScript/React
|
||||
- 2 phases, 5 plans
|
||||
- 7 days (2026-02-25 → 2026-03-03)
|
||||
|
||||
**Git range:** `eab0b0d19` → `51f7cb105`
|
||||
|
||||
**What's next:** To be determined in next milestone planning
|
||||
|
||||
---
|
||||
|
||||
## v1.5 Fix Session Recording (Shipped: 2026-02-25)
|
||||
|
||||
**Delivered:** Fixed session recording crash and memory leaks, enabling stable recording sessions of 15+ minutes.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Transform session features from the legacy web project into modern React patterns in jam-ui. The features exist in the legacy codebase with jQuery dialogs and polling-based playback monitoring - we're bringing them into the React architecture with proper component structure, hooks, and Redux integration where appropriate.
|
||||
|
||||
**Completed Features (v1.0 - v1.5):**
|
||||
**Completed Features (v1.0 - v1.6):**
|
||||
1. ✅ **Backing Track** - File-based audio playback with player controls
|
||||
2. ✅ **JamTrack** - Collaborative track loading with mixdown selection
|
||||
3. ✅ **Session Chat** - Real-time chat with message history and read/unread tracking
|
||||
|
|
@ -14,9 +14,7 @@ Transform session features from the legacy web project into modern React pattern
|
|||
5. ✅ **Session Settings Tests** - Jest unit tests and Playwright integration tests
|
||||
6. ✅ **Memory Leak Prevention** - Fixed memory leaks causing session screen freezes (shipped 2026-02-10)
|
||||
7. ✅ **Fix Session Recording** - Fixed C++ client crash and memory leaks (shipped 2026-02-25)
|
||||
|
||||
**Current Milestone (v1.6):**
|
||||
8. 🔧 **Media Features Polish** - Fix Metronome UI, Backing Track sync, JamTrack loading sequence
|
||||
8. ✅ **Media Features Polish** - Fixed JamTrack loading, Backing Track sync, multiple media prevention (shipped 2026-03-03)
|
||||
|
||||
**Future Work:**
|
||||
- Additional recording controls (track selection, playback, management)
|
||||
|
|
@ -25,6 +23,15 @@ Transform session features from the legacy web project into modern React pattern
|
|||
|
||||
### Current State
|
||||
|
||||
**v1.6 Media Features Polish (SHIPPED 2026-03-03):**
|
||||
- ✅ JamTrack loading sequence fixed (defer UI until backend ready)
|
||||
- ✅ JamTrack player window sizing (460x350) without scrollbars
|
||||
- ✅ "Create custom mix" navigation to JamTrack editor
|
||||
- ✅ JamTrack callback cleanup (memory leak prevention)
|
||||
- ✅ Backing track sync to session screen via Redux
|
||||
- ✅ Async cleanup pattern for unmount state warnings
|
||||
- ✅ Prevent opening multiple media players simultaneously
|
||||
|
||||
**v1.5 Fix Session Recording (SHIPPED 2026-02-25):**
|
||||
- ✅ Fixed C++ client crash on Start Recording (JSON parsing fix)
|
||||
- ✅ Timer cleanup for recording hook (waitingOnStopTimer)
|
||||
|
|
@ -97,6 +104,15 @@ Transform session features from the legacy web project into modern React pattern
|
|||
- ✓ Conditional callback cleanup — v1.5
|
||||
- ✓ 15+ minute recording stability — v1.5
|
||||
|
||||
**Media Features Polish:**
|
||||
- ✓ JamTrack defer UI until backend ready — v1.6
|
||||
- ✓ JamTrack window sizing (460x350) — v1.6
|
||||
- ✓ JamTrack "Create custom mix" navigation — v1.6
|
||||
- ✓ JamTrack callback cleanup — v1.6
|
||||
- ✓ Backing track sync to session screen — v1.6
|
||||
- ✓ Async cleanup for unmount warnings — v1.6
|
||||
- ✓ Prevent multiple media players — v1.6
|
||||
|
||||
### Out of Scope
|
||||
|
||||
- **Additional recording controls** - Track selection, playback, management deferred
|
||||
|
|
@ -118,6 +134,10 @@ Transform session features from the legacy web project into modern React pattern
|
|||
| Both test types | Jest for unit tests, Playwright for integration | Confirmed (v1.3) |
|
||||
| Conditional callback cleanup | Multiple hook instances share window.JK callbacks | Validated (v1.5) |
|
||||
| Ignore flag pattern | Prevents state updates on unmounted components | Validated (v1.5) |
|
||||
| Defer JamTrack UI until synchronized | Prevents empty controls showing before backend ready | Validated (v1.6) |
|
||||
| WindowPortal sizing 460x350 | Matches content dimensions plus padding for JamTrack | Validated (v1.6) |
|
||||
| openBackingTrack action for sync | Centralized Redux + server sync for backing tracks | Validated (v1.6) |
|
||||
| Prevent multiple media players | Only one media type (JamTrack/BackingTrack/Metronome) at a time | Validated (v1.6) |
|
||||
|
||||
## Constraints
|
||||
|
||||
|
|
@ -147,4 +167,4 @@ Transform session features from the legacy web project into modern React pattern
|
|||
- `jam-ui/src/store/features/mixersSlice.js` - Mixer state with removeVuState
|
||||
|
||||
---
|
||||
*Last updated: 2026-02-25 after v1.5 Fix Session Recording milestone shipped*
|
||||
*Last updated: 2026-03-03 after v1.6 Media Features Polish milestone shipped*
|
||||
|
|
|
|||
|
|
@ -1,61 +0,0 @@
|
|||
# Roadmap: JamKazam Media Features Modernization
|
||||
|
||||
## Milestones
|
||||
|
||||
- v1.0 Media Players (Phases 1-4) - SHIPPED 2026-01-14
|
||||
- v1.1 Music Session Chat (Phases 5-10) - SHIPPED 2026-01-27
|
||||
- v1.2 Session Attachments (Phases 11-14) - SHIPPED 2026-02-07
|
||||
- v1.3 Session Settings Tests (Phases 15-17) - SHIPPED 2026-02-08
|
||||
- v1.4 Memory Leak Prevention (Phases 18-22) - SHIPPED 2026-02-10
|
||||
- v1.5 Fix Session Recording (Phases 23-25) - SHIPPED 2026-02-25
|
||||
- **v1.6 Media Features Polish** (Phases 26-27) - IN PROGRESS
|
||||
|
||||
## Overview
|
||||
|
||||
v1.6 addresses 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.
|
||||
|
||||
## Phases
|
||||
|
||||
- [x] **Phase 26: JamTrack Polish** - Fix loading sequence, sizing, navigation, and cleanup ✓
|
||||
- [x] **Phase 27: Backing Track Sync** - Enable track sync and async cleanup ✓
|
||||
|
||||
## Phase Details
|
||||
|
||||
### 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) ✓
|
||||
|
||||
### 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 ✓
|
||||
|
||||
## Progress
|
||||
|
||||
| Phase | Milestone | Plans Complete | Status | Completed |
|
||||
|-------|-----------|----------------|--------|-----------|
|
||||
| 26. JamTrack Polish | v1.6 | 4/4 | Complete | 2026-02-25 |
|
||||
| 27. Backing Track Sync | v1.6 | 1/1 | Complete | 2026-02-26 |
|
||||
|
||||
---
|
||||
*v1.6 roadmap created 2026-02-25, updated 2026-03-03 (Phase 28 descoped)*
|
||||
|
|
@ -2,30 +2,30 @@
|
|||
|
||||
## Project Reference
|
||||
|
||||
See: .planning/PROJECT.md (updated 2026-02-25)
|
||||
See: .planning/PROJECT.md (updated 2026-03-03)
|
||||
|
||||
**Core value:** Modernize session features from legacy jQuery/Rails to React patterns
|
||||
**Current focus:** v1.6 Media Features Polish - Phase 27 Backing Track Sync
|
||||
**Current focus:** v1.6 complete — ready for next milestone planning
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 27 of 28 (Backing Track Sync)
|
||||
Plan: 1 of 1 in current phase (complete)
|
||||
Status: Phase complete
|
||||
Last activity: 2026-02-26 - Completed 27-01-PLAN.md
|
||||
Phase: 27 of 27 (v1.6 complete)
|
||||
Plan: All plans complete
|
||||
Status: Milestone shipped
|
||||
Last activity: 2026-03-03 — v1.6 Media Features Polish shipped
|
||||
|
||||
Progress: [████░░░░░░] 40%
|
||||
Progress: [██████████] 100%
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
**v1.0 - v1.5 Summary:**
|
||||
- Total milestones shipped: 6
|
||||
- Total phases completed: 25
|
||||
- Total plans completed: 44
|
||||
**v1.0 - v1.6 Summary:**
|
||||
- Total milestones shipped: 7
|
||||
- Total phases completed: 27
|
||||
- Total plans completed: 49
|
||||
|
||||
**v1.6 Media Features Polish (In Progress):**
|
||||
- Phases: 3 (phases 26-28)
|
||||
- Requirements: 8
|
||||
**v1.6 Media Features Polish (SHIPPED 2026-03-03):**
|
||||
- Phases: 2 (phases 26-27)
|
||||
- Requirements: 6 shipped, 2 descoped
|
||||
- Plans completed: 5 (26-01, 26-02, 26-03, 26-04, 27-01)
|
||||
|
||||
## Accumulated Context
|
||||
|
|
@ -35,16 +35,11 @@ Progress: [████░░░░░░] 40%
|
|||
See PROJECT.md Key Decisions table for full history.
|
||||
|
||||
Recent decisions (v1.6):
|
||||
- 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
|
||||
- Defer JamTrack UI until synchronized (prevents empty controls)
|
||||
- WindowPortal sizing 460x350 (matches content plus padding)
|
||||
- openBackingTrack action for centralized Redux + server sync
|
||||
- Prevent multiple media players (one at a time)
|
||||
- Descope Metronome debounce (responsiveness satisfactory)
|
||||
|
||||
### Deferred Issues
|
||||
|
||||
|
|
@ -64,14 +59,13 @@ Recent decisions (v1.6):
|
|||
- **v1.3 Session Settings Tests** (Phases 17-18): Shipped 2026-02-08
|
||||
- **v1.4 Memory Leak Prevention** (Phases 19-23): Shipped 2026-02-10
|
||||
- **v1.5 Fix Session Recording** (Phases 24-25): Shipped 2026-02-25
|
||||
- **v1.6 Media Features Polish** (Phases 26-28): In Progress
|
||||
- **v1.6 Media Features Polish** (Phases 26-27): Shipped 2026-03-03
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-02-26
|
||||
Stopped at: Completed 27-01-PLAN.md (Phase 27 complete)
|
||||
Last session: 2026-03-03
|
||||
Stopped at: v1.6 milestone complete
|
||||
Resume file: None
|
||||
|
||||
**Next steps:**
|
||||
1. `/gsd:verify-work 27` for manual UAT (recommended)
|
||||
2. `/gsd:plan-phase 28` to plan next phase (if applicable)
|
||||
1. `/gsd:new-milestone` — start next milestone (questioning → research → requirements → roadmap)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,17 @@
|
|||
# Requirements: v1.6 Media Features Polish
|
||||
# Requirements Archive: v1.6 Media Features Polish
|
||||
|
||||
**Defined:** 2026-02-25
|
||||
**Core Value:** Fix usability issues in Backing Track and JamTrack features
|
||||
**Archived:** 2026-03-03
|
||||
**Status:** ✅ SHIPPED
|
||||
|
||||
This is the archived requirements specification for v1.6.
|
||||
For current requirements, see `.planning/REQUIREMENTS.md` (created for next milestone).
|
||||
|
||||
---
|
||||
|
||||
## v1.6 Requirements
|
||||
|
||||
Requirements for polishing media player features. Each maps to roadmap phases.
|
||||
**Defined:** 2026-02-25
|
||||
**Core Value:** Fix usability issues in Backing Track and JamTrack features
|
||||
|
||||
### JamTrack Fixes
|
||||
|
||||
|
|
@ -29,8 +35,6 @@ Requirements for polishing media player features. Each maps to roadmap phases.
|
|||
|
||||
## Out of Scope
|
||||
|
||||
Explicitly excluded for this milestone.
|
||||
|
||||
| Feature | Reason |
|
||||
|---------|--------|
|
||||
| Hide "about:blank" URL bar | Browser security constraint, cannot be changed |
|
||||
|
|
@ -50,4 +54,12 @@ Explicitly excluded for this milestone.
|
|||
| BT-02 | Phase 27 | Complete |
|
||||
|
||||
---
|
||||
*v1.6 requirements defined 2026-02-25, updated 2026-03-03 (Metronome fixes descoped)*
|
||||
|
||||
## Milestone Summary
|
||||
|
||||
**Shipped:** 6 of 6 v1.6 requirements (100%)
|
||||
**Adjusted:** None
|
||||
**Dropped:** MET-01, MET-02 (Metronome debounce) — descoped as responsiveness was satisfactory
|
||||
|
||||
---
|
||||
*Archived: 2026-03-03 as part of v1.6 milestone completion*
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
# 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*
|
||||
Loading…
Reference in New Issue