Skip to content

Latest commit

 

History

History
1339 lines (702 loc) · 70.5 KB

File metadata and controls

1339 lines (702 loc) · 70.5 KB

Changelog

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.

[0.21.0] - 2026-07-31

Bug fixes

  • 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)

Build

  • 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)

Documentation

  • 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)

Features

  • trud: Add sct trud auth to 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)

Other

  • 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)

[0.20.1] - 2026-07-27

Bug fixes

  • 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)

Documentation

  • 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)

Features

  • info: Unify sct info output with shared --format (R5) (b4c2f84)

Other

  • 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)

Performance

  • ndjson: Stream RF2 loading and record writing to cut peak memory (8554aad)

[0.20.0] - 2026-07-24

Bug fixes

  • cli: Exit non-zero on single-lookup miss (R4) [breaking] (d34f7fc)

  • cli: Complete stdout contracts (R4) (4b86e68)

Build

  • deps: Bump the routine-minor-and-patch group across 1 directory with 3 updates (#69) (aff7c2a)

Documentation

  • gui: Specify clinical knowledge atlas (R38) (d788dc9)

Features

  • python: Add local SNOMED SDK bindings (R2) (a505ee6)

  • mcp: Add direct terminology mapping (R9) (2ccdb4a)

  • python: Prepare sct-py release (R2) (9ab6de1)

Other

  • 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)

Refactor

  • fmt: Consolidate human-readable output (R6) (#68) (aa1c88c)

[0.19.1] - 2026-07-22

Bug fixes

  • release: Forward AUR repository secret (f118726)

  • release: Grant OIDC to release workflow (93e8276)

Build

  • deps: Bump the routine-minor-and-patch group with 17 updates (#67) (c3e269d)

CI

  • release: Use crates.io trusted publishing (c0e769e)

Documentation

  • release: Add OHH announcement reminder (8382710)

[0.19.0] - 2026-07-22

Bug fixes

  • 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)

Build

  • deps: Bump softprops/action-gh-release from 3.0.1 to 3.0.2 (#64) (b9015cc)

CI

  • Harden workflows and dependency updates (1628278)

Documentation

  • 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)

Features

  • 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)

Other

  • Fix TUI double keypresses on Windows (a54d679)

[0.18.8] - 2026-07-16

Bug fixes

  • tests: Make codelist CLI test hermetic + REUSE-annotate snapshots (d851e7b)

CI

  • Add report-only coverage job via cargo-llvm-cov (R23) (bd04c75)

Chores

  • release-tooling: Harden s/version++ gate (reuse lint + isolated env) (5501a5a)

[0.18.7] - 2026-07-16

Bug fixes

  • ci: Forward secrets to AUR workflow (403529b)

Documentation

Tests

  • 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)

[0.18.6] - 2026-07-15

Bug fixes

  • ci: Validate AUR binary version output (f79602b)

CI

  • release: Publish sct-rs-bin to AUR (e24f058)

Documentation

  • Add adaptive sct branding (45bd295)

Features

  • diagram: Complete R39 definition diagrams (54da42a)

Other

  • Update Cargo.lock to 0.18.5 (bcf2f8f)

[0.18.5] - 2026-07-14

Bug fixes

  • ci: Grant packages:write to auto-tag so the GHCR mirror validates (6c6f60a)

Build

  • Publish image to GHCR + add a Nix flake (R10, R15) (32a3226)

CI

  • Add a Nix flake build check (keeps R15 honest) (45ba53a)

Documentation

  • 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)

Features

  • codelist: Add interactive concept picker (0633576)

  • codelist: Import from CSV, OpenCodelists CSV, and FHIR ValueSet (R27) (b6316b2)

  • Add size viewer (#39) (508898f)

Other

[0.18.4] - 2026-07-10

Performance

  • serve: Pool warm read-only connections (~10x concurrent throughput) (6da60cf)

[0.18.3] - 2026-07-10

Bug fixes

  • 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)

Build

  • Include the interactive TUIs in the default build (39d8bb9)

Documentation

  • 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)

Features

  • 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)

  • serve: FHIR batch Bundle at POST / (#37) (6723500)

  • 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)

[0.18.2] - 2026-07-09

CI

  • release: Publish a multi-arch sct image to Docker Hub on release (d693c66)

Chores

  • Fix dangling doc sentence and zensical emoji extension path (f7a839f)

Documentation

  • 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)

Features

  • embed: Stamp model + text scheme into Arrow metadata; verify at query time (3654fb9)

  • deploy: TLS reverse proxy for sct serve via Caddy + Compose (0820924)

