Skip to content

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 20:23
· 333 commits to main since this release
9c55dd1

Install

Quick install (no repo needed)

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/ix-infrastructure/Ix/main/scripts/install/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/ix-infrastructure/Ix/main/scripts/install/install.ps1 | iex

# Homebrew
brew tap ix-infrastructure/ix https://github.com/ix-infrastructure/Ix
brew install ix
ix docker start

Docker image

docker pull ghcr.io/ix-infrastructure/ix-memory-layer:latest

Highlights

  • Lean issue bundles: ix context --from-issue <file> --lean prints only the starting points Ix trusts, as path:lines with the reason ("the issue names JsonWriter"), then the next few files. That's about 150–200 tokens instead of a full bundle. When Ix trusts none of its starting points, it says so in one line. In agent runs on SWE-PolyBench, full issue bundles added 13–15% tokens; lean ones cost about the same as no bundle, with no change in how many issues agents solved. (#740)
  • Better starting points for --from-issue:
    • It ranks files better: whole multi-part code names count as words, stopwords are dropped, and identifiers named in the issue count double. On held-out issues, the share of fix files in the top 5 went from 0.47 to 0.61.
    • Specific names are tried before common words like debug.
    • Files in a project's website, playground, test-config, benchmarks, storybook and e2e directories are no longer ranked. (#740)
  • Ix tells you when its graph is damaged. If checkouts of the same repository share a backend, a backend bug can wipe a workspace's call and import links. context, explain, callers, callees and impact now say so, instead of answering "0 callers" or "low risk". The fix is the new ix reset --workspace --ingest, which resets only the current workspace. Graph reads from an unmapped directory now fail with workspace_not_mapped instead of answering from another repository. Misses suggest the nearest names. (#733)
  • MCP:
    • The server now sends instructions saying when Ix beats grep.
    • The default tool set is 5 task-shaped tools: ix_context (now also issue=), ix_search, ix_neighbors, ix_impact, ix_read. The rest are available with --tools=all.
    • Next steps are written as tool calls an MCP client can run. (#734)
  • Rows you can act on:
    • Search rows carry line ranges.
    • Callers, callees and imports rows give the call site and a snippet, not just the caller's span.
    • ix read --format llm numbers its lines.
    • ix read of a symbol in a file edited since the last map finds where the symbol is now. (#732, #741)
  • Correctness fixes:
    • Python, Rust and PHP bare calls no longer link to another file's method.
    • Deleted files could stay in the graph for good after a failed lookup.
    • A config file with a typo was silently overwritten.
    • ix ingest --lang did nothing.
    • ix upgrade reported success after a failed step.
    • Several Windows and symlinked-path mismatches.
    • ix ingest --github exited 0 when nothing was written.
    • ix watch died on a file-watcher error; it now falls back to polling. (#739, #742, #730)

Upgrading

  • The first ix map after upgrading rebuilds the graph once. The extractor is now tree-sitter/1.27, because Python, Rust and PHP calls resolve differently. This takes about as long as a first map, and an interrupted rebuild resumes where it stopped. On a large repository, run ix map once by hand to get it done in one go. (#739)
  • MCP: if a prompt or allowlist names ix_explain, ix_locate, ix_overview, ix_text or ix_health, start the server with ix mcp --tools=all. Tool names are unchanged. (#734)
  • Scripts that ran graph commands from an unmapped directory now get workspace_not_mapped and exit 1. Run them from inside a mapped workspace. (#733)

What's Changed

  • chore(brew): update formula for v0.11.1 by @github-actions[bot] in #728
  • fix(ingest): re-send commits that lost the base-rev race to another writer by @KageBinary in #730
  • docs: remove the live demo and docs links until they are hosted by @KageBinary in #735
  • docs: serve the docs site at docs.ix-infra.com/oss by @KageBinary in #736
  • fix: CLI and ingestion correctness sweep (14 fixes, extractor 1.27) by @KageBinary in #739
  • feat(cli): detect hollowed graphs, refuse unmapped workspaces, better misses by @KageBinary in #733
  • feat(mcp): server instructions, a 5-tool core set, and hints an MCP caller can run by @KageBinary in #734
  • feat(cli): rows carry the call site, lines and numbering an agent acts on by @KageBinary in #732
  • feat(context): lean issue view, better starting points, better BM25 for --from-issue by @KageBinary in #740
  • fix(read): re-anchor a stale file's symbol span to the declaration on disk by @KageBinary in #741
  • fix: ingest --github exit code, ix watch polling fallback (follow-ups to #739) by @KageBinary in #742

Full Changelog: v0.11.1...v0.12.0