Repository navigation
Releases
leathercad: v1.6.0
Projects saved in 1.6 do not open in 1.5. 1.6 writes format 12, where 1.5 wrote 9; it opens every older project.
New project is now two: from scratch (Ctrl+N) and from template…. The sample wallet is a template, and Open sample project is gone from Help.
After the refinement. Several projects in one window, each in a tab, and new ones from templates; guides and alignment; dimensions drawn like drafting; rows of holes; export presets; taped sheets that say how they join, with an assembly map; per-printer calibration; and the whole performance backlog, so big patterns stay smooth. Printed output changes where dimensions, taped sheets and calibrated printers are concerned.
Known limits
- Print accuracy is measured on Linux only, through Print. Windows and macOS have no physical measurement on record. On Windows, print the saved PDF at Actual size, and check the 100 mm gauge with a rule before cutting.
- Calibration, and the taped-sheet arrows and assembly map, are not yet measured on paper.
- Not checked on a real Mac: the window's edited dot, and ⌘A outside a text field (#97).
- Moving the window to a monitor of another scaling is tested in emulation only.
- The installers are unsigned on Windows and ad-hoc signed on macOS, by decision. Getting started says how to open them.
1.6.0 (2026-11-02)
Features
- desktop: a save or an export says it happened, and an opened project fades in (#141) (1089943)
- desktop: LeatherCAD's own icons — a familiar outline with a leatherworker's detail (#133) (6d21f4e)
- desktop: place guides and align or distribute pieces (3.10) (#129) (70c53b0)
- desktop: several projects in one window, each in a tab, and new projects from templates (#132) (030b815)
- desktop: the app says when a new version is released, and links to it (8.9) (#124) (25c237e)
- dimensions drawn like drafting, and a piece's overall size (4.10b, Q15) (#147) (731afd7)
- document: convert a circle, arc or rectangle to a drawn path (3.12) (#139) (6521654)
- domain: a row of holes along any marking line (4.14) (#138) (8c4bc00)
- export: export a laser cut, a stitch guide or the whole template, choosing its layers (6.4) (#155) (d86b3b2)
- export: taped sheets say which sheet joins each edge, and a part taped into a grid prints a map (7.2) (#154) (c632824)
- print: calibrate a printer that prints a little large or small, and print to it corrected (7.5) (#156) (b03e779)
Bug Fixes
- desktop: a copy saved before a crash survives reopening the window on macOS (#116) (c43967a)
- desktop: a half-drawn line is given up when its tab reloads from disk (Q39) (#159) (865e087)
- desktop: a Parts tree row is named by all it shows (#144) (ee7fe7c)
- desktop: a quit no longer loses a preference changed just before it, or leaves a recovered copy behind (#187) (bb08f12)
- desktop: a save is flushed to disk and never writes a drag's preview (Q35, Q36) (#149) (c679993)
- desktop: an opened pattern is framed, the Print dialog says it is finding printers, and the rectangle tool's first click is quiet (#117) (e4145b9)
- desktop: keep canvases sharp when display density changes (PERF-011) (#212) (ec76d82)
- desktop: on Windows the window opens with Properties beside the board, and on macOS it no longer shrinks below its layout (#196) (a122c70)
- desktop: open keyboard context menus on macOS (#214) (217b2bd)
- desktop: switching between Design and Sheets shows that view's zoom at once (#135) (7f6cc6c)
- desktop: the top bar's Saved is readable, at AA contrast (#158) (baae09b)
- document: undo or a command during a drag no longer scatters the piece across history (#115) (7205ee3)
- domain: a hardware hole is checked by its rim, not its centre (Q33) (#137) (9282467)
- domain: two problems of one kind on one feature are told apart (Q4) (#152) (e8ce73f)
- geometry: a point beside a curve far from the origin is no longer read as inside it (Q38) (#164) (b023c29)
- geometry: a tiny arc keeps its end when rounding puts it just past the tolerance (Q38) (#157) (664d6e6)
- geometry: one home for every tolerance, and a lint rule that keeps it there (Q38) (#150) (d404e75)
- refuse oversized project work and preserve edits (PERF-012) (#200) (7c77698)
- scaling a piece keeps its rivet holes, slots and labels their sizes (Q31) (#162) (3cdad1c)
- test: give Stryker's unmutated run 30 minutes, not its default five (#148) (80afa43)
Performance
- desktop: a fold in Parts stays with its project, and goes with its tab (PERF-016) (#193) (5272adc)
- desktop: a long PDF export no longer freezes the window, and can be cancelled (PERF-002) (#166) (189a331)
- desktop: a pointer moving over the board renders the readout alone (PERF-007) (#197) (aac7bed)
- desktop: a project replaced, edited or closed no longer leaves its Sheets pages behind (PERF-010) (#189) ([53078f...
leathercad: v1.5.0
Ctrl+0now shows true size; fit the pattern withShift+1.
In Parts, Space on a focused row now hides or shows it (it used to select it, as Enter still does).
The window, refined. A refinement pass, not a redesign: the pattern reads at every zoom, the board gets the room, sizes are typed where the eye already is, and the next step is one click away. Printed output does not change.
Known limits
- Print accuracy is measured on Linux only, through Print. Windows and macOS have no physical measurement on record. On Windows, print the saved PDF at Actual size, and check the 100 mm gauge with a rule before cutting.
- Not checked on a real Mac: the window's edited dot, and ⌘A outside a text field (#97).
- The installers are unsigned on Windows and ad-hoc signed on macOS, by decision. Getting started says how to open them.
- True size assumes 96 pixels to the inch. Check your screen with a ruler before trusting it against a buckle.
- On French keyboard layouts,
Shift+&both fits the view and types a1into a size.
1.5.0 (2026-10-18)
Features
- desktop: a bar under the selected piece says how its stitching came out and offers the next step (U.17) (#104) (9f088eb)
- desktop: a selected outline's sizes sit beside it on the board, typed there, and a size the rectangle would not draw as stored is refused (U.14) (#95) (423d5e4)
- desktop: a zoom control says the zoom, Ctrl+0 is true size, and Shift+1 and Shift+2 fit (U.4) (#78) (944f8f2)
- desktop: keys can be changed in Settings › Keyboard shortcuts, and every cap follows (U.12) (#101) (594f30e)
- desktop: Parts and Properties fold to strips, focus mode hides both, and the board gets the room at every window size (U.5) (#85) (cd17f45)
- desktop: Parts is a tree of pieces that fold, shows hole counts at rest, and answers its own keys (U.8) (#89) (9d5dca0)
- desktop: Properties follows the work, keeps Delete at its foot, and says what the job is (U.6) (#79) (8104fe4)
- desktop: Properties shows the stitch margin and iron while a piece is drawn, and editing them edits My tools (U.18) (#106) (29b321a)
- desktop: Settings › My tools keeps the maker's irons, margin and leather, and new hole sets, stitch lines and folds start from them (U.13) (#82) (b754880)
- desktop: sizes can be typed as sums and in inches or centimetres, and a size that cannot be read says why (U.15) (#80) (8ac7a52)
- desktop: the legend opens with names at the canvas's foot, and folds to a remembered chip (U.10) (#96) (f03f62e)
- desktop: the Sheets view has its own rail, Parts and Properties, and its labels read (U.9) (#99) (03b81d4)
- desktop: the top bar says whether your work is saved, switches Design and Sheets, and shows the problems on Print before you print (U.7) (#86) (f1fdcf3)
- desktop: the window's own controls are dark, focus rings tan, and nothing reaches the network (U.20) (#92) (b2c81ff)
- desktop: the work bar shows short hints with keys as caps, and ? all keys never drops (U.11) (#100) (456938a)
- desktop: type a rectangle's size while drawing it, 105 Tab 75 Tab 8 Enter (U.16) (#98) (37824b6)
Bug Fixes
- desktop: F11 and Ctrl+Q can be captured in Settings (U.12) (#102) (a789bc9)
- desktop: Parts keeps a hole set's count in view while its lock and eye are shown (U.8) (#90) (bfc878e)
- desktop: the window checked as one tool — the keys alone draw, a typed size lands in its chip, and the legend keeps off the ruler (U.19) (#107) (fae1665)
Documentation
leathercad: v1.3.5
1.3.5 (2026-10-09)
Features
- desktop: keys work by where they are on any keyboard, show as caps, and tooltips stay one line inside the window (U.3) (#70) (0102a14)
- desktop: piece names and dimension numbers stay readable at every zoom (U.2) (#69) (ebf5564)
- desktop: pieces are filled on the board, and the grid and lines keep their size on any display (U.1) (#68) (1414d8c)
- desktop: print from LeatherCAD's own preview, with scaling off (7.6) (#51) (4138d8f)
- desktop: print landscape sheets from the preview, turned onto upright paper (7.6b) (#61) (2dec2aa)
- export: export the drawing as an R12 DXF in millimetres, for laser and CNC programs (6.5) (#65) (2f4ad0a)
- export: export the drawing as an SVG in true millimetres, a group to each layer (6.2) (#64) (4a635a0)
- export: fewer sheets, with a slim scale strip and pieces turned to fit (7.8) (#48) (cbbff3b)
Bug Fixes
- desktop: clearer interface wording (#57) (c8f0d0e)
- geometry: three points almost in a line give the straight line, not a vast arc (#58) (4f3016f)
- parse numbers and iron labels in linear time (CodeQL polynomial-redos) (#47) (88290ad)
- render: use the shared epsilons, not local ones (#63) (4fb9788)
Documentation
leathercad: v1.3.0
1.3.0 (2026-09-30)
Features
- desktop: a Language setting, and an interface ready to be translated (8.10) (#40) (ae6c9b2)
- desktop: a right-click menu for what is selected, on the board and in Parts (8.8) (#34) (26b69d6)
- desktop: the window has its own top bar, with a Project menu, Settings and Help (#33) (9b252d3)
Bug Fixes
- a part picked by its heading is a real selection everywhere (Q29) (#38) (292171e)
- document: flipping a piece flips all of it, not its outline alone (Q28) (#35) (1515adb)
- geometry: a curve that turns back on itself measures its whole length (#28) (a003485), closes #27
- moving or turning a piece moves all of it, and a refused gesture moves nothing (Q30) (#37) (deb9f75)
leathercad: v1.2.0
1.2.0 (2026-09-27)
Features
- desktop: round a drawn path's corner to a radius, and sharpen it again (3.9d) (ea0c45b)
- desktop: the Edit Points tool moves, adds and removes a drawn path's points (3.9c) (2f1132a)
- document: drawn paths' points can be moved, added and removed without losing what is attached (3.9b) (cfe6179)
Bug Fixes
- geometry: a crossing's slack past a line's end is EPS_POINT at any length (Q25) (a2d3d81)
leathercad: v1.1.1
leathercad: v1.1.0
1.1.0 (2026-09-26)
Features
- desktop: a worked sample project, from Help or the empty Parts panel (#15) (aab1ffe)
- desktop: double-click a project to open it, and a Flatpak (#16) (7274055)
- desktop: preferences, File › Open Recent and a keyboard shortcut map (#14) (d4fcf88)
- desktop: Tools, zoom and the paper in the application menu (#17) (1bf6dbf)
leathercad: v1.0.1
leathercad: v1.0.0
1.0.0 (2026-09-24)
Features
- a control that cannot act says why, and every tool says how it is used (F.1) (5f586b9)
- a light drafting ground, and colour that means one thing each (F.5) (632c647)
- a number that cannot disagree with the drawing (4.10a) (1e3152b)
- a part larger than the sheet is printed across sheets at 1:1 (7.2a) (8938bb6)
- an app icon, a desktop entry that matches its window, and a production menu (8.5a) (7123c84)
- anchors carried through derivations (4.4b) (3f02dcb)
- arc segments in the polyline tool, for a pocket with a thumb scoop (3.9a) (edc655a)
- choose the paper and its orientation, and the square is whole on every sheet (6.4a) (bf74964)
- core: epsilons, quantisation, guards, Result and ULIDs (slice 1.1) (08ecc2d)
- deleting asks what to do with what follows it (4.2b) (28f9d36)
- desktop: tool palette and window chrome (3.5a) (d1fb626)
- dimension the pocket by its opening (4.9) (5e21827)
- editor: arc tool, and the arc shape (3.6b) (bf5a11e)
- editor: circle tool, and one property editor per shape (3.6) (062d9ca)
- editor: line and polyline tools (3.5) (ce91b29)
- editor: points land on the geometry they are aimed at (3.3b) (5537fe2)
- editor: rotate and scale, and the rule for transforms that cannot (3.7) (3f03970)
- editor: snap engine (3.3) (9c39d10)
- Electron shell with a DPR-aware canvas (slice 0.2) (f5f4ebe)
- every line named by its mark, and no emoji left (F.6) (e5228fa)
- every panel has a place of its own, and none disappears (F.2) (780dc86)
- every problem reachable from where it is shown (4.12) (6f9864b)
- export: print-ready 1:1 PDF (6.1, 6.3, 7.1, 7.3) (f3a315e)
- geometry on screen — viewport, renderer, grid and rulers (M1) (1588192)
- geometry: analytic offsetPath — arcs stay arcs (slice 1.9, Tier 1) (6239549)
- geometry: close slice 1.7 — the rest of the shape constructors (806e4b0)
- geometry: distributeAlongPath — holes at a pitch (slice 1.8) (9d70197)
- geometry: flattening, and three numerical bugs it uncovered (slice 1.5) (0b7c202)
- geometry: intersections — the last slice in Phase 1 (1.10) (d7cd46f)
- geometry: Path, exact area and point containment (slice 1.4) (a775421)
- geometry: PathMeasure and arc-length parameterisation (slice 1.6) (6d1c254)
- geometry: the Segment union — line, arc, cubic (slice 1.3) (31a9d91)
- geometry: Vec2, Mat2x3 and Rect (slice 1.2) (39b23b9)
- labels you type, printed with everything else (4.11b) (52e9b89)
- one card holder from outline to paper, and a fold you can let go of (4.13) (3066a86)
- one channel for everything that can be wrong (4.12a) (53d1747)
- one table for how everything looks, and screen and paper agree (F.4) (4238042)
- one typeface, laid out once, outlined on paper (4.11a) (8a87360)
- persist: the .lcp project format — save and reopen (5.1) (bec6f35)
- property panel and parts list — exact millimetre editing (3.8) (6a115e0)
- README, getting started, third-party notices and the update message (8.6b) (dba5090)
- render: SVG backend for the DisplayList (2.6) — Phase 2 closed (d036668)
- stitching drawn as a pricking iron cuts it, and a key to the drawing (F.7) (8fd1503)
- symmetry that keeps working — mirror across a fold (4.8b) (5155917)
- the app becomes a tool — domain, document, and drawing (M2) (42d4f06)
- the derivation chain — cut contour to stitch holes (M3) (353faf8)
- the drawing moves only when the maker moves it (F.3) (5788ec1)
- the interface speaks in the typeface the pattern prints in (F.0) (5dc50d9)
- the project says which paper it prints on (5.5), and the UI/UX audit (39795f7)
- unsaved work is never thrown away without asking (5.3a) (e747012)
- Windows and macOS installers, built and smoke-tested in CI (8.6a) (30b1041)
- work interrupted by a crash is offered back on the next start (5.3b) (d9438ee)
Bug Fixes
- a newer build's fields survive opening and saving a file (5.2) (20ce0a4)
- a printed dimension keeps its dimension line, not just its number (66296b4)
- a stitch pitch finer than any iron is refused on its hole set, not by running out of memory (5.6) (f8345ca)
- desktop: paint the first frame without waiting for an animation frame (6dbd520)
- geometry: a cubic's tangent points the way it travels at a stationary end (68f17c5)
- geometry: PathMeasure collapsed every edge after the first (0d8ef27)
- saving while a recovery copy is being written no longer leaves a stale copy (a9fe95a)
Performance Improvements
- geometry: adaptive quadrature for cubic length (6bee6bf)