Skip to content

v1.2.0

Choose a tag to compare

@panjieke panjieke released this 11 Jun 19:23
· 10 commits to main since this release

Added

  • Feedback vault collection: New feedback/ folder with vault_feedback and vault_list_feedbacks MCP tools plus REST endpoints, capturing user/agent feedback on vault quality with status and related_paths.
  • Microsoft Teams notifications: Optional TEAMS_WEBHOOK_URL posts an adaptive card after each new feedback note; optional TEAMS_APP_BASE_URL adds a "View in Cortex" link.
  • Daily activity log: Every vault_write, vault_ingest, and successful compile is mirrored into daily/<UTC-date>.md as a greppable ## [HH:MM] event | summary entry with a [[wiki-stem]] wikilink. Writes to daily/, feedback/, and .cortex/ are excluded to avoid self-reference.
  • Folder-based node typing: Files under agents/, sessions/, and daily/ are classified as AGENT_DEF, SESSION, and the new NodeType.DAILY without requiring a filename suffix. Frontmatter type: and the existing .agent.md/.session.md suffixes still take precedence/work.
  • Configurable search tuning: CORTEX_QMD_CACHE_TTL_SECONDS (result-cache TTL, default 30s) and CORTEX_QMD_SEARCH_TIMEOUT_SECONDS (search request timeout, default 120s).

Changed

  • Default search mode is now hybrid (was keyword). Clients that don't pass an explicit mode now get the best-quality BM25 + vector + re-ranking results. Set CORTEX_QMD_SEARCH_MODE=keyword to restore the previous fast-but-shallow default. Latency is mitigated by the result cache and the HTTP QMD container.

Fixed

  • QMD container returned no results: The image installed qmd via npm install -g ., which created a global symlink into a build directory deleted in the same layer — leaving a dangling qmd binary so every search failed with spawn qmd ENOENT and silently returned []. Now installed from a packed tarball with a build-time qmd --version smoke check.
  • Hybrid searches silently truncated: QMD HTTP searches hit a hardcoded 30s timeout on CPU-only hosts and returned [] while QMD was still working. Timeout is now configurable (default 120s).
  • Cached search failures: Empty result sets (transport errors/timeouts) are no longer cached, preventing a transient failure from blanking search for the full cache TTL.

Performance

  • Memoized QMD path index: build_path_index_from_graph is cached per graph mutation and no longer rebuilt on every search/read.
  • Non-blocking reads: vault_read offloads note parsing to a thread so concurrent MCP requests no longer serialize behind file I/O.