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>
This commit is contained in:
Alex Newman
2025-10-25 15:13:14 -04:00
parent 142d6ae56f
commit 19ecc7845f
-168
View File
@@ -232,174 +232,6 @@ For detailed version history and changelog, see [CHANGELOG.md](CHANGELOG.md).
- Plugin data directory integration
- HTTP REST API architecture with PM2
**Improvements**:
- Enhanced data quality with consistent null handling
- `extractField()` now returns null for empty/whitespace-only strings
- Ensures database stores clean null values instead of empty strings
- Improves query efficiency and data consistency
**Testing**:
- Added comprehensive regression test suite (49 tests)
- Tests v4.2.5 summary validation fixes (partial summaries preserved)
- Tests v4.2.6 observation validation fixes (partial observations preserved)
- Tests edge cases: missing fields, empty fields, whitespace, invalid types
- Tests data integrity: concept filtering, type validation, field preservation
- New test script: `npm run test:parser`
- All 49 tests passing with 100% coverage of critical parser edge cases
**Code Quality**:
- Removed unused `extractFileArray()` function (replaced by `extractArrayElements()`)
- Improved function documentation with clearer descriptions
- TypeScript diagnostics clean
**Technical Details**:
- Updated `src/sdk/parser.ts:163-169` extractField function
- Created `src/sdk/parser.test.ts` with comprehensive regression tests
- Added `test:parser` script to package.json
- All changes backward compatible with existing database schema
### v4.2.6
**Breaking Changes**: None (patch version)
**Critical Bugfix**:
- Fixed overly defensive observation validation that was blocking observations from being saved
- Removed validation requiring title, subtitle, and narrative fields
- Parser now NEVER skips observations - always saves them
- Invalid or missing type defaults to "change" (generic catch-all type)
- Prevents critical data loss - partial observations are 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 - partial data is always better than no data
**Technical Details**:
- Updated `src/sdk/parser.ts:52-67` to never skip observations
- Uses "change" as fallback type for invalid/missing types (no schema change needed)
- Updated ParsedObservation interface to allow null for title, subtitle, narrative
- Database schema already supports nullable fields
- Parser now matches database schema constraints exactly
- Affects `parseObservations()` function used by worker service
### v4.2.5
**Breaking Changes**: None (patch version)
**Critical Bugfix**:
- Fixed overly defensive summary validation that was blocking summaries from being saved
- Removed validation check that returned null when any required fields were missing
- Summaries are now always saved when `<summary>` tags are present, even if fields are incomplete
- Prevents critical data loss - partial summaries are better than no summaries
- Database schema already supports null/empty values for all fields
**Impact**:
- Before: Missing a single field (e.g., `next_steps`) would cause entire summary to be discarded
- After: All summaries are preserved, maintaining session context even when incomplete
- This fix ensures continuity of the memory compression system
**Technical Details**:
- Updated `src/sdk/parser.ts:137-147` to remove blocking validation
- Parser now returns ParsedSummary with whatever fields are available
- Affects `parseSummary()` function used by worker service
### v4.2.4
**Breaking Changes**: None (patch version)
**Improvements**:
- Enhanced summary prompt clarity and reliability
- 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 Details**:
- Updated `src/sdk/prompts.ts` to remove `WHEN NOT TO SUMMARIZE` section
- Added footer text clarifying summaries track progress within ongoing sessions
- Changed request field prompt from "Use their original sentiment" to "Form a title that reflects the actual request"
- Affects both observation and summary prompt generation
### v4.2.3
**Breaking Changes**: None (patch version)
**Security**:
- Fixed FTS5 injection vulnerability in search functions
- Implemented proper double-quote escaping for FTS5 queries
- Added comprehensive test suite with 332 injection attack tests
- Affects: `search_observations`, `search_sessions`, `search_user_prompts` MCP tools
**Fixes**:
- Fixed ESM/CJS compatibility for getDirname function in src/shared/paths.ts
- Detects context using `typeof __dirname !== 'undefined'`
- Falls back to `fileURLToPath(import.meta.url)` for ESM modules
- Resolves path resolution issues across hook (ESM) and worker (CJS) contexts
- Fixed Windows PowerShell compatibility issue with SessionStart hook
- Replaced bash-specific test command `[` with cross-platform npm install command
- Hook now runs `npm install` with quiet flags (fast and idempotent when dependencies exist)
**Technical Details**:
- SessionSearch.ts now escapes double quotes in FTS5 queries: `query.replace(/"/g, '""')`
- Updated `plugin/hooks/hooks.json` SessionStart command to use standard shell syntax
- Changed from: `[ ! -d ... ] && cd ... && npm install && node ... || node ...`
- Changed to: `cd ... && npm install --prefer-offline --no-audit --no-fund --loglevel=error && node ...`
- Dependencies are installed in marketplace folder (parent of CLAUDE_PLUGIN_ROOT) where root package.json exists
- getDirname function now properly handles both CommonJS (__dirname) and ES modules (import.meta.url)
### v4.2.0
**Breaking Changes**: None (minor version)
**Features**:
- User prompt storage with FTS5 full-text search
- New `user_prompts` table stores raw user input for every prompt
- New `search_user_prompts` MCP tool enables searching actual user requests
- Automatic FTS5 indexing of all user prompts for fast retrieval
**Benefits**:
- Full context reconstruction from user intent → Claude actions → outcomes
- Pattern detection for repeated requests (identify when Claude isn't listening)
- Improved debugging by tracing from original user words to final implementation
- Historical search: "How many times did user ask for X feature?"
**Implementation**:
- Migration 10: Creates user_prompts table with FTS5 virtual table and sync triggers
- UserPromptSubmit hook now saves prompts using claude_session_id (available immediately)
- Citations use `claude-mem://user-prompt/{id}` URI scheme
### v4.1.0
**Breaking Changes**: None (minor version)
**Features**:
- Graceful session cleanup (marks complete instead of DELETE)
- Restored MCP search server from backup
- Updated dependencies (claude-agent-sdk 0.1.23, MCP SDK 1.20.1)
**Fixes**:
- `/clear` command now skips cleanup to prevent session interruption
- Session workers can finish pending operations naturally
### v4.0.0
**Breaking Changes**:
- Data directory relocated to `${CLAUDE_PLUGIN_ROOT}/data/`
- Fresh start required (no migration from v3.x)
- Worker auto-starts in SessionStart hook
**Features**:
- MCP Search Server with 8 specialized search tools
- FTS5 full-text search across observations, sessions, and user prompts
- Citation support with `claude-mem://` URIs
- HTTP REST API architecture with PM2 management
- Plugin data directory integration
**Changes**:
- Improved session continuity
- Enhanced error handling
- Better process cleanup
### Earlier Versions (v3.x)
- v3.9.17: MCP integration, hookSpecificOutput JSON format
- v3.7.1: SQLite storage backend
- Earlier: Mintlify documentation, statusline support
## Key Design Decisions
### Graceful Cleanup (v4.1.0)