merge: develop β main v0.13.2 - #998
Merged
Merged
Conversation
* feat: add update check to all surfaces (CLI, MCP, HTTP) Move update-check logic from uteke-cli to uteke-core so all three runtime surfaces share one code path. Each surface now notifies users when a newer version is available. Core (uteke-core/src/update_check.rs): - UpdateInfo struct with is_update_available() + banner() - check_cached(): instant cache lookup (24h TTL) - check_network(): blocking GitHub fetch, updates cache - check(): cached first, falls back to network - check_and_notify(): prints banner to stderr if update available - Cache file: ~/.config/uteke/update-cache.json - Primary: GitHub 302 redirect (no API rate limit) - Fallback: GitHub REST API - 5 unit tests for version comparison + banner formatting MCP server: - Spawn detached background thread at startup - Writes to stderr (MCP uses stdout for JSON-RPC) - Uses check() which tries cache first HTTP server: - Background thread: check on startup + every 24h - Logs via warn! for structured log visibility - /health endpoint gains update_available field (from cache) - Periodic loop respects SHUTDOWN flag (hourly wake for fast exit) CLI (thin wrapper): - Calls uteke_core::update_check::check_cached/check_network - Respects update_check = false from uteke.toml (CLI-only config) Tests: 479 pass, 0 fail, 0 warnings, 0 clippy errors * fix: HTTP update check cache-first + regenerate API docs - HTTP server update thread now tries cache before hitting network - Regenerate docs/api-reference.md for new update_available field * fix: use REPO constant for redirect URL parsing (cora review) Avoid hardcoded repo path in strip_prefix β use format! with REPO constant so it stays in sync if the repo path ever changes. --------- Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
Root cause: load_all() returned rows with NULL embedding blobs, which row_to_memory() silently converted to vec![]. When these reached index.build(), the dimension validator rejected them (0 != 768), crashing the server on startup and blocking repair_index. Fix applied at two levels: - SQL level: load_all() now filters 'WHERE embedding IS NOT NULL' - Call sites: lib.rs and maintenance.rs add .filter(|m| !m.embedding.is_empty()) as defense-in-depth guard before index.build() Added regression test: test_load_all_excludes_null_embeddings Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
* chore: update messaging hierarchy, install URL, banner & logo - Tagline: 'Give your AI a memory...' β 'One memory. Every agent. Zero cloud.' - Subtitle: add MCP compatibility mention (Claude, Cursor, Copilot) - Install: codecora.dev/install β codecora.dev/uteke/install (3 locations) - Docs hero: sync tagline + OG meta to new messaging - Banner: new neural-network logo, updated tagline + install command - Favicon: redesigned as memory graph icon (amber on dark) * revert: roll back banner PNG and favicon SVG (assets not final) Text changes (tagline, install URL, descriptions) remain. Binary assets will be updated in a follow-up PR. --------- Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
* fix(core): handle absolute URLs in update check redirect parser GitHub 302 redirects return absolute URLs (https://github.com/codecoradev/uteke/releases/tag/v0.13.1), not relative paths. The previous strip_prefix('/codecoradev/...') always failed on absolute URLs, falling through to the rsplit fallback which required a 'v' prefix. Fix: use find() to locate the tag marker anywhere in the URL, and relax the rsplit fallback to accept any non-empty tag. Found by Cora Code review on PR #990. * fix(core): use split_once for UTF-8 safe URL parsing in update check Cora finding: byte-indexed slicing (&loc[idx+len..]) could panic on non-char-boundary if Location header contains multi-byte UTF-8. Replace with split_once() β idiomatic, zero-cost, UTF-8 safe. --------- Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
β¦#996) Add --min 0.0 to recall command to evaluate raw retrieval ranking without CLI default threshold (0.3) filtering relevant results. Also document threshold chain inconsistency: - CLI default: 0.3 (from config [recall] min_score) - HTTP API default: 0.0 (DEFAULT_MIN_SCORE constant) - MCP default: 0.0 This caused 8/500 false negatives in Oracle benchmark because relevant sessions scoring 0.30-0.40 were silently filtered. Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
Version bump 0.13.1 β 0.13.2 + CHANGELOG. Changes since v0.13.1: - feat: update check (CLI, MCP, HTTP) (#990) - fix: NULL embeddings crash vector index (#992, #993) - fix: absolute URL in update check redirect (#994) - fix: LongMemEval benchmark threshold false negatives (#995, #996) - chore: branding refresh (#991) Co-authored-by: ajianaz <ajianaz@users.noreply.github.com>
π Cora AI Code ReviewReview powered by cora-code Β· BYOK Β· MIT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Sync develop β main for v0.13.2 release.
Why
All changes since v0.13.1 have been merged to develop and CI-verified. This PR promotes them to main for tagging.
Changes
All commits from v0.13.1..develop (5 commits):
Testing
CI will run full suite on this PR.