Skip to content

layerling 1.109.0

Choose a tag to compare

@henmedia henmedia released this 24 Oct 17:14
· 714 commits to main since this release
  • Touch: a tap beside a body no longer raises the keyboard by accident (#855): The value boxes around a selected body (a length, a height, a move) are buttons that open a number field, and with it the on-screen keyboard. A finger aiming at the body or at a handle landed on such a box now and then and the keyboard covered the workplane. With a finger the first tap on a box now only marks it (a frame in the accent colour, for 2.5 seconds) and the second tap opens the field (touchSecondTap.ts); a mouse and a pen open it at once as before. Reported by @crazykay.
  • The Align dots are easier to hit with a finger (#854): The dots of the Align tool are 14 px wide, and a tap that missed one did not start the tool and also ended the multi-selection that aligning several parts depends on. On a touch screen (pointer: coarse) the dots keep their look and now catch a tap from a finger's width round them, as the transform and rotate handles already did. Reported by @crazykay.
  • Alt+W puts the workplane back on the base plate (#845): Going back to the base plate took Esc while placing, a click beside the plate or the arrow button below the eye; there was no key for it. The shortcuts list has its own row for it, and the guide (View and workplane, every guide language) and the in-app guide (every language) say so. Tried in the editor: with the workplane on the top of a box and the box selected, Alt+W put it back on the plate and kept the selection. Contributed by @gogades.
  • A group stretched one way keeps its round parts oval when it is hollowed (#844): Two cylinders and a box grouped into a capsule, then made wider only, looked right, but Hollow turned the ends into circles of the new length, a "dog bone". Hollow, the edge tools, Ungroup and the boolean tools take a group apart into its shapes again, and a cylinder is always round, so it took the larger of its two stretched sizes. A cylinder the group stretches more one way than the other now comes back as an ellipse of both sizes (restoreGroupedChildren, through cylinderToEllipsePatch, so one still called "Cylinder" is called "Ellipse"); a group grown the same both ways keeps its cylinders. Stars, knurls and gears have no oval form and stay round. Unit test in stretchedGroupCylinder.test.ts; tried in the editor: the capsule widened from 70 to 100 mm hollows as a smooth capsule, and ungrouped gives two ellipses of 42.86 x 30 mm. Reported by @forrrge.
  • Danish: the texts and guide passages new in 1.108.0 (#851): The 29 texts of Attachments and Group the copies, and the guide's passages on Attachments (Files and saving), Select other and grouping a pattern's copies (Select and arrange) and the framing square kept with the design and showing sizes only at its arms (Measuring and notes). By @Henrikth12.
  • Guide: the framing square is kept with the design (#851): Measuring and notes still said, in every language that has the chapter, that the tape measure and the framing square go when the page is reloaded, against the paragraph above it. Since #829 that holds for the tape measure only; the sentence says so now (English, German, Arabic, Czech, Spanish, French, Hungarian, Italian, Dutch, Polish, Russian, Slovenian and both Chinese; Danish came corrected with #851). Spotted by @Henrikth12.
  • brepjs 20.10.3, without its webpack workarounds (#846): brepjs, which the STEP export and import use, goes from 20.5.0 to 20.10.3. Its import of an optional kernel is now marked for webpack in brepjs itself, so next.config.ts no longer needs the aliases for brepkit-wasm and brepjs-opencascade or the filter for the "Critical dependency" warning (#819); the build compiles without warnings. The new version also names the edges a fillet or chamfer failed on and rejects shell and offset results that are not usable solids. Checked with all unit and e2e tests (the STEP round trip included) and a production build. Contributed by @andymai.
  • Use my default brings the printer along (#850): Use my default put the saved colours and grid on an opened design but kept its plate and printer, so a Tinkercad export stayed on "No printer - free size". A printer in the saved default now comes along with its plate size (workspaceWithSavedDefault); a default without one still leaves the design its plate and printer, and the units stay with the design. The button's hint (every language) and the guide (View and workplane, German, English and Danish) say so. Unit tests in useMyDefault.test.ts. Reported by @TinkerBarn.
  • A start view of your own (#853): New designs always opened looking from the front right, and Home went back there. Settings → Appearance now has Start view with Use current view, which keeps the angle, pan and zoom on screen, and Standard, which goes back to the usual view. New designs open in it and Home (and layerling_capture_image with face "home", and the second view's Home) goes back to it (resetCamera, startViewOf); a design opened again still opens the way it was left. It is kept per browser like "Start editor in perspective view" (layerling.editor.startView), and as the normal camera sees it: a flat view's zoom becomes the distance that shows as much, so it looks the same in either projection. layerling_saved_view takes startView: "save" or "reset" and answers whether one is set. Texts in every language; the guide (View and workplane, German, English and Danish; the MCP table in every guide language) and the start page describe it. Unit tests in startView.test.ts. Asked for by @TinkerBarn.
  • occt-wasm 5.8.0: a refused fillet names its edges (#849): When a fillet or chamfer on several edges is refused, the kernel now names the edges whose contour failed (OcctError.faultyEdges). The worker tries those alone first (cadFaultyEdgeIds), and when each of them fails alone they are the answer, so the other edges are no longer tried one by one; when one of them works alone, or the error names none, every edge is tried as before. Both CAD workers start the kernel through OcctKernel.init instead of reaching its private constructor. E2e test in cadFaultyEdges.e2e.ts; checked with all unit and e2e tests and a production build. Contributed by @andymai.
  • Attachments for the AI bridge (#820, #852): An AI client could build a design but not reach the files kept with it, so a parts list or assembly notes it wrote had to be uploaded by hand. Five MCP tools now do what the Attachments panel does: layerling_list_attachments (id, name, type, size and hash of each file, and the limits), layerling_get_attachment (one file's bytes as base64), layerling_add_attachment (a file given as base64), layerling_rename_attachment and layerling_remove_attachment; layerling_read_scene lists the files too, without their content. The tools move bytes and nothing else; decoding and choosing names is the agent's part. They run every file through the panel's own checks in projectAttachments.ts (types, the content check, sizes, number of files, clean names), so the panel and the bridge cannot disagree, and the commands sit in their own module, projectAttachmentsMcp.ts, next to it. Safe by default: attachments are not in the undo history, so a name already attached is only overwritten with replace: true (the file keeps its id, place and name, as the panel's Replace) and a file is only removed with confirm: true; there is no path, so an agent cannot copy a file from the computer into a design on its own; listing and reading work in the History view, changes wait until it is closed; the tool descriptions and the skill say that a file's text is the user's data, not instructions. The skill (all three copies) and the AI chapter of the guide in every language list the tools. Unit tests in projectAttachmentsMcp.test.ts (each command, a taken name with and without replace, the same content again, refused types, text, sizes and base64, the number of files, rename keeping id and content, remove only with confirm). Contributed by @jbuggie.