Changelog
2026-06-24 09:45 - a day ago
Ops
- Bugfix: Ops.Data.Compose.String.CompString - Fix problem with buffer not being cleared when starting to compose github.com
- Bugfix: Ops.Data.JsonPath.ObjectGetStringByPath_v2 - Fix "found" output port
- Bugfix: Ops.Extension.Rapier3d.Body_v3 - Fix problems with forcing comple body resetup too often
- Bugfix: Ops.Extension.Rapier3d.CheckCollisionPairsEvents - Fix eventsystem
- Bugfix: Ops.Extension.SocketCluster.SocketClusterReceiveObject - Unsubscribe from channel on socket change
- Bugfix: Ops.Extension.SocketCluster.SocketClusterReceiveTrigger - Unsubscribe from channel on socket change
- Bugfix: Ops.Gl.CubeMap.Skybox - Fix problems not rendering anything when used below renderToTextures op
- Bugfix: Ops.Gl.GLTF.GltfDracoCompression_v2 - Draco GLTF files now include all texture coordinate/UV channels, not only the first anymore
- Bugfix: Ops.Gl.GLTF.GltfScene_v5 - Mesh morph targets now work with more vertices than the max texture size
- Bugfix: Ops.Gl.Shader.PointMaterial_v6 - Fix bug with texturemapping
- Bugfix: Ops.Gl.Textures.VideoTexture_v3 - Fix bug where texture was updated too often
- Bugfix: Ops.Graphics.Geometry.TransformGeometry_v2 - Fix rotation order, so it works as normal transform op
- Bugfix: Ops.Graphics.Meshes.Circle_v4 - Fixed texture coordinates when give an inner radius and chose "round" mapping
- Bugfix: Ops.Html.CSS.ElementSize - Update op when changing height/width units
- Bugfix: Ops.Html.ElementGradientBg - Fix passthrough of element via outport
- Bugfix: Ops.Html.GridLayout.Grid - Output new element when updating styles
- Bugfix: Ops.Json.ObjectSetNumber_v2 - Handle non numeric input values
- Bugfix: Ops.TimeLine.TimeLineFrame_v2 - New Version v2: Using timeline config FPS for frame calculation from timeline time
- Bugfix: Ops.Ui.VizBool - Fix bug when op is resized to very small
- Feature: Ops.Array.ArrayToString_v3 - Added prefix parameter, e.g. to make lists starting with "-"
- Feature: Ops.Array.PointArray.RedistributeSplinePoints_v2 - New version v2: Automatically update when array changes
- Feature: Ops.Audio.AudioPlayer - Added active toggle, will unload audio when not checked
- Feature: Ops.Audio.AudioPlayer - Added output for duration of audio file
- Feature: Ops.Cables.Ops.OpsLoadingStatus - Get ops in current patch that have a specific tag
- Feature: Ops.Extension.Rapier3d.Body_v3 - Added wakeup button
- Feature: Ops.Extension.Rapier3d.Body_v3 - Allow collision detection of fixes vs fixed bodies
- Feature: Ops.Extension.Rapier3d.RayCast - Option to exclude sensors when casting ray
- Feature: Ops.Extension.Standalone.Files.WriteTextFile - Auto write file when string changes
- Feature: Ops.Gl.GLTF.GltfNodeTransform_v2 - Added switch to select between world space and model space
- Feature: Ops.Gl.GLTF.GltfScene_v5 - "Double sided" material setting is now used to cull backfaces or not, when using material properties
- Feature: Ops.Gl.GLTF.GltfScene_v5 - Added input field to filter nodes,materials,geometries by name
- Feature: Ops.Gl.GLTF.GltfScene_v5 - Basic automatic loading and usage of embedded textures
- Feature: Ops.Gl.GLTF.GltfScene_v5 - Manual reordering of rendering order, set order to negative value in structure view to render nodes earlier, e.g. optimize for transparency ordering
- Feature: Ops.Gl.Geometry.GeometryBoundingBox - Added output for axis sizes
- Feature: Ops.Gl.GradientTexture_v2 - New version v2: Added more interpolation methods
- Feature: Ops.Gl.ImageCompose.ColorChannel_v3 - New version v3: added option to easily switch colorchannels and/or set specific channels to zero or one
- Feature: Ops.Gl.ImageCompose.Math.RgbTransform_v2 - Fix rotation order, so it works as normal transform op
- Feature: Ops.Gl.ImageCompose.PixelDisplacement_v4 - Added toggle for antialiasing
- Feature: Ops.Gl.Pbr.PbrMaterial - Add option to flip all textures
- Feature: Ops.Gl.Pbr.PbrMaterial - Added option to multiply albedo texture with diffuse color
- Feature: Ops.Gl.Pbr.PbrMaterial_v2 - Add option to flip all textures
- Feature: Ops.Gl.Pbr.PbrMaterial_v2 - Added extra input for AO/Occlusion texture, connect an AORM texture to both inputs
- Feature: Ops.Gl.Pbr.PbrMaterial_v2 - Added option to multiply albedo texture with diffuse color
- Feature: Ops.Gl.RenderToTexture_v3 - Added output for framebuffer
- Feature: Ops.Gl.Shader.BasicMaterial_v3 - Rendering of textures from gltf files
- Feature: Ops.Gl.ShaderEffects.TransformArea_v2 - Added falloff and falloff curve parameters to smoothly mix in the changes to the area bounds, so there is not a hard cut
- Feature: Ops.Gl.ShaderEffects.TransformArea_v2 - Added rotation
- Feature: Ops.Gl.ShaderEffects.TransformArea_v2 - New version v2: Added amount toggle, a multipier to the transformation, handy for fading in/out
- Feature: Ops.Gl.ShaderEffects.TransformArea_v2 - Visualize area does no longer stop the modification, you can now use amount to do that
- Feature: Ops.Gl.TextureToPointArray3 - Added output for a color array of the filtered pixels
- Feature: Ops.Graphics.Geometry.ScaleGeometry - Add scaling multiplier per axis
- Feature: Ops.Graphics.Geometry.ScaleGeometry - Added option for scaling to a target size for each axis
- Feature: Ops.Html.CSS.CssFile - Reload button added
- Feature: Ops.Html.CSS.ElementCssText - Added text-decoration parameter
- Feature: Ops.Math.RandomNumbers_v4 - New version v4: multiport, add new random number outputs
- Feature: Ops.String.Uppercase_v2 - Added toggle for capitalize, only set the first character uppercase
- Feature: Ops.TimeLine.TimeLinePlay - Added trigger to toggle between play/pause
- Feature: Ops.Ui.CablesEditorEvents - Added events to trigger, when op created/deleted, port linked etc
- Feature: Ops.Ui.VizObject - Added functionality to string search the whole object
- Feature: Ops.Ui.VizTexture - Add option to show a specific mip level
- Feature: Ops.Ui.VizTexture - Option to debug by only visualizing one RGB channel
- Feature: Ops.Ui.VizTexture - Option to visualize RGBE encoded images
- Feature: Ops.Vars.VarGetNumber_v2 - Add button to directly assign the used variable to the connected port
- Feature: Ops.Website.LocalStorageKeys - Add support for sessionStorage
- Feature: Ops.Website.LocalStorageNumber - Add support for sessionStorage
- Feature: Ops.Website.LocalStorageString - Add support for sessionStorage
- Improvement: Ops.Array.ArrayGetObject - Add "found" outport boolean
- Improvement: Ops.Audio.AudioPlayer - Add current time output port
- Improvement: Ops.Audio.AudioPlayer - Add time input port for scrubbing
- Improvement: Ops.Audio.AudioPlayer - Added toggle for creating a loading task when loading a file
- Improvement: Ops.Audio.AudioPlayer - Clamp volume between 0-1
- Improvement: Ops.Boolean.And_v2 - New Version v2: Multiport by default
- Improvement: Ops.Cables.UIMode - Add current value of canvas mode as default value
- Improvement: Ops.Devices.Mouse.MouseButtons - Only trigger mouseUp outputs when down was pressed while active was true
- Improvement: Ops.Extension.Lottie.LottieSVGPlayer_v2 - New Version v2: upgraded lottie.js to version 5.13.0
- Improvement: Ops.Extension.OpenType.OpentypeToSvgPath - Added support for line breaks, added line height parameter
- Improvement: Ops.Extension.Rapier3d.Body_v2 - Use current modelmatrix information like translation and scale
- Improvement: Ops.Extension.Rapier3d.Body_v3 - Better use of current modelMatrix rotation
- Improvement: Ops.Extension.Rapier3d.Body_v3 - Overlay mode will show body translation dot and information
- Improvement: Ops.Extension.Rapier3d.Body_v3 - Use current modelmatrix information like translation and scale
- Improvement: Ops.Extension.Standalone.Files.PathToFileUrl - Treat relative paths as relative to patch dir
- Improvement: Ops.Extension.Standalone.Files.SelectFile - Treat relative paths as relative to patch dir
- Improvement: Ops.Extension.Standalone.Files.SystemDirs - Add patchdir output port
- Improvement: Ops.Extension.Standalone.Files.WriteTextFile - Resolve relative paths to patch directory, add output port
- Improvement: Ops.Extension.Standalone.Net.ReadTextFile - Resolve relative paths to patch directory, add output port
- Improvement: Ops.Gl.ExternalCanvas - Add option to open with transparent background
- Improvement: Ops.Gl.GLTF.GltfDracoCompression_v2 - Upgraded library to draco v1.5.7 github.com
- Improvement: Ops.Gl.GLTF.GltfScene_v5 - Extension KHR_texture_transform added for texture transforms, scaling and offset
- Improvement: Ops.Gl.GLTF.GltfScene_v5 - Memory usage/Garbage collection optimized
- Improvement: Ops.Gl.GLTF.GltfScene_v5 - More information about embedded textures and texture loading/binding bugs fixed / loading of occlusion textures
- Improvement: Ops.Gl.GLTF.GltfScene_v5 - New Version 5: "Use Material Properties" is enables by default
- Improvement: Ops.Gl.GLTF.GltfScene_v5 - Tangents and bitangents are now calculated using the mikktspace algorithm, leading to correct looking normal maps and lighting
- Improvement: Ops.Gl.Geometry.BoundingBoxVisible - Show an error if the object is not a bounding box
- Improvement: Ops.Gl.Matrix.ArrayPathFollowParticles_v2 - Add random texture coordinate per particle
- Improvement: Ops.Gl.Pbr.PbrMaterial - Better loading of settings from gltf files / textures
- Improvement: Ops.Gl.Pbr.PbrMaterial_v2 - Better loading of settings from gltf files / textures
- Improvement: Ops.Gl.Performance - Much more realistic results for GPU timing numbers, in some cases they are still very wrong, probably blame webgl query timer or GPU driver....
- Improvement: Ops.Gl.Phong.SpotLight_v5 - Show second translate gizmo for better control
- Improvement: Ops.Gl.TextureArrayLoaderFromArray_v4 - Faster and less thread blocking loading of images
- Improvement: Ops.Gl.TextureArray_v2 - New version: multiport, dynamic number of input textures
- Improvement: Ops.Gl.Texture_v3 - Faster and less thread blocking loading of images
- Improvement: Ops.Gl.Textures.WebcamTexture_v4 - Texture will only be updated when there was a new frame available to capture from the webcam
- Improvement: Ops.Graphics.Geometry.GeometryExtrude_v3 - Even better normals! Now it can have smooth normals
- Improvement: Ops.Graphics.GeometryMergeSimple_v2 - New version v2: multiport op instead of only two meshes
- Improvement: Ops.Graphics.Transform - Overlay dot will now display the op comment
- Improvement: Ops.Html.CSS.BackgroundImage_v2 - Added input port to set background image or mask image
- Improvement: Ops.Html.CSS.CSSPropertyString - Show property in extended title
- Improvement: Ops.Html.CSS.ElementSize - Add vh and vw to size units
- Improvement: Ops.Html.CSS.SetCssVariableNumber - Update output when changing suffix
- Improvement: Ops.Html.CSS.SwitchClass - Show information in extended title
- Improvement: Ops.Html.Elements.VideoElement - Add volume controls / golabl volume listener
- Improvement: Ops.Json.HttpRequest_v4 - Skip sending Content-Type header for GET/HEAD, greyout parameters github.com
- Improvement: Ops.Json.ObjectGetString_v2 - Add option to output key for missing values
- Improvement: Ops.Json.ObjectStringify_v2 - Show a warning if the connected object port does not contain an object
- Improvement: Ops.Sidebar.ColorPickerNative - Add option to toggle visibility
- Improvement: Ops.Sidebar.ColorPicker_v3 - Add option to toggle visibility
- Improvement: Ops.Sidebar.ColorPicker_v3 - Output the picker HTML element
- Improvement: Ops.String.Concat_v3 - New version v3: multiport by default
- Improvement: Ops.String.File.SwitchFile_v3 - New version v3: multiport input of files
- Improvement: Ops.String.LineBreaksHtml - Added active toggle
- Improvement: Ops.TimeLine.AnimInfo - Output keys of anim as array
- Improvement: Ops.Ui.VizArrayTable_v2 - Increase zoom distance when pausing drawing on patchfield
- Improvement: Ops.Ui.VizArrayTable_v2 - Show name of connected port for better readability
- Improvement: Ops.Ui.VizNumber - Show name of connected port for better readability
- Improvement: Ops.Ui.VizObject - Added option to toggle auto hiding many items in arrays
- Improvement: Ops.Ui.VizObject - Increase zoom distance when pausing drawing on patchfield
- Improvement: Ops.Ui.VizObject - Show a warning if the connected port is not a valid object
- Improvement: Ops.Ui.VizObject - Show name of connected port for better readability
- Improvement: Ops.Ui.VizObject - Use custom stringify (was called experimental before) for simple objects, JSON.stringify for class instances, because it isfaster
- New op: Ops.Array.Curves.CurveEditor - Edit a simple curve
- New op: Ops.Array.Curves.CurveEditorArray - Edit a simple curve and output as array of numbers
- New op: Ops.Array.PointArray.Array3PointEditor_v2 - Create an array from multiple number inputs
- New op: Ops.Array.PointArray.Unstrip - Unstrip a line point array
- New op: Ops.Audio.GlobalVolume - Adjusts the volume of all audio ops
- New op: Ops.Boolean.Or_v2 - Outputs true if one of the input values is true (boolean)
- New op: Ops.Cables.Ops.GetOpsByTag - Get a list of ops that have a specific tag
- New op: Ops.Cables.Ops.OpsLoadingStatus - Get loading status of an array of ops
- New op: Ops.Cables.PatchFileList - Outputs an array of filenames, that are uploaded to the current patch
- New op: Ops.Devices.Mouse.CustomClick - Configurable mouse click listener
- New op: Ops.Extension.FontKit.FontParser - Loads a font file, parses it with fontkit.js, and lays out a text string into individual glyph outlines.
- New op: Ops.Extension.FontKit.GlyphAxisMorph - Pre-calculates glyph outlines at axis min and max values, then interpolates coordinates arithmetically at render time — zero fontkit calls per frame.
- New op: Ops.Extension.FontKit.GlyphCombine - Takes the per-glyph SVG paths and positions arrays and reconstructs a single combined SVG path string, ready for triangulation
- New op: Ops.Extension.FontKit.GlyphTransformAnim - Applies geometric transformations per glyph via an array of values. Purely geometric — does not need the font, only Glyph Paths + Glyph Positions.
- New op: Ops.Extension.Standalone.CloseApplication - Close cables standalone on trigger
- New op: Ops.Extension.Standalone.DesktopTexture - Capture desktop windows or screens as a texture DesktopTexture
- New op: Ops.Gl.GLTF.GltfLoadedTexture - Load textures from inside a .glb file
- New op: Ops.Gl.GLTF.GltfMaterialUseProperties - Use GLTF material properties of a material on the current shader
- New op: Ops.Gl.GLTF.GltfNodeTransformation - Get the transform from the GLTFscene op
- New op: Ops.Gl.GLTF.GltfTextureTest - Show specific GLTF texture channels as color texture
- New op: Ops.Gl.GLTF.GltfToggleVisibility - Toggle visibility of GLTF nodes
- New op: Ops.Gl.GLTF.KtxCompression - Load a KTX file as a texture
- New op: Ops.Gl.GLTF.KtxCompression_v2 - Load a KTX file as a texture
- New op: Ops.Gl.ImageCompose.Noise.Grain - Film Grain look noise
- New op: Ops.Gl.Matrix.MultiplyProjectionMatrix_v2 - Multiply view matrix
- New op: Ops.Gl.ShaderEffects.ShadowPass - Route trigger differently when in shadowpass or not
- New op: Ops.Gl.ShaderEffects.ShadowPass_v2 - Route trigger differently when in shadowpass or not
- New op: Ops.Graphics.Geometry.GeometryMapTexCoords - Simple method to generate texture coordinates from object vertex coordinates
- New op: Ops.Html.CSS.CSSPropertyVariable - Use a CSS variable in a css property of an element
- New op: Ops.Html.CSS.ElementSize - Set Size of a HTML element
- New op: Ops.Html.Elements.ElementQuery - Find all matching elements by query in the DOM
- New op: Ops.Json.ObjectDeepSearch - Search for any value anywhere in an object
- New op: Ops.String.MarkdownLinks - Replace Words as links in markdown strings
- New op: Ops.TimeLine.AnimGetDataArrays - Get data of an animation as arrays
- New op: Ops.TimeLine.EaseAnimCurve - Ease a value between 0 and 1 over a timeline curve
- New op: Ops.Ui.VizAudioSpectrum - Vizualize an audionode object spectrum
- New op: Ops.Ui.VizAudioWaveform - Vizualize an audionode object as a waveform
- New op: Ops.Vars.VariablesFromObject - Set existing variables to values in an object
- New op: Ops.Website.LocalStorageKeys - Retrieve all keys (and values) stored in browser storage
- Rename: Ops.Audio.AudioPlayer - Html.Elements.AudioMediaElement renamed to Ops.Audio.AudioPlayer
- Rename: Ops.Boolean.Or_v2 - Boolean.OrMultiPort renamed to Ops.Boolean.Or_v2
- Rename: Ops.Gl.Matrix.MultiplyProjectionMatrix - Gl.Matrix.SetProjectionMatrix renamed to Ops.Gl.Matrix.MultiplyProjectionMatrix
- Rename: Ops.Gl.ShaderEffects.TransformArea - Gl.ShaderEffects.VertexArea renamed to Ops.Gl.ShaderEffects.TransformArea
- Rename: Ops.Gl.ShaderEffects.TransformArea_v2 - Gl.ShaderEffects.VertexArea renamed to Ops.Gl.ShaderEffects.TransformArea
- Rename: Ops.Sidebar.ColorPickerNative - Sidebar.ColorPicker_v2 renamed to Ops.Sidebar.ColorPickerNative
- Rename: Ops.Trigger.RouteTrigger_v2 - New version v2: Multiport outputs by default
Unreleased Ops
Website
- Bugfix: Fix permission-check for teammembers when restoring backups
- Feature: Add summary field to teams, show in overview of public teams
- Feature: Add more information to project log, make log-view collapsable
- Feature: New concept of "temporary patches" (new empty patches, restored backups, ...) they are listed in tab on "My Patches" page
- Feature: Add bulk delete to op-changelog editing mode
- Improvement: Add "Clone Patch" to patch page and mypatches lists [github.com](github.com)
- Improvement: Show op creation date and time on oppage
- Improvement: Properly show linebreaks in markdown of team description
- Improvement: Add numbers to backups, show in restore and download. Tweak backup intervals.
- Improvement: Add option to restore backups pointing to original patch assets
- Improvement: Add team-info to patchlist page, Show team visibility as text on team page
- Improvement: Fix duplicate inclusion of op dependencies in export
- Improvement: Do not increment export count when creating backup of projects
- Improvement: Add url-field to op-changelog form [github.com](github.com)
- Improvement: Disallow deletion of example patches, add warning
- Improvement: Cleanup layout of team page and team-overview pages
- Improvement: Show icon next to op name if op has an example on ops overview page
- Improvement: Link public teams to my teams and vice versa
- Improvement: Add icon to unlisted teams
- Improvement: Reorganize /myteams, add tabs
- Improvement: Suggest deprecated ops on "op not found" page for ops of the same name
Editor
- Bugfix: Prevent creating ops with illegal names
- Bugfix: Fix name and link to team for extensions in opselect
- Bugfix: Fix bug with extendet title not showing when falsish value [github.com](github.com)
- Bugfix: Fix bug in updating ui when disconnecting multiplayer client
- Bugfix: Popout canvas did not work correctly when adding elements to the patch, because of wrong container element [github.com](github.com)
- Bugfix: Fix project-settings tabs sometimes not clickable
- Bugfix: Fix "take screenshot now" button, was not working in some cases
- Feature: Filemanager: highlight latest uploaded file
- Feature: Make op dependencies editable in editor
- Feature: Restoring a backup will restore ui attributes of patch (e.g. bookmarks)
- Feature: Drawcall profiler: new view to see what drawcalls to webgl are currently executed
- Feature: Overlay transforms can now display text
- Feature: Math ops now show variablenames when directly set to port
- Feature: Ops can now be tagged, those tags can be queried by ops for meta patch functionality
- Feature: Allow upload of binary as an op-dependency (i.e. for WASM) [github.com](github.com)
- Feature: Mute audio will be stored in user preferences now. Added new commands for mute/unmute audio. Muted audio icon is highlighted in the canvas UI bar [github.com](github.com)
- Feature: Filemanager: Files are greyed out if not used in current patch
- Feature: Vizualisation ops are also suggested when clicking on a cable
- Feature: Added user preference to switch the text editor, added basic support for codemirror and a simple textarea editor
- Feature: Gradient editor: Added button to reverse all keys in current gradient
- Feature: Gradient editor: Added simple presets
- Feature: Selected op connected cables now have a brighter outline and are move visible when zoomed out
- Feature: Op suggestions based on objtype, e.g. audio object outputs
- Feature: No longer taking a screenshot when changing from automatic to manual screenshots in patch settings
- Feature: Add a new Canvas floating mode, param panel then becomes full height
- Improvement: Optimize performance spikes when selecting huge amounts of ops
- Improvement: Text editor appearance will be greyed out when not currently focussed
- Improvement: Port suggestions in opselect dialog now shows "variable in port" to directly get variable values into a port without creating a var get op
- Improvement: Left Tabpanel/Editor can now be toggled using cmd/ctrl+b hotkey
- Improvement: Search toggle: ":animated" search only over ops that have animated ports
- Improvement: Tooltips are no longer positioned outside of the browser window/ parameter panel tooltips for input ports [github.com](github.com)
- Improvement: Allow team-users to see file-infos for uploaded assets
- Improvement: Switched code/text/string editors: Removed ACE editor and switched to CodeMirror 6
- Improvement: Op search improve colors for loadable op collections (teams/extensions)
- Improvement: Gradient editor draggable points would not register a "pointer up" event [github.com](github.com)
- Improvement: Fixed size of patchbg canvas and cmd+enter now cycles between normal->patchgg->maximized [github.com](github.com)
- Improvement: File manager removes current selection filter when switching to another op
- Improvement: Ignore new annoying chrome pointerlock exceptions
- Improvement: Notify UI of file-upload via cables-cli and refresh file ports [github.com](github.com)
- Improvement: Export: Remove reference to non-existant sourcemaps from non-minified exports
- Improvement: Optimize shader compilation time, by only checking valid link status when shader is actually used
- Improvement: Speed up subpatch op saving when reloading multiple instances of op
- Improvement: Changed the zoom for centering ops (c) and clicking findresult to be more zoomed out
- Improvement: Editor does not force timeline to play after loading the ui
- Improvement: Load op-dependency only once per patch, preventing lot's of requests for parent-op
- Improvement: Mesh ops show an X in the op title when drawing is deactivated
- Improvement: Optimized loading time for patches with many materials/shadermods and effects, only compile shaders when they are needed
- Improvement: Rework import and backup-restore workflow, option to not restore/import op-code
- Improvement: Store canvas mode in user preferences, restore when opening the editor
Standalone
- Bugfix: Do not show intro-tour / hints when started as fullscreen or maximized
- Bugfix: Fix bug where creation of new op was not possible until new project was re-opened once
- Bugfix: Fix copypaste of local ops into subpatch ops
- Bugfix: Fix export not working in some cases
- Bugfix: Prevent op-errors when entering directories or files with no permission in file-ports
- Feature: Add usersetting to open popout- and external-canvas in a transparent window (pull request by Uuoocl, thank you!)
- Feature: Add commandline parameters to control screen/offset to open window
- Feature: Fix bug when selecting aspect ratio of canvas
- Feature: Fix location of extension ops when developing in cables-development setup
- Improvement: Remove version number from name of executable, always show version number in title
- Improvement: Build Windows executable in seperate files (not one "portable" exe)
Timeline
- Bugfix: When clicking an op, the timeline scrolls, so the line is visible
- Feature: Anim title line: Added buttons to jump next/previous keyframe and to add new ones
- Feature: Anim title line: Added value display and functionality to manipulate values by dragging
2026-02-23 12:06 - Feb 23, 2026 at 12:06
Ops
New op: Ops.Array.PointArray.Unstrip - Unstrip an line point array
New op: Ops.Extension.Standalone.DesktopTexture - Capture desktop windows or screens as a texture DesktopTexture
New op: Ops.Gl.GLTF.GltfMaterialUseProperties - Use GLTF material properties of a material on the current shader
New op: Ops.Gl.ShaderEffects.ShadowPass - Route trigger differently when in shadowpass or not
New op: Ops.Html.CSS.CSSPropertyVariable - Use a CSS variable in a css property of an element
New op: Ops.Html.CSS.ElementSize - Set position left/right/top/bottom of a HTML element
New op: Ops.Html.Elements.ElementQuery - Selects all matching elements in the DOM
New op: Ops.Json.ObjectDeepSearch - Search for any value anywhere in an object
New op: Ops.TimeLine.EaseAnimCurve - Ease a value between 0 and 1 over a timeline curve
New op: Ops.Ui.VizAudioSpectrum - Vizualize an audionode object spectrum
New op: Ops.Ui.VizAudioWaveform - Vizualize an audionode object as a waveform
New op: Ops.Vars.VariablesFromObject - Set existing variables to values in an object
New op: Ops.Website.LocalStorageKeys - Retrieve all keys (and values) stores in localstorage
Feature: Ops.Extension.Standalone.Files.WriteTextFile - Auto write file when string changes
Feature: Ops.Gl.GLTF.GltfScene_v5 - Basic automatic loading and usage of embedded textures
Feature: Ops.Gl.ImageCompose.ColorChannel_v3 - New version v3: added option to easily switch colorchannels and/or set specific channels to zero or one
Feature: Ops.Gl.Pbr.PbrMaterial - Added option to multiply albedo texture with diffuse color
Feature: Ops.Gl.Shader.BasicMaterial_v3 - Rendering of textures from gltf files
Feature: Ops.TimeLine.TimeLinePlay - Added trigger to toggle between play/pause
Feature: Ops.Ui.CablesEditorEvents - Added events to trigger, when op created/deleted, port linked etc
Feature: Ops.Ui.VizTexture - Option to debug by only visualizing one RGB channel
Feature: Ops.Ui.VizTexture - Option to visualize RGBE encoded images
Improvement: Ops.Extension.OpenType.OpentypeToSvgPath - Added support for line breaks, added line height parameter
Improvement: Ops.Extension.Standalone.Files.PathToFileUrl - Treat relative paths as relative to patch dir
Improvement: Ops.Extension.Standalone.Files.SelectFile - Treat relative paths as relative to patch dir
Improvement: Ops.Extension.Standalone.Files.SystemDirs - Add patchdir output port
Improvement: Ops.Extension.Standalone.Files.WriteTextFile - Resolve relative paths to patch directory, add output port
Improvement: Ops.Extension.Standalone.Net.ReadTextFile - Resolve relative paths to patch directory, add output port
Improvement: Ops.Gl.GLTF.GltfScene_v4 - When hiding nodes, all nodes with that name will be hidden, not only the first
Improvement: Ops.Gl.GLTF.GltfScene_v5 - New Version 5: "Use Material Properties" is enables by default
Improvement: Ops.Gl.GLTF.GltfScene_v5 - When hiding nodes, all nodes with that name will be hidden, not only the first
Improvement: Ops.Gl.Pbr.PbrMaterial - Better loading of settings from gltf files / textures
Improvement: Ops.Graphics.Geometry.GeometryExtrude_v3 - Even better normals! Now it can have smooth normals
Improvement: Ops.Json.ObjectStringify_v2 - Show a warning if the connected object port does not contain an object
Improvement: Ops.Ui.VizArrayTable_v2 - Increase zoom distance when pausing drawing on patchfield
Improvement: Ops.Ui.VizObject - Increase zoom distance when pausing drawing on patchfield
Improvement: Ops.Ui.VizObject - Show a warning if the connected port is not a valid object
Improvement: Ops.Ui.VizObject - Use custom stringify (was called experimental before) for simple objects, JSON.stringify for class instances, because it isfaster
Bugfix: Ops.Gl.ArrayToTexture_v2 - Fixed bug where animated textures would be deleted before being used
Bugfix: Ops.Gl.CubeMap.Skybox - Fix problems not rendering anything when used below renderToTextures op
Bugfix: Ops.TimeLine.TimeLineFrame_v2 - New Version v2: Using timeline config FPS for frame calculation from timeline time
Bugfix: Ops.Ui.VizBool - Fix bug when op is resized to very small
Deprecation: Ops.Extension.Deprecated.Array.ShuffleArray3 - Op Array.ShuffleArray3 was deprecated
Deprecation: Ops.Extension.Deprecated.Array.ShuffleArray3 - Op Extension.Deprecated.ShuffleArray3 was deprecated
Deprecation: Ops.Extension.Deprecated.Array.ShuffleArray3_v2 - Op Array.ShuffleArray3_v2 was deprecated
Deprecation: Ops.Extension.Deprecated.Array.ShuffleArray3_v2 - Op Extension.Deprecated.ShuffleArray3_v2 was deprecated
Deprecation: Ops.Extension.Deprecated.Array.ShuffleArray3_v3 - ShuffleArray3_v3 was deprecated please use shuffle array with the stride parameter!
Deprecation: Ops.Extension.Deprecated.ExtContactPairsNope - Op Extension.Rapier3d.ContactPairsNope was deprecated
Deprecation: Ops.Extension.Deprecated.StackGetArray - Op Data.StackValues.StackGetArray was deprecated
Deprecation: Ops.Extension.Deprecated.StackGetNumber - Op Data.StackValues.StackGetNumber was deprecated
Deprecation: Ops.Extension.Deprecated.StackGetTexture - Op Data.StackValues.StackGetTexture was deprecated
Deprecation: Ops.Extension.Deprecated.StackPushArray - Op Data.StackValues.StackPushArray was deprecated
Deprecation: Ops.Extension.Deprecated.StackPushNumber - Op Data.StackValues.StackPushNumber was deprecated
Deprecation: Ops.Extension.Deprecated.StackPushTexture - Op Data.StackValues.StackPushTexture was deprecated
Editor
- Canvas floating mode, param panel full height
- Changed the coom for centering ops (c) and clicking findresult to be more zoomed out
- Editor does not force timeline to play after loading the ui
- Load op-dependency only once per patch, preventing lot's of requests for parent-op
- Meshes show an X as extended title when drawing is deactivated
- Optimized performance for patches with many materials/shadermods and effects
- Rework import and backup-restore workflow, option to not restore/import op-code
- Store canvas mode in user preferences
Website
- Add bulk delete to op-changelog editing mode
- Add icon to unlisted teams
- Fix permission-check for teammembers when restoring backups
- Reorganize /myteams, add tabs
- Show team visibility as text on team page
- Suggest deprecated ops on "op not found" page for ops of the same name
Standalone
- Add support for desktoptexture ops - Ops.Extension.Standalone.DesktopTexture
- Build Windows executable in seperate files (not one "portable" exe)
- Do not show intro-tour / hints when started as fullscreen or maximized
- Fix copypaste of local ops into subpatch ops
- Fix export not working in some cases
- Prevent op-errors when entering directories or files with no permission in file-ports
2026-02-03 10:46 - Feb 3, 2026 at 10:46
Ops
- New op: Ops.Array.ArrayMergeMultiPort - Merge multiple arrays - in consecutive order
- New op: Ops.Array.Math.EulerArrayToQuaternions - convert an array3 of euler rotations to a array4 of quaternions
- New op: Ops.Boolean.BoolToColor - Convert boolean to RGB color
- New op: Ops.Debug.StepDebugger.StepDebugNumber - Debug what happens when a change of number parameter happens
- New op: Ops.Debug.StepDebugger.StepDebugTrigger - Debug what happens when a trigger happens
- New op: Ops.Devices.WebXr.Vr.VrHand - Get webXr detected hand data
- New op: Ops.Extension.Mediapipe.MpPoseTracking_v2 - Get pose-data (points/landmarks/lines) from webcam using mediapipe library
- New op: Ops.Extension.Rapier3d.World_v2 - New physics engine in cables: rapier3d
- New op: Ops.Extension.Rapier3d.Body - Physics Body
- New op: Ops.Extension.Rapier3d.BodyApplyForce - Applies a force to bodies
- New op: Ops.Extension.Rapier3d.BodyApplyImpulse - Applies an impulse to bodies
- New op: Ops.Extension.Rapier3d.BodyAttractor - Applies an attraction force to a physics body
- New op: Ops.Extension.Rapier3d.CharacterController - Simulate a character in a physics world
- New op: Ops.Extension.Rapier3d.CheckCollision - Check an array colliders of bodies collinging against another array of colliders
- New op: Ops.Extension.Rapier3d.Emitter - Spawn new physics bodies by triggering
- New op: Ops.Extension.Rapier3d.HeightField - Create a heightfield physics body
- New op: Ops.Extension.Rapier3d.Joint - Physics Joints: Revolute/Hinge, Prismapic,Spherical/Pendulum
- New op: Ops.Extension.Rapier3d.RayCast - Detect intersections of a ray against physic objects
- New op: Ops.Extension.Subtitles.ParseSubtitles - Op created
- New op: Ops.Extension.Subtitles.SubtitleAnim - Op created
- New op: Ops.Graphics.Geometry.FlipAxis - Flip/exchange two axis in a whole geometry, e.g. XYZ to XZY
- New op: Ops.Html.CSS.ElementPosition - Set position left/right/top/bottom of a HTML element
- New op: Ops.Html.Elements.StringToElement - convert html/xml string input to an element
- New op: Ops.Html.Elements.ElementQuery - Selects all matching elements in the DOM
- New op: Ops.Html.GridLayout.Grid - Arrange HTML elmengs in grids, create grids by combining rows and columns
- Feature: Ops.Array.StringToArray_v3 - Option to auto detect types of values
- Feature: Ops.Array.StringToArray_v3 - Option to handle Nan (Not a number) values, this will set a replacement value
- Feature: Ops.Array.StringToArray_v3 - Treat line breaks as separator additionally to the selected separator
- Feature: Ops.Color.Gradient - output colors as array
- Feature: Ops.Data.SpreadSheetArray - Added output format vertical arrays
- Feature: Ops.Devices.WebXr.Vr.Vr - Now automatically uses local-floor reference space if available, 0,0,0 is then always attached to your real world floor
- Feature: Ops.Devices.WebXr.Vr.Vr - Toggle between immersion AR and VR, choose AR to have a pass through mode on supporting headsets, like quest 3
- Feature: Ops.Gl.GLTF.GltfGeometry - Show warning when no nodes found
- Feature: Ops.Gl.GLTF.GltfNodeTransforms_v3 - Added an option to ignore all nodes that have a scale of 0,0,0
- Feature: Ops.Gl.GLTF.GltfScene_v4 - Support for files using the KHR_mesh_quantization extension
- Feature: Ops.Gl.Performance - Cleanup distplay / output count per second data
- Feature: Ops.Gl.Textures.TextureToCoordinateGrid - added pixelformat selection
- Feature: Ops.Gl.Textures.TextureToCoordinateGrid_v2 - added pixelformat selection
- Feature: Ops.Gl.Textures.TextureToCoordinateGrid_v2 - Added scale parameter to control the width/height of the resulting grid
- Feature: Ops.Html.Elements.AudioMediaElement - Added simple play trigger input button
- Feature: Ops.Math.Incrementor - Added step size input
- Bugfix: Ops.Array.PointArray.CircularPoints_v2 - Fixed rotations in other axis option than XY
- Bugfix: Ops.Color.Gradient - Fix output position of color
- Bugfix: Ops.Devices.Keyboard.CursorKeys - Fix "hanging key" problem, when resizing/changing focus of the canvas rapidly
- Bugfix: Ops.Gl.ArrayToTexture_v2 - Fixed bug where animated textures would be deleted before being used
- Bugfix: Ops.Gl.Meshes.Rectangle9Slice - fixed issues with scale influencing the texturecoords, resulting in stretched visuals at the bottom border
- Bugfix: Ops.Gl.ShaderEffects.DiscardMaterialAlpha - Fixed bug where it did not work in renderToTexture branches
- Bugfix: Ops.Graphics.Intersection.IntersectTestRaycast - Active toggle now works as expected
- Bugfix: Ops.Html.CSS.ElementCssColor - only remove styles from element with style property
- Improvement: Ops.Array.ArrayOfObjectsFilterByKeyValue_v3 - Added readable extended title
- Improvement: Ops.Array.StringToArray_v3 - Switch for separator values
- Improvement: Ops.Data.SpreadSheetArray - better input of numbers and text in general
- Improvement: Ops.Devices.WebXr.Vr.Vr - Better positioning of VR camera, much more exact overlaying when rendering nearby objects
- Improvement: Ops.Extension.Rapier3d.World_v2 - Updated to new version of rapier, v0.19.3
- Improvement: Ops.Gl.GLTF.GltfGeometry - Added match option to select geometry which name starts with the entered string
- Improvement: Ops.Gl.GLTF.GltfNodeTransforms_v3 - Show warning when no nodes found
- Improvement: Ops.Gl.GLTF.GltfScene_v4 - List max of 100 childs for performance reasons, showing "more" button when more
- Improvement: Ops.Gl.GLTF.GltfScene_v4 - Show warning in editor if the morphtarget texture is bigger then browsers max texture size
- Improvement: Ops.Gl.GLTF.GltfScene_v4 - Unnamed meshes now will always have the same name
- Improvement: Ops.Gl.GLTF.GltfScene_v4 - When hiding nodes, all nodes with that name will be hidden, not only the first
- Improvement: Ops.Gl.Meshes.SimpleWireframe - added output of the resulting line geometry
- Improvement: Ops.Gl.Pbr.PbrMaterial - set shader output port object type to "shader"
- Improvement: Ops.Graphics.Geometry.GeometryExtrude_v2 - Better normals
- Improvement: Ops.Html.AlignElement - Update alignment after canvas was resized
- Improvement: Ops.Html.ElementGradientBg - Added color space selection
- Improvement: Ops.WebAudio.AudioBuffer_v3 - Show short version of filename in extended op title
- Rename: Ops.Extension.Mediapipe.MpPoseTracking_v2 - Patch.P8q3G87.MpPoseTracking renamed to Ops.Extension.Mediapipe.MpPoseTracking_v2
- Rename: Ops.Extension.Rapier3d.Dev.CheckCollisionPairsEvents - Extension.Rapier3d.CheckCollisionPairsEvents renamed to Ops.Extension.Rapier3d.Dev.CheckCollisionPairsEvents
- Deprecation: Ops.Extension.Deprecated.Array.ShuffleArray3_v3 - ShuffleArray3_v3 was deprecated please use shuffle array with the stride parameter!
- Deprecation: Ops.Extension.Deprecated.Html.QuerySelector_v3 - Op Html.QuerySelector_v3 was deprecated (use Ops.Html.Elements.ElementQuery)
- Deprecation: Ops.Extension.Deprecated.Html.QuerySelectorAll_v2 - Op Html.QuerySelectorAll_v2 was deprecated (use Ops.Html.Elements.ElementQuery)
Editor
- Remove wrong warning about "new namespace" when cloning op into extension namespace that exists
- Fix not showing of log console on error
- Fix restoring of wrong backup version
- Show info when creating new op-namespace during create/clone for all ops except patchops
- Add converter to call "gltfpack" on glb models
- Mark patches as remix of another patch (original owner will be notified, shown on patch-page)
- Added multiple studio lighting HDR environment maps for PBR Lighting
- Fix search cursor keys up/down not focussing search results anymore
- Fix and improve search focus/tab problems
- Fix problem with wrong warning of duplicate port names on multiport ops
- Op resize edge: better positioning when resizing
- Cable overhang make them more visible, when the cables end and start is on the same x positon but the end is above the end
- Fix but where op warnings where incorrect after loading a patch in some cases
Core
- Fix order of loading corelibs and inheritance
- Reduce size of copytexture corelib
Website
- Fix option to export minified javascript when exporting "multiple files"
- Improve visibility of register button on signup page with active cookie-banner
- Rework and unify ui for backup-restore, patch-import and patch-export
Standalone
- Show op screenshots in opselect if available
- Fix not showing of log console on error
- Fix error when closing native-filemanage with no file picked





























