Releases
backend-v1.2.0
Compare
Sorry, something went wrong.
No results found
Bug Fixes
Import result counts are required on the wire (screening)
Report the compound ref too when both refs miss (both importers) (screening)
Structure fallback applies to compound-only rows; import total_rows regression test (screening)
Serialize number minting per workspace; surface constraint violations as 409 (registration)
Enforce one live molecule per InChIKey per workspace in the database (registration)
Remove per-cell hit call and per-readout hit threshold (campaigns)
Address whole-branch review findings (backend) (campaigns)
Require notes key on PATCH, normalise blank notes to NULL (campaigns)
Single-row readout create follows the run's shape (screening)
Curve-class filter on add-from-runs applies to curves only, not endpoint fallbacks (campaigns)
Compound activity tab shows reported endpoints for curve-less dose-response readouts (activity)
Reported-endpoint fallback reads well-less rows only (activity)
Add-from-runs preview and commit share one candidate resolver (campaigns)
Drc reported-endpoint fallback only fires on unscoped columns (search)
Refuse the summary header preview onto a welled run (screening)
Empty result_ids on bulk-remove is a 422 (campaigns)
Break display_order ties on id; tighten stage/bulk-remove DTOs (campaigns)
Campaign records its seed runs; resolution scope is per channel protocol (campaigns)
Depict renders again, and every campaign write answers 204 (api)
An ND that came off a curve is a miss, not untested (campaigns)
A reported endpoint keeps its qualifier and fills only its own intercept (campaigns)
A censored value that can't prove a criterion is a miss (campaigns)
A reported ">=40" stays censored instead of reading as 40 (campaigns)
Apply every null before any delete so id-only references stay FK-safe (admin)
Clear every fixable high and critical Trivy finding (security)
Documentation
Correct rule-module docstrings and record final-review findings (admin)
Features
STRUCTURE role on the summary-import mapping + SMILES header inference (screening)
Summary planner falls back to SMILES when the identifier misses; per-row unmatched_compounds (screening)
Summary preview/import resolve by structure on identifier miss; import result carries the shared vocabulary (screening)
One result vocabulary for import preview/import responses; structure on the summary mapping (screening)
Plate preview/import speak the shared result vocabulary; rows_skipped on the plate preview (screening)
Add hit-stage value objects and shared compare() (campaign)
Wire hit stages and overrides into the Campaign aggregate (campaign)
Pure stage evaluator (evaluate_stages, tally_stage_counts) (campaigns)
ORM models, repository mapping, and migration 074 for hit stages (campaigns)
Soft close — drop signature/collection, add reopen (campaigns)
Migration 075 — drop retired hit/publish columns (campaigns)
Published JSON gains stages and per-result stage outcomes (campaigns)
Stage use cases, routes, and DTOs (campaigns)
Stage_name on run import and mirror protocol (campaigns)
Stage override use case, DTOs, and API routes (campaigns)
Refuse direct entry onto calculated readouts across summary, plate and bulk paths (screening)
One run, one shape — refuse summary import onto welled runs and plate paths onto well-less runs (screening)
Dose-response channels fall back to reported endpoint rows when no curve survives QC (campaigns)
Compound page and search fall back to reported endpoints for dose-response columns; reported markers (activity)
Manual stage kind with a pending outcome (campaigns)
Bulk stage overrides and bulk row removal (campaigns)
Parent_stage_id and get-or-create on the stage_name paths (campaigns)
Stage counts on the draft read, summary endpoint, list summaries with status filter; viewer gate, channel reorder, stable result order (campaigns)
Resolution honours the campaign's source runs, with a per-readout opt-out (campaigns)
Maximum common substructure over a supplied molecule set (sar)
Page and filter a campaign's results server-side (campaigns)
Offer the maximum common substructure as a core, never pick it (sar)
Let the results filter take several outcomes (campaigns)
Name the libraries a campaign screened, and how much it read (campaigns)
Count each library's compounds through the campaign's stages (campaigns)
A draft's creator may delete it, and no delete while anything still uses it (protocols)
Cascade rules express references with or without a column (admin)
One exhaustive plan walk behind force-delete preview and execute (admin)
Tier-1 hard delete refuses on cascade-rule references too (admin)
Force delete refuses on campaigns and import templates, removes flags and attachments (admin)
Molecule force delete refuses while its data or open work remains (admin)
Export/import a full local environment as a bundle (replication)
Refactor
Remove per-result decisions; notes-only edit; add-from-campaign filters by stage (campaigns)
Tests
Reformat API test helpers after merge (campaigns)
Drop stale CV- registration-prefix assertion (molecules)
Bulk upsert writes a well-bound row on a welled run (screening)
Cover the bulk routes' reason and closed-campaign guards (campaigns)
Guard that every id reference says what a force delete does to it (admin)
Guard tests only count rules that actually stop an FK violation (admin)
You can’t perform that action at this time.