|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## 0.8.22 — 2026-04-23 |
| 3 | +## 0.8.22 — 2026-04-30 |
4 | 4 |
|
5 | 5 | ### New features |
6 | 6 |
|
|
34 | 34 | - Added opt-in `clinical_features` disease output backed by MedlinePlus |
35 | 35 | clinical summaries, reviewed HPO phenotype mapping, source-native evidence |
36 | 36 | URLs, and unsupported-disease empty states via |
37 | | - `get disease <name> clinical_features`. (252, 253) |
| 37 | + `get disease <name> clinical_features`. (252, 253, 254) |
38 | 38 | - Added offline routing via `biomcp suggest <question>` so worked-example |
39 | 39 | prompts can resolve to structured `_meta.workflow` guidance without requiring |
40 | 40 | a live tool call. (279) |
41 | 41 | - Added workflow-ladder sidecars and schema-backed `_meta.ladder[]` payloads |
42 | 42 | so routed workflows can carry explicit ladder steps across the CLI/MCP |
43 | 43 | contract. (282) |
| 44 | +- Added richer CLI help examples for batch/variant-limit usage and preserved |
| 45 | + the parser-level skill uninstall contract through current help and MCP guard |
| 46 | + surfaces. (217, 224) |
| 47 | +- Added opt-in article fulltext source-boundary coverage and PDF fallback so |
| 48 | + article retrieval can truthfully report source limits while recovering PDF |
| 49 | + text when structured fulltext is unavailable. (255, 256) |
| 50 | +- Added DDInter-backed drug-drug interaction workflows with |
| 51 | + `biomcp drug interactions <name>`, `get drug <name> interactions`, local |
| 52 | + bundle health, source-scoped empty wording, and `biomcp ddinter sync`. |
| 53 | + (303) |
44 | 54 |
|
45 | 55 | ### Docs |
46 | 56 |
|
|
57 | 67 | - Aligned the public landing-copy contract with the shipped `suggest` and |
58 | 68 | workflow landing bullets so `make test-contracts` accepts the current README |
59 | 69 | and docs homepage feature counts. (286) |
| 70 | +- Refreshed source, licensing, versioning, CLI decomposition, diagnostic, |
| 71 | + clinical-features, API-key, quality-bar, and staging-demo docs to match the |
| 72 | + shipped v0.8.22 surface and current local-runtime key expectations. (222, |
| 73 | + 272, 292, 304, 306, 314, 318, 329, 332, 341, 358, 362) |
60 | 74 |
|
61 | 75 | ### Fixes |
62 | 76 |
|
63 | 77 | - Changed custom CLI validation failures (`BioMcpError::InvalidArgument`) to exit |
64 | 78 | `2`, matching clap parser failures and separating bad usage from runtime |
65 | | - failures. |
| 79 | + failures. (353) |
66 | 80 | - Fixed `suggest` so resistance-to-drug mechanism questions anchor starter |
67 | 81 | commands on the drug instead of filler text. (291) |
68 | 82 | - Patched `rustls-webpki` to the safe release line and made `make check` enforce |
69 | | - the cargo-deny advisory gate alongside the existing license gate. |
| 83 | + the cargo-deny advisory gate alongside the existing license gate. (290) |
| 84 | +- Fixed cargo-install compatibility, deterministic EMA freshness checks, OLS4 |
| 85 | + smoke routing, WHO drug JSON envelopes, and WHO API cache-limit wording so |
| 86 | + install, health, and explicit WHO/API drug searches stay stable. (218, 220, |
| 87 | + 226, 232) |
70 | 88 | - Added compact diagnostic rows and capped disease diagnostic pivots so |
71 | 89 | gene/disease diagnostic follow-ups stay scannable and bounded. (266, 267) |
72 | 90 | - Replaced the stale GTR sample with a live-valid GTR example and added |
73 | 91 | zero-result recovery for the local diagnostic surface. (268, 269) |
74 | 92 | - Tightened entity-aware article follow-ups with a same-session loop-breaker |
75 | 93 | for overlapping suggestions and PubMed ESearch cleanup for bounded |
76 | 94 | question-format filler words. (277, 278, 283) |
| 95 | +- Improved sparse drug research-code recovery, relational `discover` filtering, |
| 96 | + trial help example/flag consistency, and CTGov intervention alias preservation |
| 97 | + so generated follow-up commands stay useful and shell-safe for degraded or |
| 98 | + ambiguous inputs. (302, 310, 313, 338, 339, 340, 342, 351, 357) |
77 | 99 | - Repaired the targeted `SPEC_SMOKE_ARGS` lane so it stores stable smoke |
78 | 100 | section IDs and resolves them to current mustmatch pytest item IDs at runtime; |
79 | 101 | the quality ratchet now checks collectability before stale line-qualified |
80 | 102 | selectors can reach `make spec-smoke`. (288) |
| 103 | +- Hardened update and machine-readable CLI contracts: `biomcp update` fails |
| 104 | + closed when checksum sidecars are missing, `biomcp --json version` documents |
| 105 | + its plain-text exception, `biomcp --json list` remains parseable, and |
| 106 | + short-literal update ratchets were replaced with structural behavior checks. |
| 107 | + (331, 333, 352, 355) |
| 108 | +- Stabilized MCP stdio no-input guidance, cBioPortal study download idle/stall |
| 109 | + handling, disease clinical-feature specs, OLS4 disease/discover fallback IDs, |
| 110 | + WikiPathways parallel tests, and protein ComplexPortal specs with regression |
| 111 | + coverage. (326, 336, 345, 346, 350, 354, 358) |
| 112 | +- Surfaced Semantic Scholar authentication/degradation status in article search |
| 113 | + and honored `Retry-After` during authenticated retries so throttled searches |
| 114 | + disclose source health and back off correctly. (364, 365, 366) |
81 | 115 |
|
82 | 116 | ### Internal |
83 | 117 |
|
|
89 | 123 | - Reworked `SPEC_SMOKE_ARGS` handling around stable smoke inventory and current |
90 | 124 | mustmatch pytest item IDs, and cleaned up `.march` artifact handling for |
91 | 125 | repo submission paths. (270, 271) |
92 | | -- Recorded the neural-reranking spike as a no-go for `0.8.22`: no runtime wiring |
93 | | - shipped, and the spike remains deferred from the release surface. (284) |
| 126 | +- Migrated the release gate to the spec-v2 corpus, made `spec-pr` self-contained |
| 127 | + for March kickoff, restored release-gate reliability, and kept stable smoke, |
| 128 | + canary, cache-warm, and test-contract lanes aligned with the current shipped |
| 129 | + docs/spec surface. (294, 297, 298, 299, 300, 301, 307, 308, 344) |
| 130 | +- Decomposed oversized CLI modules, absorbed residual line-cap allowlists, |
| 131 | + clarified the benchmark harness as internal, and added runtime-wiring/line-cap |
| 132 | + ratchets so structural cleanup cannot reintroduce public-surface drift. (309, |
| 133 | + 319, 320, 321, 322, 323, 324, 325, 334, 335, 343, 347) |
| 134 | +- Strengthened release readiness with gene-all warm-budget coverage, local gate |
| 135 | + uv-build fixes, leaked-artifact cleanup, binary asset attributes, CI wrapper |
| 136 | + stale-binary warnings, Python 3.12/Rust 1.95 CI compatibility, self-contained |
| 137 | + local-data spec fixtures, and final v0.8.22 readiness audits before publish. |
| 138 | + (247, 258, 262, 263, 285, 289, 315, 316, 317, 327, 328, 330, 348, 363, 367) |
| 139 | +- Recorded the diagnostic-entity, HPO clinical-feature, Obsidian vault, |
| 140 | + biomedical news, post-v0.8.21 shipped-surface, and neural-reranking reviews |
| 141 | + as architecture or deferred work unless runtime wiring shipped in the bullets |
| 142 | + above. (230, 243, 244, 245, 246, 284) |
94 | 143 |
|
95 | 144 | ## 0.8.21 — 2026-04-16 |
96 | 145 |
|
|
0 commit comments