# Changelog

All notable changes to this project will be documented in this file.

## Unreleased

### Changed

- Use the shared JSONL reader when reviewing pending suggestions.
- Bump `pi-qmd-adaptive-search` to 1.4.7 and pin Pi SDK development and smoke-test dependencies to 1.5.0 while preserving the public peer dependency range.
- Read only the scored prefix of each candidate file during fallback search instead of loading whole files. Content scoring was already bounded to 20,000 characters, so the bounded read returns identical scores while cutting bytes read on a large vault by about 4x.

### Added

- `npm run bench:fallback` measures the fallback walk-and-score hot path on a generated fixture.

### Fixed

- Adapt Pi extension command registrations to the SDK 1.1.0 `void` handler contract.

## [1.4.5] - 2026-11-02

### Fixed

- Read Pi SDK smoke-test versions from the exact development dependency pins.

## [1.4.1] - 2026-09-30

### Changed

- Update `@earendil-works/pi-*` dependencies to `0.99.1`.

## [1.4.0] - 2026-09-23

### Added

- Support opt-in external qmd collections through `collectionRoots` in project configuration (#54, #65), including snippets and collection-relative include/exclude globs. Local fallback remains project-only.

### Fixed

- Reject traversal and symlinks escaping configured collection roots.
- Resolve external result paths correctly across Windows volumes.

## [1.3.1] - 2026-08-22

### Changed

- Merge the 2026-08-22 managed OSS dependency and maintenance PR batch.

## [1.3.0] - 2026-08-09

### Added

- Add side-effect-free `search --read-only` for evidence compilers and CI callers.
- Read-only search consumes existing adaptive aliases and boosts without creating
  config, changing `.gitignore`, recording qmd jobs, or storing recent-search anchors.

### Changed

- Add Buy Me a Coffee sponsor button to README and native GitHub funding link via `.github/FUNDING.yml`.
- Add GitHub issue templates (bug report, feature request) and pull request template linked from CONTRIBUTING.md.

## [1.2.3] - 2026-08-04

### Changed

- Bump package version for the Discord release webhook verification.

## [1.2.2] - 2026-07-05

### Added

- Add CODE_OF_CONDUCT.md (Contributor Covenant v2.0) for OSS contributor standards.
- Add Dependabot configuration (`.github/dependabot.yml`) for automated npm and GitHub Actions dependency updates.

### Changed

- Update `@types/node` devDependency from `^25.9.1` to `^25.9.4`.

## [1.2.0] - 2026-06-22

### Added

- Maintainer cleanup workflow via `qmd-adaptive-search maintain` and `/qmd-a:maintain` / `/qmd-a:maintain-run` for resetting polluted local learned aliases, learned boosts, and stale pending suggestions without hand-editing files under `.qmd-adaptive-search/local/`.
- Explicit confirmation (`--yes` or interactive prompt) before destructive cleanup, plus dry-run plans and post-cleanup status counts aligned with diagnosis bucket vocabulary.
- Tests for cleanup behavior, confirmation boundaries, and shared-state safety.

### Changed

- Diagnosis recovery guidance now points maintainers to the maintenance workflow instead of manual JSON edits when learned state is polluted.

## [1.1.3] - 2026-06-19

### Changed

- README release docs now describe OIDC Trusted Publishing only; removed legacy token publish fallback instructions.

## [1.1.2] - 2026-06-17

### Added

- Ranking guardrails that ignore low-information learned alias keys, filter generic learned alias values, and soft-cap learned boosts so polluted local state cannot dominate unrelated searches.
- Regression tests for polluted learned state and informative learned alias success cases.
- Maintainer documentation for ranking guardrail behavior and tuning points in `src/ranking-guardrails.ts`.

## [1.1.1] - 2026-06-09

### Changed

- Release hygiene: complete `CHANGELOG.md` coverage for the safe-output slices (compact tool output, snippet-safe defaults, background job summary, and output contract docs) and align `[1.1.0]` release notes with `package.json`.

## [1.1.0] - 2026-06-08

### Added

- `/qmd-a:configure` now opens a Pi TUI preset picker for `docs`, `mixed`, `code`, and `privacy` when no argument is supplied.

### Changed

- README now presents `qmd-a:*` colon slash commands as the primary Pi UX and labels CLI flag forms as script/headless usage.

## [1.0.1] - 2026-06-06

### Added

- Maintainer-facing diagnosis pass (`diagnosis` field in `qmd_adaptive_status` output) that surfaces learned alias pollution, learned boost pollution, pending suggestion backlog, missing embeddings, and search history health in one summary.
- Recovery guidance for each diagnosis bucket, pointing maintainers to the next safe action.
- Search history diagnosis distinguishes current completed searches from stale failed/fallback history.
- Exported `diagnoseSearchQuality()` from the library API for programmatic access.

### Changed

- Document the safe search output contract: Pi tool path-first default, snippet omission, output caps, and `qmd_adaptive_status` for verbose background job details.

## [1.0.0] - 2026-06-04

### Breaking Changes

Removed deprecated Pi slash commands that were kept for one release after `0.3.0`. Use the `qmd-a:*` colon commands instead:

| Removed | Use instead |
| --- | --- |
| `/qmd-adaptive-init` | `/qmd-a:init` |
| `/qmd-adaptive-status` | `/qmd-a:status` |
| `/qmd-adaptive-review` | `/qmd-a:review` |
| `/qmd-adaptive-review approve` | `/qmd-a:approve` |
| `/qmd-adaptive-configure <preset>` | `/qmd-a:configure` |
| `/qmd-adaptive-install-qmd` | `/qmd-a:install` |
| `/qmd-adaptive-qmd-setup` | `/qmd-a:setup` |
| `/qmd-adaptive-qmd-setup --yes` | `/qmd-a:setup-run` |
| `/qmd-adaptive-qmd-update` | `/qmd-a:update` |
| `/qmd-adaptive-qmd-update --yes` | `/qmd-a:update-run` |
| `/qmd-adaptive-qmd-embed` | `/qmd-a:embed` |
| `/qmd-adaptive-qmd-embed --yes` | `/qmd-a:embed-run` |

CLI subcommands (`qmd-adaptive-search init`, `review --approve`, etc.) and the `.qmd-adaptive-search/` config directory are unchanged.

### Changed

- `adaptiveSearch` and `qmd_adaptive_search` return a compact `backgroundJobStatus` summary instead of verbose `backgroundJobs` arrays; full job objects and recovery hints remain available via `qmd_adaptive_status`.

## [0.3.2] - 2026-06-03

### Changed

- `qmd_adaptive_search` Pi tool now returns compact, path-first text by default instead of a pretty-printed JSON dump of the full search payload.
- Default Pi tool output omits per-result `lead` and `highlights` (snippet-safe path discovery mode).
- Tool `details` keeps lightweight `resultPaths` and per-result metadata for `qmd_search_feedback` without duplicating snippets or highlights.
- `maxResults` is hard-capped at `30` even when callers or config request more.

## [0.3.1] - 2026-06-02

### Fixed

- Added an explicit auto-release to publish workflow handoff so npm publishing runs after a version bump is merged to `main`.
- Bumped package metadata to publish a fresh npm version after the previously tagged `0.3.0` release did not reach npm.

## [0.3.0] - 2026-06-02

### Added

- Pi slash commands under the `qmd-a:*` namespace (`init`, `status`, `review`, `approve`, `configure`, `install`, `setup`, `setup-run`, `update`, `update-run`, `embed`, `embed-run`).
- Dedicated `/qmd-a:approve` command separate from `/qmd-a:review`.

### Changed

- Extension command registration moved to `src/extension-commands.ts` for testability.

### Deprecated

- Legacy `qmd-adaptive-*` hyphen commands remain registered for one release as compatibility aliases (including `approve` on `qmd-adaptive-review` and `--yes` on `qmd-adaptive-qmd-*`).

## [0.2.1] - 2026-06-02

### Changed
- Refresh README badges and sections to match the minimal docs policy.
- Document usage summary, package contents, security, and links.

## [0.2.0] - 2026-05-26

### Added
- qmd operation planning helper.
- qmd job state recording.
- Test coverage for qmd detection and fallback search.
- Feedback sharing guide documentation.
- Automated npm publishing CI workflow.
- Updated package publish workflow.

## [0.1.0] - 2026-05-21

### Added

- Initial CLI package scaffold.
- `search` command with qmd integration and fallback filename/content search.
- `feedback` command for local learned aliases and path boosts.
- `status` command for config, qmd, aliases, boosts, pending suggestions, and job state.
- `init` command for lightweight zero-config bootstrap.
- `configure` command with `docs`, `mixed`, `code`, and `privacy` presets.
- `review` command to inspect and promote pending suggestions into shared aliases/boosts.
- `install-qmd` helper command with explicit user confirmation.
- Node.js library API.
- TypeScript source/build pipeline.
- Pi package metadata and TypeScript extension entrypoint.
- Privacy-preserving local storage model.
- Node test coverage for search, feedback, and status.

### Notes

- MVP does not yet perform full qmd collection setup/update/embed orchestration.
- Background jobs are represented in status shape but not fully implemented.