[0.18.1] - 2026-07-08

Chores

  • Rename specs/ to spec/ for consistency across repos (8169ddc)

Documentation

  • 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)

Performance

  • tct: U64 closure + INTEGER concept_ancestors columns (6babaa8)

[0.18.0] - 2026-07-07

CI / dependencies

  • deps: Upgrade axum 0.7->0.8, rusqlite 0.39->0.40, sha2 0.10->0.11, toml 0.8->1.1 (e15cd60)

Performance

  • ecl: Index-probe small refinements, bulk-build sets, buffer stdout (3c47992)

[0.17.1] - 2026-07-07

Bug fixes

  • build: Make optional deps available on Windows; add Windows CI check (a8ac793)

[0.17.0] - 2026-07-06

Build

  • Include sct serve in the default build (4fd6945)

CI

  • Gate FHIR conformance on every push (sct serve vs committed fixture) (c00b390)

CI / dependencies

  • deps: Bump actions/cache from 6.0.0 to 6.1.0 (73fe86b)

Chores

  • 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)

Documentation

  • 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)

Other

  • 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)

Performance

  • ecl: Switch IdSet to BTreeSet - 2.3x faster large expansions (ce417d4)

Refactor

  • benchmarks: Consolidate bench/ + benches/ + benchmarks/ into one dir (2b1b7a5)

[0.16.0] - 2026-07-05

Chores

Features

  • cli: Standardise output on --format text|json|yaml; --template for line templates [breaking] (9f3f714)

[0.15.0] - 2026-07-05

Chores

Features

  • cli: Unify cross-terminology mapping under 'sct map' (464422e)

[0.14.0] - 2026-07-05

Bug fixes

  • Fix CI clippy and reuse checks (b8bc590)

CI / dependencies

  • 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)

Chores

Documentation

  • Add docker terminology server quickstart (58f6c63)

  • Drop Runme/walkthrough scripts; roadmap: add AI-benchmark + prior-art ideas (d15fcc0)

Features

  • cli: Add completions installer (bbea671)

  • cli: Add sct diagram and sct ecl compress (slice 1) (a7d34c0)

Other

  • 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)

[0.12.0] - 2026-06-24

Documentation

  • Add DMWB walkthrough (3f0f492)

  • Update roadmap status (8cbd11a)

  • Document Read v2 item 9 source (a448180)

Other

[0.11.0] - 2026-06-22

Chores

  • Release 0.11.0 - trud --pipeline honours ndjson shaping flags (48c24a3)

Features

  • trud: Pipeline --include-inactive, --refsets and --locale into ndjson (e4d4b89)

[0.10.1] - 2026-06-22

Bug fixes

  • ndjson: Make --include-inactive actually include inactive concepts (4786599)

Chores

  • Release 0.10.1 - fix --include-inactive no-op (49f3a68)

[0.10.0] - 2026-06-12

Chores

  • Release 0.10.0 - cross-terminology mapping (DMWB-replacement core) (ac4df8f)

Documentation

  • spec: Cross-terminology mapping + DMWB replacement design (d40e711)

Features

  • 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)

[0.9.3] - 2026-06-08

Chores

  • 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)

[0.9.2] - 2026-06-08

Chores

  • License under AGPL-3.0-or-later (match LICENSE and README) (cd363d2)

[0.9.1] - 2026-06-08

Build

  • release: Produce .deb, .rpm, .dmg, and bare .exe artifacts (7584ef4)

Documentation

  • Rich content-tabs install section; enable pymdownx.tabbed (097169b)

[0.9.0] - 2026-06-07

Features

  • serve: Serve .codelist files as stored FHIR ValueSets (2bb2b8a)

[0.8.0] - 2026-06-07

Chores

  • Drop tracked .downloads/ placeholder; fix stale doc path (062581d)

Features

  • codelist: Composable codelists via includes: (e8a46c7)

[0.7.2] - 2026-06-04

Performance

  • serve: SQL fast path for single-operator $expand (887d99d)

[0.7.1] - 2026-06-04

Performance

  • ecl: Use the transitive-closure table for <</>>; warn when absent (bd9628f)

[0.7.0] - 2026-06-04

Documentation

  • Prune completed items from roadmap; document schema v4 in ndjson docs (fa4a06c)

Features

  • serve: FHIR R4 terminology server (Phase 1) (7b157c1)

Tests

  • Add synthetic licence-free RF2 fixture + full-pipeline end-to-end tests (d53724b)

[0.6.2] - 2026-06-04

Documentation

  • 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)

