88 lines
5.1 KiB
Markdown
88 lines
5.1 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to YAMS (Yet Another Memory System) will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
- [SourceHut](https://sr.ht/~trvon/yams/): https://sr.ht/~trvon/yams/
|
|
|
|
## Archived Changelogs
|
|
- v0.7.x archive: docs/changelogs/v0.7.md
|
|
- v0.6.x archive: docs/changelogs/v0.6.md
|
|
- v0.5.x archive: docs/changelogs/v0.5.md
|
|
- v0.4.x archive: docs/changelogs/v0.4.md
|
|
- v0.3.x archive: docs/changelogs/v0.3.md
|
|
- v0.2.x archive: docs/changelogs/v0.2.md
|
|
- v0.1.x archive: docs/changelogs/v0.1.md
|
|
|
|
## [v0.7.11] - Unreleased
|
|
|
|
### Performance
|
|
- IPC latency reduced from ~8-28ms to ~2-5ms per request:
|
|
- Connection pool now reuses idle connections
|
|
- Replaced polling loop with async timer signaling
|
|
- Request-type-aware timeouts (5s/30s/120s for fast/medium/slow ops)
|
|
- Status retry delays reduced from 750ms to 175ms
|
|
- Config parsing cached per-process
|
|
- Async semaphore for connection slots
|
|
- Post-ingest throughput improvements:
|
|
- Dedicated worker pool for binary entity extraction to avoid starving metadata/KG work
|
|
- Post-ingest pollers drain queues with adaptive backoff instead of fixed 25-50ms sleeps
|
|
- Queue capacity honors configured post-ingest limits
|
|
- Post-ingest enqueue avoids long blocking backoff when queue is full
|
|
- Directory ingest batches post-ingest enqueues to reduce per-file overhead
|
|
|
|
### Fixed
|
|
- CLI now rejects multiple top-level subcommands (e.g., `yams search graph`) and suggests
|
|
using `--query` when a search term matches a command.
|
|
- Fixed `--paths-only` search returning no results: `pathsOnly` is now a CLI-only
|
|
display option rather than being sent to the daemon, which was causing the search
|
|
service to return paths in a different field that the daemon didn't read.
|
|
- Session watch auto-ingest now always ignores `.git` contents, even when not present
|
|
in `.gitignore`.
|
|
- `yams watch` now waits for the daemon to report ready before enabling auto-ingest
|
|
(configurable timeout).
|
|
- Indexing skips known build artifacts and package dependency/cache paths based on
|
|
magic number prune categories.
|
|
- Expanded magic-number prune patterns for build output directories and language-specific
|
|
caches (e.g., build/dist/target/.next/.pytest_cache).
|
|
- Doctor prune now advertises the git-artifacts category in CLI help/docs.
|
|
- Prune category detection now uses full file paths so git artifacts are detected.
|
|
- Doctor prune now shows a spinner while waiting for long-running daemon operations.
|
|
- Fixed ONNX model loading deadlock (EDEADLK code=36) on Windows:
|
|
- ServiceManager now syncs `embeddingModelName_` from PluginManager during model
|
|
provider adoption, enabling proper startup preload paths.
|
|
- ONNX plugin uses single-flight pattern to prevent concurrent model loading.
|
|
- Changed OnnxModelPool to use `std::recursive_mutex` to work around Windows-specific
|
|
issue with `std::mutex`/`std::condition_variable` interaction.
|
|
- Download CLI now attempts daemon-first execution (when simple options are used) and falls back
|
|
to local services on failure, reducing lock contention.
|
|
- Streaming responses now use a 30-second chunk timeout by default to prevent hangs when
|
|
processing stalls. Previously disabled (0ms default).
|
|
- Streaming backpressure: when queue overflows, the producer loop now stops immediately
|
|
instead of continuing to generate chunks that can't be sent.
|
|
- Add command now returns immediately for file paths instead of blocking on hash computation.
|
|
Hash is computed asynchronously during ingestion.
|
|
- Replaced experimental boost::asio channel APIs with stable `async_initiate` pattern in
|
|
DatabaseManager, ServiceManager, SearchEngineManager, and init_utils. This addresses
|
|
TSAN data races in experimental channel implementations.
|
|
- Replaced experimental `awaitable_operators` (operator||) with stable `async_initiate`
|
|
pattern in request_handler, SocketServer, daemon client files (asio_connection,
|
|
asio_transport, asio_connection_pool, daemon_client). Completes removal of all
|
|
experimental boost::asio APIs.
|
|
- Fixed `experimental::as_tuple` → stable `as_tuple` in request_handler.
|
|
|
|
### Added
|
|
- MCP `graph` tool for knowledge graph queries (parity with CLI `yams graph`).
|
|
- Snapshot-scoped graph version nodes with canonical roots and `observed_as` edges.
|
|
- Graph prune policy (configurable `daemon.graph_prune`) to keep latest snapshot versions.
|
|
- Integration coverage for snapshot versioning + pruning in EntityGraphService tests.
|
|
- Graph: file/path → symbol `contains` edges to improve dead-code analysis.
|
|
- Graph CLI: `--dead-code-report` to emit scoped isolated-node reports (src/include allowlist).
|
|
- Download CLI: progress streaming (human/json) via DownloadService callbacks.
|
|
- Benchmarks: ingestion throughput baseline config and repeatable workflow docs.
|
|
- Symbol-aware search ranking: symbol definitions now rank higher than usages in search
|
|
results. Configurable via `YAMS_SYMBOL_WEIGHT` env var (default 0.15).
|
|
- Zig language support in symbol extractor plugin: functions, structs/enums/unions,
|
|
fields, imports, and call expressions are now extracted from .zig files.
|