Commit Graph

8228 Commits

Author SHA1 Message Date
Nuwan e50845dcd1 docs(24-01): complete Fix Recording Crash plan
Tasks completed: 2/2
- Fix useRecordingHelpers.js method names and parameters
- Fix JKSessionScreen.js doStartRecording method

SUMMARY: .planning/phases/24-fix-recording-crash/24-01-SUMMARY.md
2026-02-19 15:22:55 +05:30
Nuwan 6602643127 fix(24-01): correct recording method name in JKSessionScreen
- Change StartMediaRecording to StartRecording with unpacked params
- Unpack videoType, recordChat, recordFramerate from params object
- Match legacy recordingModel.js signature for C++ client
2026-02-19 15:21:19 +05:30
Nuwan 45aeb04eb2 fix(24-01): correct recording method names in useRecordingHelpers
- Change StartMediaRecording to StartRecording with unpacked params
- Change FrontStopRecording to StopRecording
- Match legacy recordingModel.js signature for C++ client
2026-02-19 15:21:02 +05:30
Nuwan 94ae383267 docs(24): create phase plan
Phase 24: Fix Recording Crash
- 1 plan in 1 wave
- 1 parallel, 0 sequential
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-19 15:13:27 +05:30
Nuwan 1512f646ea docs: start milestone v1.5 Fix Session Recording
Scope:
- Phase 24: Fix C++ client crash on Start Recording
- Phase 25: Verify Start/Stop/Pause work like desktop native app
- Phase 26: Memory leak audit for recording modal

Research findings:
- Missing RegisterRecordingCallbacks call
- Wrong method names (StartMediaRecording vs StartRecording)
- Parameter format mismatch

10 requirements across 3 phases.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-19 15:04:30 +05:30
Nuwan 0d2c76f83d feat(ui): add size prop to JKSessionInviteModal
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-19 14:20:20 +05:30
Nuwan 34d6a2fbac fix(ui): correct Volume modal to use category mixers for proper display
- Use MonitorCatGroup category mixers with AudioInputMusic/AudioInputChat
  names instead of incorrect MasterGroup/MonitorGroup channel mixers
- Add refresh on modal open to fetch fresh data from native client
- Remove FTUESave call that was causing VU meters to stop working
- Export getAudioInputCategoryMixer and getChatCategoryMixer from useMixerHelper

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-19 14:19:14 +05:30
Nuwan 4a3a0fee87 fix instrument icon now being shown correctly in VU tracks 2026-02-18 18:53:33 +05:30
Nuwan 4f74da017f chore: complete v1.4 milestone
Archived:
- milestones/v1.4-ROADMAP.md
- milestones/v1.4-REQUIREMENTS.md

Deleted (fresh for next milestone):
- ROADMAP.md
- REQUIREMENTS.md

Updated:
- MILESTONES.md (v1.3 and v1.4 entries)
- PROJECT.md (requirements → Validated)
- STATE.md (reset for next milestone)

Tagged: v1.4

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-18 18:51:29 +05:30
Nuwan c344decea4 fix(ui): persist VST plugin selection across page reloads
- Use FTUESave(true) instead of TrackSaveAssignments() to properly
  persist VST assignments to the profile file
- Always call VSTLoad() when modal opens if VST not already loaded,
  removing unreliable hasVstAssignment() check
- Pass correct trackIndex to JKSessionPluginModal for multi-track support
- Add trackIndex prop to track data in useMixerHelper for VST operations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-18 17:58:52 +05:30
Nuwan 78cdafbb8a fix(ui): implement independent Audio Input and Session Mix fader controls
- Add mixType prop to JKSessionAudioInputs to select master/personal mixer
- Store both masterMixers and personalMixers in myTracks for each track
- Fix async state issue in fillTrackVolumeObject by returning volumeObj directly
- Change SessionTrackGain to use useLayoutEffect for synchronous visual updates
- Fix controlGroup to null for individual track controls (fixes persistence)
- Prevent fader reset when mixer temporarily becomes undefined during re-renders

