Releases: Ataraxy-Labs/sem
Releases · Ataraxy-Labs/sem
Release list
v0.20.0
loaders: staged setup + staged indexing (CodeGraph-style) (#465)
`sem setup` used to print a flat list of `✓ Created …` lines. Now it
runs as a small staged tree with live per-step spinners, in the spirit
of CodeGraph's `init` loader:
```
⊕ setting up sem
◆ git diff → sem diff aliased globally
◆ Claude Code hooks already installed
· pre-commit hook not in a git repo — skipped
✓ sem is wired in — restart your Claude Code session to load it
· warm graph + prompt-time context · entity-level git diff · blast-radius pre-commit
revert anytime: sem unsetup
```
Each step shows a braille spinner while it runs, resolving to a green
`◆` (did something), dim `·` (nothing to do / not applicable), or yellow
`⚠` (left a file untouched on purpose — e.g. an unparseable
settings.json). The two sub-installers now return a rendered `Outcome`
instead of printing, so the loader owns all output. Same idempotent
behaviour, uses the existing `indicatif` dep. Tests green.
v0.19.0
Remove sem orient and all fuzzy/ranked retrieval (#463) sem becomes **purely deterministic**. Removed: the `orient` command and its `--pack` briefing, the sem-core ranking (lexical scoring, IDF, recall net, structural priming), the `sem_entities query=` intent-search mode, and the resident server's `orient` socket op. **Why:** a 45-task validation (requests/flask/sphinx) showed orient's ~47% hit-rate could not be lifted by heuristics without causing regressions (0 gains, 5+ regressions on a graph-expansion + path-penalty attempt). Fuzzy ranking was the only non-deterministic thing in sem, and it was where all the complexity accreted. The deterministic commands never needed it. **Remaining surface:** `context` (entity + callers/callees), `impact` (blast radius), `diff`, `entities` (list by path, or `text=` for exact-substring search), `blame`, `log`. To find code whose name you don't know: text-search for a candidate, then `sem context` for the structure grep can't give. The prompt-submit hook keeps its deterministic exact-name prefetch. 745 lines deleted. Build clean, tests green (2 pre-existing `sem diff` cwd-resolution failures unrelated). Supersedes #462 (which added the fuzzy hook fallback this removes). Note: sem-cloud has a `repo_orient` endpoint that pins a published sem-core; it'll need the same removal when it bumps.
v0.18.0
v0.17.0
feat(git): support reftable repos via CLI ref resolution (#451) (#452) Fixes #451 , and goes further than the first commit: sem now **works** on reftable repos instead of erroring clearly. ## Approach libgit2 can't read reftable refs, but reftable changes nothing else , the object DB and index are standard. So: - tolerate `extensions.refstorage` (registered alongside `relativeworktrees`, one place); - detect it per-repo (`cli_refs` flag on GitBridge); - route **only ref resolution** through the git CLI (`git rev-parse --verify`), via one `cli_rev_parse` helper and four thin wrappers (`resolve_object`, `head_commit`, `has_head`, `revwalk_from_head`) swapped into the 12 ref-touching call sites; - everything downstream (trees, blobs, diffs, revwalks) stays libgit2, addressed by OID. Same pattern as the existing sparse-checkout CLI fallback. ## Probed before building With the extension registered, libgit2 empirically: opens the repo ✅, reads objects/trees/blobs by OID ✅, walks revs from a pushed OID ✅, and **fails loudly** (InvalidSpec) on every ref-touching call ✅ , so a missed path produces an error, never a silently wrong answer. ## Verified - New end-to-end test on a **real** reftable repo (git 2.55): HEAD sha identical to `git rev-parse`, working diff with correct before/after contents, `HEAD~1..HEAD` range diff, per-file history walk. Skips gracefully when git predates reftable (2.45). - `sem diff` and `sem blame` verified via the release binary on a real reftable repo. - sem-core: 412 passed, 0 failed. ## Residual gap (documented) The cache freshness oracle's direct `git2::Repository::open` is `.ok()`-guarded , on reftable repos it skips the acceleration; correctness unaffected. Ref lookups need `git` on PATH (already required by blame/log paths). Thanks @bengry for the report and clean repro.
v0.16.2
fix(release): match the MCP registry namespace casing (#448) Follow-up to #446. The v0.16.1 `publish-mcp-registry` job failed with a 403: the registry's GitHub OIDC grant is case-sensitive (`io.github.Ataraxy-Labs/*`, the org's exact casing) while we published as `io.github.ataraxy-labs/sem`. The registry also compares the npm package's `mcpName` to the server name with exact equality, so the already-published 0.16.1 wrapper (lowercase `mcpName`) can't be reused. - Renames the server to `io.github.Ataraxy-Labs/sem` in `server.json`, `package.json` (`mcpName`), and the CHANGELOG entry - Bumps 0.16.1 → 0.16.2 (no code changes) so merging republishes npm with the corrected `mcpName` and reruns the registry publish `server.json` re-validated against the registry schema (the name pattern allows uppercase).
v0.16.1
feat(mcp): publish sem to the official MCP registry (#446) Publishes sem to the [official MCP registry](https://github.com/modelcontextprotocol/registry) as `io.github.ataraxy-labs/sem`, so MCP clients that browse the registry (VS Code, Cursor, Claude Code, and others) can discover and install the server directly. ## What's in here - **`server.json`** — registry manifest: npm package `@ataraxy-labs/sem`, stdio transport, launched as `sem mcp` via npx. Validated against the official `2025-12-11` server schema. - **`package.json`** — adds the `mcpName` field the registry checks against the published npm package, and syncs the long-stale wrapper version (0.7.0 → 0.16.1; CI re-syncs at publish anyway). - **`release.yml`** — new `publish-mcp-registry` job after the npm publish: stamps the release version into `server.json` with jq, logs in with GitHub OIDC (`id-token: write`, no new repo secrets), and publishes with `mcp-publisher`. Retries once after 60s in case the npm publish hasn't propagated when the registry validates `mcpName`. - **Version bump 0.16.0 → 0.16.1** across the workspace crates + lockfile. Patch is safe: no `sem-core` public API changes since v0.16.0 (only an internal `parser/context.rs` fix). Merging this triggers the release workflow, which cuts v0.16.1 and publishes the first registry entry. ## Verification done - `server.json` validated against the official registry JSON schema (ajv) - npm wrapper tests pass; `sync-package-version.mjs` preserves `mcpName` - jq stamp command tested locally; workflow YAML parses - `mcp-publisher` release asset name (`mcp-publisher_linux_amd64.tar.gz`) confirmed against the registry's latest release - Registry API confirmed no existing `io.github.ataraxy-labs/*` entries
v0.16.0
fix: pluralize roles correctly in the not-packed summary line (#441) "+7 transitive dependencys" -> "+7 transitive dependencies" in the context packer's omitted-tail line, in both the CLI printer and the MCP renderer.
v0.15.1
chore(release): bump workspace to 0.15.1 Patch release: cargo-semver-checks reports no semver update required against v0.15.0 (196 checks pass; fixes, internal perf, and one additive public function only). Rolls the Unreleased changelog into 0.15.1 and updates internal dependency version constraints. Highlights: qualified-call resolution fix for sem impact recall, cloud correctness gates (--no-cache and --file now always compute locally), relative-worktrees support (#341, thanks @zerone0x and @tomasr), faster graph hydrate on large repos, and the entity-level PR diff GitHub Action.
v0.15.0
chore(release): bump workspace to 0.15.0 SemanticEntity gained public start_byte/end_byte fields, which requires a minor bump under 0.x (cargo-semver-checks). Rolls the Unreleased changelog into 0.15.0 and updates internal dependency version constraints.
v0.14.1
Release 0.14.1 Fixes the Intel macOS cross-build (vendored-openssl) so the release actually ships binaries for every platform. 0.14.0's build failed on openssl-sys when cross-compiling x86_64 on Apple Silicon; 0.14.1 is the first release to publish Intel macOS binaries (#374).