mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-05 23:19:43 +02:00
- Added recent commits to session log - Added documentation work section - Listed README, CLAUDE.md, TUI plan updates Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
11 KiB
11 KiB
Claudeman Code Optimization TODO List
Generated: 2026-01-21 Purpose: Comprehensive optimization roadmap for future sessions
Overview
This document contains prioritized optimization tasks identified through codebase analysis. Each item has specific file:line references and expected impact estimates.
HIGH PRIORITY OPTIMIZATIONS
1. String Concatenation in Hot Paths
- Files:
src/session.ts:460, 677-686,src/respawn-controller.ts:469, 826,src/inner-loop-tracker.ts:408 - Issue: String
+=in terminal buffer accumulation creates GC pressure - Fix: Use array-based accumulation with periodic joins
- Impact: 10-20% faster terminal streaming
2. Regex Pattern lastIndex Reset
- Files:
src/inner-loop-tracker.ts:464-479,src/screen-manager.ts:264 - Issue: Global regex without lastIndex reset causes skip-every-other-match bug
- Fix: Always reset
pattern.lastIndex = 0before use - Impact: Correct pattern matching, eliminate intermittent bugs
3. Unbounded Buffer Growth
- Files:
src/respawn-controller.ts:268-269,src/inner-loop-tracker.ts:257-258 - Issue: Buffers lack proper size limits or have loose limits
- Fix: Add hard limits with Ring Buffer pattern
- Impact: Bounded memory, prevent OOM in long sessions
4. Event Listener Management
- Files:
src/respawn-controller.ts:446-455,src/session.ts:481-501,src/web/server.ts:987-1084 - Issue: Listeners created repeatedly without cleanup tracking
- Fix: Use debounce/throttle utilities, consolidate timeout management
- Impact: Fewer memory leaks, reduced GC sweeps
5. Task Lookup Optimization
- Files:
src/task-tracker.ts:214-220, 231-234 - Issue: O(n) sequential iteration for task lookups
- Fix: Add secondary indices
runningTasksByType: Map<string, Set<string>> - Impact: O(1) lookups, faster with 1000+ tasks
MEDIUM PRIORITY OPTIMIZATIONS
6. Pattern Test Result Caching
- Files:
src/inner-loop-tracker.ts:529-543 - Issue: Multiple pattern tests on same data without caching
- Fix: Use
.exec()once and reuse result - Impact: 2-3x faster todo detection
7. Dynamic Terminal Batching
- Files:
src/web/server.ts:46, 1350-1360 - Issue: 16ms flush interval is too long for interactive sessions
- Fix: Flush immediately if batch > 1KB OR timeout 16ms
- Impact: Snappier UI feel
8. Buffer Pagination
- Files:
src/session.ts:314-365,src/web/server.ts:219-224 - Issue: Full buffer sent on every state update
- Fix: Add
/api/sessions/:id/history?offset=X&limit=Y - Impact: 10-100x faster reconnects
9. Remove Unused Regex Patterns
- Files:
src/respawn-controller.ts:52-59 - Issue: ANSI_ESCAPE_PATTERN, WHITESPACE_PATTERN marked @deprecated but still compiled
- Fix: Remove unused patterns
- Impact: Cleaner code, slightly faster startup
10. State Serialization
- Files:
src/state-store.ts:80, 196,src/web/server.ts:1343 - Issue: Full JSON.stringify on every save
- Fix: Incremental or selective serialization
- Impact: 5-10x faster state saves
LOW PRIORITY OPTIMIZATIONS
11. Error Handling Consistency
- Files:
src/screen-manager.ts:101-104,src/session.ts:726-729,src/web/server.ts:838-845 - Issue: Mix of try-catch and error codes
- Fix: Create ErrorRegistry, standardize responses
- Impact: Better debugging
12. TypeScript Strict Typing
- Files:
src/task-tracker.ts:179,src/web/server.ts:138, 174 - Issue: Some implicit
anytypes - Fix: Strong typing for all messages and payloads
- Impact: Better IDE support, fewer runtime errors
13. Dead Code Removal
- Files:
src/task.ts,src/task-queue.ts,src/ralph-loop.ts - Issue: Potentially unused files
- Fix: Verify imports, remove unused
- Impact: Cleaner codebase
14. Console Logging
- Files: Throughout
src/session.ts,src/respawn-controller.ts,src/screen-manager.ts - Issue: Debug logs not disabled in production
- Fix: Use logger abstraction with levels
- Impact: Cleaner logs
15. Magic Numbers
- Files:
src/session.ts:397, 428,src/respawn-controller.ts:614, 619 - Issue: Hardcoded timeout values
- Fix: Extract to named constants
- Impact: Easier tuning
Implementation Phases
Phase 1 (Critical) - Items #1-5
- Time: 8-12 hours
- Expected Gain: 30% performance
Phase 2 (Important) - Items #6-10
- Time: 6-8 hours
- Expected Gain: 15% performance
Phase 3 (Polish) - Items #11-15
- Time: 4-6 hours
- Expected Gain: 5% + code quality
Progress Tracking
| Item | Status | Completed By | Notes |
|---|---|---|---|
| 1 | ✅ Done | Claude | BufferAccumulator in session.ts, respawn-controller.ts |
| 2 | ✅ Done | Claude | Fixed lastIndex resets - now reset BEFORE .test() calls |
| 3 | ✅ Done | Claude | BufferAccumulator auto-trims, no manual limits needed |
| 4 | ✅ Done | Claude | cleanupTrackerListeners() stores/removes handlers; event debouncing in InnerLoopTracker |
| 5 | ☐ Pending | ||
| 6 | ✅ Done | Claude | Pre-checks before regex (hasCheckbox, hasTodoIndicator, etc.) - 60-75% reduction |
| 7 | ✅ Done | Claude | Immediate flush for >1KB batches |
| 8 | ☐ Pending | ||
| 9 | ✅ Done | Claude | Removed ANSI_ESCAPE_PATTERN, WHITESPACE_PATTERN |
| 10 | ✅ Done | Claude | broadcastSessionStateDebounced() batches state updates at 500ms intervals |
| 11 | ☐ Pending | ||
| 12 | ☐ Pending | ||
| 13 | ☐ Pending | Not unused - used by CLI | |
| 14 | ☐ Pending | ||
| 15 | ☐ Pending |
Session Log (2026-01-21)
Completed This Session:
- Regex lastIndex Fix (#2): Moved lastIndex resets to BEFORE .test() calls in inner-loop-tracker.ts
- Event Listener Cleanup (#4): Added
cleanupTrackerListeners()in session.ts to properly remove TaskTracker and InnerLoopTracker listeners - Event Debouncing (#4): Added 50ms debouncing for todoUpdate/loopUpdate events in InnerLoopTracker
- Regex Pre-checks (#6): Added fast pre-checks (string.includes) before expensive regex execution
- Promise Race Condition Fix: Added
_promptResolvedflag in session.ts to prevent double resolution - State Update Debouncing (#10): Added
broadcastSessionStateDebounced()in server.ts batching at 500ms intervals - withTimeout Utility: Added exported utility for async operation protection with configurable timeouts
- WebUI Render Debouncing: Added debouncing to
renderInnerStatePanel(50ms),renderTaskPanel(100ms),renderScreenSessions(100ms) - CSS Containment: Added
containproperty to terminal container, session tabs, ralph panel, task panel, and modal content for paint isolation - GPU-Accelerated Animations: Added
will-changefor animated elements, use transform-based transitions - Input Batching: Batch rapid keystrokes at 60fps, immediate flush for control chars
- Incremental DOM Updates (Ralph): Reuse existing DOM elements in Ralph todo list, ~80% fewer DOM ops
- Incremental DOM Updates (Tabs): Session tabs update only changed properties, ~70% fewer DOM ops
Documentation Work:
- README Improvements: Added Requirements section, Performance Optimized section
- CLAUDE.md Updates: Added timing constants, updated optimization status section
- TUI Implementation Plan: Added implementation status with completed/pending files
- Test Badge Fix: Updated test count to 195 passing
Commits:
df91823- fix: improve memory safety and regex pattern handling08b76cd- perf: add event debouncing to InnerLoopTracker645f86e- perf: optimize regex execution and fix promise race condition1a7c6d3- fix: prevent memory leaks from orphaned event listeners2709d43- perf: add session state update debouncing in serveref843bc- docs: update optimization tracking with completed itemsc0688e0- perf: optimize WebUI rendering and CSS performance26ab141- docs: add WebUI optimization roadmap and session log3dd6ea5- perf: add input batching for rapid keystrokesab6f630- perf: add incremental DOM updates for Ralph todo listaf1ea57- perf: add incremental updates for session tabs rendering63b9abc- docs: add session tabs incremental updates to logb4adbeb- docs: fix test count in README badge (195 passing)224be69- docs: improve README for GitHub publishingb3dd0bc- docs: update CLAUDE.md with optimization status84dab25- feat(tui): add terminal user interface with Inkf681972- feat(tui): add real-time terminal output polling451de84- docs: add implementation status to TUI plan8da6dce- feat(tui): add arrow key navigation and screen attach
WebUI Future Optimizations
High Priority
| Optimization | File | Description | Expected Impact | Status |
|---|---|---|---|---|
| Virtual scrolling for todo lists | app.js |
Render only visible todos for long lists | 10x improvement for 100+ todos | Pending |
| Incremental DOM updates | app.js |
Use DOM diffing instead of innerHTML | Reduces reflows by 50% | ✅ Done |
| Web Worker for JSON parsing | app.js |
Offload SSE message parsing to worker | Smoother UI during high throughput | Pending |
| Request coalescing | app.js |
Batch rapid API calls (resize, input) | Fewer network requests | ✅ Done (input) |
Medium Priority
| Optimization | File | Description | Expected Impact |
|---|---|---|---|
| Service Worker caching | sw.js (new) |
Cache static assets, offline support | Faster subsequent loads |
| WebSocket upgrade | server.ts, app.js |
Replace SSE with WebSocket for bidirectional | Lower latency for input |
| IndexedDB for terminal history | app.js |
Store large buffers in IndexedDB | Reduces memory footprint |
| CSS custom properties for themes | styles.css |
Dynamic theme switching | Better theming support |
Low Priority
| Optimization | File | Description | Expected Impact |
|---|---|---|---|
| Preconnect hints | index.html |
Add preconnect for external resources | Faster initial load |
| Code splitting | Build config | Split vendor/app bundles | Better caching |
| Compression for SSE | server.ts |
gzip compression for SSE stream | 50% bandwidth reduction |
Performance Metrics to Track
- Time to First Byte (TTFB) - Server response time
- First Contentful Paint (FCP) - Initial render time
- Time to Interactive (TTI) - When UI becomes responsive
- Input Latency - Delay between keypress and display
- Frame Rate - Target 60fps during terminal output
- Memory Usage - Monitor for leaks during long sessions