Skip to content

v0.7.0 — Monorepo & Paint Enhancements

Latest

Choose a tag to compare

@electroheadfx electroheadfx released this 05 Apr 20:04
· 5 commits to main since this release

What shipped

pnpm monorepo (Phase 26)

Converted the repo to a pnpm workspace. Application/ is now app/, full git history preserved via isolated git mv. efx-physic-paint lives in packages/ as a workspace package — ready for the standalone window work in v0.8.0.

Paint engine overhaul (Phase 33)

20 plans of fixes, polish, and new features on top of the existing perfect-freehand + p5.brush stack.

3-mode paint system — Each frame is now explicitly Flat, FX, or Physical (placeholder). Modes are mutually exclusive per frame. Switching shows a conversion dialog, brush style resets on mode change, and the mode persists per layer across sessions.

Inline color picker — Canvas-adjacent 260px panel with 4 color modes: Box (SV square + hue), TSL, RVB, and CMYK. All slider tracks render live gradients. HEX input, auto-apply, 12 recent colors, persistent saved favorites. Replaces the old sidebar color swatch.

Wireframe overlay — Selected strokes show a dashed path + bounding box so you can actually see what you're grabbing, especially in FX mode.

Stroke draw-reveal animation — Select a stroke, pick a frame range, and it distributes the points across frames using speed-based weighting (slow drawing = more frames, fast = fewer). Single undo entry.

Circle cursor — Photoshop-style brush size cursor that scales with zoom.

Brush persistence — Color and si Jump to bottom ↓ s. Default is #203769 at 35px.

Undo/FX cache fixesCmd+Z no Jump to bottom ↓ ders the canvas in both flat and FX mode. FX cache invalidates on color change, clear, and mode switch.


What didn't ship

Phases 27–32 (replacing perfect-freehand + p5.brush with a headless efx-physic-paint adapter) were abandoned after the batch rendering approach produced inferior visual quality and O(n²) re-render performance. The physics engine will come back in v0.8.0 as a standalone window with a transport protocol instead of an in-process adapter.