Other

  • Removed every last bastard emdash (7cb9a88)

Refactor

  • codelist: Drop the unimplemented publish command (Q7) (3ff5ce7)

[0.6.1] - 2026-06-04

Features

  • Add --ids (pipe-friendly) mode to read-side commands (01b32a5)

[0.6.0] - 2026-06-04

Features

  • ecl: Add composable sct ecl expand + stdin for codelist add (712663b)

[0.5.2] - 2026-06-04

Bug fixes

  • ndjson: Make --locale dialect-aware via language reference set id (37f118f)

[0.5.1] - 2026-06-04

Documentation

  • roadmap: Add composable codelists idea (628d5eb)

  • roadmap: Add interactive search-as-you-type mode (67a9d93)

  • Project review tidy-up (roadmap, docs, specs, coverage) (230e3af)

[0.5.0] - 2026-06-03

Features

  • ecl: ECL parser + evaluator, wired into codelist add --ecl (76c89f0)

[0.4.1] - 2026-06-03

Performance

  • fst: Delta-varint posting lists + optional display side-tables (f096571)

[0.4.0] - 2026-06-03

CI

  • Auto-tag on Cargo.toml version bump (732390e)

  • Pin GitHub Actions to SHA hashes with version comments (ff275a1)

CI / dependencies

  • 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)

Documentation

  • 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)

Features

  • Add specification for sct static command to generate static FHIR terminology service (06a1a69)

  • Add experimental FST-backed lexical index (sct fst) (b2bcbbc)

Other

  • Tweaks to trud.md - closes #18 (927bccb)

Refactor

  • Streamline test functions and introduce env-mutation lock for isolation (350b631)

[0.3.11] - 2026-05-20

CI / dependencies

  • 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)

Documentation

  • Link walkthrough installation to README instead of duplicating (d73063b)

Other

  • 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)

[0.3.10] - 2026-04-11

Bug fixes

  • Exit cleanly on SIGPIPE instead of panicking (2d47d05)

  • Clear clippy --all-targets warnings in trud.rs (5922eba)

Chores

  • Add pre-commit hook running fmt + clippy (d65b417)

Documentation

  • 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)

Features

  • 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)

Other

  • 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.

One-liner install on Windows:

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)

Refactor

  • Unify concept-list output via format module + shared open_db (922ac4b)

[0.3.9] - 2026-04-10

Bug fixes

  • Update path to Cargo.toml and adjust git add command (c6f2cc0)

  • Update readme path in Cargo.toml (01efae6)

Other

  • 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)

Refactor

  • Integration tests for RF2 parsing and record building (da03bfc)

Styling

[0.3.8] - 2026-04-10

Bug fixes

  • Fix install path in s/install (519cf38)

  • Fix bug in SQL code used for demo (4c8db51)

  • Fixes to benchmarking scripts (e3a78f1)

Other

  • 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)

  • TRUD-automation (#9) (db6181a)

  • 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)

[0.3.7] - 2026-04-02

Other

  • Add sct lookup command 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)

[0.3.5] - 2026-03-31

Other

  • 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

  • Refactor and tidy of docs/specs (bad1565)

[0.3.4] - 2026-03-31

Other

  • 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)

[0.3.3] - 2026-03-30

Chores

  • Update Cargo.lock after dependency resolution (f902350)

Features

  • gui: Add D3.js neighbourhood graph visualisation (44f6f7e)

Other

  • Merge remote-tracking branch 'origin/claude/snomed-ct-graph-visualization-kVr5V' (4348788)

  • Bump version to 0.3.3 (9e30e5e)

[0.3.2] - 2026-03-30

Features

  • CTV3 and Read v2 cross-map support from UK RF2 release files (4c06635)

Other

  • 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)

[0.3.1] - 2026-03-30

Chores

  • Add CODE-OF-CONDUCT.md, CONTRIBUTING.md, and ETHICS.md files (bfb1db6)

Features

  • Set up GitHub Pages deployment and add Zola configuration (681ebc7)

Other

  • 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)

[0.3.0] - 2026-03-28

Bug fixes

  • 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)

CI

  • Update actions/checkout v4→v6, actions/cache v4→v5 (bc9fd60)

  • Add release workflow for Linux x86_64, macOS arm64/x86_64 binaries (84b7ea5)

Chores

  • 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)

Documentation

  • 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)

Features

  • 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)

Other

  • 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)

Refactor

  • Clean up formatting and improve readability in multiple command files (b138d9c)

Tests

  • Unit tests for rf2 parsing and builder logic (19 tests) (dc9948c)