Conversation
- Symphony IPC now validates active contributions against stored sessions 🧩 - Orphaned contributions auto-filtered when sessions disappear, keeping UI clean 🧹 - `symphony:getState` returns only session-backed active items for accuracy 🎯 - `symphony:getActive` now excludes contributions tied to missing sessions 🚫 - Added reusable `filterOrphanedContributions` helper with detailed logging 🪵 - Wired `sessionsStore` dependency through main + handler registration flow 🔌 - Integration tests now mock sessions store for realistic state scenarios 🧪 - Expanded handler tests to cover missing-session filtering behavior 🛡️
- Added Code Style section to CLAUDE.md specifying tabs-for-indentation requirement 📏 - Added Root Cause Verification section under Debugging with historical bug patterns 🔍 - Added UI Bug Debugging Checklist to CLAUDE-PATTERNS.md (section 11) 🎨 - Documents CSS-first debugging, portal escapes, and fixed positioning pitfalls 🐛
- Renamed empty-state action from “Select Folder” to “Change Folder” for clarity 🧭 - Refreshed empty-state helper text to match the new folder-change flow 📝 - Cleaned up `EditGroupChatModal` icon imports by dropping the unused `X` 🎛️
- Symphony modal now receives sessions list for richer contribution context 🧩 - Active contributions show clickable session name with new Terminal icon 🖥️ - Added “navigate to session” flow directly from contribution cards 🧭 - Selecting a session updates active session and auto-closes modal ⚡ - Session lookup wires contributions to matching session IDs seamlessly 🔗
Pull Request ReviewThis PR makes several polishing improvements across documentation, core logic, and UI. Overall, the changes are well-structured with good test coverage. Here's my detailed feedback: ✅ Strengths1. Symphony Orphaned Contribution FilteringThe core logic improvement is excellent:
2. Documentation Improvements
3. UI EnhancementThe session navigation link in
🔍 Issues & Suggestions1. Missing null check in SymphonyModal.tsx (Bug)// Line 1975-1977
const session = sessions.find((s) => s.id === contribution.sessionId);Issue: If a session is deleted between when the active contributions are fetched and when they're rendered, Recommendation: The code already handles this correctly ( if (!session) {
// Session was deleted since last fetch, skip rendering
return null;
}Severity: Low (current code is safe, but this adds clarity) 2. Performance concern:
|
symphony:getStatereturns only session-backed active items for accuracy 🎯 -symphony:getActivenow excludes contributions tied to missing sessions 🚫 - Added reusablefilterOrphanedContributionshelper with detailed logging 🪵 - WiredsessionsStoredependency through main + handler registration flow 🔌 - Integration tests now mock sessions store for realistic state scenarios 🧪 - Expanded handler tests to cover missing-session filtering behavior 🛡️