Skip to content

layerling 1.139.0

Choose a tag to compare

@henmedia henmedia released this 04 Nov 10:49
· 698 commits to main since this release
  • Lock shape: a part that keeps its form but still builds with the others (Discussion #1277): Lock (Ctrl+L) keeps a part from unwanted changes, but it also keeps it out of grouping, so building with it took a copy that had to be unlocked again, and then nothing held it any more. A part can now have only its shape locked: the shield beside the padlock at the top of the settings, Lock shape in the right-click menu, or Ctrl+Shift+L. It still moves, turns, lifts, lines up, copies and groups with others, but its size, its settings and its name stay as they are: the handles and the size labels that change its size are left out (the lift arrow and the turning arrows stay), the panel greys out everything but position, turn and see-through, and resizing, Scale by percent, mirroring, turning into a hole, ungrouping, opening the group, the edge, face and hollow tools and deleting are refused with a message. A copy keeps the lock, and so does the part inside a group: that group moves, turns and can be taken apart again, but keeps its size, as scaling it would change the part. Whatever tool tries it, the editor's commit refuses a change that would resize, rename, mirror or regroup such a part (shapeLockBroken in lib/shapeLock.ts); the two locks can be on together, Lock winning. MCP: layerling_update_object takes shapeLocked and refuses anything but position, turns, pivot, hidden, see-through and the locks while it is on, unless the same call passes shapeLocked: false; layerling_list_objects reports it. Guide chapter 4 in 15 languages, the shortcuts, both READMEs and all three SKILL.md; texts in 14 languages. Unit tests in shapeLock.test.ts. Asked for by @uninteressant2026.
  • Scrollbars for the 3D view (Discussion #1241): Close up on small details the view was hard to move in fine steps: the mouse swung it away, and Ctrl and the arrow keys, which slide it, move the part instead as soon as one is selected. A new switch in the view bar, below the second view, shows a scrollbar along the bottom of the view and one down its right edge, kept clear of the properties panel. Dragging a thumb slides the view smoothly, the arrows at the ends step it by 2 % of what it shows (held, they repeat), a click on the track pages it by most of the view, the wheel over a bar scrolls along it. Nothing turns, and it works with a part selected. The track is the room the view's pivot may move in, the plate and as far as the bodies reach, so the thumb grows shorter the closer one zooms in. Off by default; the choice is kept in the browser, not in the design (lib/viewScroll.ts, ViewScrollbars.tsx). Guide chapter 2 in 15 languages, texts in 14 languages. Unit tests in viewScroll.test.ts. Asked for by @DocHoliday11991.
  • The shape library is ready to type into (Discussion #1276): The command search and the shortcuts put the cursor in their search field when they open, the shape library did not, so a search there took a click first. Opening the library now puts the cursor in its search field, except on a touch screen, where that would pop up the keyboard; a pinned library does it once, when it opens (ShapeLibraryList.tsx). Test in shapeLibraryList.e2e.ts. Asked for by @avxmw.
  • Align in the right-click menu (Discussion #1275): The menu a right-click opens at the pointer had Mirror and Scale by percent, but no Align, so lining parts up meant a trip to the toolbar or knowing the L key. With two or more parts selected, not all of them locked, the menu now has Align above Mirror, with its key L shown; it starts the align tool as the toolbar button does, locked parts staying put. Guide chapter 4 in 15 languages.
  • Grouping no longer cuts a corner off at a slant (Issue #1272): After grouping a housing, the block beside its round dent had a slanted face at its left edge where it should have been square, and about 51 mm³ and 371 mm² were gone. Grouping lets the kernel fold away the steps a thousandth of a millimetre high that the padding of holes leaves behind (#1133); here the folding took a whole corner with it. The folded result is now kept only when it has the volume and surface of the unfolded one (within 0.05 mm³ or a ten-thousandth of the volume, and 1 mm² or a thousandth of the surface); otherwise the unfolded result stays (foldKeptShape in editorBooleans.ts), the same for the tidying of slivers when merging. Measured on the reporter's design: the edge straight and the volume as without folding. Unit test in foldKeptShape.test.ts. Reported by @uninteressant2026.
  • Equal gaps on the align dots (Sam Phillips, Facebook group): Parts of different sizes could be lined up on an edge or a centre, but not spread so that the space between them is the same everywhere, as Distribute does in a slide program. Each axis of the align tool now has a fourth dot, a pill beside its middle dot: it keeps the first and the last part along the axis and moves the ones between so every gap between neighbouring edges is equal, with a preview on hover and the gap in the message. A part that runs past all the others along the axis and is longer than each, such as the tray of a peg puzzle, is found by itself as a frame: the parts spread inside it with the same gap at its edges, a single one comes to its middle. Parts in several rows spread row by row (two parts are in one row when their boxes overlap across the axis on both other axes; where that finds only rows of one, or a row whose parts overlap along the axis side by side, parts side by side that overlap along the axis move together as one block - from front to back, each whole row of the puzzle - while parts lying in each other are spread apart), so the puzzle takes one click per direction. Alt on the dot opens a field for a gap of one's own, in the workspace unit, with a live preview: the parts then line up that far apart from the anchor, a locked part or the first one, centred in a frame. Locked parts and the anchor never move, so one between the outer parts refuses, as does a row longer than its room. Without a board, a click on empty space in Align mode makes the plate the reference (a second click lets it go): it joins the measuring as a thin locked part of the plate's size, so equal gaps spread the parts over the whole plate with the same gap to its edges, and the other dots line them up on its edges or its middle; MCP anchorId: "plate". Before, that click cleared the selection and ended Align. Works along a set workplane's axes too (lib/alignDistribute.ts). MCP: mode: "spread" with an optional gap on layerling_align_objects, also in all three SKILL.md. Guide chapter 4 in 15 languages (Equal gaps), the shortcuts, the command search, start page, quick guide and README; texts in 19 languages. Unit tests in alignDistribute.test.ts.