- Rules now discovered recursively in subdirectories
- Added .claude/CLAUDE.local.md detection
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Split config counting: CLAUDE.md, rules, MCPs, hooks
- Display distinct icons for each config type (📄📜🔌🪝)
- Read hooks count from settings.json
- Remove ralph-loop local config file
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rewrite README for statusline architecture
- Update CLAUDE.md with new data flow and structure
- Remove obsolete v1 docs (TROUBLESHOOTING, CONTRIBUTING, etc.)
- Clean up .husky/pre-commit for new structure
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Committing all outstanding v1 changes before the major architecture
rewrite to statusline-based approach.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The transcript staleness check only used mtime, causing missed updates
when filesystem timestamp granularity prevented mtime changes during
rapid writes (e.g., after auto-compaction).
Now checks both mtime AND file size - if either indicates new content,
we read. This fixes the HUD staying at high context % after compaction.
Also fixes:
- Flaky test due to mtime granularity (added delay + utimes)
- Test fixture path resolution (use __dirname)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Errors always logged to ~/.claude/hud/logs/hud.log
- Debug/warn still gated behind CLAUDE_HUD_DEBUG=1
- Add log rotation at 1MB
- Add close() method for clean shutdown
- Tests updated for new close method
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Separate validation checks for tool, input, and response fields
- Add specific error messages indicating expected types
- Add tests for explicit null values and malformed field errors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add parseErrorCount to HudState interface
- Add 'parseError' action to increment counter on parse failures
- Display parse error count in StatusBar when > 0
- Provides visibility into event parsing issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace boolean flag with Promise-based lock pattern
- Prevents race condition when multiple callers invoke refresh
- Concurrent calls now properly await the same Promise
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use atomic mkfifo with fallback check in capture-event.sh
- Only remove non-pipe files before mkfifo (preserve existing pipes)
- Set explicit permissions (600) on new FIFOs
- Improve pgrep pattern to avoid false matches in session-start.sh
Prevents silent data loss when multiple events fire simultaneously.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create lib/constants.ts with all configurable values
- Update cost-tracker, unified-context-tracker, hud-reducer
- Update event-reader with reconnect constants
- Update hud-event with line preview constant
- Improves maintainability and makes tuning easier
Constants include: token estimation, display limits, intervals,
thresholds, and truncation lengths.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add PricingConfig interface with lastUpdated timestamp
- Add isPricingStale() helper (90 day threshold)
- Add setPricing() method to CostTracker for config overrides
- Add pricingStale flag to CostEstimate type
- Show warning icon in CostDisplay when pricing is stale
- Allow pricing override via ~/.claude/hud/config.json
- Add comprehensive tests for pricing logic
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add optional activeForm field to TodoItem type
- Update TodoList component to display activeForm when in_progress
- Add tests for activeForm display behavior
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ARCHITECTURE.md, FAQ.md, LLM.md documentation
- Add LICENSE (MIT), CODE_OF_CONDUCT.md, PR template
- Add .editorconfig for consistent formatting
- Add check.sh script for validation
- Fix ESLint errors in hud-config.ts and settings-reader.ts
- Various test and component improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Runs lint, typecheck, test, and build on push/PR to main
- Validates plugin structure (plugin.json, hooks.json, scripts)
- Uses Bun for fast CI execution
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ContextState was defined but never used - it was a redundant
subset of ContextHealth.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Removed transcript-reader.ts, stats-reader.ts, and usage-reader.ts
along with their test files. These were superseded by
UnifiedContextTracker which handles transcript reading directly.
Removed 6 files, ~700 lines of dead code.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The ContextTracker class in context-tracker.ts was superseded by
UnifiedContextTracker and was only used in its own test file.
This removes dead code and duplicate interface definitions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove accidental gitignore entry for CI workflow
- Update CHANGELOG with CI addition note
- Bump version to 2.0.10
Note: GitHub Actions workflow created but requires workflow scope to push.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The screenshot.png file doesn't exist, causing a broken image in the README.
Removed the reference until a screenshot is captured.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Wrap SessionStats in React.memo for consistency with other components
and to prevent unnecessary re-renders from parent prop changes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove unreachable condition in truncatePath function
- Add tests for edge cases: long filenames, paths without slashes
- ToolStream now at 100% line coverage
- Overall coverage improved to 94.25%
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add React.memo to McpStatus and ModifiedFiles for consistency
- Fix ErrorBoundary componentDidCatch to log errors via logger
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add coverage, lint, typecheck, format commands to setup
- Update project structure with new files (hooks/, CostDisplay, StatusBar, etc.)
- Document useHudState as central state management
- Document UnifiedContextTracker for real + estimated tokens
- Update "Adding a New Panel" guide with memo, useHudState, tests
- Add Code Style section with quality tools and pre-commit hooks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Test context header and percentage display
- Test compact warning visibility
- Test token number formatting (k, M suffixes)
- Test progress bar rendering
- Test sparkline with usage label
Coverage: 94.00% (229 tests)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Test for invalid JSON handling
- Test for missing optional fields
Coverage: 93.92% (220 tests)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>