You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rounded box radii to 0.01 mm (#705):normalizeCornerFillet and normalizeTopBottomFillet rounded to a tenth of a millimetre, so a corner fillet of 0.25 mm came back as 0.3 mm. They round to a hundredth now, and the fields (the shape's properties and the defaults in the workspace settings) step by 0.05. The CAD solid reads the same functions, so it follows. Unit test in roundedBoxGeometry.test.ts (0.25 stays 0.25, 7.336 becomes 7.34). Reported by @Algotz on GitHub.
SVG saved as UTF-16 imports (#317): CorelDRAW and some Windows tools save an SVG as UTF-16 with a byte order mark. layerling read every SVG as UTF-8, so such a file came out with null characters between the letters and failed with "SVG is not valid XML". decodeSvgBytes in svgImport.ts now reads a file that starts with the UTF-16 mark in either byte order as UTF-16, and everything else as UTF-8 as before.
Cmd and Option in the shortcut list on Apple keyboards (#704): The list of keyboard shortcuts shows Cmd and Option instead of Ctrl and Alt on a Mac, an iPhone or an iPad (a browser that says Macintosh, iPhone or iPad), and the footer "On a Mac, use Cmd wherever Ctrl is listed" (shortcuts.footer) is gone from every catalogue, as nothing needs it any more. Contributed by @gogades.
Simple mode for children and workshops (#695): A switch in the settings (workspace.simpleMode, lib/simpleMode.ts) cuts layerling down: the ribbon keeps copy, paste, duplicate, delete, undo and redo, group and ungroup, mirror, chamfer, fillet, hollow, align and export, the shape library fifteen simple entries (SIMPLE_MODE_TOOLS, SIMPLE_MODE_SHAPES), the buttons grow to the large toolbar size, and the start page shows the designs and nothing else - no news, welcome text, update notice, install hint or footer, and no question-mark help links, so nothing leads out of layerling. Hidden too: the command search, the help group, visibility, notes, import, My shapes and the sweep. Switching it on is a tap, switching it off a press held for two seconds. ?mode=simple and ?mode=full in a link set it on the device that opens it (the boot script stores the choice and drops the parameter); LAYERLING_SIMPLE_MODE=true starts everyone who has not chosen in it and always fixes it, through /api/server-defaults. The settings panel of the selected body is not cut down yet. Unit tests in simpleMode.test.ts and serverDefaults.test.ts. Asked for by @cyryllo on GitHub, with the list of what the children use.
Close a gap in a sketch by dragging (#698): Erase one side of a hexagon or a circle and two open ends are left; dragging one onto the other only moved it, the two stayed separate points on top of each other and the outline never counted as closed. A dragged open end now snaps to the other open ends of the sketch, and dropped on one it becomes one point with it (joinOpenEnds in sketchPointJoin.ts, called by moveSketchPoint; openEndPoints feeds the snap in SketchWorkspace.tsx). The curve handle of the dragged end goes across to the joined point when the two sides meet end to start; two curved sides that would both start (or both end) there are left as they are, as are a locked outline, the two ends of one single side, and a point with more than one side. Unit tests in sketchPointJoin.test.ts; not tried by hand in a browser. The guide (chapter Sketches, German and English) and the welcome text name it. Asked by @lukyanenkomax on GitHub.
Hinge opening angle (#699): A new slider, Opening angle, folds the hinge's second leaf up about the middle of the pin, from 0 degrees (lying flat as it prints) to 180 (closed), so a hinge can be set as it stands in a design. The new hingeAngle turns the second part in the display mesh (hingeTriangles) and its exact boxes (hingeLocalParts, placed by hingeWorldParts, which also follows a mirrored hinge), so the edge tool and the STEP export see the folded hinge; the MCP shape settings and the project file take it too. The guide (German and English) and the MCP skill name it.
Imported parts thinner than 1 mm keep their size (#700): The STL and OBJ import rounded every extent up to 1 mm in the base size it stores, while the points kept their real size, so a part 0.76 mm high showed "1.00" and every height typed in came out 0.76 times too small (5 mm became 3.81). importedShapeFromTriangleSoup and importedShapeFromObj now report the real extent (reportedMeshExtent; a sheet with no thickness still reports 1), and canonicalizeShape repairs saved designs and saved shapes that carry the old 1 (repairClampedMeshBase in importedMeshBase.ts): the base is set to the real extent and the shape's own size is scaled with it, so the part keeps its size in the world. Unit tests in thinMeshSize.test.ts. Reported by @Moosli-moo on GitHub.
layerling speaks Spanish (#697): The whole interface (messages.es.ts, 2,858 sentences) and the 17 chapters of the guide (docs/guide/es/) in Spanish as written in Spain, informal ("tú"), registered as "Español" in languages.ts with the quotation marks and key labels of a Spanish keyboard; any Spanish browser (es-ES, es-MX, es-419) gets it. Not marked complete, like Hungarian: sentences added later show in English until the Spanish ones follow. Three tests that used Spanish as the example of an unsupported language use Swedish now. Typecheck, the unit tests and the guide build checked here; no native speaker has read it yet. Contributed by @litio2001.
Gears up to 500 teeth (#679):MAX_GEAR_TEETH went from 150 to 500, so spur gears, ring gears and racks take up to 500 teeth, for example a module 0.5 wheel of 250 mm. The exact CAD solids of a 500-tooth spur gear and ring gear are checked in cadGearBody.e2e.ts and cadGearRingRack.e2e.ts. The guide names the new range.
Name tags and icon tags on a side face (#696): Built on a standing or sloped face, or changed there, a tag stacked its layers up the world instead of out of the face: the plate came out in front, the rim and the letters shifted upward behind it. textLayerShapes and layeredIconShape now stack the layers along the tag's own up, from the middle of its underside, and textLayersOf and iconLayersOf read a stack back in that order, with its place on the bottom layer's underside; a tag lying flat is built exactly as before. Unit tests in nameTagOnSideFace.test.ts (a tag carried onto a face facing +x is built again layer for layer, each on the one below along +x) and iconTag.test.ts (a turned stack read back in order, its place on the face); the icon tag's layers built on a side face by the CAD worker not tried. Reported by @cyryllo on GitHub.