Skip to content

layerling 1.140.0

Choose a tag to compare

@henmedia henmedia released this 04 Nov 16:47
· 555 commits to main since this release
  • Open STL and 3MF from the file manager (Discussion #1287): The installed app registered only for .lyl files, so an STL or 3MF still opened in another program. The manifest's file handler now also accepts .stl (model/stl) and .3mf (model/3mf); such a file, opened with layerling, goes through the start page's import and becomes a new design, while a .lyl opens as before.
  • MCP tools load in every client (Discussion #1285): Two properties, vase on create_shape and update_object and trace on reference_image, gave their type as a list (["object", "string"], ["object", "boolean"]). That is legal JSON Schema, but some MCP clients drop a tool whose schema has one, so create_shape and update_object went missing. Both are now anyOf with one type per branch, and a test keeps type lists out of every tool schema.
  • A pinned shape library lies under the inspector (Discussion #1283): The shape library hangs from the toolbar, whose layer is above the inspector's, so pinned and moved to the right it covered the properties of the selection. Pinned in the 3D editor, it now moves into the workplane, under the inspector, at the same spot; opened without the pin it still comes on top.
  • Right-click inside the selection frame (Discussion #1282): The right-click menu looked only at what lay under the pointer, so a click on empty space between selected parts gave the short menu (Paste, Select all) instead of the one for the selection. A right-click inside the selection's frame on the screen, or a long press there, now opens the selection's menu.
  • Gridfinity: credit to the project: The hints for a bin and a baseplate and the guide's Gridfinity section now say that Gridfinity is Zack Freedman's open storage system, released under the MIT licence, and that layerling is not part of the project. Texts in 19 languages, guide chapter 9 in 15 languages. Asked for in PR #1255. Contributed by @mlugo-apx.
  • Enclosure parts: screw boss, snap-fit and rib (#1246): Three new shapes in a section of their own in the shape library, after Connections. The screw boss is a post with a hole from the top for a heat-set insert (M2 to M5, #2-56 to 1/4-20), a self-tapping screw for plastics (ST2.2 to ST4.2 after DIN 7981, K25 to K50, #2 to #10) or a hole of your own; the panel says how thick the wall round the hole is and warns below what the fastener wants, and two to six gussets brace it to the floor. The snap-fit is a cantilever hook with its catch, set by arm thickness, undercut, entry and holding angle, clearance and foot; it stands as it sits under a lid, so the catch prints on an upright wall, and the panel gives the strain at the arm's root against what PLA, PETG or ABS take. The rib is a straight rib with a flat, round or chamfered top, or a gusset that braces a wall against the floor. The three take no taper, since their sizes are fixed by the insert, the hook and the foot. Their meshes are built closed; there is no exact body yet, so STEP lists them as skipped. Guide chapters 3 and 9, texts in 14 languages, start page, READMEs and the MCP bridge.
  • Dimension boxes in axis colours (Discussion #1279): On a small part the value boxes beside the selection stand close together, all white, so without zooming in it was hard to tell which one is the width, the depth or the height. A new switch in the workspace settings, Dimension boxes in axis colours (off by default), gives each box the colour of its axis, as the size handles have it: a light red tint with a red edge for X, green for Y, blue for Z, with dark text in the light and the dark theme alike. It covers the size boxes and their number fields (width X, depth Y, height and the lift above the plate Z, also the corner pair), the move distances while dragging and the distances to the plate's origin. Each box carries its axis as data-axis (lib/dimensionAxisColors.ts), the colour is CSS under .workplane-wrap.dimension-axis-colors; saved as dimensionAxisColors with the workspace settings. Guide chapter 10 in 15 languages, texts in 14 languages. Unit tests in dimensionAxisColors.test.ts and workplaneSettings.test.ts. Asked for by @Gpic2030.
  • Freehand drawing in sketch mode (Discussion #1280): Drawing in a sketch meant setting point after point, which suits a mouse but not a pen on a tablet. The new tool Freehand (key 5, after Smooth Curve) takes a stroke drawn with a pen, a finger or the mouse and turns it, when lifted, into ordinary sketch points: the stroke is walked in even steps and softened, so the shake of a hand goes; a corner sits where it turned sharply, and between the corners the curve tracing's fitter lays as few Bezier curves as keep within a few screen pixels, so the result is as fine as the zoom. A stroke that ends near its start closes into an outline, overshoot cut off; one that begins or ends at an open end of the sketch carries that line on, so a shape can be drawn in several strokes. It starts on lines and template pictures too, for tracing a picture by hand, honours Construction lines, and is one undo step. Guide (sketches, tablet), READMEs and start page in all languages.
  • Typed lengths and angles keep locked points (Discussion #629): Making a hand-drawn outline exact by typing lengths and angles was unpredictable: a typed length always kept the start of the line and a typed angle always turned the same line, so each correction pulled a corner that was already right. A sketch point can be locked with Ctrl+L, but a typed value that would have moved it was only refused. Now a typed length keeps the locked end and moves the free one, and a typed angle turns the line whose far end is free (Tab stays on that line too). So an outline can be made exact corner by corner: lock a corner, type the length and the angle of the next line, lock its end, and go on. The guide describes it in all languages.
  • CAD kernel lets go of its memory and starts afresh after a fault: Several paths kept kernel handles after they were done: mesh to solid in the CAD worker kept the imported mesh, its faces and the candidates of every tolerance that did not close; the mesh accuracy check kept the face copies it sewed again; the STEP export kept the handles of a placed or made-exact body when placing or writing failed; the lid kept the joined holes. All are released now. A WebAssembly memory fault was also read in more than two dozen places as an ordinary answer ("not valid", "no face", "try the other way") and the work went on with the broken memory; it now passes up (isKernelMemoryFault in lib/kernelFault.ts), the worker starts a fresh kernel, and the STEP export loads a fresh one for the next export. mergeFaces in cadProfileSolid.ts still catches its known trap of unifySameDomain on purpose.
  • Kernel errors in the user's language: Dozens of messages of the CAD kernel reached the screen in English: outlines, lofts and sweep paths that do not hold together, lofts, sweeps, tapers, widened text and Gridfinity cuts that do not close, threads that narrow to their axis, a profile across the revolve axis, empty drawing sources, an exact lid that cannot be built, Hirth joints, imported STEP bodies, meshes too dense to stand in, the empty DXF and SVG top view and "Select at least one highlighted edge". They now map to the existing texts in every language, with tests for each rule.
  • Autosave does less work with many exact bodies: The cache of encoded B-rep texts held six entries; an autosave walks the bodies in the same order each time, so with seven exact bodies or more each pushed out the next before it was asked for, and every save encoded and hashed all of them again. It now keeps up to 256 within 48 M characters. After an undo, the indexes of the earlier state are kept with it instead of its whole JSON being parsed again on every autosave.
  • Idle view, freehand strokes and clearance checks do less work: The scroll bars skip a frame in which camera, pivot, zoom, limits and canvas are unchanged, and measure the edge beside the properties panel only when the stage or the panel changes (ResizeObserver and MutationObserver) instead of twice per frame. A long freehand stroke only adds its new points to the preview line. The clearance check builds a part's bounding-volume tree the first time a pair close enough needs it.
  • Server store (Node) matches store.php: A lock older than a minute is taken over as a leftover of a request that died, so a save cut off by a crash no longer leaves the design "being changed by someone else" for good; moving and renaming lock the target name too; and an export file is checked before it is written, as store.php does since GHSA-wj5x-5r5v-89r3.
  • Shortcut list, translations and guide catch up: The keyboard shortcuts list names key 5 (Freehand) with the other sketch tools. 223 texts whose English wording changed since they were translated are translated again. The guide in every language has the settings window section by section and the additions of the last releases, and its links to sections point at the translated headings. The READMEs in German, Dutch, Arabic and Chinese name the Docker guide and LAYERLING_NEW_DESIGNS_ON_SERVER=always.