Commit Graph

32 Commits

Author SHA1 Message Date
Alex Newman ff28db9d76 Update SKILL.md and CLAUDE.md for version bump clarity and consistency 2025-11-05 14:55:50 -05:00
Alex Newman 268b78083e Release v5.0.3: Smart caching installer for Windows compatibility
**Breaking Changes**: None (patch version)

**Fixes**:
- Fixed Windows installation with smart caching installer
- Eliminated redundant npm install on every SessionStart (2-5s → 10ms)
- Dynamic Python version detection in Windows error messages
- Comprehensive Windows troubleshooting guidance

**Improvements**:
- Smart install caches version state (.install-version file)
- Only runs npm install when needed (first time, version change, missing deps)
- Enhanced rsync to respect gitignore rules
- Better PM2 worker startup verification
- Cross-platform compatible (pure Node.js)

**Technical Details**:
- New: scripts/smart-install.js (smart caching installer)
- Modified: plugin/hooks/hooks.json (use smart-install.js)
- Modified: package.json (enhanced sync-marketplace)
- Impact: 200x faster SessionStart for cached installations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-05 14:24:50 -05:00
Alex Newman a1f76af902 Fix Windows installation with smart caching installer (#54)
* Fix Windows installation with smart caching installer

Fixes #52 - Windows users getting ERR_MODULE_NOT_FOUND for better-sqlite3

## Problem
Windows users (@adrianveen and others) were experiencing installation failures
with cryptic ERR_MODULE_NOT_FOUND errors. The root cause was:
1. npm install running on EVERY SessionStart (slow, wasteful)
2. Silent logging hiding actual installation errors
3. No helpful guidance when better-sqlite3 native compilation failed

## Solution
Implemented a smart installer (scripts/smart-install.js) that:
- Caches installation state with version marker (.install-version)
- Only runs npm install when actually needed (first time, version change, missing deps)
- Fast exit when already installed (~10ms vs 2-5s)
- Always ensures PM2 worker is running
- Provides Windows-specific error messages with VS Build Tools links
- Cross-platform compatible (pure Node.js)

## Changes
- Added: scripts/smart-install.js - Smart caching installer with PM2 worker management
- Modified: plugin/hooks/hooks.json - Use smart-install.js instead of raw npm install
- Modified: .gitignore - Added .install-version cache file
- Modified: CLAUDE.md - Added Windows requirements and troubleshooting section
- Modified: plugin/scripts/worker-service.cjs - Rebuilt with latest code

## Benefits
- 95% of Windows users won't need VS Build Tools (prebuilt binaries in better-sqlite3 v12.x)
- Clear error messages for the 5% who do need build tools
- Massive performance improvement (10ms cached vs 2-5s npm install)
- Single source of truth for plugin setup and worker management

## Testing
 First run: Installs dependencies and starts worker
 Subsequent runs: Instant with caching (~10ms)
 PM2 worker: Running successfully
 Cross-platform: Pure Node.js, no shell scripts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Windows installation with smart caching installer

Improvements:
- Enhanced sync-marketplace to respect gitignore rules (package.json)
- Added dynamic Python version detection in Windows help text (scripts/smart-install.js)
- Fixed hardcoded Python version message to show actual installed version

Technical changes:
- Modified package.json sync-marketplace script to use --filter=':- .gitignore' --exclude=.git
- Added runtime Python version detection in getWindowsErrorHelp function
- Improved user experience by showing actual Python installation status

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-05 14:22:31 -05:00
Alex Newman d5e392ea69 Release v5.0.2: Worker health check and async startup improvements
Fixes:
- Fixed worker startup reliability with async health checks
- Added proper error handling to PM2 process spawning
- Worker now verifies health before proceeding with hook operations
- Improved handling of PM2 failures when not yet installed

Technical changes:
- Added isWorkerHealthy() and waitForWorkerHealth() functions to src/shared/worker-utils.ts
- Changed ensureWorkerRunning() from synchronous to async with proper await
- All hooks now await ensureWorkerRunning for reliable worker communication
- Rebuilt all plugin executables with version 5.0.2
- Updated version to 5.0.2 in all metadata files

Root cause: ensureWorkerRunning was synchronous and didn't verify worker was actually responsive before proceeding, causing race conditions and startup failures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 21:47:38 -05:00
Alex Newman 6e66d78825 Release v5.0.1: Worker service stability and GitHub Actions
Improvements:
- Fixed worker service stability issues (PR #47)
- Added GitHub Actions workflows for automated code review (PR #48)
- Enhanced worker process management and restart reliability
- Improved session management and logging across all hooks
- Better error handling throughout hook lifecycle

Technical changes:
- Modified: src/services/worker-service.ts (stability improvements)
- Modified: src/shared/worker-utils.ts (consistent formatting)
- Modified: ecosystem.config.cjs (removed error/output redirection)
- Modified: src/hooks/*-hook.ts (ensure worker running)
- New: .github/workflows/claude-code-review.yml
- New: .github/workflows/claude.yml
- Rebuilt: plugin/scripts/*.js (all hook executables)
- Updated version to 5.0.1 in all metadata files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:42:46 -05:00
Alex Newman 5169cfa46d Merge branch 'main' into feature/hybrid-search
Resolved conflicts by:
- Keeping feature/hybrid-search build process documentation in CLAUDE.md
- Removing deleted plugin/scripts/search-server.js (intentionally deleted in feature branch)
- Removing usage logging from worker-service.ts (telemetry captured at SDK level)
- Rebuilt worker-service.cjs after resolving source file conflicts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 19:15:18 -05:00
Alex Newman 633f89a5fb feat: Implement user prompt syncing to Chroma and enhance timeline querying
- Added `getObservationById` method to retrieve observations by ID in SessionStore.
- Introduced `getSessionSummariesByIds` and `getUserPromptsByIds` methods for fetching session summaries and user prompts by IDs.
- Developed `getTimelineAroundTimestamp` and `getTimelineAroundObservation` methods to provide a unified timeline of observations, sessions, and prompts around a specified anchor point.
- Enhanced ChromaSync to format and sync user prompts, including a new `syncUserPrompt` method.
- Updated WorkerService to sync the latest user prompt to Chroma after updating the worker port.
- Created tests for timeline querying and MCP handler logic to ensure functionality.
- Documented the implementation plan for user prompts and timeline context tool in the Chroma search completion plan.
2025-11-03 16:55:33 -05:00
Alex Newman 80935fbc66 npm audit fixes #36 2025-11-03 13:42:31 -05:00
Alex Newman 7133108f15 Document usage tracking feature in CLAUDE.md 2025-11-02 21:53:58 -05:00
Alex Newman 9215c7e1f5 Release v4.3.4: Fix SessionStart hooks on resume
Fixes:
- Fixed SessionStart hooks running on session resume
- Added matcher configuration to only run hooks on startup, clear, or compact events
- Prevents unnecessary hook execution and improves performance

Technical changes:
- Modified plugin/hooks/hooks.json (added matcher)
- Updated version to 4.3.4 in all metadata files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 21:47:00 -04:00
Alex Newman 02130c49d1 close to win 2025-11-01 21:33:08 -04:00
Alex Newman 3bbacb8fa4 Release v4.3.3: Configurable session display and first-time setup UX
Improvements:
- Made session display count configurable (DISPLAY_SESSION_COUNT = 8)
- Added first-time setup detection with helpful user messaging
- Improved UX: First install message clarifies Plugin Hook Error display
- Cleaned up code comments

Technical changes:
- Updated src/hooks/context-hook.ts (configurable session count)
- Updated src/hooks/user-message-hook.ts (first-time setup detection)
- Rebuilt plugin/scripts/context-hook.js
- Rebuilt plugin/scripts/user-message-hook.js
- Bumped version to 4.3.3 in all metadata files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 01:22:47 -04:00
Alex Newman 28005b75af Release v4.3.2: User-facing context display via stderr hook
Improvements:
- Added user-message-hook for displaying context to users (src/hooks/user-message-hook.ts)
- Hook fires simultaneously with context injection, sending duplicate message via stderr
- Error messages don't get added to context, enabling user visibility
- Added 4 comprehensive documentation files (2500+ lines total)
- Improved cross-platform path handling in context-hook

Technical changes:
- New: src/hooks/user-message-hook.ts (stderr-based display mechanism)
- New: plugin/scripts/user-message-hook.js (built executable)
- New: docs/architecture-evolution.mdx (801 lines)
- New: docs/context-engineering.mdx (222 lines)
- New: docs/hooks-architecture.mdx (784 lines)
- New: docs/progressive-disclosure.mdx (655 lines)
- Modified: plugin/hooks/hooks.json (hook configuration)
- Modified: src/hooks/context-hook.ts (path handling)
- Modified: scripts/build-hooks.js (build support)
- Bumped version to 4.3.2 in all metadata files

Design rationale: Temporary workaround until Claude Code potentially adds ability to share messages with both user and context simultaneously.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 00:11:13 -04:00
Alex Newman c75563a89b Release v4.3.1: Version bump and documentation updates
- Updated package.json version to 4.3.1
- Updated marketplace.json version to 4.3.1
- Added v4.3.1 entry to CLAUDE.md version history
- Documented SessionStart hook context injection fix
- Documented hooks architecture consolidation
- Rebuilt all executables with updated version

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 00:11:36 -04:00
Alex Newman d4d6185bb4 Release v4.3.0: Progressive Disclosure Context
Major Feature:
- Progressive Disclosure Context: 3-layer memory retrieval system
  - Layer 1 (Index): Observation titles, token costs, type indicators
  - Layer 2 (Details): Full narratives via MCP search on-demand
  - Layer 3 (Perfect Recall): Source code and original transcripts
- Context hook displays observations in table format
- Type indicators: 🔴 critical, 🟤 decision, 🔵 informational
- Token counts help Claude decide: fetch details vs read code

Added:
- Agent Skills documentation and version bump management skill
- Memory toggle feature planning document

Changed:
- Enhanced session summary handling and timeline rendering
- Context token cost increased from ~800 to ~2,500 tokens

Fixed:
- Removed hardcoded macOS-specific paths (fixes #23)
- Cross-platform path detection improvements

Files Updated:
- package.json, marketplace.json, plugin.json: version 4.3.0
- CLAUDE.md: version history and current version updated
- README.md: removed experimental section, integrated feature
- CHANGELOG.md: comprehensive v4.3.0 release entry
- Built all hooks and worker service

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 15:42:06 -04:00
Alex Newman 19ecc7845f docs: Consolidate version history in CHANGELOG.md
Changes:
- CHANGELOG.md now contains detailed version history (already has v4.2.11)
- CLAUDE.md Version History section now:
  - References CHANGELOG.md for detailed history
  - Shows current version (4.2.11)
  - Includes brief highlights for recent versions only
  - Removed ~250 lines of detailed version documentation

This makes documentation more maintainable - single source of truth for
version history in CHANGELOG.md following Keep a Changelog format.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 15:13:14 -04:00
Alex Newman 142d6ae56f chore: Update changelog for v4.2.11 with cross-platform path detection fixes 2025-10-25 15:12:05 -04:00
Alex Newman b87654d452 Release v4.2.11: Cross-platform Claude path detection
Critical Bugfix:
- Fixed SDK auto-detection failure by implementing explicit which/where commands
- Unix/macOS: Uses 'which claude' command
- Windows: Uses 'where claude' command (CMD and PowerShell compatible)
- Fallback to CLAUDE_CODE_PATH environment variable
- Handles Windows multiple results (takes first match)

Impact:
- Before: Worker failed with "path must be string, received undefined"
- After: Worker correctly finds Claude executable on all platforms

Technical changes:
- Added findClaudePath() helper using child_process.execSync
- Platform detection via process.platform === 'win32'
- Updated src/sdk/worker.ts with explicit path detection
- Updated src/services/worker-service.ts with explicit path detection
- Bumped version to 4.2.11 in all metadata files
- Updated CLAUDE.md with v4.2.11 release notes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 14:56:30 -04:00
Alex Newman ae2c789781 Bump version to 4.2.10 and fix Windows compatibility by removing hardcoded macOS path 2025-10-25 13:24:18 -04:00
Alex Newman 05ddf3540c Release v4.2.9: Progressive disclosure experimental feature announcement
Documentation Updates:
- Added experimental progressive disclosure context system section to README
- Created EXPERIMENTAL_RELEASE_NOTES.md with comprehensive testing guide
- Created GITHUB_RELEASE_TEMPLATE.md for release announcements
- Updated all version references to 4.2.9 (package.json, marketplace.json, CLAUDE.md, README.md)

Progressive Disclosure Concept:
- Layer 1: Index showing what observations exist with token costs
- Layer 2: On-demand details via MCP search
- Layer 3: Perfect recall via source code access

Purpose:
- Invite users to test feature/context-with-observations branch
- Gather feedback on observation-level context vs summary-only approach
- Validate whether token cost metadata improves Claude's retrieval decisions

Testing Instructions:
- Clear documentation on how to clone, build, and test experimental branch
- Feedback template provided for structured user responses
- GitHub issues encouraged with label 'feedback: progressive-disclosure'

Files Changed:
- README.md (experimental feature section)
- EXPERIMENTAL_RELEASE_NOTES.md (new)
- GITHUB_RELEASE_TEMPLATE.md (new)
- package.json (version bump)
- .claude-plugin/marketplace.json (version bump)
- CLAUDE.md (version history + version number)
- plugin/scripts/*.js (rebuilt)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 01:59:08 -04:00
Alex Newman adc5853c73 Release v4.2.8: Critical bugfix for session ID handling
Critical bugfix release.

Problem:
- NOT NULL constraint violations prevented all observations/summaries from being stored
- Worker service could not store any data in database
- System was completely non-functional for new sessions

Root Cause:
- SessionStore.getSessionById() missing claude_session_id in SELECT query
- Worker received undefined for claude_session_id
- Caused database INSERT failures

Fix:
- Added claude_session_id to getSessionById SQL query
- Updated return type to include claude_session_id field
- Session ID now flows correctly: hook → database → worker → SDK

Impact:
- All observation and summary storage now works correctly
- System maintains session consistency throughout lifecycle
- Critical for proper functioning of memory compression

Version Changes:
- package.json: 4.2.7 → 4.2.8
- marketplace.json: 4.2.6 → 4.2.8
- CLAUDE.md: Updated version and added v4.2.8 changelog

Files Changed:
- package.json (version bump)
- .claude-plugin/marketplace.json (version bump)
- CLAUDE.md (version and changelog)
- src/services/sqlite/SessionStore.ts (bugfix)
- plugin/scripts/* (rebuilt with fix)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 22:20:07 -04:00
Alex Newman 74637705d7 Release v4.2.7: Enhanced data quality and comprehensive testing
Improvements:
- Enhanced null handling for empty/whitespace fields
- Ensures clean null values in database instead of empty strings
- Improves query efficiency and data consistency

Testing:
- Added comprehensive regression test suite (49 tests)
- Tests v4.2.5 summary fixes and v4.2.6 observation fixes
- Tests edge cases: missing fields, empty fields, whitespace
- New test script: npm run test:parser
- All tests passing with 100% coverage

Code Quality:
- Removed unused extractFileArray() function
- Improved function documentation
- TypeScript diagnostics clean

Technical Details:
- Updated src/sdk/parser.ts extractField function
- Created src/sdk/parser.test.ts regression test suite
- Updated package.json to v4.2.7
- Updated CLAUDE.md with version history
- All changes backward compatible

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 21:38:05 -04:00
Alex Newman 322cb94c43 Release v4.2.6: Critical bugfix for observation validation
Critical Bugfix:
- Fixed overly defensive observation validation blocking observations from being saved
- Parser now NEVER skips observations - always saves them
- Invalid or missing type defaults to "change" (generic catch-all type)
- Removed validation requiring title, subtitle, and narrative fields
- Prevents critical data loss - partial observations better than no observations

Impact:
- Before: Missing title, subtitle, OR narrative caused entire observation to be discarded
- After: ALL observations preserved regardless of field completeness
- Even partial observations contain valuable data: concepts, files_read, files_modified, facts
- LLMs make mistakes - system must be resilient and save everything
- Consistent with v4.2.5 summary fix

Technical changes:
- Updated src/sdk/parser.ts:52-67 to never skip observations
- Uses "change" as fallback type for invalid/missing types (no schema change)
- Updated ParsedObservation interface to allow null for title, subtitle, narrative
- Updated SessionStore.storeObservation signature to accept nullable fields
- Updated built worker-service.cjs
- Bumped version to 4.2.6 in all metadata files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 21:25:44 -04:00
Alex Newman 21c7ab2929 Release v4.2.5: Critical bugfix for summary validation
Critical Bugfix:
- Fixed overly defensive summary validation blocking summaries from being saved
- Removed validation that returned null when any required fields were missing
- Summaries now always saved when <summary> tags present, even if incomplete
- Prevents critical data loss - partial summaries better than no summaries

Impact:
- Before: Missing single field caused entire summary to be discarded
- After: All summaries preserved, maintaining session context when incomplete
- Ensures continuity of memory compression system

Technical changes:
- Updated src/sdk/parser.ts:137-147 to remove blocking validation
- Parser returns ParsedSummary with whatever fields are available
- Updated built worker-service.cjs
- Bumped version to 4.2.5 in all metadata files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 21:16:38 -04:00
Alex Newman d7b9f68d80 Release v4.2.4: Enhanced summary prompt clarity
Improvements:
- Removed optional skip_summary functionality (summaries now always generated)
- Clarified that summaries are mid-session checkpoints, not session endings
- Improved request field instructions to better form descriptive titles
- Changed wording from "discovered" to "learned" for consistency

Technical changes:
- Updated src/sdk/prompts.ts summary prompt
- Removed "WHEN NOT TO SUMMARIZE" section
- Added clarifying footer text about ongoing sessions
- Updated built worker-service.cjs
- Bumped version to 4.2.4 in all metadata files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 20:50:31 -04:00
Alex Newman fd4cd0444c chore: update changelog and README for version 4.2.3 release 2025-10-23 23:10:46 -04:00
copilot-swe-agent[bot] e50c6142bb Simplify Windows fix: use idempotent npm install instead of custom installer
Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com>
2025-10-23 21:50:35 +00:00
copilot-swe-agent[bot] 8d5bfec90e Fix list formatting consistency in CLAUDE.md
Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com>
2025-10-23 21:31:16 +00:00
copilot-swe-agent[bot] ab2c44069b Update documentation for Windows compatibility fix
Co-authored-by: thedotmack <683968+thedotmack@users.noreply.github.com>
2025-10-23 21:28:09 +00:00
Alex Newman 3cb003f4e4 fix(prompts): restore all 6 observation types for better search granularity
Restored full type system: bugfix, feature, refactor, change, discovery, decision.
This enables more precise search queries like "show all bugfixes in auth" vs generic "show all changes".

Also updated README to reflect current behavior (10 summaries with three-tier verbosity).

Changes:
- prompts.ts: Expanded type field from 3 to 6 types with clear definitions
- CLAUDE.md: Fixed context hook description (3 → 10 summaries)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 23:47:01 -04:00
Alex Newman f7f62ef3f3 feat(SessionStore): auto-create session records if missing
- Added functionality to automatically create a session record in the database if it does not exist when storing observations or session summaries.
- Updated `storeObservation` and `storeSummary` methods to include checks for existing session records and insert new records as needed.
- Added logging for auto-created session records for better traceability.
2025-10-21 22:13:13 -04:00
Alex Newman fe861a85bd Refactor PM2 commands in package.json for worker management; add CLAUDE.md documentation 2025-10-21 16:19:27 -04:00