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
|
# 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)
|
## v1.5 Fix Session Recording (Shipped: 2026-02-25)
|
||||||
|
|
||||||
**Delivered:** Fixed session recording crash and memory leaks, enabling stable recording sessions of 15+ minutes.
|
**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.
|
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
|
1. ✅ **Backing Track** - File-based audio playback with player controls
|
||||||
2. ✅ **JamTrack** - Collaborative track loading with mixdown selection
|
2. ✅ **JamTrack** - Collaborative track loading with mixdown selection
|
||||||
3. ✅ **Session Chat** - Real-time chat with message history and read/unread tracking
|
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
|
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)
|
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)
|
7. ✅ **Fix Session Recording** - Fixed C++ client crash and memory leaks (shipped 2026-02-25)
|
||||||
|
8. ✅ **Media Features Polish** - Fixed JamTrack loading, Backing Track sync, multiple media prevention (shipped 2026-03-03)
|
||||||
**Current Milestone (v1.6):**
|
|
||||||
8. 🔧 **Media Features Polish** - Fix Metronome UI, Backing Track sync, JamTrack loading sequence
|
|
||||||
|
|
||||||
**Future Work:**
|
**Future Work:**
|
||||||
- Additional recording controls (track selection, playback, management)
|
- 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
|
### 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):**
|
**v1.5 Fix Session Recording (SHIPPED 2026-02-25):**
|
||||||
- ✅ Fixed C++ client crash on Start Recording (JSON parsing fix)
|
- ✅ Fixed C++ client crash on Start Recording (JSON parsing fix)
|
||||||
- ✅ Timer cleanup for recording hook (waitingOnStopTimer)
|
- ✅ 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
|
- ✓ Conditional callback cleanup — v1.5
|
||||||
- ✓ 15+ minute recording stability — 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
|
### Out of Scope
|
||||||
|
|
||||||
- **Additional recording controls** - Track selection, playback, management deferred
|
- **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) |
|
| 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) |
|
| 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) |
|
| 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
|
## 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
|
- `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
|
## 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
|
**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
|
## Current Position
|
||||||
|
|
||||||
Phase: 27 of 28 (Backing Track Sync)
|
Phase: 27 of 27 (v1.6 complete)
|
||||||
Plan: 1 of 1 in current phase (complete)
|
Plan: All plans complete
|
||||||
Status: Phase complete
|
Status: Milestone shipped
|
||||||
Last activity: 2026-02-26 - Completed 27-01-PLAN.md
|
Last activity: 2026-03-03 — v1.6 Media Features Polish shipped
|
||||||
|
|
||||||
Progress: [████░░░░░░] 40%
|
Progress: [██████████] 100%
|
||||||
|
|
||||||
## Performance Metrics
|
## Performance Metrics
|
||||||
|
|
||||||
**v1.0 - v1.5 Summary:**
|
**v1.0 - v1.6 Summary:**
|
||||||
- Total milestones shipped: 6
|
- Total milestones shipped: 7
|
||||||
- Total phases completed: 25
|
- Total phases completed: 27
|
||||||
- Total plans completed: 44
|
- Total plans completed: 49
|
||||||
|
|
||||||
**v1.6 Media Features Polish (In Progress):**
|
**v1.6 Media Features Polish (SHIPPED 2026-03-03):**
|
||||||
- Phases: 3 (phases 26-28)
|
- Phases: 2 (phases 26-27)
|
||||||
- Requirements: 8
|
- Requirements: 6 shipped, 2 descoped
|
||||||
- Plans completed: 5 (26-01, 26-02, 26-03, 26-04, 27-01)
|
- Plans completed: 5 (26-01, 26-02, 26-03, 26-04, 27-01)
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
@ -35,16 +35,11 @@ Progress: [████░░░░░░] 40%
|
||||||
See PROJECT.md Key Decisions table for full history.
|
See PROJECT.md Key Decisions table for full history.
|
||||||
|
|
||||||
Recent decisions (v1.6):
|
Recent decisions (v1.6):
|
||||||
- Keep WindowPortal for Metronome (consistency with JamTrack, BackingTrack, Chat)
|
- Defer JamTrack UI until synchronized (prevents empty controls)
|
||||||
- 300ms debounce for responsive UI while avoiding excessive native client calls
|
- WindowPortal sizing 460x350 (matches content plus padding)
|
||||||
- WindowPortal sizing should match content dimensions plus padding (420px + 40px = 460px)
|
- openBackingTrack action for centralized Redux + server sync
|
||||||
- Use noopener,noreferrer for security on window.open calls
|
- Prevent multiple media players (one at a time)
|
||||||
- cleanupJamTrackCallbacks is a simple function (not thunk) since it only manipulates window globals
|
- Descope Metronome debounce (responsiveness satisfactory)
|
||||||
- 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
|
|
||||||
|
|
||||||
### Deferred Issues
|
### Deferred Issues
|
||||||
|
|
||||||
|
|
@ -64,14 +59,13 @@ Recent decisions (v1.6):
|
||||||
- **v1.3 Session Settings Tests** (Phases 17-18): Shipped 2026-02-08
|
- **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.4 Memory Leak Prevention** (Phases 19-23): Shipped 2026-02-10
|
||||||
- **v1.5 Fix Session Recording** (Phases 24-25): Shipped 2026-02-25
|
- **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
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-02-26
|
Last session: 2026-03-03
|
||||||
Stopped at: Completed 27-01-PLAN.md (Phase 27 complete)
|
Stopped at: v1.6 milestone complete
|
||||||
Resume file: None
|
Resume file: None
|
||||||
|
|
||||||
**Next steps:**
|
**Next steps:**
|
||||||
1. `/gsd:verify-work 27` for manual UAT (recommended)
|
1. `/gsd:new-milestone` — start next milestone (questioning → research → requirements → roadmap)
|
||||||
2. `/gsd:plan-phase 28` to plan next phase (if applicable)
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,17 @@
|
||||||
# Requirements: v1.6 Media Features Polish
|
# Requirements Archive: v1.6 Media Features Polish
|
||||||
|
|
||||||
**Defined:** 2026-02-25
|
**Archived:** 2026-03-03
|
||||||
**Core Value:** Fix usability issues in Backing Track and JamTrack features
|
**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
|
## 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
|
### JamTrack Fixes
|
||||||
|
|
||||||
|
|
@ -29,8 +35,6 @@ Requirements for polishing media player features. Each maps to roadmap phases.
|
||||||
|
|
||||||
## Out of Scope
|
## Out of Scope
|
||||||
|
|
||||||
Explicitly excluded for this milestone.
|
|
||||||
|
|
||||||
| Feature | Reason |
|
| Feature | Reason |
|
||||||
|---------|--------|
|
|---------|--------|
|
||||||
| Hide "about:blank" URL bar | Browser security constraint, cannot be changed |
|
| 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 |
|
| 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