Repository navigation
v0.2.18 — YOLO region holes + abortable model load
Released 2026-08-09.
Fixed
-
YOLO detections keep their interior voids.
YoloDetectToolServicebuilt eachRegionfrompoly.exterioralone, so a mask with a hole through it was committed solid. This does not look like lost geometry, it looks like a detection that over-covers — which is the harder failure to notice.Holes now travel through the same view→image transform as the exterior; a ring left in view-local pixels lands elsewhere on the slide, frequently outside its own exterior. Each polygon already owned its own rings (the tracer emits them that way, and the segmenter service mapped them through), so a mask that splits into several polygons under thresholding needs no disambiguation — the rings were simply being dropped at the last step.
Rings that simplification reduces below three points are dropped rather than emitted as geometry that bounds nothing, and
holesis left unset rather than set to[], so a solid region does not round-trip through export as a donut with no rings.
Added
-
RetinalSegmenterService.getModelaccepts anAbortSignal. The retinal checkpoint is ~590 MB; previously a cancel reached the inference but not the download, so the transfer kept running and the UI sat in "Cancelling" until it finished.segmentSemanticpasses the run's own signal through.Cancellation lands within one graph compile rather than instantly: ORT session creation cannot be interrupted once started, so the signal is rechecked after the download and before the session is built.
A cancel deliberately does not abort a load already in flight. That promise is shared — the toolbar tool and a host's pipeline both use this service — so one caller's cancel must not tear the model out from under another. A second caller joining an in-flight load simply waits.
Changed
jax-ai-js^0.1.0 → ^0.1.1, which is where the signal plumbing lives:fetchModelalready honoured a signal, butfromPretrainednever passed one. No API breaks; the option is additive.
npm: @jax-data-science/sci-image-visualizer@0.2.18
Full diff: v0.2.17...v0.2.18