Releases: ecto/vcad
Releases · ecto/vcad
vcad v0.9.4
A big localization push, native printing to Bambu, and a serious round of ray tracer polish — plus a rebuilt cube-fillet pipeline and a STEP exporter that finally survives Difference.
New
- 12 new UI languages — German, Japanese, Simplified Chinese, Traditional Chinese, Korean, Brazilian Portuguese, Italian, Russian, Polish, Turkish, Dutch, and Czech translations using industry-standard CAD terminology (e.g. Verrundung, フィレット, 圆角, Raccordo).
- French UI translation — Added French (fr) to the i18n bundle, so menus, command palette, toolbar, status bar, and welcome screen render in French when selected or auto-detected from the browser.
- Expanded i18n coverage — About modal, guided tutorial, error screens, offline indicator, fork prompt, recent files, command palette, property panel, and feature tree now route through i18n, with English, Spanish, and French translations added for every newly-covered string.
- One-click Bambu LAN printing — Print directly to a Bambu P1S/X1/A1 over the local network: discover the printer, enter its access code (cached locally per serial), then Slice and Print to send a sliced
.gcode.3mfthe printer can run as-is, with live status polled every 2.5s. - Header feedback button — A megaphone button in the header's top-right opens a quick feedback dialog that submits as a prefilled GitHub issue.
- Inter typography — The UI now reads as Inter (self-hosted, variable), with Berkeley Mono reserved for code-shaped surfaces — formulas, coordinates, hex values, kbd shortcuts, logs — so panels and dialogs feel like a real desktop app instead of a code editor.
- Full keyboard navigation — Tab cycles focus between viewport, tree, and property panel; j/k navigate the part tree; R/H/W/D prime the matching property input from the keyboard.
- Screen-space ambient occlusion — Adds an SSAO pass to the ray tracer, darkening concavities and tight corners for crisper part definition.
- Adaptive supersampling — The ray tracer fires extra stratified rays only on edge pixels, giving clean silhouettes on the first frame with minimal cost overhead.
- Clone on Part and PartMesh — Added Clone derivation to Part and PartMesh, enabling copy-free duplication of parts in Rust modeling scripts.
Fixed
- STEP export through Difference — The writer used to error with
Invalid topology: half-edge has no parent edgeon every BRep that came out of a Difference (cube-minus-cylinder, plates with through-holes, stepped shafts) because boolean sewing leaves orphan half-edges where a curved face meets a polygonal hole; it now synthesizes a line edge for each orphan half-edge so the loop emits cleanly. - Cube-fillet rendering — End-to-end rebuild: cylinder centers now sit inside the solid (was sign-flipped, producing exploded panels), corners use spherical octants with boundary-shaped rings (was flat triangles + 3-tri fans), and sphere/cylinder boundaries weld at matching great-circle samples so creased_normals smooths the tangent edge cleanly.
- Loon export warnings — Exporting a document with Text2D, ImportedMesh, PcbBoard, EmbroideryPattern, or PartInstance now surfaces a clear warning instead of silently dropping the content.
- AI chat screenshot previews — When the AI used screenshot_viewport, the inline preview vanished as soon as the next turn started because the DB roundtrip for the JPEG data URL races the next reproject and Supabase Realtime can drop the large row; hydration now preserves any client-captured imageDataUrl across re-projections so the screenshot stays in the chat.
Installing on macOS
This build is not yet Apple-notarized, so first launch shows
"Apple could not verify 'vcad.app' is free of malware". To open it:
- macOS 15+ — System Settings → Privacy & Security → "Open Anyway".
- Earlier macOS — right-click
vcad.appin /Applications → Open. - Terminal —
xattr -d com.apple.quarantine /Applications/vcad.app.
You only need to do this once per install.