trimesh loads 3MF files as a Scene; force="mesh" fails on those. Detect Scene and concatenate all geometries before computing extents/volume. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- StlCache model: filename, cube_x/y/z (mm), volume_ccm - Migration 0007: stl_cache table - app/stl_analysis.py: trimesh-based analyse() + get_cache_map() - Runs immediately after upload in both /jobs and /brackets/{id}/jobs - Skips .gcode (no geometry), caches per filename, idempotent - Library selector in both modals now shows dimensions and volume - requirements: trimesh==4.5.3 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>