Skip to content

Ridley 3.1.0

Latest

Choose a tag to compare

@vipenzo vipenzo released this 12 Jun 13:01
· 11 commits to main since this release

What's new in 3.1 (since 3.0)

Manual & documentation

  • Complete bilingual (EN/IT) in-app manual: all guides revised, new getting-started and how-to-read guides.
  • Level badges on every chapter and in the table of contents, with a single source of truth driving navigation and levels.
  • Reference browser updates: bezier-to, loft, on-anchors, revolve, shell cards with corrected examples.

Curve authoring & interactive tooling

  • edit-bezier with tension sliders and anchor mode.
  • add-mark, anchor rulers, and 2D rulers.
  • Shared modal evaluator layer across edit-bezier / tweak / pilot (live re-eval).

Fixes & quality

  • Reference cards aligned with actual behavior (on-anchors inline geometry, revolve, shell).
  • Test suite green: 298 tests / 847 assertions.

Cumulative changes since 1.10 (for those catching up)

Between v1.10.0 (March 25) and v3.1.0 (June 12): nearly 300 commits across v1.11, v2.0, and v3.x. The highlights, by area.

Platform

  • Native macOS desktop app (Tauri v2). Install: brew install --cask vipenzo/ridley/ridley (if Homebrew asks about tap trust: brew trust --cask vipenzo/ridley/ridley), or grab the DMG below. If you use the DMG directly, macOS will warn on first launch (the app isn't notarized): allow it from System Settings → Privacy & Security ("Open Anyway"); the brew route takes care of this for you. Window position and size are remembered across launches.
  • One in-app evaluation architecture shared by browser and desktop: the whole DSL runs in-app, no external processes.
  • 3MF export alongside STL, including multimaterial 3MF (emits model_settings.config, picked up directly by Bambu/Orca Studio). Native save dialog with format choice.
  • anim-export-gif (desktop): export a GIF from procedural animations, all animations driven in lockstep.
  • Sturdier STL/3MF export: mesh solidify before export, vertex dedup, no non-manifold edges.

Workspaces and libraries

  • Workspace system: documents are first-class workspaces, with workspace-aware Save/Open and native file dialogs.
  • Library panel with install/delete; persisted on disk (~/.ridley/libraries/) on desktop, in localStorage on the web.
  • Built-in libraries preinstalled: puppet, gears, weave, and a full parametric Multiboard tile set.

Modeling (DSL)

  • embroid: perforate a thin extruded wall with honeycomb, voronoi, or custom patterns.
  • Full SDF (implicit modeling) toolkit, currently desktop only: sdf-formula, TPMS surfaces, sdf-revolve, sdf-rounded-box, sdf-slats / sdf-bars / sdf-grid / sdf-bar-cage, sdf-half-space, sdf-clip, sdf-cone, +torus, +blend-difference. SDFs and meshes interchange in booleans and in attach.
  • extrude+ / revolve+ return {:mesh :end-face}, so extrusions and revolutions chain into a transform-> pipeline.
  • Marks travel with the geometry: marks placed on a path used as a profile become :anchors of the resulting mesh through extrude/loft/revolve; boolean operations preserve anchors; on-anchors instantiates geometry on each anchor; mark-pos gives you their 3D positions.
  • lay-flat rests a chosen face on the print plane (also accepts a path directly). slice-mesh :on with morph-aware composition.
  • Face queries: find-faces, face-at, face-nearest, face-shape (extract a face's outline as a 2D shape, turtle positioned on it).
  • revolve grew :pivot and :end-face, auto-clips shapes that cross the axis, clamps the angle to ±360°.
  • Text: text-shape :center, extrude-text / text-on-path return one combined mesh, text-heightmap (anti-aliased text relief), composite glyphs, a fonts module.
  • Curves: reflect / reverse / mirror-path, bezier-as :control, bezier tensions, bezier-to :local, mid / seg-mid.
  • shell: voronoi and lattice styles with :softness (smoothed openings), :invert?, :margin, hole-segments.
  • translate / scale / rotate are now polymorphic over meshes, SDFs, and 2D shapes (world axes, pivot on the creation pose).
  • Variadic shape booleans (plus vector form), aligned with mesh booleans.
  • Turtle navigation: side-trip, move-to :align, anchors-from-path. 2D measurement: bounds on shapes and paths (:size / :center).
  • Mesh utilities: voronoi, mesh-smooth / mesh-simplify / mesh-laplacian, merge-vertices. Per-mesh material with kwargs.

Interactive editing

  • edit-bezier: draw curves interactively, with tension sliders and anchor mode.
  • pilot: keyboard positioning of meshes and SDFs.
  • tweak: live sliders on the numeric literals of your script, with precision zoom and OK/Cancel.
  • All three share a common modal evaluator layer with live re-eval.
  • Interactive rulers and marks: add-mark, ruler :at, anchor rulers, 2D rulers.
  • Viewport: TrackballControls, configurable reset view, camera headlight and ring lights, :bg / :fg colors from the panel.

Manual and documentation

  • Bilingual (EN/IT) in-app manual where almost every example has a Run button, and an Edit button that opens it in a fresh workspace.
  • Reading paths depending on where you come from, and difficulty levels on every chapter and in the table of contents.
  • In-app Reference browser: symbol tooltips in the editor, auto-linked symbols in the prose, cross-links between guides and cards.

Notable fixes

  • Correct cap winding for extrusions with holes (manifold output), forward and backward.
  • revolve: pole vertices and non-manifold edges in STL export fixed.
  • loft: sub-meshes seam-welded so angular paths come out manifold.
  • extrude-from-path: U-turn regression fixed.
  • No more "deleted object" errors in long CSG chains (Manifold WASM).
  • STL import recentered on the origin, with a warning for very small imports.
  • arc-h / arc-v / capped: helpful errors on negative radii instead of silently wrong geometry.

⚠️ Breaking changes since 1.10

  1. cone / sdf-cone: the radius argument order is reversed (it now follows loft's reading order).
  2. 2D transforms renamed: shape-specific transforms are now translate-shape / scale-shape / rotate-shape, while translate / scale / rotate are polymorphic (mesh, SDF, 2D shape; world axes, pivot on the creation pose). Code written for 1.10 that relied on the old translate/scale/rotate semantics on shapes needs review.
  3. cp-* semantics inverted: in creation-pose shifting, the anchor now stays fixed and the geometry slides under it (it used to be the opposite).
  4. revolve clamps the angle to ±360°: sweeps no longer self-overlap past a full turn.