0.30.7
triggerdotdev/trigger.dev0.30.7Oct 4, 2026by Borda
Upgrading?
AI Summary
This release prioritizes stability by fixing video processing hangs and aligning MeanAveragePrecision calculations with `pycocotools`. It also allows dataset export to overwrite the source folder and fixes Transformers semantic output loading.
Key Highlights
- `process_video` raises errors instead of hanging on failed writes
- `MeanAveragePrecision` matches `pycocotools` with float64 recall
- Dataset export can write back into the source folder
- `from_transformers` accepts semantic output with scores
New Features
- In-place dataset export (overwrite source folder)
- Transformers semantic output support
- Fixed video processing hangs
- Fixed mAP calculation alignment
Full Release Notes
# v0.30.7 — Fewer hangs, truer mAP
Eight bug fixes: video processing, dataset export, mAP and Transformers loading no longer fail or hang silently.
- **`process_video`** raises on a failed write instead of hanging.
- **`MeanAveragePrecision`** matches `pycocotools` where recall lands on a threshold.
- **Dataset export** can write back into the folder the images came from.
- **`from_transformers`** reads semantic output that includes per-pixel scores.
Drop-in upgrade, no code changes. Stored mAP baselines may shift slightly.
## ✨ Spotlights / highlights
**`sv.process_video` stops hanging** ([#2636](https://github.com/roboflow/supervision/pull/2636))
A frame the writer rejects, or a callback that returns `None`, now raises instead of blocking forever.
```python
import supervision as sv
def callback(frame, index):
sv.BoxAnnotator().annotate(frame.copy(), detections) # forgot `return`
sv.process_video("in.mp4", "out.mp4", callback)
# before: hangs after `writer_buffer` frames
# now: TypeError naming the frame
```
**`sv.metrics.MeanAveragePrecision` matches `pycocotools`** ([#2638](https://github.com/roboflow/supervision/pull/2638))
Recall thresholds and recall are float64, as in `COCOeval`. A class whose recall lands exactly on a threshold used to score slightly high: mAP@50 0.7470 instead of 0.7415 in one case.
**Datasets re-export in place** ([#2637](https://github.com/roboflow/supervision/pull/2637))
```python
ds = sv.DetectionDataset.from_coco(
images_directory_path="data",
annotations_path="data/_annotations.coco.json",
)
ds.as_coco(
images_directory_path="data",
annotations_path="data/_annotations.coco.json",
)
# before: shutil.SameFileError
# now: annotations rewritten, images left in place
```
**Transformers semantic output with scores** ([#2643](https://github.com/roboflow/supervision/pull/2643))
`sv.Detections.from_transformers` accepts results from `return_segmentation_scores=True` instead of raising `KeyError: 'segments_info'`.
## 🔄 Migration guide
No migration required for this release.
## 📝 Notable changes
### 🔧 Fixed
- `sv.process_video` raises `RuntimeError("Writer thread raised: ...")` or `TypeError` instead of hanging when a frame cannot be written or a callback returns `None`. ([#2636](https://github.com/roboflow/supervision/pull/2636))
- `sv.metrics.MeanAveragePrecision` computes IoU and recall thresholds, IoUs and recall in float64, matching `pycocotools`. mAP changes only for classes whose recall lands exactly on one of the 101 thresholds, by up to about 0.007 mAP@50. ([#2638](https://github.com/roboflow/supervision/pull/2638))
- `sv.DetectionDataset.as_yolo`, `as_pascal_voc`, `as_coco`, `as_createml` and `as_labelme` export into the folder the images were loaded from instead of failing with `shutil.SameFileError`. ([#2637](https://github.com/roboflow/supervision/pull/2637))
- `sv.Detections.from_transformers` accepts semantic segmentation output with `segmentation_scores`; per-pixel scores stay out of per-detection `confidence`. ([#2643](https://github.com/roboflow/supervision/pull/2643))
- `sv.crop_image` clips finite crop coordinates outside the 32-bit integer range to the image bounds, instead of wrapping to an empty crop. ([#2642](https://github.com/roboflow/supervision/pull/2642))
- `sv.DetectionDataset.as_labelme` gives disconnected components of one mask a shared group ID, so `from_labelme` rebuilds one detection. ([#2640](https://github.com/roboflow/supervision/pull/2640))
- `sv.DetectionDataset.as_labelme`, `as_yolo` and `as_pascal_voc` export in-memory grayscale `(height, width)` images. ([#2641](https://github.com/roboflow/supervision/pull/2641))
- `sv.KeyPoints.with_nms` keeps skeletons with zero joints instead of raising a zero-size reduction error. ([#2639](https://github.com/roboflow/supervision/pull/2639))
## 🏆 Contributors
- **kevin** (@kevin9327) — stopped `process_video` hangs, made mAP match `pycocotools`, and fixed in-place dataset export.
- **Marvel Harisson** (@INo-xious, [LinkedIn](https://www.linkedin.com/in/marvel-harisson-4102b7345/)) — fixed LabelMe grouping, grayscale dataset export and keypoint NMS.
- **NIKHIL** (@Nikhi00718) — fixed `crop_image` clipping and Transformers semantic output loading.
______________________________________________________________________
**Full changelog**: <https://github.com/roboflow/supervision/compare/0.30.6...0.30.7>
Related Repositories
openclaw/openclaw★ 392,689
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,064
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 357,450
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,652
The open source coding agent.
n8n-io/n8n★ 208,248
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.