From 5fbb51158f5dd4e5d5b5d5e17524d894e5b7d061 Mon Sep 17 00:00:00 2001 From: Nuwan Date: Sun, 8 Feb 2026 13:57:58 +0530 Subject: [PATCH] docs: create milestone v1.4 roadmap (5 phases) Phases: 19. Audit and Discovery: investigate all areas, identify leaks 20. VU Meter Fixes: VUMTR-01, VUMTR-02, VUMTR-03 21. Chat Window Fixes: CHAT-01, CHAT-02, CHAT-03 22. Session Screen Fixes: SESS-01, SESS-02, SESS-03 23. Verification: VRFY-01, VRFY-02 All 11 milestone requirements mapped to phases. --- .planning/REQUIREMENTS.md | 35 ++++++---- .planning/ROADMAP.md | 137 ++++++++++++++++++++++++++++++++++---- .planning/STATE.md | 34 +++++----- 3 files changed, 163 insertions(+), 43 deletions(-) diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 4ea5b2871..25463155b 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -43,23 +43,30 @@ Requirements for fixing memory leaks in the session screen. Focus on cleanup pat | Requirement | Phase | Status | |-------------|-------|--------| -| VUMTR-01 | TBD | Pending | -| VUMTR-02 | TBD | Pending | -| VUMTR-03 | TBD | Pending | -| CHAT-01 | TBD | Pending | -| CHAT-02 | TBD | Pending | -| CHAT-03 | TBD | Pending | -| SESS-01 | TBD | Pending | -| SESS-02 | TBD | Pending | -| SESS-03 | TBD | Pending | -| VRFY-01 | TBD | Pending | -| VRFY-02 | TBD | Pending | +| VUMTR-01 | Phase 20 | Pending | +| VUMTR-02 | Phase 20 | Pending | +| VUMTR-03 | Phase 20 | Pending | +| CHAT-01 | Phase 21 | Pending | +| CHAT-02 | Phase 21 | Pending | +| CHAT-03 | Phase 21 | Pending | +| SESS-01 | Phase 22 | Pending | +| SESS-02 | Phase 22 | Pending | +| SESS-03 | Phase 22 | Pending | +| VRFY-01 | Phase 23 | Pending | +| VRFY-02 | Phase 23 | Pending | **Coverage:** - v1.4 requirements: 11 total -- Mapped to phases: 0 -- Unmapped: 11 +- Mapped to phases: 11 +- Unmapped: 0 + +**Phase Summary:** +- Phase 19 (Audit and Discovery): 0 requirements (discovery phase - informs subsequent phases) +- Phase 20 (VU Meter Fixes): 3 requirements (VUMTR-01, VUMTR-02, VUMTR-03) +- Phase 21 (Chat Window Fixes): 3 requirements (CHAT-01, CHAT-02, CHAT-03) +- Phase 22 (Session Screen Fixes): 3 requirements (SESS-01, SESS-02, SESS-03) +- Phase 23 (Verification): 2 requirements (VRFY-01, VRFY-02) --- *Requirements defined: 2026-02-08* -*Last updated: 2026-02-08 after initial definition* +*Last updated: 2026-02-08 after roadmap creation* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 7b1c7fd0c..b962526c7 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -10,10 +10,11 @@ None ## Milestones -- ✅ **v1.0 Media Players** - Phases 1-5 (shipped 2026-01-14) -- ✅ **v1.1 Music Session Chat** - Phases 6-11 (shipped 2026-01-31) -- ✅ **v1.2 Session Attachments** - Phases 12-16 (shipped 2026-02-07) -- ✅ **v1.3 Session Settings Tests** - Phases 17-18 (shipped 2026-02-08) +- v1.0 Media Players - Phases 1-5 (shipped 2026-01-14) +- v1.1 Music Session Chat - Phases 6-11 (shipped 2026-01-31) +- v1.2 Session Attachments - Phases 12-16 (shipped 2026-02-07) +- v1.3 Session Settings Tests - Phases 17-18 (shipped 2026-02-08) +- **v1.4 Memory Leak Prevention** - Phases 19-23 (in progress) ## Phases @@ -23,7 +24,7 @@ None Decimal phases appear between their surrounding integers in numeric order. -### ✅ v1.0 Media Players (Phases 1-5) - SHIPPED 2026-01-14 +### v1.0 Media Players (Phases 1-5) - SHIPPED 2026-01-14
Show completed phases @@ -36,7 +37,7 @@ Decimal phases appear between their surrounding integers in numeric order.
-### ✅ v1.1 Music Session Chat (Phases 6-11) - SHIPPED 2026-01-31 +### v1.1 Music Session Chat (Phases 6-11) - SHIPPED 2026-01-31
Show completed phases @@ -52,7 +53,7 @@ Decimal phases appear between their surrounding integers in numeric order.
-### ✅ v1.2 Session Attachments (Phases 12-16) - SHIPPED 2026-02-07 +### v1.2 Session Attachments (Phases 12-16) - SHIPPED 2026-02-07
Show completed phases @@ -67,16 +68,31 @@ Decimal phases appear between their surrounding integers in numeric order.
-### ✅ v1.3 Session Settings Tests (Phases 17-18) - SHIPPED 2026-02-08 +### v1.3 Session Settings Tests (Phases 17-18) - SHIPPED 2026-02-08 + +
+Show completed phases **Milestone Goal:** Add test coverage for the Session Settings modal component (JKSessionSettingsModal) to enable confident changes. - [x] **Phase 17: Unit Tests (Jest)** - Component rendering, save payload, loading state - [x] **Phase 18: Integration Tests (Playwright)** - Settings button, save API call, cancel behavior +
+ +### v1.4 Memory Leak Prevention (Phases 19-23) - IN PROGRESS + +**Milestone Goal:** Fix memory leaks causing session screen freezes after ~10 minutes. Audit and fix cleanup patterns in VU meters, chat window, and session screen components. + +- [ ] **Phase 19: Audit and Discovery** - Investigate all three areas, identify actual memory leaks with evidence +- [ ] **Phase 20: VU Meter Fixes** - Fix identified VU meter interval/animation cleanup issues +- [ ] **Phase 21: Chat Window Fixes** - Fix identified chat WebSocket listener and state cleanup issues +- [ ] **Phase 22: Session Screen Fixes** - Fix identified session screen useEffect and polling cleanup issues +- [ ] **Phase 23: Verification** - Validate session stability after fixes + ## Phase Details -### ✅ v1.0 Media Players - SHIPPED 2026-01-14 +### v1.0 Media Players - SHIPPED 2026-01-14
Show completed phase details @@ -136,7 +152,7 @@ Plans:
-### ✅ v1.1 Music Session Chat (Phases 6-11) - SHIPPED 2026-01-31 +### v1.1 Music Session Chat (Phases 6-11) - SHIPPED 2026-01-31
Show completed phase details @@ -207,7 +223,7 @@ Plans:
-### ✅ v1.2 Session Attachments (Phases 12-16) - SHIPPED 2026-02-07 +### v1.2 Session Attachments (Phases 12-16) - SHIPPED 2026-02-07
Show completed phase details @@ -319,7 +335,7 @@ Plans:
-### ✅ v1.3 Session Settings Tests (Phases 17-18) - SHIPPED 2026-02-08 +### v1.3 Session Settings Tests (Phases 17-18) - SHIPPED 2026-02-08
Show completed phase details @@ -362,10 +378,100 @@ Plans:
+### v1.4 Memory Leak Prevention (Phases 19-23) - IN PROGRESS + +**Milestone Goal:** Fix memory leaks causing session screen freezes after ~10 minutes. Audit and fix cleanup patterns in VU meters, chat window, and session screen components. + +#### Phase 19: Audit and Discovery +**Goal**: Investigate all three areas (VU meters, chat, session screen) and identify actual memory leaks with evidence +**Depends on**: Phase 18 (previous milestone complete) +**Research**: Likely (code audit to identify actual leak sources) +**Requirements**: None (discovery phase - informs subsequent phases) +**Plans**: TBD (1-2 plans expected) + +**Success Criteria:** +1. VU meter components audited - all setInterval, setTimeout, and requestAnimationFrame calls documented +2. Chat window components audited - all WebSocket listeners and state growth patterns documented +3. Session screen components audited - all useEffect hooks and cleanup functions documented +4. Leak sources identified with evidence (missing cleanup, unbounded growth, etc.) +5. Priority ranking of fixes based on severity (which leaks cause the 10-minute freeze) + +Plans: +- [ ] 19-01: TBD + +#### Phase 20: VU Meter Fixes +**Goal**: Fix identified VU meter interval/animation cleanup issues +**Depends on**: Phase 19 +**Research**: Unlikely (fixing issues identified in Phase 19) +**Requirements**: VUMTR-01, VUMTR-02, VUMTR-03 +**Plans**: TBD (1-2 plans expected) + +**Success Criteria:** +1. All setInterval calls in VU meter components have corresponding clearInterval in cleanup +2. All requestAnimationFrame calls have corresponding cancelAnimationFrame in cleanup +3. VU meter animations stop completely when component is hidden or unmounted +4. No orphaned intervals or animation frames accumulate over time +5. VU meters can be shown/hidden repeatedly without memory growth + +Plans: +- [ ] 20-01: TBD + +#### Phase 21: Chat Window Fixes +**Goal**: Fix identified chat WebSocket listener and state cleanup issues +**Depends on**: Phase 19 +**Research**: Unlikely (fixing issues identified in Phase 19) +**Requirements**: CHAT-01, CHAT-02, CHAT-03 +**Plans**: TBD (1-2 plans expected) + +**Success Criteria:** +1. WebSocket listeners are properly removed when chat window closes +2. Message list has bounded growth (e.g., max messages, pagination, or virtualization) +3. Chat window can be opened/closed repeatedly without memory growth +4. No duplicate WebSocket listeners accumulate over time +5. Redux state cleanup happens when session ends or user leaves + +Plans: +- [ ] 21-01: TBD + +#### Phase 22: Session Screen Fixes +**Goal**: Fix identified session screen useEffect and polling cleanup issues +**Depends on**: Phase 19 +**Research**: Unlikely (fixing issues identified in Phase 19) +**Requirements**: SESS-01, SESS-02, SESS-03 +**Plans**: TBD (1-2 plans expected) + +**Success Criteria:** +1. All useEffect hooks that set up subscriptions/intervals have cleanup return functions +2. All polling intervals are cleared on component unmount +3. All event listeners have corresponding removal on cleanup +4. Session screen can be mounted/unmounted without memory growth +5. No orphaned polling or listeners accumulate during normal session use + +Plans: +- [ ] 22-01: TBD + +#### Phase 23: Verification +**Goal**: Validate session stability after all fixes are applied +**Depends on**: Phase 20, Phase 21, Phase 22 +**Research**: Unlikely (verification of completed fixes) +**Requirements**: VRFY-01, VRFY-02 +**Plans**: 1 plan + +**Success Criteria:** +1. Session remains stable and responsive for 15+ minutes of continuous use +2. Memory usage in browser dev tools remains stable (no unbounded growth) +3. Multiple session join/leave cycles don't accumulate memory +4. Chat window open/close cycles don't accumulate memory +5. VU meter show/hide cycles don't accumulate memory +6. All existing Playwright tests still pass (no regressions) + +Plans: +- [ ] 23-01: TBD + ## Progress **Execution Order:** -Phases execute in numeric order: 1 → 2 → ... → 16 → 17 → 18 +Phases execute in numeric order: 1 → 2 → ... → 18 → 19 → 20 → 21 → 22 → 23 | Phase | Milestone | Plans Complete | Status | Completed | |-------|-----------|----------------|--------|-----------| @@ -387,3 +493,8 @@ Phases execute in numeric order: 1 → 2 → ... → 16 → 17 → 18 | 16. Attachment Finalization | v1.2 | 2/2 | Complete | 2026-02-07 | | 17. Unit Tests (Jest) | v1.3 | 1/1 | Complete | 2026-02-08 | | 18. Integration Tests (Playwright) | v1.3 | 1/1 | Complete | 2026-02-08 | +| 19. Audit and Discovery | v1.4 | 0/TBD | Not started | - | +| 20. VU Meter Fixes | v1.4 | 0/TBD | Not started | - | +| 21. Chat Window Fixes | v1.4 | 0/TBD | Not started | - | +| 22. Session Screen Fixes | v1.4 | 0/TBD | Not started | - | +| 23. Verification | v1.4 | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 379db7c05..be41b6fd0 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -4,17 +4,17 @@ See: .planning/PROJECT.md (updated 2026-02-08) -**Core value:** Fix memory leaks to ensure stable session experience -**Current focus:** v1.4 Memory Leak Prevention +**Core value:** Fix memory leaks to ensure stable session experience without freezes +**Current focus:** v1.4 Memory Leak Prevention - Phase 19 Audit and Discovery ## Current Position -Phase: Not started (defining requirements) -Plan: — -Status: Defining requirements -Last activity: 2026-02-08 — Milestone v1.4 started +Phase: 19 of 23 (Audit and Discovery) +Plan: Not started +Status: Ready to plan +Last activity: 2026-02-08 — Roadmap created for v1.4 -Progress: ░░░░░░░░░░░░ 0% +Progress (v1.4): [░░░░░░░░░░░░░░░░░░░░] 0% ## Performance Metrics @@ -42,6 +42,11 @@ Progress: ░░░░░░░░░░░░ 0% - Completion date: 2026-02-08 - Duration: 1 day +**v1.4 Memory Leak Prevention (In Progress):** +- Phases: 5 (phases 19-23) +- Requirements: 11 +- Plans completed: 0 + ## Accumulated Context ### Decisions @@ -50,12 +55,8 @@ Decisions are logged in PROJECT.md Key Decisions table. | Date | Phase | Decision | Rationale | |------|-------|----------|-----------| -| 2026-02-08 | 17-01 | renderModal helper pattern with defaultProps | Reduces test boilerplate | -| 2026-02-08 | 17-01 | react-i18next mock with translation map | Enables testing actual label values | -| 2026-02-08 | 17-01 | Requirement-labeled describe blocks (UNIT-XX) | Traceability from tests to requirements | | 2026-02-08 | 18-01 | Use privacy select as modal indicator | Avoids toast notification collision | | 2026-02-08 | 18-01 | page.route() for API interception | Simpler than APIInterceptor for single-request | -| 2026-02-08 | 18-01 | INT-XX labeled test names | Traceability to integration test requirements | ### Deferred Issues @@ -64,7 +65,7 @@ Decisions are logged in PROJECT.md Key Decisions table. 3. **Volume control not working in popup mode** (Medium) - From v1.0 4. **WebSocket chat messages only broadcast to musicians** (Medium) - From v1.2 5. **mp3 backend support** (Medium) - Frontend allows, backend whitelist doesn't support -6. **Pre-existing test failures in JKChatMessageList.test.js** (Low) - Missing activeSession state in store +6. **Pre-existing test failures in JKChatMessageList.test.js** (Low) - Missing activeSession state ### Roadmap Evolution @@ -72,14 +73,15 @@ Decisions are logged in PROJECT.md Key Decisions table. - **v1.1 Music Session Chat** (Phases 6-11): Shipped 2026-01-31 - **v1.2 Session Attachments** (Phases 12-16): Shipped 2026-02-07 - **v1.3 Session Settings Tests** (Phases 17-18): Shipped 2026-02-08 +- **v1.4 Memory Leak Prevention** (Phases 19-23): In progress ## Session Continuity Last session: 2026-02-08 -Stopped at: Started v1.4 Memory Leak Prevention milestone +Stopped at: Roadmap created for v1.4 Memory Leak Prevention Resume file: None **Next steps:** -1. Define requirements for memory leak fixes -2. Create roadmap with phases -3. Begin auditing session screen components +1. Run `/gsd:plan-phase 19` to plan Audit and Discovery phase +2. Investigate VU meters, chat window, and session screen for memory leaks +3. Document findings before implementing fixes