Skip to content

Releases: Ataraxy-Labs/sem

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 05 Jul 21:38
651a835
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

Choose a tag to compare

@github-actions github-actions released this 05 Jul 16:05
4210e1d
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

Choose a tag to compare

@rs545837 rs545837 released this 03 Jul 20:16

What's Changed

  • feat(cli): impact --tests lexical fallback + IDF-weighted pack briefings by @rs545837 in #453
  • feat(graph): unique-method-name call edges + Parent::child qualifiers by @rs545837 in #454
  • release: v0.18.0 by @rs545837 in #456

Full Changelog: v0.17.0...v0.18.0

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 17:36
c8a7b9b
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

Choose a tag to compare

@github-actions github-actions released this 03 Jul 01:06
d5084be
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

Choose a tag to compare

@github-actions github-actions released this 03 Jul 00:37
99ca7ab
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

Choose a tag to compare

@github-actions github-actions released this 02 Jul 23:04
4837f5f
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

Choose a tag to compare

@github-actions github-actions released this 01 Jul 22:50
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

Choose a tag to compare

@github-actions github-actions released this 01 Jul 00:50
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

Choose a tag to compare

@github-actions github-actions released this 23 Jun 23:52
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).