Skip to content

layerling 1.100.0

Choose a tag to compare

@henmedia henmedia released this 22 Oct 06:09
· 51 commits to main since this release
  • The shape library shows each shape in the colour it will be added in (#717, #483): The pictures were grey, so the list said nothing about the colour that landed on the workplane. Every entry now wears the colour a new shape of it starts with - the catalogue's own, or the one saved for its kind under Shape defaults - so a red box, an orange cylinder and a blue sphere are recognisable before the click. The grey render keeps its shading: a colour layer, masked by the picture's outline, multiplies over it, in the list, in the icon-only size and in the light, dark and graphite themes. shapeAssetColor in shapeCatalog.ts is the one place that decides the colour, shared with makeShapeFromAsset; unit tests in shapeCatalog.test.ts. The setting Shapes in colour (lib/shapeColors.ts, workspace.shapeColors) switches the colour off again for anyone who prefers the grey pictures; on is the start, and the browser remembers the choice (a boot script sets data-shape-colors before the first paint). Unit tests in shapeColors.test.ts. Contributed by @crazykay; asked for by @bdeboer58 on GitHub.
  • Boolean Intersection and Show common part grey out on the dark grounds (#718): With fewer than two parts selected the two buttons were disabled but looked live in the dark and graphite themes; both icons carry toolbar-vector-art-icon now, which dims them like the rest of the ribbon (ToolbarIntersectPreviewIcon wraps the lucide icon). Contributed by @gogades.
  • A click on the view cube turns the view instead of jumping (#715): A face, edge or corner used to cut the camera there in one frame, which read as a blink and made it hard to follow where the view had gone. The camera now turns around the orbit pivot in about a third of a second: the distance stays, the azimuth takes the shorter way round, an ease-out cubic settles into the clicked view, and the cube itself follows frame by frame. A second click starts from wherever the first has got to; any camera input - a drag on the canvas or the cube, a wheel, a touch - takes over and ends the turn, and a system set to reduce motion still gets the jump (prefersReducedMotion). The AI bridge's layerlingCaptureView still sets the view before it captures, unchanged. lib/viewCubeTransition.ts, unit tests in viewCubeTransition.test.ts. Contributed by @crazykay.
  • A text's height stays out of "Keep proportions" (#724): With Keep proportions on in the properties, typing a text's Height scaled its width and depth by the same factor, so the letter size changed along with the thickness. The height of a text is only the thickness of its letters, so keepsProportionsOnAxis in keepProportions.ts now leaves it out; the width and the depth of a text still keep the proportions, and every other shape is unchanged.
  • STEP export takes groups apart (#709): A group, say a block with a tapped hole, was "a mesh without a CAD source" to the STEP export and was left out, so only the loose screw came out. exportShapesToStep now builds a plain group as the exact bodies it holds (buildScope, isOpenableGroup, restoreGroupedChildren): the holes of the group cut only its own solids, as in the editor, so a screw standing in the tapped hole stays whole; groups inside groups open the same way, and holes around a group still reach its bodies. A group that is itself one CAD body, an intersection, a bundle or one with edge treatments goes the way it did. A round-trip test in stepRoundTrip.e2e.ts checks the volume of the block, the thread and the screw.
  • The what's-new help opens the Brazilian Portuguese heading (#712): With chapter 1 translated, the what's-new help button still used the English anchor and opened the top of the page; GUIDE_SECTIONS.whatsNew has its pt-br id now, and a test in guideAllLanguages.test.ts checks every question mark against the pt-BR chapters translated so far, so the next ones are covered as they come. Contributed by @lmagalhaes.
  • layerling speaks Simplified and Traditional Chinese (#710): The whole interface (messages.zh-cn.ts, messages.zh-tw.ts, 2,861 sentences each), the 17 chapters of the guide in docs/guide/zh-cn/ and zh-tw/ and a README of its own for each (README.zh-cn.md, README.zh-tw.md), chosen in the language menu; browsers that ask for zh-Hans, zh-Hant, zh-TW, zh-HK or zh-MO get the matching one. Marked not complete, like Hungarian and Spanish: sentences added later show in English until the Chinese ones follow. Made with a large AI model and proof-read in part by the contributor, a native speaker; more readers are welcome. Contributed by @crazykay.
  • Open sides for Gridfinity bins (#682): Bins meant to stand side by side as one long tray had two walls and two stacking lips between each pair. A Gridfinity bin now has Open at the back, Open at the front, Open on the left and Open on the right, in any combination, all four for a tray. An open side has no wall and no stacking lip above the floor; the walls beside it and their lip run straight out to the bin's outline and end square, so two open bins stand 0.5 mm apart as any two bins do, and the floor runs flat to the edge and ends square there, even in a bin with finger scoops, whose other floor edges are rounded. The feet and the magnet holes stay as they are. A label shelf or finger scoop on an open side is not built and its switch goes, and so do that side's scoops against the dividers; the setting is kept for when the side is closed again. Shelves and scoops on the walls beside it, and dividers that meet it, run out to the edge, and a compartment offers no label shelf on an open side. A bin stacked on an open one is held by the lip on its closed sides only. A bin without the lip whose floor is raised to the top is a solid block and has no sides to open. An open bin stays an exact body for the edge tool and STEP. Also through the MCP action layerling_create_shape with gridfinityOpenBack, gridfinityOpenFront, gridfinityOpenLeft and gridfinityOpenRight. Asked for by @Joepic9 in #682. Contributed by @mlugo-apx.