# Changelog All notable changes to Materializr are documented here. Format loosely follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow SemVer. ## [1.4.3] — 2026-07-07 Rolls up the whole `1.4.0 … 1.4.3` line (the intermediate patch releases shipped version-only bumps). Headline changes since **1.3.0**: ### Highlights - **One OpenCASCADE kernel everywhere — 7.9.3.** Desktop, Windows, macOS and Android now all build against the same OCCT 7.9.3 (Windows was pulled off a broken 8.0.0 that hung long-rod thread generation). More consistent boolean/fillet behaviour across platforms. - **Section View gets a real cross-section cap.** Clipped bodies render solid at the cut plane instead of hollow (#15). - **Per-ABI Android packaging.** Separate arm64-v8a and x86_64 APKs so Intel tablets/Chromebooks get a native build. - **Touch (im-touch) polish.** The operation popups (Push/Pull, Extrude, Fillet/Chamfer, Move Face, sketch dimensions) are unified into one **movable** dialog you can drag by a slim grip, the on-screen keyboard now rises when you **tap** a value field, and the rail shows **Push/Pull vs Extrude** based on whether the selected sketch drives a body. ### Fixed - **Duplicated sketches are now independent** of the original's body — editing, push/pull or extrude on a copy builds a new body instead of retro-modifying the source, and the stray selection fill is gone (#21). - **Soft keyboard on touch** now appears when you tap Push/Pull, Extrude and Fillet/Chamfer value fields (#22). - **Snap to grid** is honored by Extrude, Push/Pull and Move Face (the distance and in-plane slide snap to the grid step); Fillet/Chamfer stay free (#24). - macOS "no file-dialog program found" on Import/Export; overlapping bodies z-fighting; assorted sketch/history reload fixes. ## [1.3.0] — 2026-07-02 The stable rollup of the whole `1.3.0-beta.1 … beta.11` line, plus one fix that landed after the last beta. Per-beta detail is in the entries below; the headline additions since **1.2.8**: ### Highlights - **Unfold / flatten to 2D cut patterns.** Lay a 3D body flat into a developable net and export it as **SVG** or **tiled PDF** — with a live page-break preview, magenta **registration crosses** in the overlaps for precise multi-sheet assembly, rotate / auto-fit, and a conformal option for double-curved shells. Straight from solid to laser cutter, vinyl, or paper template. - **STL import.** Bring in a mesh (accuracy slider, wireframe toggle) and sketch on its flat faces — reference or rework printed/scanned parts. - **Twist Face** and direct face editing — the Rotate gizmo's third ring spins a face about its normal to spiral the walls; alongside taper and scale-face. - **Interactive Mirror** — place and rotate a mirror line, snap, and mirror points / lines / circles / arcs / splines with coincident welding. - **Navigation that tracks 1:1.** Pan, push/pull, extrude and scale-face drags move exactly with the cursor at any zoom; **orbit spins around the object** (the pivot re-anchors onto the geometry at the view centre). - **Crisp UI on scaled Windows displays.** The app is now per-monitor DPI-aware, so at 125–200% scaling it renders at native resolution (sharp) instead of a blurry bitmap-upscale. *(New in stable — landed after beta.11.)* - **Smarter sketch snapping** — snaps onto the host body's adjacent-face edges and continuously along in-plane hole rims / fillet arcs; grid-relative snap bands so fine grids draw short segments; post-draw resize of lines, rects and arcs by exact dimension. - **Opt-in beta channel** — Settings toggle to receive pre-release builds early. - A broad **stability & performance pass**: multi-instance crash-recovery fix, GPU-cached sketch/selection rendering, and a backend audit — smoother on complex models and tablets. APK versionCode 28. ## [1.3.0-beta.11] — 2026-07-02 (pre-release) Feature-complete cut for 1.3.0. APK versionCode 27. ### Added - **Twist Face.** The direct face-editing gizmo's Rotate mode gains its third ring — the blue one, lying *in* the face plane (about the face normal). Grab it to **spin a face relative to the opposite cap**, spiralling the walls between them; the panel also takes an exact twist angle. Built as a layered ruled loft, so any total angle works (a single loft would cap at ~45°), and an over-twist that self-intersects is refused cleanly rather than producing garbage. Tilt and twist are separate operations — one gesture does either, not both. ### Changed - **Navigation tracks 1:1 at any zoom.** Pan, and the push/pull, extrude, and scale-face drag handles, now move the world/face exactly one pixel's worth per pixel dragged, instead of a fixed scale that felt sluggish zoomed in and jumpy zoomed out. The grabbed point stays under the cursor. - **Orbit spins around the object.** The pivot re-anchors onto the geometry at the view centre at the start of each orbit (with a ring-sample fallback that lands between two parts when you're looking down the gap between them), instead of a point that had drifted behind the model — which used to read as a blend of pan and rotate. The image doesn't jump; only the pivot moves. - **Sketch snapping scales with the grid.** At a fine grid (e.g. 0.1 mm) the snap bands are now grid-relative, so you can draw short segments and place points one increment apart. Point/endpoint snapping — including loop closure — is gated behind the inference toggle: with inferences off, nothing captures the cursor. The live length readout shows hundredths (trailing zeros trimmed). - **Isolate & visibility.** Right-click **Isolate** now actually hides the other bodies from the viewport menu, a new **Show All Bodies** brings them back, and the redundant "Hide Others" entry was removed. ### Fixed - **Crash-recovery race between two running instances** (a `SIGBUS` / wrong-session restore) — each instance now claims its own recovery slot via an OS file lock, so they never fight over one autosave file. - **"Unhide sketch → not responding"** on heavy projects — unhiding a complex sketch no longer forces a full re-tessellation or an OCCT region rebuild on the hover path. - **Push/pull on an unlinked sketch** no longer fuses the new material into the body the sketch was *originally* drawn on; a detached sketch behaves as free-floating. - **Couldn't draw short lines/arcs** — a segment no longer welds its second point back onto its own start, so sub-0.3 mm geometry commits. - **Selection outline / gizmo lagging** at the pre-move position after a multi-body move. - **Non-finite numeric input** (e.g. `1e999` → infinity) is rejected at every entry box instead of flowing into the geometry kernel; pattern instance counts are clamped so a huge typed number can't hang the app. ### Performance - Big pass for complex projects and tablets: **gizmo Move/Rotate/Scale drags are GPU-only** (no per-frame remesh), **static sketches and selection highlights render from cached GPU buffers**, and several per-frame document walks (the sketch↔body link map, the toolbar's face scans, history/items panel work) are now memoized. Noticeably smoother orbit and drag with many bodies on screen. - Leftover per-interaction debug output is now gated behind `--verbose`, and a round of dead code was removed. ## [1.3.0-beta.10] — 2026-06-30 (pre-release) ### Fixed - **Oversized window on small / scaled Windows displays.** On a 1080p (or smaller) Windows screen at the OS-default 125–150% display scaling, the fixed 1600×900 window opened larger than the virtualised desktop and spilled past every edge — hiding the taskbar, the title-bar close button, and the sides of both dock panels. The window now clamps its initial size to the display's usable work area (taskbar excluded) and starts **maximized** when the screen is too small; the clamped size becomes the restore size, so un-maximizing or a minimize→restore no longer overruns the display. 2K+ Windows screens, Linux, macOS, and Android were unaffected. ### Changed - **Android: OCCT geometry kernel 7.8.1 → 7.9.3**, matching the desktop/Linux build so behaviour stays consistent across platforms. APK versionCode 26. ## [1.3.0-beta.9] — 2026-06-30 (pre-release) ### Added - **Flat-pattern viewer: rotate + print preview.** The Unfold dialog can now **rotate** the whole pattern — a slider, **−/+ 1°** fine steps, a **+90°** button, and **Auto-fit**, which snaps to the orientation that needs the fewest pages. A single **Export** button with an **SVG / PDF** dropdown drives the preview: SVG shows a clean 1:1 layout, PDF overlays a live **page-break grid** with a page count so you can see exactly how it tiles before exporting. - **PDF alignment marks.** Tiled PDFs get magenta **registration crosses** in the page overlaps — the same point prints on both adjacent sheets, so you overlay and slide until the crosses coincide for precise assembly. A **Marks** dropdown (None / Sparse / Normal / Dense) sets their density. ### Fixed - **Conformal unwrap of a cone** came out a wrapped full disk (~12000% stretch); it now slits the apex and unwraps to a clean **sector** like the developable net. Conformal on a closed solid (which can't flatten to one piece) now shows a clear warning steering you to untick Conformal for the developable net. ## [1.3.0-beta.8] — 2026-06-30 (pre-release) ### Added - **Unfold / flatten surfaces into 2D cut patterns.** Select a body — or just the faces of one panel — and **Unfold / Flatten** lays the surfaces out flat for laser cutters, CNC, or printed templates. Flat and box-like parts unfold into a connected net; **developable** curved skins (cylinders, cones, extruded profiles, a square→round loft) unroll into one connected piece, hinging whole panels along their shared edges and picking the layout with the smallest flat area. **Doubly-curved** surfaces (spheres, funnels) flatten via an opt-in **Conformal unwrap** (Least-Squares Conformal Map, Blender-style) that auto-cuts a seam to open closed shapes. A **material** setting (Pliable / Semi-rigid / Rigid) and **thickness** drive the bend/score lines and mitre offsets (e.g. ½″ ply at a 90° corner → a 6.5 mm mitre line). Export the flat pattern as **SVG** (1:1 mm, for laser/CNC) or a **tiled, full-size PDF** (US Letter or A4) with crop marks, tile overlap, and a 50 mm scale bar to verify the print came out at true scale. ## [1.3.0-beta.7] — 2026-06-29 (pre-release) ### Added - **Import STL meshes.** File ▸ Import ▸ STL brings in an STL (ASCII or binary) as a mesh body. An import dialog offers an **Accuracy** slider — lower simplifies the mesh (faster, with larger merged flat faces), higher keeps more detail — and a **wireframe** toggle. Genuinely near-coplanar facets are merged into single planar faces, so you can **pick a flat region and use "Sketch on Face"** to retrace it by hand — handy for recreating a model from a scan or a print when it can't be done automatically. Sketching on a mesh face best-fits the plane to the region you picked, so it stays accurate even on a simplified import. Imported bodies are tagged as meshes (saved with the project) and use a fast cached picker so selection stays smooth; the facet wireframe can be turned off here or in Settings ▸ Rendering. ### Fixed - The sketch grid step now persists across launches (it was written to the settings file but never read back). - Settings export/import (JSON) now round-trips the panel-visibility toggles and touch sensitivities, matching the on-disk settings. ## [1.3.0-beta.6] — 2026-06-29 (pre-release) ### Added - **Snap to the host body's edges while sketching.** Starting a sketch on a solid's face already let the cursor snap to that face's own corners and edges; now it also snaps to the edges of every neighbouring face that touches it — the side walls and bordering edges around the face you're drawing on — so you can line geometry up with the existing body, not just the single face. - **Continuous snapping along round host edges.** Hole rims and fillet arcs that lie in the sketch plane are now snapped along their whole perimeter (respecting the arc's span), instead of catching only at a few sampled points. ## [1.3.0-beta.5] — 2026-06-29 (pre-release) ### Added - **Interactive Mirror.** The sketch Mirror tool now places a movable, rotatable mirror line (with a live ghost preview) instead of mirroring instantly across a fixed vertical axis. The line carries the same move/rotate gizmo as sketch elements — drag the arrows/centre to position it, the ring to rotate (snaps to 5° increments) — plus Vertical/Horizontal presets and ±45° nudges in its panel. It now mirrors points, lines, circles, arcs and splines (was points + lines), welding coincident vertices. The line snaps to half the grid step, so the reflected geometry lands on whole grid increments. ### Changed - **Copy lands offset and selected.** A sketch Copy now drops the duplicate two grid steps away (not exactly on the original) with the move gizmo already over it, so you can immediately drag it into place instead of fishing two stacked copies apart. - **Box-select catches curves.** Click-and-drag selection now includes circles, arcs and splines, not just points and lines — and selected splines are highlighted like everything else. - **Splines render in the standard cobalt** instead of green, matching every other sketch element. - **Bigger move/rotate gizmo on touch.** The sketch gizmo's handles and catch radius scale up in touch mode so they're comfortably finger-sized. ### Fixed - **ViewCube frames the in-progress sketch.** Clicking the ViewCube during the very first sketch (no committed bodies yet) snapped to a tiny default cube; it now encompasses the sketch you've drawn so far. - **Two-finger pan/zoom mid-sketch leaves no debris.** Starting a two-finger gesture while a drawing tool is active no longer drops a stray start vertex or half-placed shape from the first finger — the placement is rolled back so navigation is clean without the Move button. - **History item highlight is dismissable.** Clicking a sketch history step highlights its element; clicking the same step again now clears it. ## [1.3.0-beta.4] — 2026-06-28 (pre-release) ### Changed - **Touch — calmer pan, faster zoom by default.** The baseline (1.0×) two-finger pan was twitchy and the pinch-zoom was painfully slow. The base sensitivities are retuned (pan ×0.5, zoom ×2.5) so the out-of-the-box feel is right; the Settings sliders still scale from there. ### Fixed - **Sketch Select/Move no longer shows inference guides.** Snap markers and labels only appear while you're actually drawing now — hovering with the Select/Move tool (or with touch "Move" mode on) no longer clutters the view with guides it can't act on. - **Selecting a sketch element no longer leaves it highlighted after you switch tools.** Picking a line/point with Select/Move and then choosing a drawing tool now clears the golden highlight instead of leaving it stuck on. - **Touch — scrolling a menu no longer selects the options it passes over.** A drag-to-scroll over the Tools list released the press *on* the button it started on, registering as a tap. The cursor is now parked off-screen before the release so a scroll flick just scrolls. - **Touch — panels scroll with a natural finger drag.** Dragging inside the Settings window (and other panels) moved the whole window instead of scrolling. Windows are now movable from the title bar only, so body drags fall through to drag-to-scroll. ## [1.3.0-beta.3] — 2026-06-28 (pre-release) ### Fixed - **Splash screen no longer hangs until you touch the window.** The post-launch render grace only overrode the focus check, not the idle-skip — so at a fresh, idle startup the first real UI frame stayed undrawn behind the loading screen until a tap or mouse-move woke the loop. The grace now overrides the idle-skip too, so the splash→UI handoff always completes on its own. ## [1.3.0-beta.2] — 2026-06-28 (pre-release) ### Fixed - **ViewCube — edges and corners stay selectable until a face is edge-on.** The new edge-click feature culled edge spots and corner dots once a face tilted past ~45°, even though the face itself stayed visible to 90°. Visibility is now derived from face adjacency (a vertex/edge is live while a face bordering it faces the camera), so they track the real silhouette. ## [1.3.0-beta.1] — 2026-06-28 (pre-release) First build of the **beta channel**. Headline feature: sketch elements are now resizable after they're drawn. ### Added - **Resize sketch geometry from the Properties panel.** Select an element while editing a sketch and change its size directly: - **Lines** — set the **Length**; the line grows symmetrically about its midpoint, and anything sharing its endpoints (chained lines, rectangle corners, arc ends) follows along. - **Rectangles** — select any side to edit **Width × Height**; the centre stays put. Detected automatically from one selected side. - **Arcs** — **Radius** and **Chord** both scale the arc keeping its shape (chord = the straight distance between the endpoints); **Sweep** changes the included angle. Moving a point shared with an arc bends that arc to preserve its swept angle. - These edits are proper undoable history steps, and selecting an element highlights its history step (and vice-versa). - **ViewCube edge clicks for two-face views.** The cube could snap to a single face or a three-face corner; now hovering near a visible edge highlights that seam, and clicking looks straight down it so both adjacent faces are seen at once (12 edge spots — 4 vertical, 4 top, 4 bottom). Hover-revealed, no persistent marker, so the cube stays uncluttered. - **Beta update channel.** A new *Settings → Include pre-release (beta) builds* opt-in. With it on, the in-app update check also offers pre-releases (like this one); left off, you stay on stable releases only. The two channels are kept apart automatically — stable users are never shown betas. ### Fixed - **ViewCube clicks no longer go dead.** A regression gated cube clicks on `WantCaptureMouse`, which is true across the whole docked viewport — so faces, corners, rotate arrows, roll arcs, Home, and drag-to-orbit all stopped responding. Clicks are now gated on window hover instead, restoring every cube interaction. ## [1.2.8] — 2026-06-27 macOS arrives, plus security hardening, correctness fixes, and sketch/history polish. ### Added - **macOS (Apple Silicon) desktop build.** A native arm64 build, shipped as a `.dmg` — the fourth platform alongside Linux, Windows, and Android. Retina / HiDPI viewport, the system OpenGL backend, and a self-contained bundle. ### Fixed - **Sketch — lines latch anywhere on an arc**, not just at its endpoints. Arcs now snap like circles do, with the latch confined to the arc's actual span. - **Sketch — arcs (and splines) divide regions.** An interior arc that splits a face (e.g. the band between two arcs) is now its own selectable, push/pullable region instead of being swallowed by the surrounding area. - **History — disabling a step no longer deletes the whole body.** Toggling a step rebuilds the model in place, so disabling a lone push/pull on a base body reverts just that move and keeps the body; re-enabling restores it cleanly instead of erroring. Disabled steps are also respected by undo/redo (no model desync), and the threaded thread-cut worker no longer races the render thread. ### Security - **Hardened the untrusted-file parsers and the update flow** following a code audit: decompression-bomb caps on the project/recovery and SVG loaders, bounded length-prefixes and count loops, try/catch around STEP / IGES / project import (including OCCT kernel faults), a shell-free URL opener with https-pinned update URLs, and a size-/redirect-capped update checker. No behavior change for valid files. ### Changed - **Docs now match reality:** de-advertised features that weren't actually reachable (Sweep, the 2D Drawing workspace, Align, DXF / image export) and relabeled SVG export as the real per-sketch path. ## [1.2.7] — 2026-06-26 Bug fixes from the first round of community reports. ### Fixed - **Shell no longer crashes** when a hollow exceeds the body's available wall space (e.g. shelling one face, then another, and dragging the thickness past what fits). The operation now fails cleanly instead of taking the app down. Under the hood this re-armed OCCT's kernel-fault guard in release builds, so other modeling tools are more crash-resistant on degenerate geometry too. - **Measure → Object** reports a body's size on the correct axes — height now reads under **Z**, not Y. - **Touch:** a slow, deliberate two-finger pan no longer flips into a zoom. Pan/zoom intent is judged from net finger travel with a bias toward pan, so the small non-parallel wobble of two fingers can't be mistaken for a pinch. - **Settings:** fixed an internal control-ID clash on the touch Orbit/Pan sensitivity sliders (a debug-build warning; harmless but real). ## [1.2.6] — 2026-06-25 Crash safety and grid polish. ### Added - **Crash/hang recovery autosave.** The whole project — including an **unsaved** one with no file yet — is snapshotted to a recovery sidecar as you work, so a crash, hang, or kill no longer loses your model. On the next launch it offers to restore the recovered work. Independent of the (off-by-default) autosave, which only writes an already-saved file. ### Changed - **Grid:** removed the "Grid shade" slider (it only tinted the sketch-plane grid and looked inert in the normal view), and gave the every-10th decade lines more contrast against the rest in both the ground and sketch grids. ## [1.2.5] — 2026-06-25 Modeling and viewport polish. ### Added - **Grid line thickness.** A "Grid thickness" slider (0.1×–2×) in Settings → Appearance scales the grid line width, alongside the existing opacity and shade controls. Applies to both the ground and sketch grids. ### Fixed - **Move Face on a plain face.** Move Face wrongly refused an ordinary face (e.g. a cube side) with an "only through-holes can be moved" message — the hole detector flagged a face with no bore as a "pocket". Plain faces now move normally; real hole-moving is unchanged. - **ViewCube no longer steals panel clicks.** Clicking a panel that overlaps the ViewCube's corner (e.g. the Move Face *Cancel* button) registered as a cube-face click and snapped the camera to that face. The cube now ignores clicks an on-screen widget consumed. - **Orbiting out of a Top/Bottom view.** The first orbit after leaving a straight-down/up view snapped the camera to a fixed right-side view; it now tips off the pole following the view's current orientation. - **Splash flash.** Removed an occasional black flash on the startup splash by priming both swap-chain buffers on the first frame. ### Changed - **Move Face arrows** are coloured by world axis (X red, Y green, Z blue) to match the main move gizmo, instead of a single yellow. - **Thicker gizmo handles** — the move arrows and rotate rings are easier to grab. ## [1.2.4] — 2026-06-24 UI clarity and robustness. ### Added - **Box / Cylinder / Sphere / Cone / Torus primitives**, authored in the Z-up UI convention so they stand up correctly. - **Multi-target Subtract** — checkbox modal to subtract many tools from many bodies at once, with an option to keep the tool bodies. ### Fixed - **World grid** no longer drops out at grazing/level camera angles. - **Boolean robustness** — a tiny-fuzzy retry plus a `BRepCheck_Analyzer` validity gate so a Subtract never commits self-intersecting geometry. - **Desktop startup** draws the UI without needing a click when the window manager is slow to focus a terminal-launched window. ### Changed - **Radial Pattern → Circular Pattern**, and **Lathe vs Revolve**: the toolbar button reads "Lathe" for a selected sketch (spin a profile into a solid) and "Revolve" for a body (rotate around an axis — a fan or hinge). - The **Shell** thickness slider snaps to 0.1. ## [1.2.3] — 2026-06-21 Android startup fixes (regressions/oversights from 1.2.2). ### Fixed - **Android: the loading screen no longer hangs on "Almost there" until you tap.** 1.2.2's render-on-demand suspended drawing while the window reported no input focus, but Android doesn't report focus until the first touch — so the splash never handed off to the UI. The background render-suspension now only applies on desktop (Android already suspends backgrounded apps at the OS level). - **Android: the splash showed the wrong version (1.2.0).** The Android native build hardcoded the version string separately from the app version and had drifted. It's now passed through from the build's `versionName`, so it can't drift again. ## [1.2.2] — 2026-06-21 Resource-usage and autosave fixes. Backward compatible — existing projects open unchanged. ### Fixed - **Autosave actually runs now.** It was effectively never firing unless you interacted continuously, so a project you edited and then left alone was never saved and closing always prompted "unsaved changes." The check now runs while idle, on a wall-clock timer. ### Changed - **Render on demand — much lower CPU/GPU/battery use.** The app no longer redraws at 60fps when there's nothing to show: it stops rendering when idle, when a sketch or a live preview (push/pull, fillet, move, …) is left open and untouched (a 1s grace covers interaction), and — most importantly — **whenever the window is in the background.** A backgrounded app previously kept the GPU busy enough to make the whole desktop's cursor stutter on shared-GPU systems; that's gone. Interaction and orbiting are unchanged (still smooth at 60fps). ### Added - **AppStream metadata** in the AppImage, so AppImage managers (Gear Lever, AppImagePool) and software centres show the description, screenshot, links and release notes instead of just the name. ## [1.2.1] — 2026-06-21 Parametric-edit reliability fixes found while dogfooding multi-feature parts. Backward compatible — existing projects open unchanged. ### Fixed - **Editing a fillet/chamfer picks the right one.** Clicking a rounded face to edit it no longer grabs a neighbouring fillet of a different radius, and the "Edit Fillet/Chamfer" option no longer disappears after you cancel an edit. Face→feature mapping is now matched by blend geometry instead of fragile index bookkeeping, and is refreshed after every edit (commit *and* cancel). - **Editing an early feature no longer deletes geometry.** A body built from a duplicated sketch (e.g. a lid) could, on a reloaded project, be cut into a body it happened to overlap — deleting part of that body (a box losing its floor) and stranding the rest of the history. A reloaded additive extrude now faithfully recreates its own body instead. ## [1.2.0] — 2026-06-20 Features that were long overlooked, plus a round of parametric-reliability and viewport fixes. Backward compatible — existing projects open unchanged. ### Added - **Move Hole** — slide a through-hole laterally across the face it pierces (round, square, polygon; constant, countersunk, counterbored and stepped holes). Reuses the Move tool + gizmo; under the hood a boolean re-cut, so cavities are never filled. Survives save/reload as an editable step. - **Light theme for the viewport** — the background gradient, grid, and ViewCube now follow the UI theme (dark-on-light grid + ink) instead of staying dark. - **Repair Geometry** (Face Operations) — remove a face and heal the surrounding faces back together: take a baked fillet/chamfer back to a sharp edge so it can be re-applied, or clean an unwanted round/hole off an imported part. - **Sketch grid opacity + shade** controls (Settings → Sketch) — dim the grid and set its greyscale so it reads on a light/white body or a dark scene. - **Duplicate Sketch** + edit a sketch element's size (circle Ø / arc R) straight from the Properties panel — for same-layout/different-holes variants. - **Editable circle diameter from history**, and **symmetry + pre-placement alignment** sketch inferences. ### Changed - **History** names each sketch step by its geometry and size ("Rectangle 80 × 45 mm") instead of a generic "Add sketch element"; **frozen (baked) steps are marked amber** so they're easy to spot. - **Section view** offset range now adapts to the model's size (was a fixed ±100 mm that couldn't traverse bigger parts). - The load-time "older save" warning is honest (no impossible "re-apply" advice — it points at Repair Geometry) and dwells longer. ### Fixed - **Grid no longer bleeds through bodies / punches through the face you sketch on** (it's drawn after geometry with depth-writes off), and it now fades cleanly under the opacity slider instead of leaving a grey ghost. - **Sketch on a flat-but-non-planar-surface face** (e.g. the slanted sides of a scaled-down box) now works, and the grid aligns to the face edge instead of sitting ~45° off. - **Parametric edits survive reload**: editing an op upstream of a boolean/delete now propagates; sketch ids are preserved (sketch edits no longer bake); circle-diameter edits reach the body; a failed sketch edit reverts cleanly instead of half-building. **Move-hole now reloads editable** (was always baked). - **Push/pull no longer inverts** on a holed / annular face. - **Startup "(not responding)" freeze** — the launch update-check runs off the main thread. ## [1.1.0] — 2026-06-18 Feature + fix release, with a large pass on the Android touch experience. ### Added - **Sketch → SVG export** (1:1 mm, polyline) for laser cutters and 2.5D CNC — from the Items-panel sketch menu and the new viewport sketch menu. - **Viewport sketch context menu** — right-click (or long-press) a sketch: Edit / Export as SVG / Move / Rotate / Delete. - **Settings → Panels** — per-panel show/hide (Tools, Interactions, History, Items, Properties), persisted. - **Touch sensitivity sliders** (orbit / pan / zoom) under Settings → Navigation. - **AppImage delta auto-update** — the Linux AppImage now embeds gh-releases update info and ships a `.zsync`, so AppImageUpdate / Gear Lever can update it. - In-app **"Join our Discord"** link in the About dialog. ### Changed - **Boolean Union/Intersect** combine ALL selected bodies; **Subtract** asks which body to keep. - **Sketch snapping** tiered by inference level: grid-vs-curve nearest-wins (Reduced), land on grid∩curve (Full/Max), grid+endpoint only (Off). - Settings reorganized (Navigation tab; per-panel visibility; tidier grouping). - Listing/README positioning: "the middle ground between Tinkercad and FreeCAD". ### Fixed - **Push/pull direction** on faces whose orientation was inverted (the truly outward normal is now verified via a solid-classifier test). - **Gizmo move** no longer drifts the un-moved axes when snapping. - STL/STEP export enforce their file extension when the picker returns a bare name. - **Touch:** panels resize and re-dock by drag; the Settings scrollbar drags; double-tap selects the body (even over a sketch); two-finger pan/zoom lock to one gesture at a time; box-select via Alt+drag in trackpad mode. ## [1.0.1] — 2026-06-14 Bugfix release. Android-focused: STEP import could crash the app instantly on some files. Desktop behaviour is unchanged apart from a hardened importer. ### Fixed - **STEP import crash on Android.** OpenCASCADE's shape-healing resource loader closes a file descriptor in a way Android's fd-sanitizer treats as fatal, aborting the process the moment a STEP file was opened. The sanitizer is now downgraded to warn-only at startup, so imports complete normally. (Desktop has no fd-sanitizer and was never affected.) - STEP import now catches OpenCASCADE exceptions and reports a graceful error instead of letting a malformed or unusually complex file take down the app. ## [1.0.0] — 2026-06-12 First public 1.0 release: cross-platform (Linux desktop + Android), with a built-in tutorial and a round of tablet dogfooding fixes. Android ships as a release-signed arm64 APK; Linux as an AppImage. ### Added - **Getting Started tutorial.** A skippable, step-by-step onboarding overlay (Help → Getting Started) that explains the basics and shows both mouse and touch controls, highlighting whichever the current device uses. Built as its own plugin on two new generic plugin hooks (per-frame overlay rendering and menu-item contributions). - **Touch ergonomics.** Drag-to-scroll panels, per-side collapse tabs to fold the Tools / Items columns away on small screens (desktop: View → Hide Panels / F9), a larger finger-friendly navigation cube, and a "designed for tablets" notice on very small screens. - **Storage Access Framework** on Android: system document picker for open / save, and a Share / Save-to-device sheet for STL / STEP / IGES / glTF export. No broad-storage permission requested. ### Fixed - Edges could be selected *through* curved faces (cylinders, fillets, spheres): the occlusion test now uses the face normal at the actual click point. - Sketch dimension input (line, and the rectangle's height step) clipped its text; the box is now a fixed size and stays on-screen. - Push/Pull (and other face-op) click-drag now works on desktop with a left-orbit / trackpad binding, not just on touch. ## [0.9.9.1] — 2026-06-12 Touch sketching polish from tablet dogfooding. Everything here gates on touch mode or the inference level, so desktop behaviour is unchanged — except the two fixes noted as cross-platform. ### Fixed - **Crash when tapping Undo repeatedly while a sketch was open.** Only the Ctrl+Z path guarded against undoing past sketch entry into the host body; the menu / History-panel / command paths did not, so on touch (where you tap a button) it could roll the body back under the live sketch and abort. A history undo-floor now blocks every undo path at the sketch-entry step and greys the buttons out there. *(All platforms.)* ### Added - **Press-drag-release sketching on touch.** The line tool drops its first vertex on press, rubber-bands the segment as you drag (with a live length readout), and commits on release — then chains. The arc tool follows the same flow for its first two points (press-drag the chord), then a tap sets the bulge. Tap-to-place still works as a fallback. - **Arc chord hint.** While drawing an arc's chord, a curved hint arcs over it so it reads as an arc-in-progress rather than a plain line. *(All platforms.)* - **Chain controls** on the touch context bar: **Finish / Back / Cancel** for line and spline chains — Back drops the last segment/point, Cancel scraps the whole chain. - **"Max" inference tier.** Everything Full does, plus wider snap/alignment catch ranges tuned for fingertips. Full and below are identical on every device, so mouse/keyboard users are never over-snapped. Defaults on for touch. - **Sketch line width** setting (Settings ▸ Display, 1–6 px) so sketch geometry reads over the grid; vertex markers scale with it and now render on Android (the GL ES point-size path was missing). ### Changed - **Touch tooltips time out** after 15 s of no interaction, so a tip left hanging by a finger-lift clears itself. ## [0.9.9] — 2026-06-12 ### Added - **Android support.** Materializr now builds and runs as a touch-capable Android app (arm64), with file open/save, immersive fullscreen, and the full modeling kernel. OpenCASCADE / SDL2 / FreeType are cross-compiled from pinned, SHA-256-verified upstream source. - **Touch mode — a runtime setting on every platform** (Settings ▸ General), not a separate build. Defaults on for Android, off on desktop, and can be flipped either way — so a tablet with a mouse/keyboard runs the full desktop model, and a desktop touchscreen / convertible / Surface can switch to touch. When on: larger hit targets and HiDPI scaling, long-press for right-click context menus, press-drag-release sketch placement (circle/rectangle in one gesture), one-finger orbit / two-finger pan / pinch zoom, draggable push-pull and gizmo arrows, sub-shape multi-select (edges and faces), on-screen Multi-Select / Move toggles, and a soft-keyboard toggle for text fields. ### Changed - **Windowing and input now run on SDL2 on every platform** (desktop included), replacing GLFW, so one backend serves Linux, Windows, and Android. No change to desktop mouse/keyboard behavior. ## [0.9.8.1] — 2026-06-11 ### Fixed - **Rippled curved surfaces in exported STL / glTF.** The mesh used a 0.5-radian (~28°) angular tolerance, so small fillets came out as a few flat steps — a 90° fillet got ~3 facets. Export now tessellates at a print-quality 0.01mm chord / ~5.7° (STL) and a finer chord / ~11° (glTF), so blends come out smooth. Files are somewhat larger, which is the right trade for printing. ## [0.9.8] — 2026-06-11 ### Added - **Face transforms respect feature boundaries.** Move / Scale / Rotate Face used to loft to the opposite end of the body and rebuild the whole solid, so on a multi-feature part it erased everything in between (scale a funnel's spout and the funnel collapsed into a cone). They now find where the adjacent feature actually ends and loft only within it, booleaning the result back so every other feature survives — funnels, stepped boxes, and chained transforms. - **SVG import, much more tolerant.** Line-art icons (stroke-only paths) are offset into closed ribbons; `` renders to glyph outlines in your installed fonts; `