| Multi-color 3MF shows fewer colors than designed | paint_color slot mapping broken: the N+1 offset lost, or slot-0 triangles emitted without an explicit code so body collapses onto the default extruder. Every triangle gets FILAMENT_PAINT_CODES[slot + 1] in buildObjectXml. See git show cd841c9fc. |
| Orca CLI rejects 3MF (exit -24) or "file is newer than cli" | BAMBU_COMPAT_APPLICATION version outside the empirically safe window. Never bump casually; if forced, re-run both slicer CLIs. |
| Lid/secondary object renders body-colored despite paint_color | Metadata/model_settings.config per-object extruder (dominantSlot + 1) removed — it, not paint_color, colors a uniform object. Keep both sidecars. |
| Exported bin sits off-bed on small printers (A1 mini) | Claiming Bambu identity disables auto-arrange, so the file self-positions at (128,128). Adjust the build-item transform in renderBuildItems — never the vertices. |
| Split baseplate piece ~1.5mm too wide for the bed | Male dovetail tongue extends the bbox past grid math; budget lives in makeAxisConfig/axisChunkMm. Known unbudgeted exception: the detached-margin seam tongue (NOTE comment in splitPlanner.ts). Any new protruding connector must be budgeted there. |
| File silently missing from layout ZIP | Duplicate path overwrote it in fflate's plain-object keying → route through dedupeFileNames. |
| Saved layout shows a tiny bed (e.g. 4mm) or absurd split counts | printBedSize written in grid units. Always write mm clamped to PRINT_BED_MM_MIN/MAX (canonical clamp in src/core/store/layout/coreActions.ts); the load-time migration only rescues values < 42. |
| "Cannot export empty mesh (0 triangles)" | Correct behavior — validateMeshData refuses spec-invalid files. Fix the generator (geometry-generation skill). |
stack option silently does nothing | Vertical stacking is honored by single-object export3MF only; export3MFMultiObject ignores it by design. |
| Layout ZIP ignores custom name for inner files / baseplate errors vanish | Both deliberate: inner files force descriptive style (one custom name would collide), and baseplate failure degrades to a bins-only archive with a toast (.catch(() => null) in useLayoutExport.ts). Don't "fix" either. |