# v7.0.0 — Observability, Hybrid Search & Breaking Env Cleanup

> **⚠️ Breaking Change**: The `GITHUB_REPO_PATH` environment variable has been removed. Migrate to `PROJECT_REGISTRY` for multi-project workspace configuration.

## Highlights

- **Hybrid Search (RRF)**: Reciprocal Rank Fusion fuses FTS5 and semantic results with heuristic query classification — exposing `searchMode` so callers know which path was taken.
- **AuditLogger + Observability**: Async JSONL audit logging with rotating archives, redaction, interceptor hooks and two new resources: `memory://audit` and `memory://metrics/*`.
- **Token Awareness**: `_meta.tokenEstimate` injected into responses for context budget management.
- **Dynamic Coverage Badges**: `scripts/update-badges.ts` auto-updates `README.md` and `DOCKER_README.md` badges after every `vitest run --coverage`.
- **Search Metadata Filters**: Fixed omitted `tags`, `entry_type`, `start_date`, and `end_date` filters in the FTS and Hybrid search pipelines.

## Added

- Playwright E2E observability testing for `/metrics` and `/audit` resources.
- Hybrid Reciprocal Rank Fusion (RRF), heuristic query classification, and exposed `searchMode` for `search_entries`.
- Dynamic Vitest coverage badge generation via `scripts/update-badges.ts`.
- Direct `entry_id` bypass and metadata filters for semantic search tools.
- Token estimation and `_meta.tokenEstimate` injection for context awareness.
- Async JSONL `AuditLogger` with rotating archives, redaction, interceptor hooks, and observability resources (`memory://audit`, `memory://metrics/*`).
- Categorized placeholders in `.env.example` and `mcp-config-example.json`.

## Changed

- Modularized `search.ts` into folder-based handlers.
- Reduced `DOCKER_README.md` size to comply with Docker Hub constraints.
- Refactored `.mjs` testing files into modular suites.
- Restructured `test-errors.md` into domain checklists.
- Expanded CodeMode exception bounding in `suggestions.ts`.
- Updated core dependencies: `typescript` 6.0.2, `@playwright/test` 1.59.1, `eslint` 10.2.0, `vitest` 4.1.3, `@vitest/coverage-v8` 4.1.3 (11 packages total).
- Updated `README.md` benchmark figures to display ranges reflecting run-to-run variance.

## Removed

- **BREAKING**: `GITHUB_REPO_PATH` environment variable — use `PROJECT_REGISTRY` instead.
- Experimental `dependency-maintenance` and `auto-release` CI workflows.

## Fixed

- Interceptor schemas incorrectly failing with `-32602` validation errors.
- `callTool()` progress-token path bypassing interceptors.
- GitHub context data bleeding across shared helpers and faulty early returns in registries.
- GitHub cache fallback loop failing to resolve missing repository info in `issueUrl`.
- Missing error boundary parsing in CLI `PROJECT_REGISTRY` handlers.
- Base URI template parsing converting `{repo}` to `{+repo}` in `@modelcontextprotocol/sdk`.
- Omitted metadata filters (`tags`, `entry_type`, `start_date`, `end_date`) in `search_entries` FTS and Hybrid pipelines.
- Missing `entry_id` query support in `team_semantic_search`.
- `VectorSearchManager` caching a closed database connection, causing index rebuild failures.
- Silent database synchronization failures from incorrect `fts_content_docsize` shadow table queries.
- ISO 8601 payload formatting for GitHub milestones.
- Markdown rendering issues in agent instructions.
- Prioritization bug where server instructions overshadowed dynamic briefing resolution.
- Misleading "Could not detect repository" hint for multi-project users.
- Documentation mismatch on total resource count.
- GitHub CI badge workflow targets.
- Test suite stability: Zod validation gaps, random string generation crashes, and mock injection errors.

## Security

- Pinned `minimatch` to `10.2.5` to resolve transitive vulnerabilities.
- Updated container base image to `node:24.14.1-alpine`.
- Overrode `vite` to `^8.0.5` to patch path traversal vulnerabilities.
- Bumped CodeQL and TruffleHog GitHub Actions versions.

---

**Full diff**: [v6.3.0...v7.0.0](https://github.com/neverinfamous/memory-journal-mcp/compare/v6.3.0...v7.0.0)

**Install**:

```bash
npx memory-journal-mcp@7.0.0
# or
docker pull writenotenow/memory-journal-mcp:v7.0.0
```
