v2.8.0 

  • update logo ( + icon )
  • add close_window() that closes the window but keeps the application running
  • greatly improved headless behavior and performance
  • add clipboard interactions for text and images with clipboard_set() + clipboard_get() + clipboard_copy_image() + clipboard_paste_image()
  • remove deprecated configuration properties. use config to configure application e.g config.antialiasing(8)

backend abstraction

  • introduce umfeld::backend namespace as a platform abstraction layer. SDL3 remains the default backend but the interface is now replaceable
  • add SDL2 backend ( UMFELD_BACKEND_SDL2 ) for compatibility with older systems
  • add external backend mechanism. plug in a fully custom backend via UMFELD_BACKEND_EXTERNAL
  • add terminal backend as library. runs without any SDL dependency
  • get_window() is deprecated. use get_native_window() which returns void* and is backend-agnostic
  • key scan codes are now defined per-backend; external backends use ncurses KEY_* values

core + API

  • add print_console_info_during_initialization. set to false to suppress subsystem startup messages
  • error(), warning(), and console() now emit ANSI colors when the terminal supports it ( respects NO_COLOR env var and TERM=dumb )
  • color output is prefix-only: label is colored, message text is not
  • fix list() function
  • Capture now selects default camera when no device is specified
  • add XML support ( loadXML() / parseXML() )
  • add now() ( current time helper )
  • max() now accepts arrays / std::vector

build + tooling

  • installer now exports UMFELD_PATH ( + UMFELD_LIBRARIES_PATH ) into shell automatically
  • fix --branch option in installer script
  • remove template application stub from main repo ( template app lives in codeberg.org/Umfeld/umfeld-application )
  • greatly expanded automated tests

PShape

  • PShape is fully implemented
  • umfeld-only :: set_buffered() opt-in GPU caching: tessellate a static fill once, replay it from the GPU every frame. see umfeld-examples/Advanced/shape-buffered
  • umfeld-only :: rasterize(w, h) / loadSVGImage(file, scale) turn an SVG into a PImage bitmap on demand or at load time. see umfeld-examples/Advanced/shape-rasterize

graphics

  • (multisample) anti-aliasing (MSAA) is now on by default ( 4× MSAA ); configure with config.antialiasing(int)
  • fix offscreen / FBO rendering with antialiasing (MSAA). covers 4 commits: fix MSAA + offscreen bug on linux, fix MSAA rendering bug, fix no-MSAA glitch on RPI, resolve offscreen MSAA in endDraw.
  • fix depth sorting in 2D and 3D paths. improve depth behavior in 2D and 3D paths
  • add bezierVertex()
  • add shaped / transparent windows: config.shaped_window(true) + window_shape(mask)
  • add system cursors: cursor(CursorKind), image cursor cursor(img, x, y), noCursor()
  • debug_text() is now the default font i.e when textFont() not set or set to textFont(nullptr)
  • debug_text() renders Unicode characters

audio

  • improve audio backends ( SDL3 + PortAudio )
  • improve audio modules
  • ⚠️ breaking change ⚠️ :: audio backend now runs in its own thread by default
  • ⚠️ breaking change ⚠️ :: remove replay() from Sampler
  • 20+ new header-only audio DSP modules in umfeld/include/audio/: oscillators + Noise + FMSynthesis, envelopes ( Envelope, ShapedEnvelope, Ramp ), filters ( Resonator, FilterVowelFormant ), dynamics ( Gain, Distortion, Waveshaper ), Delay, analysis ( RootMeanSquare, EnvelopeFollower, BeatDSP, FFT ), music theory ( Note, Scale ), speech ( SAM, Vocoder )
  • add WavetableFast a faster wavetable oscillator ( with platform specific accelerations e.g NEON SIMD instructions on Arm Cortex )

libraries

new libraries

  • audio-plugin — build same unmodified app as standalone, VST3, or AU/AudioUnit. Audio I/O + parameter control + MIDI in/out + native GL editor view on macOS and Linux.
  • terminal — terminal renderer backend (ncurses); merged old in-mainline terminal renderer into a standalone library.
  • offline-renderer — offline/headless rendering: OSPRay ray-tracing backend + Blender offline renderer. ⚠️ WIP ⚠️
  • screenshot — cross-platform screen capture
  • gpu-bridge — GPUBridge, moved out of mainline into own library. ⚠️ WIP ⚠️
  • arduino-bridge — Arduino UNO Q bridge, separated MCU + MPU code.
  • yolo — YOLO object detection library.
  • template-library + template-library-backend — scaffolding templates for new libs / renderer backends, with documentation.

existing libraries

  • opencv — proper library reimplementation; multi-threaded capture for speed; new examples: contour-finder, edge-detection, find-lines, histogram, image-filters, region-of-interest.
  • imgui — updated for new renderer-backend mechanism.