Commit Graph

  • 9c0632b07c Release workflow: a dry run (Run workflow with publish off) keeps the assets as an artifact instead of releasing bherbruckandClaude Opus 5.5 2026-10-09 18:01:08 +00:00
  • bf2b64f597 Releases offer plain programs; the licences are built in bherbruckandClaude Opus 5.5 2026-10-09 17:53:19 +00:00
  • 3a1f05bacf Release workflow: only a tag with a suffix (v0.2.0-rc1) is a pre-release; v0.1.1 notes no longer say pre-release bherbruckandClaude Opus 5.5 2026-10-09 17:05:03 +00:00
  • 3966b8b3b9 Version 0.1.1: the save prompt on quit (#33) and the web black-screen fix (#34); release notes for v0.1.1 v0.1.1 bherbruckandClaude Opus 5.5 2026-10-09 16:40:04 +00:00
  • bd8e8c4809 Web: the viewport shader compiles in browsers (a new design no longer shows a black screen) bherbruckandClaude Opus 5.5 2026-10-09 16:22:21 +00:00
  • 4562c8e5ba Save prompt on quit: "Save changes to <name>?" for every unsaved design bherbruckandClaude Opus 5.5 2026-10-09 16:03:31 +00:00
  • d2bc8e9847 README: a 3x-speed demo GIF at the top (agent builds the enclosure over MCP, then edits parameters) bherbruckandClaude Opus 5.5 2026-10-09 15:54:48 +00:00
  • 8601611d0c MCP demo v3 (enclosure_ui_mcp.py --story v3, default): one standoff placed from the parameters (width/2 - inset, depth/2 - inset) and patterned 2 x 2 in the Rectangular Pattern dialog with spacings width - 2*inset and depth - 2*inset, then width 80 -> 100 and wall 2 -> 3 typed into the Parameters dialog; record_v2.sh is now record_ui.sh STORY. A pattern's Direction can be a straight model edge (an edge along an origin axis points the axis's way), scenario pattern_direction_edge. Dialog rows publish their widgets as dialog:<label> handles (combo items dialog:<label>:<item>, OK), the Parameters dialog its expressions (param:<name>), title and close button bherbruckandClaude Opus 5.5 2026-10-09 15:09:29 +00:00
  • 3b9a975299 Release workflow: Linux tar.gz and AppImage, Windows zip, universal macOS app, web zip, SHA256SUMS v0.1.0 bherbruckandClaude Opus 5.5 2026-10-09 14:41:42 +00:00
  • 1d11898a2c MCP demo v2: examples/demo/enclosure_ui_mcp.py builds the enclosure through the UI like a person (toolbar clicks, real dialogs, sketches on the model's faces, Look At and back out, orbits between features) with the parameters and their dimensions over MCP; record_v2.sh and overlay.py record it with captions (UI click / MCP call) and a drawn pointer with click ripples. Toolbar buttons, drop-down items and panel labels publish handles (toolbar:<id>, panel:<tab>:<panel>); control method ui.handles lists them bherbruckandClaude Opus 5.5 2026-10-09 14:22:08 +00:00
  • 78dd776152 ROADMAP refreshed: parity 328/541 in scope, oracle 76/76, 596 tests; persistent naming, fillet corners, Split Face, Fold and modelled threads no longer listed as missing bherbruckandClaude Opus 5.5 2026-10-09 13:11:25 +00:00
  • 0d7e456bc1 Documentation site and CI workflows bherbruckandClaude Opus 5.5 2026-10-09 12:49:49 +00:00
  • 2c3fec087e Drop the vendored truck-meshalgo's VTK export (unused): removes vtkio and lz4_flex 0.7.5 (Dependabot high: uninitialised memory in decompression) bherbruckandClaude Opus 5.5 2026-10-09 13:01:14 +00:00
  • 025380277a MCP demo: examples/demo/enclosure_mcp.py builds an electronics enclosure in the running app over MCP, one execute call per step of enclosure_steps.json (rounded box, shell, USB port cut, four screw bosses, then width 80 -> 100 mm rebuilt), ending on an orbit; record.sh and captions.py record it with ffmpeg and burn in captions bherbruckandClaude Opus 5.5 2026-10-09 12:56:58 +00:00
  • 517b7a911c Split Face cuts with the sketch's exact segments (lines and arcs, kernel::SplitTool::Curves now takes Seg2); a test fillet gets its style bherbruckandClaude Opus 5.5 2026-10-09 12:33:38 +00:00
  • 334cb5f498 face.delete help text without the word fillet (MCP list_commands filter test) bherbruckandClaude Opus 5.5 2026-10-08 19:36:40 +00:00
  • 846bb112e2 Construction axes, points and planes from model geometry (SOLID ▸ CONSTRUCT): axes through a cylinder/cone/torus, perpendicular to a face at a point, through two planes, two points or an edge; points at a vertex, through two edges, three planes, at the centre of a circle/sphere/torus, at an edge and a plane, along a path; midplane, planes through two edges or three points, tangent to a face, along a path. References (doc::construct::GeoRef) keep picked faces and edges by persistent name and resolve on each evaluation (they follow the model); results live in ModelState.construct, in the component's frame; view::construction_axes/points/planes for the viewport; kernel::face_surface for a face's analytic surface bherbruckandClaude Opus 5.5 2026-10-08 19:28:52 +00:00
  • 68271137a5 Split Face (FusionSplitFaceCommand): a timeline feature dividing the picked faces where a plane, another body's face (its surface extended) or a sketch's curves meet them, through kernel::split_faces; the solid is unchanged and the pieces take the face's name with #k. Rebase fixes: duplicate Chamfer and Combine specs; the Delete selection's face test expects Delete Face's refusal bherbruckandClaude Opus 5.5 2026-10-08 18:44:32 +00:00
  • 3db6119cc6 Delete Face (face.delete, and faces in the Delete selection): a timeline feature that removes faces and heals the gap from the neighbouring planes through kernel::delete_faces; a picked face brings the rest of its surface (both halves of a hole's wall); face picks are stored by persistent name; a face its neighbours can't close is refused with the kernel's reason bherbruckandClaude Opus 5.5 2026-10-08 17:45:28 +00:00
  • 9219eb5dc1 Rebase fixes: one helix re-export, a closing brace lost in tests.rs bherbruckandClaude Opus 5.5 2026-10-08 17:35:02 +00:00
  • 141a5fea8a Modelled threads (Thread with modeled: true): the ISO 68-1 profile cut along a helix, M3 to M20, on shafts and in bores; running out past a free end of the face, stopping square at a set length. The groove is a watertight screw-sweep mesh (kernel::sweep_helix_mesh) cut by kernel::faceted_boolean (BSP on the faceted body, tolerance ladder checked by A−B + A∩B = A); the polygon rebuild welds vertices across grid cells, splits pinched loops, finds T-junctions through a grid, and takes the group's plane for a loop a hair off flat bherbruckandClaude Opus 5.5 2026-10-08 17:28:21 +00:00
  • 1f619e49cc Extrude and Revolve To Object on curved faces follow the face: the tool runs through the target body and is cut back to its surface (the piece that starts at the profile); tests against a cylinder and a sphere (volumes by integration) and a revolve ending on a post; Shell Outside/Both on a cylinder through the exact curved offsets bherbruckandClaude Opus 5.5 2026-10-08 15:52:33 +00:00
  • 1e515547d8 Boundary Fill (SurfaceSculpt): solids from the cells tool bodies enclose (inside some tools, outside the rest), each picked by a point, as new bodies or joined/cut/intersected, tools optionally removed bherbruckandClaude Opus 5.5 2026-10-08 15:31:21 +00:00
  • 0daeb0c9fc Align with snap points: from/to as {snap: vertex|edge_mid|face_center|circle_center, at} bherbruckandClaude Opus 5.5 2026-10-08 15:29:20 +00:00
  • 3ee03ac597 Combine: new_component puts the result into a new component (keep_tools already kept the tools) bherbruckandClaude Opus 5.5 2026-10-08 15:27:58 +00:00
  • 214dcf7524 Hole To Object (drill to the face the axis meets there, or a point's depth; kept by persistent face name, copies in patterns move it too) and holes at every point of a sketch (standalone points and circle centres) when only the sketch is given bherbruckandClaude Opus 5.5 2026-10-08 15:27:02 +00:00
  • 8e36d5d2fe Shell Outside and Both (walls grown out of the faces, or half out and half in: an offset body less a cavity) and tangent-chain face selection (open faces joined smoothly to the picked ones, by the surface normals either side of each edge) bherbruckandClaude Opus 5.5 2026-10-08 15:22:47 +00:00
  • a46d00f361 Revolve Two Sides (angle2), Symmetric (angle split either side) and To Object (turn until a face, vertex or point, kept by persistent face name) bherbruckandClaude Opus 5.5 2026-10-08 15:16:29 +00:00
  • ab328ae018 Extrude To Object (a face, vertex or point; parallel faces by their plane, others where the profile's middle meets them; to_offset past it) and From Object (start at a face or point); both kept by persistent face name bherbruckandClaude Opus 5.5 2026-10-08 15:14:06 +00:00
  • 9ee8ba5dd7 Imported looks outlive later features: a body's imported colour, opacity and face colours (kernel paint, dropped by operations) are carried to the next version of the body, its faces by persistent name (split faces keep the colour, new faces take the body's); assigned face appearances already follow their faces by name bherbruckandClaude Opus 5.5 2026-10-08 14:19:04 +00:00
  • 2ea9955621 CONTRIBUTING.md for outside contributors; README status and a Contributing section bherbruckandClaude Opus 5.5 2026-10-09 12:32:41 +00:00
  • f7ff78681a One more renamed id: a menu test still started Extrude by its old id bherbruckandClaude Opus 5.5 2026-10-09 12:25:46 +00:00
  • d10312b7fd Command ids are SolveCraft's own: 173 ids that were another product's internal command ids become dotted, lower-case ids (<area>.<thing>[.<variant>]: solid.extrude, sketch.rectangle.two_point, sheet.flange, joint.drive, ...), in the registry, toolbar, dialogs, shortcuts, palette, control channel, MCP, examples, scenarios and docs bherbruckandClaude Opus 5.5 2026-10-09 12:17:23 +00:00
  • 740360d7c3 Fillet corners: a radius per edge (kernel::fillet_radii), rounds next to earlier rounds of another radius, and smooth corner patches where three rounds meet bherbruckandClaude Opus 5.5 2026-10-08 22:04:30 +00:00
  • 7820ee405b Chamfer dialog: Chamfer Type (Equal Distance, Two Distances, Distance and Angle) with the second distance or the angle and Flip, sent as the engine's distance2 / angle / flip; Edit Feature restores them bherbruckandClaude Opus 5.5 2026-10-08 16:49:41 +00:00
  • dffa1c79bf Provenance of sweeps and lofts: swept_origins (start cap in the profile's plane, walls by the profile segment under their start edge, end caps) and sweep_origins for sweep_path tools (walls in profile order, once per station), cross-checked in tests bherbruckandClaude Opus 5.5 2026-10-08 18:36:37 +00:00
  • c0e3e3d216 Variable-radius and chord-length fillets bherbruckandClaude Opus 5.5 2026-10-08 19:22:53 +00:00
  • c9ed3d154d Web files: designs live in the browser (OPFS), files come in by picker or drop and go out as downloads bherbruckandClaude Opus 5.5 2026-10-08 17:32:05 +00:00
  • d191ae571e Pending scenario: a root-active sketch on a face of a moved component projects the face where it is (today at the body's own coordinates); harness check linked_world_range bherbruckandClaude Opus 5.5 2026-10-08 18:43:55 +00:00
  • c450619b0a View animations turn smoothly to the very end: the camera blends heading (the shorter way) and elevation instead of slerping orientations (whose roll-free heading spun near straight up or down, so moves to Top or Bottom snapped in their last frames); test samples every view-cube move at 60 fps for jumps bherbruckandClaude Opus 5.5 2026-10-08 15:41:11 +00:00
  • 3f44110b59 One frame for every window (frame.rs): command dialogs dock right and shrink to their content (260 to 380 px, 560 for table dialogs), floating windows are centred and capped (460 px, 760 for tables); header and footer rows right-align without stretching the dialog, long texts wrap; all windows migrated; tests: no egui::Window outside frame.rs, every command's dialog and the floating windows measured within limits bherbruckandClaude Opus 5.5 2026-10-08 15:35:42 +00:00
  • 74c7259825 Face provenance (kernel/src/provenance.rs): trace(result, inputs) tells per result face which input faces it lies on (surface and trimmed region, either side) and whether it was kept, modified, split, merged or generated, and per edge its faces and the input edge it lies on; extrude_origins and revolve_origins name a tool's caps and the profile segment each side sweeps, compose carries them through the boolean, blend_origins gives fillet/chamfer faces their edge and offset_origins gives shell walls the face they offset bherbruckandClaude Opus 5.5 2026-10-08 18:20:16 +00:00
  • 288bdf7f0f Sketch on a face: Look At centres on the picked point instead of the plane's origin (a corner of the face), which left the face filling the view off-centre like a big grey square bherbruckandClaude Opus 5.5 2026-10-08 18:13:56 +00:00
  • 7027382667 split_faces: exact sketch segments, a face map, and misses named bherbruckandClaude Opus 5.5 2026-10-08 18:16:17 +00:00
  • 998410de56 Debug builds mesh seam faces and closed edges (vendored meshalgo) bherbruckandClaude Opus 5.5 2026-10-08 18:12:30 +00:00
  • 0a6f6c4422 Insert Part dialog (SOLID > INSERT > Insert Fastener) bherbruckandClaude Opus 5.5 2026-10-08 15:28:24 +00:00
  • 4eff2146d2 s31 (sketch on a face projects its loops) passes on main: enabled bherbruckandClaude Opus 5.5 2026-10-08 17:37:23 +00:00
  • acc7b83625 UI scenarios are found, not listed: build.rs makes one test per tests/scenarios/*.json, named after the file, and a scenario waiting for a fix says so in its own file with a {"pending": "why"} step (its test is ignored with that reason). No shared list to edit, no numbering required bherbruckandClaude Opus 5.5 2026-10-08 16:52:00 +00:00
  • 305c1c9a9b Dragging sketch geometry snaps like Fusion: a dragged point (or a line dragged by its body, by its ends) snaps onto other points, line midpoints and curves, and letting go there adds the coincident, midpoint or point-on-curve constraint in the drag's undo step; it lines up horizontally and vertically with other points (dashed guides, no constraint). Snap distances in screen pixels; Ctrl or Alt held turns snapping off, also while drawing. Ring and Pt/Mid/On label on the snap. Scenario s42 (coincident and DOF, exact H alignment without a constraint, Ctrl-drag, undo, line body drag); ui.drag hold_end; synthetic drags keep their modifiers bherbruckandClaude Opus 5.5 2026-10-08 16:33:51 +00:00
  • b8d00aea13 Surface Extend: a planar surface's straight edges pushed out (FusionExtendCommand) bherbruckandClaude Opus 5.5 2026-10-08 17:20:30 +00:00
  • dd6c8e1a6b Surface bodies: Patch, Stitch, Trim and Thicken bherbruckandClaude Opus 5.5 2026-10-08 17:15:17 +00:00
  • feaaba156e Split Body by a face of a body: FusionSplitBodyCommand tool {body, point} bherbruckandClaude Opus 5.5 2026-10-08 16:39:12 +00:00
  • 34be218639 Kernel: split a body by a plane or another face's surface bherbruckandClaude Opus 5.5 2026-10-08 16:26:48 +00:00
  • 69d7bcfe7d split_faces: faces chosen by position stay chosen when a neighbour's split cuts their edges bherbruckandClaude Opus 5.5 2026-10-08 16:03:22 +00:00
  • f8a4ffbc67 Kernel: split faces by a plane, another face's surface or sketch curves bherbruckandClaude Opus 5.5 2026-10-08 16:00:58 +00:00
  • 0670de3f57 Shell and Offset Face on drill tips and tori: samples skip points where the normal is undefined (a cone's apex), the apex moves with its cone, tori offset their tube (the tube circle scaled and revolved again); a box with a drilled hole now shells to its analytic volume bherbruckandClaude Opus 5.5 2026-10-08 13:57:13 +00:00
  • 7e2d45602b kernel::delete_faces(body, faces): Delete Face with healing. The body is rebuilt from its own topology: faces away from the gap stay, planar neighbours keep their other edges, loops that ran along deleted faces (hole rims, boss footprints) go, corners on the gap move to where the neighbouring planes meet across it, and the gap closes with straight edges. Fillets, chamfers, through and blind holes and bosses come off exactly; curved neighbours and gaps the neighbours cannot close are refused naming the face bherbruckandClaude Opus 5.5 2026-10-08 12:55:33 +00:00
  • b8cd3d71e5 Regression test for components as frames (user bug #4, on 7a2eb05): a fillet picked in the world on a moved component with the root active, a sketch on a moved body's face, a body moved into a moved component keeping its place, and a fillet picked on a pasted instance; in its own test module bherbruckandClaude Opus 5.5 2026-10-08 15:30:26 +00:00
  • 7a46436158 Scenario s41: a value typed after picking an edge goes into Fillet's heads-up radius (as Extrude and Hole) bherbruckandClaude Opus 5.5 2026-10-08 16:01:22 +00:00
  • c45f3173fa QA targets for the newest UX reports (pending until their owners land): s37 browser chevrons on every node kind (all toggle; no Joints folder yet), s38 view animations to Top/Bottom end without a jump (the last frame turns 22.5 degrees today), s39 view cube edge/corner hover lights 2/3 patches, s40 toolbar Pin/Remove/reorder survive a restart and the workspace switcher spans the toolbar; ui_layout tests: every command dialog docked right at 260-380 px (or 480-560 for tables; the exploded view is 635), other windows fit on screen. Harness: published rects and counts, browser rows/fold arrows as handles, camera and view_anim steps, ui.at cube points, settings carried over a close restart, an adhoc scenario runner bherbruckandClaude Opus 5.5 2026-10-08 15:48:03 +00:00
  • 1e8fc25976 X and the toolbar's Construction no longer start a pick tool (Fusion has none): with a selection they convert it, with nothing selected they switch construction mode, outside a sketch they say so. Center Rectangle draws both diagonals as construction, the centre at their crossing, with only the first carrying the midpoint constraint (the second is implied), so a fresh one stays at 4 DOF. Scenarios s30 (pattern a hole) and s32 (cut in the active component) enabled now that b36b332 is on main bherbruckandClaude Opus 5.5 2026-10-08 15:31:10 +00:00
  • 90873e51bb Construction mode like Fusion: with nothing selected, X (or the toolbar's Construction, or the Sketch Palette's Linetype) switches the drawing line type, so new curves are construction (or centerline) until switched back, the active mode highlighted in the palette and named in the status bar; with a selection they convert it as before; the line type is part of the drawing's undo step. Scenarios: s35 construction mode, s36 the Sketch Palette shows while sketching (also over the tools, back after a window closes, both themes) and goes with the sketch; harness shown/not_shown checks bherbruckandClaude Opus 5.5 2026-10-08 15:19:07 +00:00
  • 35ac9569dc Holes as deep as the material: a drilled hole whose drill point would start exactly on the exit face is cut through (QA: depth = plate thickness failed with coincident faces on curved bodies) bherbruckandClaude Opus 5.5 2026-10-08 14:19:29 +00:00
  • c0f6aeb574 Regression test: lips, grooves and outside lips after bosses (to the rim, ribbed to the walls, against a wall, drafted and filleted) on a shelled enclosure bherbruckandClaude Opus 5.5 2026-10-08 14:25:16 +00:00
  • 8497542a3d Chamfers with two distances or a distance and an angle (distance2 / angle, flip for which face comes first), on straight edges between planar faces; pattern copies keep them bherbruckandClaude Opus 5.5 2026-10-08 13:16:04 +00:00
  • 38a6ae3d38 Topology counts: a horn torus pinched to a point is one face (smoothness ignores an edge's ends and points without a normal), with a degenerate loop at the pinch counted as Fusion does (two edges and a vertex); oracle 50 passes, 76/76 bherbruckandClaude Opus 5.5 2026-10-08 15:02:01 +00:00
  • 109b8acbb5 Topology counts weld coincident vertices and edges, and merge two pieces of one surface only across an edge that just those two share: tangent holes touching along a line keep the wall cut at the pinch, the same way at every pinch (oracle 42 passes; 75/76) bherbruckandClaude Opus 5.5 2026-10-08 14:44:33 +00:00
  • 51ffaf9945 IGES 5.3 import and export; OBJ import; STL reading hardened bherbruckandClaude Opus 5.5 2026-10-08 14:55:39 +00:00
  • 7a2eb059c4 Components are frames (user bug #4) bherbruckandClaude Opus 5.5 2026-10-08 14:23:35 +00:00
  • c0725ebc86 Dialog parity: Mirror has Object Type (Bodies / Features, a hole mirrored as a feature; Edit Feature keeps it); Thread has Full Length (a length only when off) bherbruckandClaude Opus 5.5 2026-10-08 13:48:10 +00:00
  • 23d38fab97 STEP export: read the file back only when faces were merged bherbruckandClaude Opus 5.5 2026-10-08 14:22:20 +00:00
  • 551d068ae2 Chamfers with two distances or a distance and an angle (distance2 / angle, flip for which face comes first), on straight edges between planar faces; pattern copies keep them wip/solvecraft-kernel bherbruckandClaude Opus 5.5 2026-10-08 13:16:04 +00:00
  • b36b332619 Patterns and mirrors of holes drill each copy afresh (its spot moved by the instance transform and found on the surface there), so a blind hole's depth counts from the face at the copy instead of from the bottom of the original hole (QA s30: three blind holes now remove three holes) bherbruckandClaude Opus 5.5 2026-10-08 13:49:54 +00:00
  • 83a10c813a Unit-less parameters used as lengths read in the design's units (feature evaluation and parameter values; bare numbers stored in inputs stay mm); document.units checks what the geometry reads (Document::length_inputs) and writes the old unit (with it as the parameter's unit) into bare unit-less parameters that would move; cached results keyed on the design's units bherbruckandClaude Opus 5.5 2026-10-08 13:48:25 +00:00
  • e30309be0d Insert Fastener (FusionFastenersCommand) on SOLID > INSERT, icon "fastener": the Insert Part dialog's command (same as parts.insert) bherbruckandClaude Opus 5.5 2026-10-08 13:08:10 +00:00
  • f7c26d8dfe Standard parts library (parts.library, parts.insert, parts.resize): ISO 4762 socket head cap screws, ISO 4014/4017 hex bolts, ISO 4032 nuts, ISO 7089 washers, ISO 4026 set screws, ISO 8734 dowel pins and 6000/6200/600-series bearing envelopes, M3–M20, built in code from the standards' dimensions as their own components with cosmetic threads; inserted at a hole's rim they get a rigid joint that puts them on the hole's axis seated on its face; resize rebuilds in place. Circle joint origins are named after the cylindrical wall bherbruckandClaude Opus 5.5 2026-10-08 13:04:37 +00:00
  • b2d0452656 Fold: with no fixed side the larger side stays, whichever side of the line it is on (the side areas were measured from the wrong point for one side; QA s22) bherbruckandClaude Opus 5.5 2026-10-08 12:53:25 +00:00
  • 2ef7f908b0 ROADMAP: M5 bherbruckandClaude Opus 5.5 2026-10-08 12:51:54 +00:00
  • 3b88585e5c sheet: clippy (items after tests) bherbruckandClaude Opus 5.5 2026-10-08 12:51:48 +00:00
  • 05b38e0f5f Persistent naming for sheet metal: base panel edges are named after the base sketch line they lie on, flange edges after their flange (F<feature>.<k>) and side (far / side0 / side1, top or bottom face); flanges and hems store edge names and pick by name first (a name that is gone keeps the point with a warning) bherbruckandClaude Opus 5.5 2026-10-08 12:51:32 +00:00
  • c6cb3dd1e6 naming: clippy bherbruckandClaude Opus 5.5 2026-10-08 12:47:35 +00:00
  • 23e50e4540 Persistent naming: shell inner faces named after the wall face they offset (F<shell>:inner:<face>), sweep and loft faces by start/end caps and the profile curve each side sweeps bherbruckandClaude Opus 5.5 2026-10-08 12:47:08 +00:00
  • 7c611aec0c Booleans stay in their component: a join, cut or intersect without explicit targets changes only its own component's bodies (and what it made), auto join/cut looks only at the active component; any feature takes participants: [bodies] to reach other components ("*" = every body); file format 5 gives older features in designs with components participants ["*"] so they keep their shape bherbruckandClaude Opus 5.5 2026-10-08 12:44:38 +00:00
  • 2886399215 Bare lengths typed into features (commands and parameter edits) mean the design's units: they are stored with the unit written in (2 in an inch design is "2 in"); lengths with units, angles and mm designs are unchanged bherbruckandClaude Opus 5.5 2026-10-08 11:15:48 +00:00
  • a762391697 Move triad handles published for scenarios (move_x, move_rz…); s33 (Move opens at 0, the X arrow moves along X only) enabled bherbruckandClaude Opus 5.5 2026-10-08 13:46:27 +00:00
  • 8fa566af33 Continuous orbit (navigation bar): the view turns about the vertical until the next click or key bherbruckandClaude Opus 5.5 2026-10-08 13:40:34 +00:00
  • 1970b8c680 Viewport: a soft ground shadow under the model, seen from above (ui groundShadow, on by default) bherbruckandClaude Opus 5.5 2026-10-08 13:37:33 +00:00
  • 54c7690271 Viewport: silhouette outlines on curved surfaces (back faces pushed out on screen, drawn behind the model) in the styles with edges; new visual style Shaded with Hidden Edges (edges behind the model drawn faintly) bherbruckandClaude Opus 5.5 2026-10-08 13:34:10 +00:00
  • aee1e941bf Camera: Fit (F6, navigation bar) frames the selection when there is one; the wheel zooms toward the model's surface under the cursor bherbruckandClaude Opus 5.5 2026-10-08 13:27:46 +00:00
  • a3d187ccd1 Appearances in the viewport: per-face looks colour their faces, and see-through bodies and faces (opacity below 1) draw as glass: far sides first, then near sides, blended over the model bherbruckandClaude Opus 5.5 2026-10-08 13:24:42 +00:00
  • 2b9ed16cc8 Move/Copy like Fusion: opens with nothing moved and a full triad at the bodies' centre (X/Y/Z arrows, plane squares, rotation rings, free-drag centre ball; snapped drags, Alt/Ctrl free), Move Type (Free Move, Translate, Rotate, Point to Point, Point to Position), X/Y/Z distances and angles with live preview, a pivot input; the triad is one shared module (gizmo.rs); UI scenario s27 bherbruckandClaude Opus 5.5 2026-10-08 12:42:03 +00:00
  • fba397ff65 Pattern Features also picked on the canvas: a face stands for the feature that made it (traced through the timeline states, cached per revision) bherbruckandClaude Opus 5.5 2026-10-08 11:37:50 +00:00
  • 294597cc96 Face colours and opacity in STEP and 3MF export (and STEP import) bherbruckandClaude Opus 5.5 2026-10-08 13:44:56 +00:00
  • 8045904c54 Lofts through three or more sections are smooth: each side is one B-spline surface through every section (the middle sections leave no edges); two sections stay ruled bherbruckandClaude Opus 5.5 2026-10-08 13:39:47 +00:00
  • 06186be555 Press Pull on a fillet's or chamfer's face edits that feature's size by the distance (found through the face's persistent name); on another curved face it offsets the face, with the rest of its surface (both halves of a hole's wall) bherbruckandClaude Opus 5.5 2026-10-08 13:12:08 +00:00
  • 59b59a83e6 UI scenarios: the user's four open bugs as ignored targets (s31 sketch on a face projects its loops, s32 a cut in the active component leaves others alone, s33 Move opens at 0 and its X arrow moves along X, s34 moving a component carries its sketches); Fold, configurations, motion study and autosave/recovery enabled against the landed features (s22–s25); retests: fillets follow their edge after a sketch edit (s06 volume, s15 widens the sample plate), one canvas panel (s19); s30 patterns a hole as a feature (ignored: one hole results). Harness: manipulator handles published by name (scenario::publish_handle; ui.at {handle}; timeline items as timeline:<name>), restart after a crash or close, autosave into the scenario's folder, exact widget text before menu-label prefixes, checks for sketch curves, body volume and sketch points in the world bherbruckandClaude Opus 5.5 2026-10-08 13:00:01 +00:00
  • 0a1b6f0fff STEP export: pieces of a plane or extruded cylinder written as one face bherbruckandClaude Opus 5.5 2026-10-08 12:54:44 +00:00
  • c009bb2c2a Menus take the keyboard (Up/Down choose a row, Enter runs it); F2 renames the selected body, sketch, feature, plane, component or canvas bherbruckandClaude Opus 5.5 2026-10-08 12:47:31 +00:00
  • 0ee343b9e6 Shell and offset faces on cones and spheres too (a dome moves to a smaller sphere about its centre, a cone's apex slides along its axis); surface fitting robust to poles and half cylinders; a shell retries on the unhealed body when the healed one won't cut bherbruckandClaude Opus 5.5 2026-10-08 12:24:15 +00:00
  • fec99468d2 Capture Position question: starting a command or saving while components were moved without capturing asks Capture Position / Revert / Cancel, then goes ahead; ui.capture control method bherbruckandClaude Opus 5.5 2026-10-08 12:40:28 +00:00