c5e68a17c8
* Refactor code structure for improved readability and maintainability * Add test results for search API and related functionalities - Created test result files for various search-related functionalities, including: - test-11-search-server-changes.json - test-12-context-hook-changes.json - test-13-worker-service-changes.json - test-14-patterns.json - test-15-gotchas.json - test-16-discoveries.json - test-17-all-bugfixes.json - test-18-all-features.json - test-19-all-decisions.json - test-20-session-search.json - test-21-prompt-search.json - test-22-decisions-endpoint.json - test-23-changes-endpoint.json - test-24-how-it-works-endpoint.json - test-25-contextualize-endpoint.json - test-26-timeline-around-observation.json - test-27-multi-param-combo.json - test-28-file-type-combo.json - Each test result file captures specific search failures or outcomes, including issues with undefined properties and successful execution of search queries. - Enhanced documentation of search architecture and testing strategies, ensuring compliance with established guidelines and improving overall search functionality. * feat: Enhance unified search API with catch-all parameters and backward compatibility - Implemented a unified search API at /api/search that accepts catch-all parameters for filtering by type, observation type, concepts, and files. - Maintained backward compatibility by keeping granular endpoints functional while routing through the same infrastructure. - Completed comprehensive testing of search capabilities with real-world query scenarios. fix: Address missing debug output in search API query tests - Flushed PM2 logs and executed search queries to verify functionality. - Diagnosed absence of "Raw Chroma" debug messages in worker logs, indicating potential issues with logging or query processing. refactor: Improve build and deployment pipeline for claude-mem plugin - Successfully built and synced all hooks and services to the marketplace directory. - Ensured all dependencies are installed and up-to-date in the deployment location. feat: Implement hybrid search filters with 90-day recency window - Enhanced search server to apply a 90-day recency filter to Chroma results before categorizing by document type. fix: Correct parameter handling in searchUserPrompts method - Added support for filter-only queries and improved dual-path logic for clarity. refactor: Rename FTS5 method to clarify fallback status - Renamed escapeFTS5 to escapeFTS5_fallback_when_chroma_unavailable to indicate its temporary usage. feat: Introduce contextualize tool for comprehensive project overview - Added a new tool to fetch recent observations, sessions, and user prompts, providing a quick project overview. feat: Add semantic shortcut tools for common search patterns - Implemented 'decisions', 'changes', and 'how_it_works' tools for convenient access to frequently searched observation categories. feat: Unified timeline tool supports anchor and query modes - Combined get_context_timeline and get_timeline_by_query into a single interface for timeline exploration. feat: Unified search tool added to MCP server - New tool queries all memory types simultaneously, providing combined chronological results for improved search efficiency. * Refactor search functionality to clarify FTS5 fallback usage - Updated `worker-service.cjs` to replace FTS5 fallback function with a more descriptive name and improved error handling. - Enhanced documentation in `SKILL.md` to specify the unified API endpoint and clarify the behavior of the search engine, including the conditions under which FTS5 is used. - Modified `search-server.ts` to provide clearer logging and descriptions regarding the fallback to FTS5 when UVX/Python is unavailable. - Renamed and updated the `SessionSearch.ts` methods to reflect the conditions for using FTS5, emphasizing the lack of semantic understanding in fallback scenarios. * feat: Add ID-based fetch endpoints and simplify mem-search skill **Problem:** - Search returns IDs but no way to fetch by ID - Skill documentation was bloated with too many options - Claude wasn't using IDs because we didn't tell it how **Solution:** 1. Added three new HTTP endpoints: - GET /api/observation/:id - GET /api/session/:id - GET /api/prompt/:id 2. Completely rewrote SKILL.md: - Stripped complexity down to essentials - Clear 3-step prescriptive workflow: Search → Review IDs → Fetch by ID - Emphasized ID usage: "The IDs are there for a reason - USE THEM" - Removed confusing multi-endpoint documentation - Kept only unified search with filters **Impact:** - Token efficiency: Claude can now fetch full details only for relevant IDs - Clarity: One clear workflow instead of 10+ options to choose from - Usability: IDs are no longer wasted context - they're actionable 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: Move internal docs to private directory Moved POSTMORTEM and planning docs to ./private to exclude from PR reviews. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Remove experimental contextualize endpoint - Removed contextualize MCP tool from search-server (saves ~4KB) - Disabled FTS5 fallback paths in SessionSearch (now vector-first) - Cleaned up CLAUDE.md documentation - Removed contextualize-rewrite-plan.md doc Rationale: - Contextualize is better suited as a skill (LLM-powered) than an endpoint - Search API already provides vector search with configurable limits - Created issue #132 to track future contextualize skill implementation Changes: - src/servers/search-server.ts: Removed contextualize tool definition - src/services/sqlite/SessionSearch.ts: Disabled FTS5 fallback, added deprecation warnings - CLAUDE.md: Cleaned up outdated skill documentation - docs/: Removed contextualize plan document 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Complete FTS5 cleanup - remove all deprecated search code This completes the FTS5 cleanup work by removing all commented-out FTS5 search code while preserving database tables for backward compatibility. Changes: - Removed 200+ lines of commented FTS5 search code from SessionSearch.ts - Removed deprecated degraded_search_query__when_uvx_unavailable method - Updated all method documentation to clarify vector-first architecture - Updated class documentation to reflect filter-only query support - Updated CLAUDE.md to remove FTS5 search references - Clarified that FTS5 tables exist for backward compatibility only - Updated "Why SQLite FTS5" section to "Why Vector-First Search" Database impact: NONE - FTS5 tables remain intact for existing installations Search architecture: - ChromaDB: All text-based vector search queries - SQLite: Filter-only queries (date ranges, metadata, no query text) - FTS5 tables: Maintained but unused (backward compatibility) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Remove all FTS5 fallback execution code from search-server Completes the FTS5 cleanup by removing all fallback execution paths that attempted to use FTS5 when ChromaDB was unavailable. Changes: - Removed all FTS5 fallback code execution paths - When ChromaDB fails or is unavailable, return empty results with helpful error messages - Updated all deprecated tool descriptions (search_observations, search_sessions, search_user_prompts) - Changed error messages to indicate FTS5 fallback has been removed - Added installation instructions for UVX/Python when vector search is unavailable - Updated comments from "hybrid search" to "vector-first search" - Removed ~100 lines of dead FTS5 fallback code Database impact: NONE - FTS5 tables remain intact (backward compatibility) Search behavior when ChromaDB unavailable: - Text queries: Return empty results with error explaining ChromaDB is required - Filter-only queries (no text): Continue to work via direct SQLite 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: Address PR 133 review feedback Critical fixes: - Remove contextualize endpoint from worker-service (route + handler) - Fix build script logging to show correct .cjs extension (was .mjs) Documentation improvements: - Add comprehensive FTS5 retention rationale documentation - Include v7.0.0 removal TODO for future cleanup Testing: - Build succeeds with correct output logging - Worker restarts successfully (30th restart) - Contextualize endpoint properly removed (404 response) - Search endpoint verified working This addresses all critical review feedback from PR 133. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 line
12 KiB
JSON
1 line
12 KiB
JSON
[{"type":"text","text":"## Build and sync claude-mem plugin to marketplace location\n*Source: claude-mem://observation/10758*\n\n**Built all hooks and services, synced to marketplace directory, and installed dependencies successfully.**\n\nThe claude-mem plugin was fully built and deployed to the marketplace directory. The build process compiled all React components, bundled the worker service and search server, and built each individual hook. The build script used scripts/build-hooks.js to generate production-ready bundles in the plugin/scripts/ directory. After building, rsync transferred all 11781 files to the marketplace directory at ~/.claude/plugins/marketplaces/thedotmack/, removing the .git directory and .install-version file in the process. The sync command used --delete flag to ensure the marketplace directory perfectly mirrors the development directory. Finally, npm install ran in the marketplace directory to ensure all dependencies are available for the deployed plugin.\n\n---\nType: change | Facts: Built claude-mem version 6.0.9 including React viewer, worker service, search server, and all hooks; Worker service built to 1338.75 KB, search server to 335.14 KB; Synced 11781 files from development directory to ~/.claude/plugins/marketplaces/thedotmack/; All hooks built successfully: context-hook (38.29 KB), new-hook (32.14 KB), save-hook (32.49 KB), summary-hook (34.61 KB), cleanup-hook (31.38 KB), user-message-hook (2.24 KB); Dependencies auto-installed in marketplace location after sync | Concepts: what-changed, how-it-works | Files: scripts/build-hooks.js, package.json, plugin/scripts/worker-service.cjs, plugin/scripts/search-server.mjs, plugin/scripts/context-hook.js, plugin/scripts/new-hook.js, plugin/scripts/save-hook.js, plugin/scripts/summary-hook.js, plugin/scripts/cleanup-hook.js, plugin/scripts/user-message-hook.js, plugin/ui/viewer-bundle.js, plugin/ui/viewer.html\n\n---\nDate: 11/17/2025, 11:51:51 PM\n\n---\n\n## Search API crashes with \"Cannot read properties of undefined (reading 'replace')\" error\n*Source: claude-mem://observation/10705*\n\n**9 of 12 failed tests show identical JavaScript error accessing undefined property, 3 show no results.**\n\nFresh test results reveal a critical JavaScript error in the search API. Nine tests crash with \"Cannot read properties of undefined (reading 'replace')\", indicating that some code is attempting to call .replace() on an undefined value. This error affects three distinct query categories: file-specific change queries (tests 11-13), concept-based queries (tests 14-15), and type-filtered queries (tests 16-19), plus multi-parameter file-type combinations (test 28). The pattern suggests that when the search API processes queries with file parameters, concept parameters, or type filters, it encounters an undefined value where it expects a string. The remaining three failures (tests 05, 08, 21) return clean \"No results found\" messages without crashing, indicating they may be legitimate empty result sets or different search code paths that don't trigger the bug.\n\n---\nType: discovery | Facts: 9 tests fail with error \"Cannot read properties of undefined (reading 'replace')\"; Tests 11, 12, 13 fail with replace error on file-specific change queries; Tests 14, 15 fail with replace error on concept-based queries for patterns and gotchas; Tests 16, 17, 18, 19 fail with replace error on type-filtered queries for discoveries, bugfixes, features, decisions; Test 28 fails with replace error on file-type combination query; Test 05 returns \"No results found matching 'PM2 instead of direct process'\" without crashing; Test 08 returns \"No results found matching 'worker service debugging'\" without crashing; Test 21 returns \"No results found matching 'build and deploy'\" without crashing; The replace error suggests undefined variable being passed to a string replace operation; All file-specific queries trigger the replace error; All concept-based queries trigger the replace error; All type-filtered queries trigger the replace error | Concepts: problem-solution, gotcha, pattern | Files: test-results/test-05-pm2-decision.json, test-results/test-08-worker-debugging.json, test-results/test-11-search-server-changes.json, test-results/test-12-context-hook-changes.json, test-results/test-13-worker-service-changes.json, test-results/test-14-patterns.json, test-results/test-15-gotchas.json, test-results/test-16-discoveries.json, test-results/test-17-all-bugfixes.json, test-results/test-18-all-features.json, test-results/test-19-all-decisions.json, test-results/test-21-prompt-search.json, test-results/test-28-file-type-combo.json\n\n---\nDate: 11/17/2025, 10:04:43 PM\n\n---\n\n## Fresh test results reveal 12 failing tests with empty or no results\n*Source: claude-mem://observation/10704*\n\n**28 search API tests show 16 successes and 12 failures, all failures return empty or no results.**\n\nAfter clearing old logs and running fresh tests, a summary analysis reveals significant issues with the search API. Out of 28 tests, 12 are failing by returning empty results or no results at all. The failures appear to cluster around specific query types: PM2 decision search, worker debugging troubleshooting, file-specific change queries (search-server, context-hook, worker-service), concept-based queries (patterns, gotchas), type-filtered queries (discoveries, bugfixes, features, decisions), user prompt search, and multi-parameter combinations involving files and types. The successful tests (16 total) all returned exactly one result each and cover semantic queries, some decision queries, some troubleshooting queries, session search, dedicated endpoint tests, timeline queries, and some multi-parameter tests. This pattern suggests potential issues with certain search filters, concept matching, or type filtering functionality in the search API.\n\n---\nType: discovery | Facts: 16 tests returned SUCCESS with results: tests 01, 02, 03, 04, 06, 07, 09, 10, 20, 22, 23, 24, 25, 26, 27; 12 tests returned FAIL/EMPTY with no results: tests 05, 08, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 28; Test 05 pm2-decision query failed to return results; Test 08 worker-debugging query failed to return results; Test 11 search-server-changes query failed to return results; Test 12 context-hook-changes query failed to return results; Test 13 worker-service-changes query failed to return results; Test 14 patterns concept query failed to return results; Test 15 gotchas concept query failed to return results; Test 16 discoveries type filter query failed to return results; Test 17 all-bugfixes type filter query failed to return results; Test 18 all-features type filter query failed to return results; Test 19 all-decisions type filter query failed to return results; Test 21 prompt-search query failed to return results; Test 28 file-type-combo multi-parameter query failed to return results; All successful tests returned exactly 1 result each | Concepts: problem-solution, pattern, how-it-works | Files: test-results/test-01-worker-service-startup.json, test-results/test-02-sqlite-fts5-implementation.json, test-results/test-03-hook-lifecycle-flow.json, test-results/test-04-build-pipeline-process.json, test-results/test-05-pm2-decision.json, test-results/test-06-search-architecture-decision.json, test-results/test-07-mcp-dry-decision.json, test-results/test-08-worker-debugging.json, test-results/test-09-hook-timeout.json, test-results/test-10-database-migration.json, test-results/test-11-search-server-changes.json, test-results/test-12-context-hook-changes.json, test-results/test-13-worker-service-changes.json, test-results/test-14-patterns.json, test-results/test-15-gotchas.json, test-results/test-16-discoveries.json, test-results/test-17-all-bugfixes.json, test-results/test-18-all-features.json, test-results/test-19-all-decisions.json, test-results/test-20-session-search.json, test-results/test-21-prompt-search.json, test-results/test-22-decisions-endpoint.json, test-results/test-23-changes-endpoint.json, test-results/test-24-how-it-works-endpoint.json, test-results/test-25-contextualize-endpoint.json, test-results/test-26-timeline-around-observation.json, test-results/test-27-multi-param-combo.json, test-results/test-28-file-type-combo.json\n\n---\nDate: 11/17/2025, 10:04:28 PM\n\n---\n\n## Build and Deployment Cycle Completed\n*Source: claude-mem://observation/10689*\n\n**Successfully built all hooks, worker service, search server, synced to marketplace, and restarted worker.**\n\nThe complete build and deployment cycle executed successfully for claude-mem version 6.0.9. The build process compiled all components including the React viewer bundle with associated assets, the worker service (1.3 MB), search server (333 KB), and six hooks ranging from 2-38 KB each. After building, rsync synchronized 11,781 files to the marketplace plugin directory and ran npm install to ensure dependencies were up to date. The worker was then restarted to load the new code. This deployment includes all the newly implemented unified search API features with catch-all parameters, preparing the system for comprehensive testing of the search endpoints.\n\n---\nType: change | Facts: Build process compiled React viewer bundle and HTML template with font assets and icon files; Worker service built to 1337.16 KB at plugin/scripts/worker-service.cjs; Search server built to 332.92 KB at plugin/scripts/search-server.mjs; All hooks built: context-hook (38.29 KB), new-hook (32.14 KB), save-hook (32.49 KB), summary-hook (34.61 KB), cleanup-hook (31.38 KB), user-message-hook (2.24 KB); Rsync transferred 11781 files to ~/.claude/plugins/marketplaces/thedotmack/ with npm install executed; Build version 6.0.9 deployed successfully | Concepts: how-it-works, what-changed | Files: plugin/ui/viewer-bundle.js, plugin/ui/viewer.html, plugin/scripts/worker-service.cjs, plugin/scripts/search-server.mjs, plugin/scripts/context-hook.js, plugin/scripts/new-hook.js, plugin/scripts/save-hook.js, plugin/scripts/summary-hook.js, plugin/scripts/cleanup-hook.js, plugin/scripts/user-message-hook.js\n\n---\nDate: 11/17/2025, 9:48:29 PM\n\n---\n\n## Build and Deployment of Unified Search API\n*Source: claude-mem://observation/10682*\n\n**Successfully built all hooks, worker service, and search server, then synced to marketplace and restarted worker.**\n\nThe unified search API implementation was successfully built and deployed. The build process generated all necessary components including the worker service, search server, and various hooks, with the search server weighing in at 332.97 KB. The React viewer UI was also compiled with all required assets. After building, the entire project (11,781 files) was synced to the Claude marketplace plugins directory using rsync, followed by npm install to ensure all dependencies were properly installed. Finally, the worker service was restarted to activate the new unified search endpoints. This deployment marks the completion of the unified search API architecture with its six public-facing endpoints and backward-compatible granular routing.\n\n---\nType: change | Facts: Build process compiled 8 components: worker-service (1337.16 KB), search-server (332.97 KB), context-hook (38.29 KB), new-hook (32.14 KB), save-hook (32.49 KB), summary-hook (34.61 KB), cleanup-hook (31.38 KB), and user-message-hook (2.24 KB); React viewer built successfully with viewer-bundle.js, viewer.html, font assets, and 4 icon SVG files; Project synced to ~/.claude/plugins/marketplaces/thedotmack/ using rsync with 11,781 files transferred; npm install executed in marketplace directory to ensure dependencies are current; Worker service restarted to activate the newly deployed unified search API endpoints | Concepts: what-changed, how-it-works | Files: plugin/scripts/worker-service.cjs, plugin/scripts/search-server.mjs, plugin/scripts/context-hook.js, plugin/scripts/new-hook.js, plugin/scripts/save-hook.js, plugin/scripts/summary-hook.js, plugin/scripts/cleanup-hook.js, plugin/scripts/user-message-hook.js, plugin/ui/viewer-bundle.js, plugin/ui/viewer.html\n\n---\nDate: 11/17/2025, 9:43:18 PM"}] |