Audio Inputs now uses master mixer, Session Mix uses personal mixer,
matching the legacy app behavior. Both faders persist independently.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-16 15:56:46 +05:30
Nuwan aa731c96d0 enhancements to UI and functional issues 2026-02-15 14:10:34 +05:30
Nuwan ae7a745659 fix(ui): handle both string and numeric instrument_id formats
On page load, instrument_id from server is already a string ("piano").
After user selection, it's a numeric client_id (61) that needs conversion.
Now checks type before converting to handle both cases correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-15 10:43:35 +05:30
Nuwan 2b4bd8b934 fix(ui): convert instrument_id to server format for icon lookup
instrument_id is stored as numeric client_id (e.g., 61 for Piano)
but the icon map uses server format strings ("piano"). Added conversion
using convertClientInstrumentToServer before passing to icon lookup.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-15 10:37:23 +05:30
Nuwan 808cb27390 fix(ui): instrument selection modal now updates UI immediately
- Add updateParticipantTrackInstrument reducer to update sessionData.participants
- Dispatch both participant track and userTracks updates on instrument save
- Fix syncTracksToServer call to pass clientId instead of jamClient object
- UI now reflects instrument changes without needing page refresh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 22:37:35 +05:30
Nuwan 84e7d50422 docs(23): complete Memory Leak Verification phase
- Phase 23 verified: 6/6 must-haves passed
- User confirmed 15+ minute session stability without freezes
- All Playwright tests pass (14 failures are pre-existing)
- v1.4 Memory Leak Prevention milestone complete

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 17:22:54 +05:30
Nuwan 895b283f30 docs(23-01): complete Memory Leak Verification plan
Tasks completed: 3/3
- Task 1: Run Playwright regression tests (36 pass, 14 pre-existing failures)
- Task 2: Create UAT checklist for memory verification
- Task 3: Execute manual memory verification (user approved)

v1.4 Memory Leak Prevention milestone complete.
User verified 15+ minute session stability with no freezes.

SUMMARY: .planning/phases/23-verification/23-01-SUMMARY.md
2026-02-10 17:19:04 +05:30
Nuwan bea0fd6df8 docs(23-01): mark UAT verification as passed
- User verified 15+ minute session stability
- No freezes or performance bottlenecks observed
- All memory leak fixes from Phases 20-22 confirmed working
2026-02-10 17:17:54 +05:30
Nuwan e2766b05d5 feat(23-01): create UAT checklist for memory leak verification
- VU meter state cleanup verification (Phase 20)
- Chat bounded storage and cleanup verification (Phase 21)
- Session callback cleanup verification (Phase 22)
- 15-minute stability test (VRFY-01)
- Memory growth check with heap snapshots (VRFY-02)
2026-02-10 14:43:33 +05:30
Nuwan c23169a870 docs(23): create phase plan for Memory Leak Verification
Phase 23: Verification
- 1 plan in 1 wave
- Regression tests + manual UAT checklist
- Ready for execution
2026-02-10 14:26:55 +05:30
Nuwan 41972973ca docs(22): complete Session Screen Fixes phase
Phase 22 verified: 3/3 must-haves passed (SESS-01, SESS-02, SESS-03)
- SESS-01: Callback cleanup hardened with useRef pattern
- SESS-02: Polling intervals verified OK (Phase 19)
- SESS-03: Event listeners verified OK (Phase 19)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 21:55:15 +05:30
Nuwan 8a5047a615 docs(22-01): complete Session Callback Cleanup plan
Tasks completed: 1/1
- Task 1: Improve callback cleanup reliability with useRef

SUMMARY: .planning/phases/22-session-screen-fixes/22-01-SUMMARY.md
2026-02-08 21:52:00 +05:30
Nuwan 2cf1c2cf98 fix(22-01): improve callback cleanup reliability with useRef
- Add registeredCallbacksRef alongside registeredCallbacks state
- Update unregisterMessageCallbacks to read from ref for cleanup
- Store callbacks to both state and ref during registration
- Ensures cleanup works reliably on all exit paths (browser close, navigation)
2026-02-08 21:51:04 +05:30
Nuwan 41513b81af fix(22): revise plan based on checker feedback
- Add acknowledgment that SESS-02/SESS-03 were verified clean in Phase 19
- Merge Task 2 (verification-only) into Task 1's verify section
- Plan now has 1 auto task producing code artifacts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 21:37:58 +05:30
Nuwan f172739a82 docs(22): create phase plan for Session Screen Fixes
Phase 22: Session Screen Fixes
- 1 plan in 1 wave
- SESS-01: Harden callback cleanup with useRef pattern
- Defensive improvement for reliable cleanup on all exit paths

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 21:35:19 +05:30
Nuwan 849465c43b docs(21): complete Chat Window Fixes phase 2026-02-08 20:56:30 +05:30
Nuwan 221d557bc5 docs(21): fix requirement ID and function name in plan 2026-02-08 20:54:08 +05:30
Nuwan fd0a3bf450 docs(21-01): complete Chat State Cleanup plan
Tasks completed: 2/2
- Add MAX_MESSAGES limit to sessionChatSlice.js
- Add clearAllMessages action and dispatch on session leave

