5.1 KiB
5.1 KiB
Changelog
All notable changes to YAMS (Yet Another Memory System) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
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--querywhen a search term matches a command. - Fixed
--paths-onlysearch returning no results:pathsOnlyis 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
.gitcontents, even when not present in.gitignore. yams watchnow 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_mutexto work around Windows-specific issue withstd::mutex/std::condition_variableinteraction.
- ServiceManager now syncs
- 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_initiatepattern in DatabaseManager, ServiceManager, SearchEngineManager, and init_utils. This addresses TSAN data races in experimental channel implementations. - Replaced experimental
awaitable_operators(operator||) with stableasync_initiatepattern 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→ stableas_tuplein request_handler.
Added
- MCP
graphtool for knowledge graph queries (parity with CLIyams graph). - Snapshot-scoped graph version nodes with canonical roots and
observed_asedges. - 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
containsedges to improve dead-code analysis. - Graph CLI:
--dead-code-reportto 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_WEIGHTenv 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.