All notable changes to sct are documented in this file.
The format is based on Keep a Changelog. Releases are grouped from commit messages by git-cliff.
-
ecl: Cap parser recursion depth to prevent stack overflow (R40) (5314a9d)
-
ecl: Bound flat expression chains (1310b84)
-
trud: Redact API key from transport-error output (d4608f4)
-
mcp: Validate Content-Length header and cap message size (R42) (fc492a7)
-
mcp: Answer malformed JSON-RPC instead of dropping it; bound line reads (11c6956)
-
read2: Cap decompressed zip entry size to prevent zip-bomb OOM (R43) (b37eed3)
-
deps: Bump actions/setup-python from 6.3.0 to 7.0.0 (#77) (c591d08)
-
deps: Bump the routine-minor-and-patch group across 1 directory with 3 updates (#75) (2a8be8c)
-
deps: Bump the github-actions-minor-and-patch group with 2 updates (#76) (749eede)
-
benchmarks: Add Raspberry Pi 5 comparison and re-benchmark Lenovo with sct 0.20.1 (5bf4f54)
-
trud: Correct the unevidenced maintenance-window claim (1a1d833)
-
Add an Android (Termux) page covering the static-musl DNS limit (d9772f6)
-
trud: Add
sct trud authto store the API key in the config file (2094017) -
trud: Point at the Termux DNS limitation when there is no resolv.conf (6a98963)
-
cli: Name every build artefact after its input [breaking] (44c06ad)
- Merge pull request #74 from pacharanero/claude/tender-mayer-65pkn8
fix(ecl): prevent stack overflows from pathological input (R40) (d3817d2)
- Merge pull request #78 from pacharanero/claude/tender-mayer-8xrzvv
fix(trud): redact API key from transport-error output (8b5f5b4)
- Merge pull request #79 from pacharanero/claude/tender-mayer-2pw8mb
fix(mcp): validate Content-Length header and cap message size (R42) (383c832)
- Merge pull request #80 from pacharanero/feat/trud-auth
feat(trud): add sct trud auth to store the API key in the config file (919507a)
- Merge pull request #81 from pacharanero/claude/tender-mayer-rwqg3l
fix(read2): cap decompressed zip entry size to prevent zip-bomb OOM (R43) (950bc04)
- Merge pull request #82 from pacharanero/feat/propagate-artefact-names
feat(cli)!: name every build artefact after its input (d3a11b3)
-
python: Accept Windows wheel licence endings (ceec731)
-
size: Fall back to recursive CTE when TCT table is missing (R8) (9e61610)
-
size: Normalize self-inclusive TCT counts (324f42c)
-
ndjson: Target provenance fingerprint field (c89e011)
-
sdk: Mark Python bindings shipped (R2) (9fa006c)
-
roadmap: Record 2026-07-25 stability/security bug audit as R39-R47 (5375470)
-
benchmarks: Specify typed benchmark runner (b2ca527)
-
benchmarks: Record ndjson memory reduction (ece636f)
- info: Unify sct info output with shared --format (R5) (b4c2f84)
- Merge pull request #72 from pacharanero/claude/tender-mayer-5gt2o6
fix(size): fall back to recursive CTE when TCT table is missing (R8) (006e43e)
- Merge pull request #73 from pacharanero/claude/tender-mayer-7vif1w
feat(info): unify sct info output with shared --format (R5) (61ab325)
- ndjson: Stream RF2 loading and record writing to cut peak memory (8554aad)
-
cli: Exit non-zero on single-lookup miss (R4) [breaking] (d34f7fc)
-
cli: Complete stdout contracts (R4) (4b86e68)
- gui: Specify clinical knowledge atlas (R38) (d788dc9)
-
python: Add local SNOMED SDK bindings (R2) (a505ee6)
-
mcp: Add direct terminology mapping (R9) (2ccdb4a)
-
python: Prepare sct-py release (R2) (9ab6de1)
- Merge pull request #70 from pacharanero/claude/tender-mayer-qsvw5j
fix(cli)!: exit non-zero on single-lookup miss (R4) (db897a8)
- Merge pull request #71 from pacharanero/feat/r2-python-publish
feat(python): prepare sct-py release (R2) (7ad52d7)
- release: Use crates.io trusted publishing (c0e769e)
- release: Add OHH announcement reminder (8382710)
-
sayt: Filter KeyEventKind::Press (same Windows double-keypress bug as tui) (07f3e80)
-
db: Open read commands with true read-only flags (R70) (a25b2bb)
-
trud: Reject unsafe archive filenames (R71) (d62c0dd)
-
serve: Harden expansion pagination (R72) (abc1e9e)
-
serve: Bound requests and batch bundles (R73) (e9acd50)
-
trud: Use unique temporary downloads (R74) (a6d8420)
-
db: Propagate schema probe errors (R75) (d613057)
-
fst: Validate terms side-table bounds (R76) (1b2b28a)
- Harden workflows and dependency updates (1628278)
-
Add AGENTS.md and spec/adding-a-command.md (a3b1087)
-
roadmap: Add in-memory subsumption index perf candidate (R81) (ad4b6c1)
-
Add performance and tuning reference page (35403c0)
-
roadmap: Add CLI stdin + TCT-hint consistency items (R82, R83) (96d1ac7)
-
roadmap: Prioritise SDK and reset active plan (0b88962)
-
refset: Add compare and profile subcommands (R44) (#61) (8c2b638)
-
mcp: Expose refset compare/profile as MCP tools (R44) (#65) (b3da789)
-
sdk: Ship Rust SDK facade (46bb2fd)
- Fix TUI double keypresses on Windows (a54d679)
- tests: Make codelist CLI test hermetic + REUSE-annotate snapshots (d851e7b)
- Add report-only coverage job via cargo-llvm-cov (R23) (bd04c75)
- release-tooling: Harden s/version++ gate (reuse lint + isolated env) (5501a5a)
- ci: Forward secrets to AUR workflow (403529b)
- Link AUR package (bfa9f67)
-
mcp: Exercise sct mcp tool handlers end-to-end (R16) (1a91500)
-
cli: Add assert_cmd CLI contract tests (R18) (94fd8e8)
-
trud: Wiremock network-layer tests for sct trud (R19) (ab96c0e)
-
embed: Hermetic embed+semantic smoke test via mocked Ollama (R17) (56fb960)
-
snapshots: Insta snapshots for info/diff/trud list output (R21) (ffde17a)
- ci: Validate AUR binary version output (f79602b)
- release: Publish sct-rs-bin to AUR (e24f058)
- Add adaptive sct branding (45bd295)
- diagram: Complete R39 definition diagrams (54da42a)
- Update Cargo.lock to 0.18.5 (bcf2f8f)
- ci: Grant packages:write to auto-tag so the GHCR mirror validates (6c6f60a)
- Publish image to GHCR + add a Nix flake (R10, R15) (32a3226)
- Add a Nix flake build check (keeps R15 honest) (45ba53a)
-
roadmap: Mark R4 (load harness + pool fix) done, split separated-run curves to R67 (d603a34)
-
lib: Add tested doctests to the public library API (R22) (f545d3b)
-
roadmap: Remove completed items (R1/R2/R4/R10/R15/R22/R28-30), fold SAYT into R68 (3859e35)
-
roadmap: Migrate exploratory ideas (R48-R66) to GitHub issues (#41-#59, label: idea) (eb9b58d)
-
Add SCT design conversation (27f2dff)
-
roadmap: Add R69 dm+d GTIN barcode -> AMPP -> BNF/ATC drug-class capability (bcda7b6)
-
codelist: Add interactive concept picker (0633576)
-
codelist: Import from CSV, OpenCodelists CSV, and FHIR ValueSet (R27) (b6316b2)
- Bump to 0.18.5 (66d5ba9)
- serve: Pool warm read-only connections (~10x concurrent throughput) (6da60cf)
-
mcp: Satisfy clippy::question_mark on a newer stable toolchain (7bb2429)
-
mcp: Avoid full-table schema_version scan on startup (#32) (239bf6b)
-
conformance: Translate check matches any result; no-map fixture (#30) (6383a43)
-
map: Match ICD-10 with dots stripped both sides, not canonicalise (#31) (f16dac3)
-
cli: Expand a leading ~/ in every path argument (f1d5c89)
-
cli: Hide the --input alias and animate sqlite's index/FTS phase (e6c88d9)
- Include the interactive TUIs in the default build (39d8bb9)
-
Add Docker Hub deploy route, refresh benchmarks, fix CLI drift (faf80c7)
-
roadmap: AEHRC editor/desktop interop + concept-history feature (8064ee1)
-
roadmap: Same-hardware sct serve vs Ontoserver benchmark comparator (a2970c1)
-
roadmap: Note the on-box loopback run as the definitive Ontoserver bench (0a63cd3)
-
roadmap: Keep commercial-server comparison private; state public bench policy (67c7cf6)
-
roadmap: Link open issues; sharpen SAYT into a dual-use design (a731713)
-
roadmap: Stable R## identifiers, soft-wrap, consistent bullets (55d34e9)
-
mcp: Correct --embeddings help - not auto-discovered (#34) (01b8df7)
-
roadmap: Refresh open-issues snapshot (tracker now clear) (0c9925a)
-
codelist: Export --format fhir-json (FHIR R4 ValueSet) (7c3bcdb)
-
bench: Load.sh - concurrent load-testing harness for sct serve (284330d)
-
sayt: Search-as-you-type over the FST index (TUI + stdio + HTTP) (52bdf9d)
-
map: Tolerate undotted ICD-10 input (I219 == I21.9) (#31) (61f2948)
-
serve: TerminologyCapabilities at /metadata?mode=terminology (#35) (6118cd2)
-
cli: Rename --input to --ndjson on NDJSON-consuming commands (R2) (616f5b8)
-
cli: Live progress bars with ETA for the long-running builds (R1) (6449697)
-
ndjson: Per-section progress bars across the RF2 load and build (9a92da1)
- release: Publish a multi-arch sct image to Docker Hub on release (d693c66)
- Fix dangling doc sentence and zensical emoji extension path (f7a839f)
-
spec: Commit to Compose + separate Caddy (Option A) in deployment plan (9687bd8)
-
semantic: Replace fabricated examples with verified output; set honest expectations (15eb247)
-
Note 4096-char description-length readiness in trud/ndjson (1baae7c)
-
roadmap: Remove completed items, verify claims, tidy stray note (a71fe84)
-
deploy: Rewrite the self-host guide for the Caddy-fronted stack (d921bf1)
-
embed: Stamp model + text scheme into Arrow metadata; verify at query time (3654fb9)
-
deploy: TLS reverse proxy for sct serve via Caddy + Compose (0820924)
- Rename specs/ to spec/ for consistency across repos (8169ddc)
-
roadmap: Add concurrent load-testing harness item for sct serve (c603896)
-
roadmap: Note DB-wide INTEGER columns + optional one-pass build as potential (9ce66ad)
-
spec: Add sct serve appliance deployment design (d517943)
- tct: U64 closure + INTEGER concept_ancestors columns (6babaa8)
- deps: Upgrade axum 0.7->0.8, rusqlite 0.39->0.40, sha2 0.10->0.11, toml 0.8->1.1 (e15cd60)
- ecl: Index-probe small refinements, bulk-build sets, buffer stdout (3c47992)
- build: Make optional deps available on Windows; add Windows CI check (a8ac793)
- Include sct serve in the default build (4fd6945)
- Gate FHIR conformance on every push (sct serve vs committed fixture) (c00b390)
- deps: Bump actions/cache from 6.0.0 to 6.1.0 (73fe86b)
-
dist: Point Scoop at shared pacharanero/scoop bucket (eefff15)
-
s/install: Add --serve and --dmwb feature flags, plus --help (72121b6)
-
s/install: Make --full mean everything and print the feature set (ad1d82d)
-
Ignore all benchmark reports, not just .md (4ec5890)
-
roadmap: De-duplicate TODO vs Distribution; update transcode/crosswalk refs to sct map (ea820e0)
-
Replace ASCII data-flow diagrams with Mermaid; enable Mermaid rendering (e164dd0)
-
roadmap: Add externally-verified FHIR conformance (HL7 FHIR Validator) (9569a15)
-
Merge dependabot #29: bump actions/cache 6.0.0 -> 6.1.0 (6e87dd8)
-
Add s/snowstorm-lite one-command comparator setup (90dc954)
-
conformance: FHIR-correct fixes surfaced by testing against Ontoserver (fb6edde)
-
Add readable bar-chart output; report leads with chart + code-fenced table (e671090)
-
Fix stale stddev (subshell bug) + de-emphasise summed total (14f59c0)
-
Add --sct-fhir mode for like-for-like sct-serve-vs-FHIR comparison (4ad2ae1)
-
Fix set -u crash on --write-benchmarks in --sct-fhir mode (ba751e0)
-
Fill in ancestor depth in FHIR-vs-FHIR mode (17a26ab)
-
Add in-process profiling harness for core query paths (de88b52)
- ecl: Switch IdSet to BTreeSet - 2.3x faster large expansions (ce417d4)
- benchmarks: Consolidate bench/ + benches/ + benchmarks/ into one dir (2b1b7a5)
- Release 0.16.0 (3a467e4)
- cli: Standardise output on --format text|json|yaml; --template for line templates [breaking] (9f3f714)
- Release 0.15.0 (f743dc9)
- cli: Unify cross-terminology mapping under 'sct map' (464422e)
- Fix CI clippy and reuse checks (b8bc590)
-
deps: Bump softprops/action-gh-release from 3.0.0 to 3.0.1 (#27) (6b5b87d)
-
deps: Bump actions/cache from 5.0.5 to 6.0.0 (#26) (406bb56)
-
deps: Bump actions/setup-python from 6.2.0 to 6.3.0 (#25) (4452b43)
-
deps: Bump actions/checkout from 6.0.2 to 7.0.0 (#24) (fb3718b)
- Release 0.14.0 (aa56e7d)
-
Add docker terminology server quickstart (58f6c63)
-
Drop Runme/walkthrough scripts; roadmap: add AI-benchmark + prior-art ideas (d15fcc0)
-
cli: Add completions installer (bbea671)
-
cli: Add sct diagram and sct ecl compress (slice 1) (a7d34c0)
-
Add docker compose terminology server (439ab63)
-
Improve docs server port selection (9cd505f)
-
Add FHIR conformance benchmark harness (e8c8244)
-
Clarify DMWB Read v2 import status (8082dee)
-
Import Read v2 item 9 maps (ac3b0a5)
-
Bump version to 0.13.0 (75f419b)
-
Switch Homebrew releases to shared tap (8ddfa5a)
-
Update roadmap after multi-terminology work (540ad57)
-
Allow minor and major version bumps (b005255)
-
Add ICD support roadmap notes (03305ed)
-
Merge pull request #28 from pacharanero/codex/completions-install (4d563d8)
-
Bump arrow and parquet to remove thrift (f61c5e7)
-
Document trud subscription summary (9830c24)
-
Add DMWB walkthrough (3f0f492)
-
Update roadmap status (8cbd11a)
-
Document Read v2 item 9 source (a448180)
- Release 0.11.0 - trud --pipeline honours ndjson shaping flags (48c24a3)
- trud: Pipeline --include-inactive, --refsets and --locale into ndjson (e4d4b89)
- ndjson: Make --include-inactive actually include inactive concepts (4786599)
- Release 0.10.1 - fix --include-inactive no-op (49f3a68)
- Release 0.10.0 - cross-terminology mapping (DMWB-replacement core) (ac4df8f)
- spec: Cross-terminology mapping + DMWB replacement design (d40e711)
-
maps: RF2-native SNOMED CT -> ICD-10 / OPCS-4 crossmaps (Phase 1a) (b45cf0d)
-
maps: RF2-native concept history / inactive forwarding (Phase 1b) (625b335)
-
transcode: Sct transcode - cross-terminology code mapping (Phase 2) (f89fd81)
-
crosswalk: Sct crosswalk - all equivalents of a code (Phase 2 complete) (b080409)
-
serve: ConceptMap/$translate over the crossmaps (Phase 4) (5737b31)
-
codelist: Cross-terminology export incl. ICD-10/OPCS-4 (Phase 5) (e98135a)
-
dmwb: DMWB .mdb introspection via jetdb; Read v2 import gate fails (Phase 3) (2d0f060)
-
Sync Cargo.lock to 0.9.2 (e988f77)
-
REUSE-compliant SPDX headers across the repo (4b30f2e)
-
Release 0.9.3 (AGPL crate publish + SPDX headers) (be877e8)
- License under AGPL-3.0-or-later (match LICENSE and README) (cd363d2)
- release: Produce .deb, .rpm, .dmg, and bare .exe artifacts (7584ef4)
- Rich content-tabs install section; enable pymdownx.tabbed (097169b)
- serve: Serve .codelist files as stored FHIR ValueSets (2bb2b8a)
- Drop tracked .downloads/ placeholder; fix stale doc path (062581d)
- codelist: Composable codelists via
includes:(e8a46c7)
- serve: SQL fast path for single-operator $expand (887d99d)
- ecl: Use the transitive-closure table for <</>>; warn when absent (bd9628f)
- Prune completed items from roadmap; document schema v4 in ndjson docs (fa4a06c)
- serve: FHIR R4 terminology server (Phase 1) (7b157c1)
- Add synthetic licence-free RF2 fixture + full-pipeline end-to-end tests (d53724b)
-
Add "Why code lists?" page; split "Why Build This?" nav section (2ad064d)
-
Cite the QRISK2 code-selection incident as numbered references (c206dec)
-
Move the "why" pages into a docs/why/ folder (fdaa12b)
-
nav: Group commands into task-based top-level sections (f339472)
- Removed every last bastard emdash (7cb9a88)
- codelist: Drop the unimplemented
publishcommand (Q7) (3ff5ce7)
- Add --ids (pipe-friendly) mode to read-side commands (01b32a5)
- ecl: Add composable
sct ecl expand+ stdin forcodelist add(712663b)
- ndjson: Make --locale dialect-aware via language reference set id (37f118f)
-
roadmap: Add composable codelists idea (628d5eb)
-
roadmap: Add interactive search-as-you-type mode (67a9d93)
-
Project review tidy-up (roadmap, docs, specs, coverage) (230e3af)
- ecl: ECL parser + evaluator, wired into
codelist add --ecl(76c89f0)
- fst: Delta-varint posting lists + optional display side-tables (f096571)
-
Auto-tag on Cargo.toml version bump (732390e)
-
Pin GitHub Actions to SHA hashes with version comments (ff275a1)
-
deps: Bump rustls-webpki in the cargo group across 1 directory (#17) (8403eb9)
-
deps: Bump rand from 0.8.5 to 0.8.6 (6563321)
-
Open zensical server in browser by default (6a7ff0e)
-
Add documentation for SNOMED CT's GPS and IPS releases (936bcb3)
-
Add repository URL and name to mkdocs configuration (02a7415)
-
Add specification for
sct staticcommand to generate static FHIR terminology service (06a1a69) -
Add experimental FST-backed lexical index (sct fst) (b2bcbbc)
- Tweaks to trud.md - closes #18 (927bccb)
- Streamline test functions and introduce env-mutation lock for isolation (350b631)
-
deps: Bump actions/upload-pages-artifact from 4 to 5 (#13) (6ba2699)
-
deps: Bump actions/upload-artifact from 7.0.0 to 7.0.1 (#14) (0217354)
-
deps: Bump softprops/action-gh-release from 2.6.1 to 3.0.0 (#15) (ab0b945)
-
deps: Bump actions/cache from 5.0.4 to 5.0.5 (#16) (b4f496d)
- Link walkthrough installation to README instead of duplicating (d73063b)
-
Replace unmaintained serde_yml with serde_yaml_ng; bump ratatui to 0.30 (b3252a5)
-
Capture source release in NDJSON header and SQLite metadata table (888d639)
-
Surface in lookup, lexical, and refset with --provenance flag (f8d17d9)
-
Extend to embed/semantic, mcp, and codelist auto-population (ff43cfd)
-
--include-maps adds crosswalk columns on export (e105ca3)
-
Sketch exploration/data-science surfaces (985b2b4)
-
Add first MMR vaccination procedures codelist (0ffc98e)
-
Unify db/embeddings/config discovery across all commands (96f5dce)
-
Exit cleanly on SIGPIPE instead of panicking (2d47d05)
-
Clear clippy --all-targets warnings in trud.rs (5922eba)
- Add pre-commit hook running fmt + clippy (d65b417)
-
roadmap: Document --refsets all as a future job (8b8768b)
-
Split walkthrough into focused pages and add refset section (f17e1b4)
-
Remove old monolithic walkthrough.md (d03d362)
-
Update README (3d99cda)
-
Add Simple refset support end-to-end (76e6f0f)
-
Configurable one-line concept listing format (95fe2d2)
-
Update installation instructions and add shell one-liners for easier setup (894bbaa)
- Add install.ps1 and auto-bump Homebrew tap + Scoop bucket on release
Tier 2 distribution wiring. Each release now fans out to package managers automatically, on top of the Tier 1 GitHub Releases + crates.io + curl|sh flow already in place.
install.ps1: Windows PowerShell installer, the counterpart to install.sh. Auto-detects architecture, looks up the latest release tag via the GitHub API, downloads sct-windows-x86_64.zip plus SHA256SUMS, verifies the checksum, extracts to $env:LOCALAPPDATA\sct\bin by default (overridable via $env:SCT_INSTALL_DIR), and offers to add the install directory to the user PATH.
iwr -useb https://raw.githubusercontent.com/pacharanero/sct/main/install.ps1 | iex
release.yml: new update-taps job that runs after the GitHub release is
published. It pulls the just-published SHA256SUMS, extracts each of the
five per-target hashes, and rewrites:
- Formula/sct.rb in pacharanero/homebrew-sct
- bucket/sct.json in pacharanero/scoop-sct
then commits and pushes. Both target repos are cloned with a PAT stored
as the TAP_REPOS_TOKEN secret — this must be a token with write access
to both repos. Without the secret, the job will fail visibly but the
main release (GitHub Release + crates.io) will still succeed, since
update-taps has needs: release and is not itself a prerequisite for
anything downstream.
The Scoop manifest also carries its own checkver / autoupdate block,
so Scoop's own update machinery can pick up new versions without this
workflow — the workflow just makes the update immediate rather than
eventually-consistent.
Roadmap: marked the distribution checklist items complete and added a "Future distribution work" sub-list for the harder items (macOS notarization, Windows Authenticode signing, .deb/.rpm, winget, nixpkgs) that still need either money or patience.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com (9ad8771)
-
Removed old, completed work from spec.md (6589b6b)
-
Clarify cargo-binstall is a separate plugin (de2eec8)
-
Bump version to 0.3.10 (ccc12a1)
- Unify concept-list output via format module + shared open_db (922ac4b)
-
Update path to Cargo.toml and adjust git add command (c6f2cc0)
-
Update readme path in Cargo.toml (01efae6)
- Add Windows + Linux ARM builds, SHA-256 checksums, and curl|sh installer
Extends the release workflow's matrix to build five targets on tag push:
- x86_64-unknown-linux-musl → sct-linux-x86_64.tar.gz
- aarch64-unknown-linux-musl → sct-linux-aarch64.tar.gz (new, native ubuntu-24.04-arm runner, no cross-compile)
- aarch64-apple-darwin → sct-macos-aarch64.tar.gz
- x86_64-apple-darwin → sct-macos-x86_64.tar.gz
- x86_64-pc-windows-msvc → sct-windows-x86_64.zip (new, zipped via PowerShell Compress-Archive)
The release job now generates a single SHA256SUMS file covering every artefact and attaches it to the GitHub release alongside the tarballs.
install.sh is a POSIX-sh installer that users can pipe from curl:
curl -fsSL https://raw.githubusercontent.com/pacharanero/sct/main/install.sh | sh
It auto-detects OS and architecture, fetches the latest release tag, downloads the matching tarball plus SHA256SUMS, verifies the checksum before install, and drops the binary at $HOME/.local/bin (override via $SCT_INSTALL_DIR). Falls back between curl/wget and sha256sum/shasum.
Cargo.toml grows a [package.metadata.binstall] block so cargo binstall sct-rs can download the prebuilt artefacts instead of compiling from source.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com (b79ba76)
- Bump version to 0.3.9 (cb73f57)
- Integration tests for RF2 parsing and record building (da03bfc)
- Cargo fmt (40d3d9e)
-
Fix install path in s/install (519cf38)
-
Fix bug in SQL code used for demo (4c8db51)
-
Fixes to benchmarking scripts (e3a78f1)
-
Moves the Rust package to the repo root for simplicty (d2aa618)
-
Extensive reqvie and update of docs (e2755b1)
-
Add SNOMED CT directories to .gitignore (ed35d05)
-
Update mkdocs.yml to enhance navigation and add code copy feature (e9db6e6)
-
Update README.md for improved formatting and add trademark information (cd248e0)
-
Remove video for now (401bfb8)
-
Semantic search (ef45de5)
-
Update documentation and improve SQL query examples across multiple files (4866682)
-
Walkthrough additions (4fc60c4)
-
Specced out the next few roadmap items (eba36ab)
-
Initial tests, done in a weird way. a better way is incoming (a24a866)
-
Adds Transitive Closure Table feature which optimises some queries (by a small amount) (1a0c8e4)
-
Adds improved docs for Transitive Closure Tables, and some specs for new planned features (3aa23bd)
-
Devcontainer (2bdb3fe)
-
Update DuckDB installation to version 1.5.1 (38299b1)
-
Refactor Dockerfile for better layer mgmt (6d08674)
-
Add jq, grep & ripgrep (55ecda2)
-
Add development section to README with devcontainer setup instructions (d5af93a)
-
Adds python3 and ollama (2136971)
-
Merge pull request #11 from jonnyry/main
Devcontainer (1f00cd1)
-
Add FUNDING.yml to support GitHub Sponsors (df49e39)
-
Fix inaccurate description of Hermes
Hermes is a library first, not a server — the HTTP and MCP interfaces are optional wrappers. It can be embedded in-process with no network overhead. It runs from source code or via Homebrew, not only as a JAR. LMDB is BSD-licensed, not proprietary. Acknowledge the trade-offs: no SQLite ad-hoc queryability, JVM startup cost — but note the runtime performance. (d64d951)
-
Add example of installing UK monolith edition (37724df)
-
Note Clojure as a potential barrier to contributions (24f2cd3)
-
Update why-build-this.md (371550d)
-
Merge pull request #12 from wardle/fix/hermes-description
Fix inaccurate description of Hermes (bdbdfec)
-
Merge remote-tracking branch 'origin/main' (e138723)
-
Sct trud check: verify local file SHA-256 against TRUD metadata
Previously sct trud check only checked whether a file with the expected
name existed in the releases directory — a corrupt or half-downloaded
local file would be reported as "up to date". Now, when the file is
present, its SHA-256 is re-computed and compared against the TRUD
metadata. On match, the verification is stated explicitly in the output.
On mismatch, the check exits 2 (same as "new release available") so a
check && download shell loop will heal the corruption automatically.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com (df7bcf2)
-
Minor tweaks to ETHICS.md (386e158)
-
Split src into lib + bin so integration tests can live under tests/
Adds src/lib.rs that re-exports the existing modules (builder, commands,
rf2, schema) as pub, and strips the matching mod declarations from
src/main.rs. The binary now depends on the library via use sct_rs::...,
enabling integration tests under tests/ and downstream reuse, without
changing the visibility or semantics of any item inside the modules.
This is pass 1 of a two-pass refactor; pass 2 will migrate the tests that exercise public/CLI behaviour into tests/ as integration tests while leaving private-function unit tests in their #[cfg(test)] modules.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com (100c36c)
- Bump version to 0.3.8 (c4ec73d)
- Add
sct lookupcommand for direct SCTID and CTV3 code lookup
New CLI command that accepts a bare SCTID (numeric) to retrieve full concept details, or a CTV3 code to reverse-lookup mapped SNOMED concepts via the concept_maps table. Includes human-readable and --json output.
https://claude.ai/code/session_01NtVedfRo5Jpdh5TJ2dzxjE (3db1f83)
-
Fix formatting in lookup command (bee7455)
-
Merge pull request #8 from pacharanero/claude/add-snomed-lookup-eJU9D
Add sct lookup command for direct SCTID and CTV3 code lookup (698b774)
-
Add sct serve FHIR R4 terminology server spec and roadmap (ffb1ba2)
-
Merge pull request #7 from pacharanero/claude/fhir-terminology-server-spec-TpT8x
spec: add sct serve FHIR R4 terminology server spec and roadmap (c58f090)
- Bump version to 0.3.7 (e20d2d7)
-
Adds a Remotion video walkthrough (13d5d56)
-
MCP gets some codelist tools (046ddbf)
-
Rename the crate name to sct-rs because sct is taken. Binary and usage stays the same. (1e8a8c0)
-
Fmt (174c81c)
-
Linter appeasement (a21ca99)
-
Bump version to 0.3.5 (a3e3562)
- Refactor and tidy of docs/specs (bad1565)
-
Add feature selection to install script for customizable cargo installation (241bd83)
-
Improved documentation (58f420a)
-
Addition of codelists feature and improved documentation (23cf791)
-
Bump version to 0.3.4 (211fb11)
- Update Cargo.lock after dependency resolution (f902350)
- gui: Add D3.js neighbourhood graph visualisation (44f6f7e)
-
Merge remote-tracking branch 'origin/claude/snomed-ct-graph-visualization-kVr5V' (4348788)
-
Bump version to 0.3.3 (9e30e5e)
- CTV3 and Read v2 cross-map support from UK RF2 release files (4c06635)
-
Merge remote-tracking branch 'origin/claude/ctv3-snomed-mappings-vTrKY' (34dd0bd)
-
Adds CTV3 cross mapping capability and improved docs (a9ea59a)
-
Bump version to 0.3.2 (ac28de4)
- Add CODE-OF-CONDUCT.md, CONTRIBUTING.md, and ETHICS.md files (bfb1db6)
- Set up GitHub Pages deployment and add Zola configuration (681ebc7)
-
Add docs/walkthrough.md feature tour and maintenance policy
-
docs/walkthrough.md: 15-section hands-on tour of all sct features, structured as numbered demo scenes for the Remotion demo. Covers ndjson → sqlite → parquet → markdown → embed → semantic → mcp → tui/gui → diff/info/completions, with command examples, timings, and a UK layered-build section.
-
specs/spec.md: adds a "Documentation maintenance" section specifying when walkthrough.md must be updated and noting its role as Remotion demo source material.
https://claude.ai/code/session_0173FhypUtGpoaAs5jrWezbv (f59f3e7)
- Merge pull request #5 from pacharanero/claude/create-walkthrough-docs-BFclx
Add comprehensive walkthrough documentation and spec updates (78168ab)
- Add docs/vector-search-landscape.md: SNOMED vector search ecosystem review
Comprehensive landscape of existing SNOMED CT tooling with vector/semantic search capability: production servers (Snowstorm, Hermes, Ontoserver, JSL), research embedding models (SapBERT, CODER, HiT, SNOBERT), clinical NLP tools (MedCAT v2, scispaCy), RAG prototypes, and downloadable pre-computed embeddings. Includes a capability comparison table and implications for sct, notably the recommendation to support SapBERT as an embedding model option.
https://claude.ai/code/session_0173FhypUtGpoaAs5jrWezbv (07a7ad9)
-
Merge remote-tracking branch 'origin/claude/create-walkthrough-docs-BFclx' (6ae5cf9)
-
Switch docs site to Zensical (ab3f9b6)
-
Bump version to 0.3.1 (521d1b3)
-
mcp: Echo client protocol version to fix 30s timeout with Claude Code 2.x (dd91219)
-
mcp: Support newline-delimited JSON transport (MCP spec 2025-11-25) (6b9b52a)
-
Bench suite — global propagation and printf format string bugs (55db6f4)
-
gui: Join concepts table to get hierarchy column in search (07bace3)
-
Update actions/checkout v4→v6, actions/cache v4→v5 (bc9fd60)
-
Add release workflow for Linux x86_64, macOS arm64/x86_64 binaries (84b7ea5)
-
CI, docs, roadmap, queries (9e443bd)
-
Update roadmap to reflect completed milestones, delete resolved queries (82aa837)
-
Add *.db to .gitignore to exclude database files from version control (c2502f5)
-
Trim roadmap to outstanding work only, add next steps (9aca79f)
-
Add *.arrow to .gitignore to exclude Arrow files from version control (6d517ec)
-
Upgrade all deps to latest stable (bfe1aba)
-
Add *.db-shm and *.db-wal to gitignore (12fa3ba)
-
Crates.io publishing, roadmap updates, licence (ff2ec18)
-
Update GitHub Actions to latest stable versions (a315738)
-
Add docs/ per subcommand, README as index (3704497)
-
Sync spec.md with codebase; README subcommands as TOC (837ec18)
-
Fix formatting in mcp.md and sqlite.md for consistency (f9b4a59)
-
Address docs-improvements.md review points (68d07e7)
-
Add tui and gui usage documentation (f359729)
-
Add completions subcommand documentation (38fe3b2)
-
ndjson: Update to reflect .zip input support (cf41ae8)
-
Add subcommand architecture + sqlite/parquet/markdown/mcp commands (fee6517)
-
Add CI workflow and dependabot configuration for GitHub Actions (51bb069)
-
markdown: Add --mode hierarchy flag for one-file-per-hierarchy output (b4dffde)
-
mcp: Validate schema_version on startup, warn or refuse if DB is too new (32d31eb)
-
embed: Implement Ollama HTTP embeddings with Arrow IPC output (e2f8efc)
-
Add sct info and sct diff subcommands (0e8083e)
-
Add sct lexical and sct semantic search commands (bf602dd)
-
Add shell completions (bash, zsh, fish, powershell, elvish) (ae9793e)
-
Bench/ suite — automated local vs FHIR terminology server benchmarking (ffd000b)
-
Timestamped benchmark filenames in benchmarks/ directory (8325f82)
-
Microsecond resolution + environment section at top of benchmark files (bd2c99d)
-
Add sct tui and sct gui interactive exploration interfaces (f0e8b11)
-
gui: Add support for serving HTML from a specified file in development mode (46f2535)
-
ndjson: Auto-extract RF2 .zip archives (8e1efaa)
-
Initial commit: sct Layer 1 RF2-to-NDJSON converter (b9481d3)
-
Remove redundant sct/.gitignore (40cf4b3)
-
Add Quick Start section to README (05db422)
-
Add .gitignore for downloads and update main .gitignore (64b1c17)
-
Update clone URL in README for correct repository reference (7aaf0f5)
-
Comprehensive specs (757e98c)
-
Benchmarks and reasoning (e57607f)
-
Remove outdated documentation files: BENCHMARKS.md, roadmap.md, spec.md, and why-build-this.md (8e6c5cf)
-
Bump version (b5180ed)
- Clean up formatting and improve readability in multiple command files (b138d9c)
- Unit tests for rf2 parsing and builder logic (19 tests) (dc9948c)