SUMMARY: .planning/phases/21-chat-window-fixes/21-01-SUMMARY.md
2026-02-08 20:53:25 +05:30
Nuwan 5407f19592 feat(21-01): add clearAllMessages action and dispatch on session leave
- Add clearAllMessages reducer to sessionChatSlice.js
- Export clearAllMessages action
- Dispatch clearAllMessages in handleLeaveSubmit (explicit leave)
- Dispatch clearAllMessages in unmount cleanup useEffect

Fixes CHAT-03: Prevents stale chat data accumulation across sessions
2026-02-08 20:52:17 +05:30
Nuwan f1189af677 feat(21-01): add MAX_MESSAGES limit to sessionChatSlice.js
- Add MAX_MESSAGES = 500 constant to bound chat message storage
- Apply slice(-MAX_MESSAGES) in addMessageFromWebSocket reducer
- Apply slice(-MAX_MESSAGES) in fetchChatHistory.fulfilled reducer
- Apply slice(-MAX_MESSAGES) in uploadAttachment.fulfilled reducer

Fixes CHAT-02: Prevents unbounded memory growth from chat activity
2026-02-08 20:51:14 +05:30
Nuwan 76805f855c docs(21): create phase plan
Phase 21: Chat Window Fixes
- 1 plan(s) in 1 wave(s)
- 1 parallel, 0 sequential
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 20:44:01 +05:30
Nuwan d162e6cd89 docs(20): complete VU Meter Fixes phase
- VUMTR-02, VUMTR-03 requirements complete
- VUMTR-01 deferred (performance, not memory leak)
- Verification passed (3/3 must-haves)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 19:32:55 +05:30
Nuwan 8c724a6ca0 docs(20-01): complete VU state cleanup plan
Tasks completed: 3/3
- Add removeVuState function to useVuHelpers
- Verify removeVuState exposed through VuContext
- Integrate removeVuState with mixer lifecycle

SUMMARY: .planning/phases/20-vumeter-fixes/20-01-SUMMARY.md
2026-02-08 19:29:21 +05:30
Nuwan 6a7ee474d2 feat(20-01): integrate removeVuState with mixer lifecycle
- Destructure removeVuState from useVuContext alongside updateVU3
- Add previousMixerIdsRef to track mixer IDs between renders
- Add cleanup useEffect that detects removed mixers
- Call removeVuState when mixer is removed from allMixers
- Only run cleanup when mixers are ready (isReadyRedux is true)

This prevents unbounded growth of vuStates object as tracks join/leave.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 19:27:48 +05:30
Nuwan 3624c09102 feat(20-01): add removeVuState function to useVuHelpers
- Add removeVuState callback to clean up vuStates entries
- Export removeVuState alongside updateVuState
- Uses functional setState for React state batching compatibility
- Maintains immutability by creating shallow copy before deletion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 19:26:50 +05:30
Nuwan 4f0119b259 fix(20): revise plan based on checker feedback
- Task 2: Changed from 'auto' to 'checkpoint:pass' (no code changes needed)
- Task 3: Explicitly state line 111 destructuring modification
- Added VUMTR-01 deferral note in objective section
- Updated files_modified to exclude VuContext.js (auto-exposes via pattern)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 19:20:28 +05:30
Nuwan f8e74a3c1f docs(20): create VU meter fixes phase plan
Phase 20: VU Meter Fixes
- 1 plan in 1 wave
- Addresses VUMTR-02 (unbounded vuStates growth)
- Addresses VUMTR-03 (no per-mixer cleanup)
- Adds removeVuState function to useVuHelpers
- Integrates cleanup with mixer lifecycle in useMixerHelper
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 19:17:20 +05:30
Nuwan 87a99cfb2f docs(19): complete Audit and Discovery phase
Phase 19: Audit and Discovery
- 1 plan executed, 3 tasks completed
- 7 memory leak findings documented
- 3 HIGH severity issues identified
- Implementation recommendations for Phases 20-22
2026-02-08 14:23:53 +05:30
Nuwan ab2a3254b7 docs(19-01): complete memory leak audit plan
Tasks completed: 3/3
- Task 1: Audit VU Meter Components
- Task 2: Audit Chat Window Components
- Task 3: Audit Session Screen and Finalize Report

