Releases: codecoradev/cora-code
Release list
Release v0.13.0
What's New in v0.13.0
Added
- Runtime embedding backend selection. Brain Mode now reads
brain.embeddingfrom.cora.yamlto select the embedding backend at runtime instead of compile time. Supported values:auto(best available — default),hashing(force 256d zero-dependency),pretrained(force 768d nomic). No recompilation needed to switch. - Incremental per-symbol embedding.
embed_project()now tracks anembed_fingerprint(hash of symbol name + signature) and skips re-embedding symbols that have not changed since the last index. On large projects, re-indexing after touching one file embeds only the changed symbols instead of all. - Schema migration v7. Adds
embed_fingerprint TEXTcolumn to thesymbolstable for incremental embedding tracking. Auto-migrates on first run; existing indexes are upgraded transparently. Backendenum +resolve_backend()inembedmodule. Clean runtime dispatch withOnceLockcaching, graceful fallback when a requested backend is not compiled, andactive_dims()/active_provider_name()helpers.BrainConfig+BrainEmbeddingModein config schema. Newbrainsection in.cora.yamlwithembeddingfield. IncludesDisplay,FromStr, andserdeimpls for CLI and YAML ergonomics.
Changed
embed_code_dispatch()now checksACTIVE_BACKENDat runtime. Previously selected via#[cfg]at compile time only. Falls back to compile-time default ifresolve_backend()was never called (lazy resolution).cora index,cora brain,cora watchall resolve embedding backend on startup. Each command loads.cora.yaml, readsbrain.embedding, and callsresolve_backend()before touching the vector index.- Embedding doc comments updated. Module-level docs now describe runtime selection and the three-tier architecture (hashing → pretrained → ONNX future).
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.13.0.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.13.0.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.13.0.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.13.0.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.12.0
What's New in v0.12.0
Fixed
- FTS5 returning 0 results for camelCase queries (#451). Added
filecolumn to FTS5 virtual table (schema v6),split_camel_case()identifier decomposition, and OR query expansion. Searches likefindUsernow correctly match viafind OR user. - Dead-code false positives on framework entry points (#452). Added
FRAMEWORK_ENTRY_PREFIXESwith SQL LIKE pattern matching for common framework handlers (handle_*,on_*,route_*, etc.) — these are no longer flagged as dead code. - Symbol-level suppression markers (#452). Symbols containing
// cora: keepin their body are excluded from dead-code detection. - Sticky skip files on config change (#453). Added
index_config_hashcolumn to projects table — when.cora.yamlchanges, previously skipped files are re-evaluated instead of permanently skipped.
Added
entry_point_patternsconfig field — New field inAnalysisConfigand.cora.yamlanalysissection. Custom list of glob patterns for framework-specific entry points beyond built-in defaults.- Schema migration v6 — Auto-migration: adds
index_config_hashto projects, drops and recreates FTS5 withfilecolumn, rebuilds search index. index_project_with_skip()— Indexing now respectsindex_skip_filesfrom config, skipping non-code files during symbol extraction.split_camel_case()— DecomposescamelCaseIdentifiersinto individual tokens for FTS5 search (camelCase→camel OR case).- Enhanced
sanitize_fts_query()— Handles quoted phrases, trims whitespace, and escapes special FTS5 characters. - 31 new unit tests — Tests for camelCase splitting, FTS5 query expansion, glob matching, suppression markers, framework prefix detection, schema migration v6, and config hash invalidation.
Changed
should_skip_file()rewritten — Simplified glob matching with early exit for non-glob patterns, explicit**/namebranch handling.- Governance documentation — Added CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, PR template, issue templates (bug report + feature request), and PR checks workflow (branch naming, conventional commits, PR description validation).
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.12.0.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.12.0.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.12.0.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.12.0.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.11.1
What's New in v0.11.1
Fixed
- Index scanner false positives on entry-point files. Added
index_skip_filesglob patterns toRulesConfig. Common bundler config files (vite.config.ts,webpack.config.*) and app entry points (src/main.ts,src/index.tsx) are now skipped by default — reducing noise from imports used by bundlers, not code. cora scannow includes index findings. Fixed bug wherecora scandid not wire index scanners (unused imports, dead code) — the scan command now runsscan_project_index()to produce deterministic findings alongside LLM analysis.- Error fallback preserves index findings. When LLM review fails, the fallback path now includes all index-based findings instead of silently dropping them.
Added
index_skip_filesconfig field — New field inRulesConfigand.cora.yamlrules_enginesection. Supports simple glob patterns (*.config.ts,vite.config.*,**/main.ts). Configurable per-project.should_skip_file()helper — Glob matching utility for index scanner file filtering.- 8 new unit tests — Tests for
should_skip_file()covering exact match, wildcard suffix/prefix,**/patterns, and default skip list validation.
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.11.1.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.11.1.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.11.1.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.11.1.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.10.0
What's New in v0.10.0
Highlights
- Dead code detection.
cora dead-codefinds functions/methods with no callers using call graph analysis. Available as both CLI command and MCP tool (cora.dead_code). - Graph query DSL.
cora query "main -> *"lets you traverse the code graph with simple patterns — no SQL needed. Available as both CLI and MCP (cora.query). - Auto-config agent installer.
cora installdetects installed AI coding agents (Cline, Cursor, Windsurf, etc.) and configures Cora as their MCP server. One command setup. - Background reindex on serve.
cora servenow auto-reindexes the current project before starting the MCP server — always up-to-date symbols. - Tree-sitter is now a default feature. The
edgestable (IMPORTS, IMPLEMENTS, INHERITS, CHILD_OF) now populates correctly in all builds, including release binaries.
Added
cora dead-codeCLI command (#427). Detect dead functions/methods with--include-tests,--min-lines, and--jsonflags.cora.dead_codeMCP tool (#428). Same dead code detection, accessible via Model Context Protocol.cora queryCLI command (#435). Simple graph traversal DSL:"symbol -> *"(callees),"* -> symbol"(callers),"SymbolName"(symbol lookup).cora.queryMCP tool (#435). Same query DSL via MCP.cora installCLI command (#431). Auto-detect 40+ AI coding agents and configure Cora MCP with one command. Supports--list,--dry-run,--agents,--force.cora.installMCP tool (#431). Same install detection via MCP.cora servewith auto-reindex (#434).cora serveruns incremental reindex on startup before launching MCP server.- Agent config module (#432). Read/write support for JSON, JSONC, and YAML agent configuration files.
Changed
- Tree-sitter is now a default feature (#429).
default = ["tree-sitter"]in Cargo.toml. All builds (including release) now include AST-based extraction. - Release workflow explicitly builds with
--features tree-sitter. - CI workflow explicitly builds/tests with
--features tree-sitter. - MCP tool count increased from 16 to 18 tools.
Fixed
edgestable was always empty (#429). Root cause: tree-sitter feature was not enabled by default, so AST extraction (which produces IMPORTS, IMPLEMENTS, INHERITS, CHILD_OF edges) was never compiled into release binaries. Now fixed — 352+ edges populated on rebuild.
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.10.0.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.10.0.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.10.0.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.10.0.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.9.0
What's New in v0.9.0
Highlights
- Single source of truth. Review findings, scan findings, and tech debt snapshots now persist to
cora.db— one global database, no more scattered file snapshots. - Massive indexing speedup. Rayon-parallel extraction + embedding, batch SQLite writes, PRAGMA tuning, and mtime:size fingerprinting deliver 52× faster incremental indexing (414ms → 6ms) and 1.3× faster cold rebuild (1,260ms → 936ms).
cora findingsCLI. Track, filter, dismiss, and reopen findings across all your reviews.
Added
- Persist review & scan findings to
cora.db(#397, #398).cora reviewandcora scannow save findings (severity, file, line, title, fingerprint) to the global database. Best-effort logging — never blocks the review pipeline on DB errors. - Auto-resolve stale findings (#399). When a new review/scan completes, findings from prior reviews that no longer appear are automatically marked
resolvedwith anauto_resolvedevent. Findings that reappear stayopen. cora findingsCLI command (#400). New subcommand with four actions:cora findings list— show open findings (use--all,--severity,--file,--jsonfor filtering)cora findings stats— summary counts with resolution rate (--jsonsupported)cora findings dismiss <id>— mark as won't-fix with optional--reasoncora findings reopen <id>— reopen a dismissed/resolved finding
- Migration v5 schema (#396). New tables:
reviews,findings,finding_events. Auto-migrates on first run. cora index --rebuildflag. Drop and re-index from scratch — useful for schema upgrades or corrupted indices.- Rayon parallel processing (#409, #422). File extraction and embedding computation now run in parallel across CPU cores via Rayon.
- Cache vector index in memory (#407).
VECTOR_CACHE(LazyLock) keeps the usearch HNSW index hot in memory — eliminates file I/O on every brain search. - Batch symbol lookup in RRF fusion (#410). Brain search now batches DB lookups instead of per-result queries.
- SQLite PRAGMA tuning (#406).
journal_mode=WAL,synchronous=NORMAL,mmap_size=256MB,cache_size=-64MBfor faster writes. - Batch INSERT via multi-row VALUES (#405). Symbol insertion now uses multi-row
INSERT ... VALUES (?,?,?),(?,?,?),...instead of per-row inserts. - Batch transaction for
index_project(#404). All symbol/edge insertions wrapped in a singleBEGIN IMMEDIATE ... COMMIT. - Disable FTS5 triggers during bulk indexing (#411). Triggers re-enabled after commit — avoids redundant index updates mid-batch.
- Mtime:size fingerprinting. Replaces SHA256 content hashing for change detection. Trade-off:
--rebuildavailable for full re-validation.
Changed
cora debtreads fromcora.dbas primary source (#403). File snapshots are now fallback only. DB is the single source of truth for tech debt reports.graph.dbrenamed tocora.db(#395). Auto-migrates existinggraph.dbon first run.db_writermodule now exposesopen_db_for_read(),open_db_for_write(), andcompute_fingerprint_pub()for use by the findings CLI.
Performance
Benchmarked on the cora-code repository (1,864 symbols, 115 Rust files, x86_64):
| Operation | Before (v0.8.3) | After (v0.9.0) | Speedup |
|---|---|---|---|
| Cold index (full rebuild) | ~1,260ms | ~936ms | 1.3× |
| Incremental (no changes) | ~414ms | ~6ms | 52× |
| Brain search (hybrid) | ~250ms | ~5ms | 40× |
Fixed
cora brainvector search filtered by project_id (#382). Over-fetches from global usearch index, filters at DB layer — prevents cross-project noise.- Project root detection (#380). Walks up from CWD to find
.cora.yaml/Cargo.toml/.gitinstead of always using CWD.
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.9.0.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.9.0.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.9.0.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.9.0.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.8.3
What's New in v0.8.3
Added
- Svelte AST symbol indexing.
cora indexwith--features tree-sitternow extracts functions, arrow functions, and types from<script>blocks in.sveltefiles. Uses TypeScript/JavaScript grammar delegation — zero new dependencies. Supportslang="ts"andlang="js"attributes with correct line number offsets. Closes #384. - TypeScript arrow function extraction.
export const handler = () => {}andconst cb = function() {}are now captured as symbols with call edges. Previously only ALL_CAPS constants were indexed fromlexical_declaration/variable_declarationnodes.
Fixed
- Project root detection for scoped queries (#380, #382).
resolve_project_root()now walks up from CWD to find.cora.yaml,Cargo.toml, or.gitinstead of always using CWD. Fixescora brainandcora callersreturning results from wrong projects. - Vector search filtered by project_id (#382).
brain_search()now over-fetches from the global usearch index and filters by project_id at the DB layer, preventing cross-project noise in results. - Cross-project fallback for
cora callers(#381). When a symbol has no callers in the current project, falls back to searching across all projects in the global index. - Partial JSON recovery for scan results (#383).
extract_partial_json_objects()added as last-resort fallback when LLM returns truncated JSON arrays in scan output.
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.8.3.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.8.3.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.8.3.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.8.3.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.8.2
What's New in v0.8.2
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.8.2.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.8.2.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.8.2.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.8.2.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.8.1
What's New in v0.8.1
Fixed
- crates.io publish (503 transient on v0.8.0)
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.8.1.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.8.1.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.8.1.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.8.1.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-code/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-code/blob/main/CHANGELOG.md
Release v0.7.0
What's New in v0.7.0
Highlights
- Deeper, token-economical cross-file review. Reviews now resolve who calls the changed code (inbound / blast-radius), not just what the changed code calls — so breaking signature/type changes can be flagged. Bounded scanning + thin slices + a signature-only budget fallback keep token cost low.
- Config is now validated at load time. Out-of-range values (e.g.
temperature: 5) and misspelled keys (quailty_gate) fail loudly instead of being silently ignored. - Markdown false positives suppressed. Findings inside fenced code blocks (a
git pushin a fencedbashblock flagged as SQL injection) are now dropped across all finding sources. - Performance, security, and correctness fixes across the scan/review pipeline (10 perf bottlenecks, 2 CVE bumps, 8+ silent-corruption and best-practice bugs).
Added
- Inbound caller (blast-radius) resolution. A new context-chain phase resolves call-sites of functions/types defined or modified in the diff, so breaking changes to their signatures surface their consumers. Gated by new
review.context_chain.include_callers(defaulttrue); uses gitignore-aware walking and is bounded (≤400 files, ≤3 call-sites/symbol), injecting only the call line + 1 line of context. NewContextPriority::CallerSite. - Definition extraction (
extract_definitions_from_diff) for Rust/Python/JS-TS/Go/Java-Kotlin — detects functions/types declared in the diff, feeding caller resolution. Rustmod foo;and Javaimport com.example.*wildcards are now extracted correctly (#73, #72). - Signature-only budget fallback. When the token budget can't fit a full function/type body, a thin signature slice (up to
{) is injected instead of skipping the entry entirely (~3–5× more symbols under the same budget). Config::validate()(#94) — rejects out-of-range/unsupported values at load:temperature(0.0–2.0),max_tokens/timeout(≥1),max_tokens_param,response_format,output.format,hook.mode/on_violation/min_severity, andprovider.base_urlscheme. Multiple errors are aggregated into one message.Profile::validate()(#81) — focusweightmust be 1–10, andaction/tone/detail_levelmust be recognized values.deny_unknown_fieldson all config sections (#80) — misspelled YAML keys are rejected at parse time.
Changed
CategoryActionenum (#57) —quality_gate.categories.*.actionis now a case-insensitive enum (block/warn/ignore); a typo likeblokfails loudly at config load instead of silently becoming blocking.- Disabled quality gate never fails (#58) —
evaluate()forcesPasswhenenabled: false. context_chain.max_context_tokensdefault raised 3000 → 5000.issue_typeserializes consistently asissue_type(#48);typeretained as a deserialize alias.Severity::from_str_lossyuseseq_ignore_ascii_case(no allocation) (#10).
Fixed
- Markdown fenced-code-block false positives (#329) — findings inside fenced code blocks (triple-backtick / triple-tilde) in
.md/.mdx/.markdownfiles are dropped across all finding sources (security/secrets/rules scanners + LLM). Fence state is tracked across full hunk context, so it works even when only the block body was edited. - Cross-file resolver used the wrong ignore list —
review.rspassedignore.rules(finding-type strings) instead ofignore.files(target/**,node_modules/**); the resolver could inject build-artifact code. Now usesignore.files. - Test-file detection over-match (#87) —
is_test_fileis path-segment aware;latest,aspect,attestationare no longer mistaken for test files. - Directory glob excludes over-permissive (#66) —
src/matches only at segment boundaries (mysrc/no longer caught). - Token estimation (#68) — non-empty content returns ≥1 token (was 0 under integer division).
- DB size (#23) —
index_statsqueriesPRAGMA page_sizeinstead of assuming 4096 bytes. - Project-sync workflow — a merged PR referencing issues via
Refs #N(notCloses #N) no longer fails thesynccheck. - 10 scan/review performance bottlenecks (#335) — precompiled regex, batched DB queries, early cutoffs, file-content cache, single reused Tokio runtime, single-transaction prune, etc.
- Security: bumped
anyhow1.0.102 → 1.0.103 (RUSTSEC-2026-0190) andcrossbeam-epoch0.9.18 → 0.9.20 (RUSTSEC-2026-0204). - Various silent-data-corruption bugs resolved (#333): severity sort, security-findings fallback, deterministic debt-snapshot hashing, debt-trend math, config precedence,
context_chainmerge, and hook-install composition.
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.7.0.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.7.0.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.7.0.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.7.0.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-cli/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-cli/blob/main/CHANGELOG.md
Release v0.6.2
What's New in v0.6.2
Fixed — Token Usage Tracking
-
tokens_usedis no longer alwaysNonein review and scan responses.parse_review_responseandparse_scan_responsepreviously discarded theusageobject returned by the LLM API, hardcodingOk((..., None)). Token counts and cost estimates were silently dropped.chat_completionnow returns(content, Option<Usage>)and the parse functions threadusagethrough asTokenUsage. All call sites updated.ReviewResponse.tokens_usedandScanResponse.tokens_usednow report real values when the provider supplies them.
-
cora review --streamnow collects token usage.- The streaming path (
chat_completion_stream) previously only accumulateddelta.contentand ignored theusagefield. It now sendsstream_options: { include_usage: true }and parsesusagefrom the final SSE chunk (top-level or nested inchoices[0].delta.usage). - Token counts are now reported correctly for both streaming and non-streaming review.
- The streaming path (
-
cora scanmulti-batch token accumulation.- When scanning multiple batches,
total_tokenswas overwritten by each batch instead of accumulated. Only the last successful batch's tokens were reported. - Token usage now accumulates across all batches (
input_tokens,output_tokens, andestimated_cost_usdare summed).
- When scanning multiple batches,
Changed — Code Quality
- Extracted magic numbers into named constants.
scan.rs: the hardcoded batch size fallback20and token budget60_000are nowDEFAULT_MAX_FILES_PER_BATCHandDEFAULT_BATCH_TOKEN_BUDGET.
Usagestruct now accepts camelCase aliases.- Some providers (e.g. Azure OpenAI, certain third-party gateways) return
promptTokens/completionTokens/totalTokensinstead of snake_case. Both forms are now accepted via#[serde(alias = ...)].
- Some providers (e.g. Azure OpenAI, certain third-party gateways) return
Tests
- Added 4 regression tests for token usage threading:
parse_review_preserves_usage_when_provided,parse_review_returns_none_usage_when_not_provided,parse_scan_preserves_usage_when_provided,usage_to_token_usage_maps_fields_correctly.
📦 Platforms
| Platform | File |
|---|---|
| Linux (x86_64) | cora-x86_64-unknown-linux-gnu-v0.6.2.tar.gz |
| Linux (ARM64) | cora-aarch64-unknown-linux-gnu-v0.6.2.tar.gz |
| macOS (Apple Silicon) | cora-aarch64-apple-darwin-v0.6.2.tar.gz |
| Windows (x86_64) | cora-x86_64-pc-windows-msvc-v0.6.2.zip |
🚀 Quick Start
# Quick install (Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-cli/main/install.sh | sh
# Or via cargo
cargo install cora
# Init project
cora init
# Review staged changes
CORA_API_KEY=your-key cora review --stagedFull changelog: https://github.com/codecoradev/cora-cli/blob/main/CHANGELOG.md