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,shellcards 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 inattach. extrude+/revolve+return{:mesh :end-face}, so extrusions and revolutions chain into atransform->pipeline.- Marks travel with the geometry: marks placed on a path used as a profile become
:anchorsof the resulting mesh through extrude/loft/revolve; boolean operations preserve anchors;on-anchorsinstantiates geometry on each anchor;mark-posgives you their 3D positions. lay-flatrests a chosen face on the print plane (also accepts a path directly).slice-mesh :onwith 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). revolvegrew:pivotand:end-face, auto-clips shapes that cross the axis, clamps the angle to ±360°.- Text:
text-shape :center,extrude-text/text-on-pathreturn one combined mesh,text-heightmap(anti-aliased text relief), composite glyphs, afontsmodule. - 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/rotateare 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:boundson shapes and paths (:size/:center). - Mesh utilities: voronoi,
mesh-smooth/mesh-simplify/mesh-laplacian,merge-vertices. Per-meshmaterialwith 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/:fgcolors 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
cone/sdf-cone: the radius argument order is reversed (it now follows loft's reading order).- 2D transforms renamed: shape-specific transforms are now
translate-shape/scale-shape/rotate-shape, whiletranslate/scale/rotateare polymorphic (mesh, SDF, 2D shape; world axes, pivot on the creation pose). Code written for 1.10 that relied on the oldtranslate/scale/rotatesemantics on shapes needs review. cp-*semantics inverted: in creation-pose shifting, the anchor now stays fixed and the geometry slides under it (it used to be the opposite).revolveclamps the angle to ±360°: sweeps no longer self-overlap past a full turn.