SUMMARY: .planning/phases/19-audit-and-discovery/19-01-SUMMARY.md

Key findings:
- VUMTR-02/03: vuStates grows unbounded (HIGH)
- CHAT-01: messages accumulate without limit (HIGH)
- Session screen base has proper cleanup (LOW)
2026-02-08 14:21:19 +05:30
Nuwan 4d0175f18d audit(19-01): session screen components and finalize audit report
- Add Session Screen Audit section (JKSessionScreen, useJamServer, useSessionStats, etc.)
- Document 14 useEffect hooks in JKSessionScreen.js with cleanup status
- Verify all session screen timers properly cleaned up
- Create Priority Summary with HIGH/MEDIUM/LOW rankings
- Create Implementation Recommendations for Phases 20-22
- Identify VUMTR-02, VUMTR-03, CHAT-01 as primary leak sources
2026-02-08 14:20:13 +05:30
Nuwan e9ff93d3de audit(19-01): chat window components memory leak audit
- Audited JKSessionChatWindow.js, JKChatMessageList.js, sessionChatSlice.js
- Found CHAT-01: Messages accumulate without limit (HIGH)
- Found CHAT-02: chatState in useEffect dependencies (LOW)
- Found CHAT-03: No message cleanup on session leave (MEDIUM)
- Verified WebSocket callback cleanup in useSessionWebSocket.js

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:17:50 +05:30
Nuwan 1c898ddc0b audit(19-01): VU meter components memory leak audit
- Audited SessionTrackVU.js, useMixerStore.js, useVuHelpers.js
- Found VUMTR-01: VU callback throttling disabled (MEDIUM)
- Found VUMTR-02: vuStates object grows unbounded (HIGH)
- Found VUMTR-03: No per-mixer cleanup on track leave (HIGH)
- Documented all timer/callback patterns with line numbers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:16:33 +05:30
Nuwan c466a72511 docs(19): create phase plan for memory leak audit
Phase 19: Audit and Discovery
- 1 plan in 1 wave
- 3 tasks covering VU meters, chat, session screen
- Produces 19-AUDIT.md with prioritized findings for Phases 20-22

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:10:35 +05:30
Nuwan a66cbdca92 docs(19): research phase - memory leak audit and discovery
Phase 19: Audit and Discovery
- Standard stack: Chrome DevTools Memory Panel for leak detection
- Architecture patterns: Document timer/interval locations and cleanup status
- Pitfalls: Common React memory leak patterns catalogued
- Identified areas: VU meters (LOW), Chat (HIGH), Session screen (MEDIUM)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:05:50 +05:30
Nuwan 5fbb51158f 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.
2026-02-08 13:57:58 +05:30
Nuwan 2ae1764176 docs: define milestone v1.4 requirements
11 requirements across 4 categories:
- VU Meters (3): Interval/animation cleanup
- Chat Window (3): WebSocket listener and state cleanup
- Session Screen (3): useEffect and polling cleanup
- Verification (2): Stability and memory monitoring
2026-02-08 13:36:23 +05:30
Nuwan a5b5c7f550 save test data 2026-02-08 13:33:58 +05:30
Nuwan e272494e15 docs: start milestone v1.4 Memory Leak Prevention 2026-02-08 13:21:44 +05:30
Nuwan f161573974 docs(18): complete Phase 18 and v1.3 milestone
- Mark INT-01, INT-02, INT-03 requirements as complete
- Update roadmap: Phase 18 complete, v1.3 shipped 2026-02-08
- Add 18-VERIFICATION.md with 3/3 must-haves verified

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 12:49:18 +05:30
Nuwan 26de20ad92 docs(18-01): complete Session Settings integration tests plan
Tasks completed: 3/3
- INT-01: Settings button opens modal
- INT-02: Save settings makes PUT /sessions/{id} API call
- INT-03: Cancel closes modal without API call

SUMMARY: .planning/phases/18-integration-tests-playwright/18-01-SUMMARY.md
2026-02-08 12:45:14 +05:30