vvvv gamma 7.1
TBA
vvvv itself - HDE & Runtime
New
- Your apps can now host plugins, see blog post
- Adds new command to reorder grouped pins based on their connected position - forum
Changes
- Only run empty entry point from root documents. This was especially concerning when project uses IStartup with non-lazy service registration. In that case depending on how often that startup was referenced those services started multiple times - for each empty entry point. By running only those from root documents - that are those which have been opened explicitly either via -o, open, drag drop or F1 we should be on the safe side.
- Allows to reference AspNetCore from within patch
- Removes the option to run vvvv from within installer as it doesn't work reliably
- Pack command (Ctrl+G) remaps control points which refer to the same input. For example when we have a pin "Context" appearing multiple times in the patch, and we group downstream connected elements, we will now only see one new "Context" pin and not multiple.
- System rewrites package versions in referenced C# projects to those used by the system. This should help with method not found / type load exceptions (due to the project being built against wrong VL.Core version) or (even worse) wrong VL.Core versions in export.
- Use vvvv.exe folder for package-cache instead of temp folder.
Fixes
- Fixes issue with Midi nodes failing after Windows-Midi update (known issue: Midi Bindings still broken as of this writing)
- Fixes crash when referencing VL.Devices.SpaceMouse
- Fixes encoding of mutability flag in pre-compiled packages - forum
- Fixes type ref parser not accepting hyphens in an identifier - forum
- Double click in type editor selects word - allows for quick selection of type argument
- Fixes
--export-package-sourcesnot working invvvvc- was throwing invalid argument exception - Fixes patches getting corrupt after undoing a pack command (Ctrl + G)
- Fixes generated target code when connecting byte value directly to output of Cache region - forum
- Fixes operations feeling sticky when moving around - forum
- Fixes runtime continuously trying to start entry point even though we know the constructor crashes
- Fixes package compilation falling apart when having a package having reference to obsolete VL.Video.MediaFoundation
- Package compiler will no longer try to compile already failed packages again - forum
- Fixes generated target code for unconnected/faulty foreach loop
- Some optimizations to Solution Explorer - forum
- Fixes
ImportTypenot working for types from referenced assemblies - Fixes complete crash if importing extension method using a type parameter for first input - forum
- Fixes regions not updating their size after renaming a node - forum
- Fixes stack overflow in adaptive node lookup at runtime - forum
- Fixes timings on node no longer shown after moving it around in patch structure
- Fixes issue with pressing Ctrl+X in spreaded IObox - forum
- Fixes issues with Documentation window flickering and failing to save docs - forum and forum
Regressions
- Fixes links between mutable values not drawn in dash style
- Various newly introduced glitches with text fields
- Fixes pin editors in inspector no longer working on Channel inputs (was working in 6.7)
- Fixes string pin editors allowing wordwrap again - forum
Standard Libraries
New
- Adds
PatchPathnode similar to existingApplicationPath- see it's summary for details - Adds optional pin to render windows which allows to define custom interaction area when extending into title bar - forum
- FileDownloader has new input pin "Retry Count" and a 10s timeout when reading fails
Fixes
- Fixes memory leak in
RefCountoperator. Was causing video playback to stutter at some point (depending on how many videos where played at the same time, for a single video it properly took something like 14h). - Fixes
InsertSlicenot handling case index == count correctly. - Fixes issue with ImagePlayers (timebased) jumping back to first frame, when reaching end (and not looping)
- Fixes experimental HTTPPost (Multipart) node
Stride
- Stride 4.2.1.2487, Windows Forms based render window, HDR support, ARM64 support
- Adds experimental ModelReader for to load models directly from disk without going through asset database
- Adds
Reloadpin toTextureReader-- forum - Fixes network paths ("\SHARE\foo\bar") not working for various File* nodes
- Fixes couple of help patches on AMD GPUs
- Render nodes will no longer store full screen bounds, only windowed bounds. This prevents windows from opening in a different state after patch restart.
TextureReader (Async)improvements- Limits the amount of concurrent load tasks to ensure CPU has still breathing room for rendering on main thread
- Allows for cancellation of load operation - helps tremendously when switching input often
- Makes use of async FileStream options -> I/O threads for disk read
- When disposing a load task we will no longer block. In combination with cancellation and load limiting this should not lead to OOM scenarios.
- Adds
View Formatpin toRenderTextureto be able to make use of typeless textures - Adds device reference count to perfmeter as a quick way to debug resource leaks
- Fixes TextureFX nodes not cleaning up their effect instance (thanks to new refcnt)
- Fixes a memory leak in
LightStreak SkiaTextureimprovements- Internally collects and renders all textures in one batch. Leads to far better performance than previous node.
- Changes default of texture format to BGRA_Srgb which finally brings correct rendering results (using Typeless as the resource format).
Redis
- Updates StackExchange.Redis to 2.8.31
- When setting init mode of a binding to Redis, we want the key to get created if it doesn't exist yet. Otherwise take the value from redis.
- Returned
RedisClientobject refers to the node of the same name and is always assigned. Should make working with it much easier - no more null checks and re-passing it around. - Writes key into error message when serialization fails
TPL
- Propagate completion from source to connected target block
- Ensures state gets disposed on provided scheduler (if any)
Skia
- Transport monitor scaling in
CallerInfo- opens door to better support multi monitor DPI awareness - Adds help text to TextureToSkImage with hint about tooltip not updating
- Adds logging about device creation
Video
- Increases sleep time in case no frame was pushed - seems one ms was not enough, the used method returned immediately ending up in a busy loop - forum
- fixes "Playing" output to update correctly - forum
vvvv gamma 7.0
released on 25 08 2025
Installer win-x64 | Offline Installer win-x64
Installer win-arm64 | Offline Installer win-arm64
vvvv itself - HDE & Runtime
New
- Windowing: Multiple windows, custom tab layouts, auto-restore of last session
- The Quad menu now shows a list of recently opened .vl documents
- Patch Editor now comes with snapping. Makes it easier to make patch readable.
- [Public Channels]
- [Presets & Transitions]
- [Bindings]
- Adds a commandline compiler for .vl documents
- vvvv is now available for arm CPUs
- Emoji support in patch comments🍿!
Ctrl+Gis back! Combine withShiftto pack into current canvas and/orAltto pack into operationF2on node to renames its definitionCtrl+Shift+Xon node to cuts its definition- New GoTo menu entry to navigate to a node's definition without opening it
- New way to patch & code regions, see https://github.com/vvvv/VL-Language/issues/70 https://github.com/vvvv/VL-Language/issues/53 and https://github.com/vvvv/The-Gray-Book/pull/59 - former API still funtional; IsSplicer got added to BorderControlPointDescription
- When using process nodes that stem from classes or records: you now can make the State Output visible even when not enabled by the node designer.
Changes
- Dropped support for args.txt
- The popup that shows when trying to edit a string that is too long has more options
- SolutionExplorer and DependencyExplorer now have distinct shortcuts
- The entries in the Quad menu have seen a cleanup
- Removed the Hamburger menu and made About and Settings ordinary HDE windows
- Backup folder is now accessible via Recent menu
- In dependencies menu, help patches are now one level down in an extra help foldout
- Cleanup of tooltip when hovering pins
- improved tooltips for several type: Rectangle, Channel, Stride types and more
- Inspector has special editors for files and directories
- Inspector: now shows State Output pin (wasn't shown as not part of a fragment)
- Inspector can now work with named properties:
Typecan be changed with autocomplete- Default for UIs to offer a reset to default functionality,
- Don't Serialize to make sure to only save relevant info
- Refinements on Min and Max for UIs to restrict value range of sliders even of Vector types
- Added
Description,TagsandCustom metadataattribute sections, some of the attributes are related to Public Channels and Bindings (?)
- Inspector shows IOBox values
- No longer add dependencies on paste inside of packages
- Adds options to ignore compile and runtime errors to exporter
- New option to ignore errors at compile time. Defaults to false (was true when exported via UI). Set to true to allow export of patches containing errors.
- New option to ignore unhandled exeptions at runtime. Defaults to false. Set to true if exceptions should only get logged.
- Makes Platform setting advanced -> it was a bit confusing and is only needed in rare cases.
- Replaces Target OS with Runtime Identifier in exporter. Maps directly to
RuntimeIdentifierof generated C# project. Defaults to current OS and CPU architecture. - Log warning if package doesn't contain native assets for current runtime
- More fine grained control over C# direct import feature (import namespace, type, mix with existing forwarding mechanism ...)
- Adds
PinGroupEditModesfor better control how pin groups can be edited. Allows for example to disable theCtrl++shortcut on a pin group. - Closing the splash screen (via task bar, or Alt+F4) will also quit vvvv
- Loop regions have better memory management when used in mutable patches
- Code generator adds aggressive inlining attribute to small methods
- Adds logs for auto-backup and reload
- Pins created via Ctrl-click will take new name in case existing pin doesn't connect - forum
- Closing last tab of a document which is also no longer referenced by anyone else will close the document as well - forum
- Adds support for C# record structs - they are now flagged as immutable and record serializer picks them up as well
- Compiler warns of Potentially Uninitialized Pads, which can be helpful to track down problems. Often can be ignored though.
- Adds Ctrl-1 as an alternative shortcut in Renderers (Skia and Stride) to navigate into patch.
Fixes
- Finders are now DPI aware
- Patch Editor: Connection handler: panning with Left-button & Space only when setting enabled
- Patch Editor: In- and Outboxes pick a better default size
- Fixes Export button not visible in higher DPI scalings
- Editing any text in the patch canvas is now handled natively by the UI
- Fixes crash in help browser in case package url / license url / repo url couldn't be parsed as an Url - forum
- Trigger a regular build for referenced C# projects to get xml doc file generated
- Pins created by property accessor action (Ctrl+Shift+K) will keep name of pad (white spaces get preserved, same as in Ctrl+K)
- Fixes
ObsoleteAttributenot working on process nodes written in C# - Fixes x64 installer crashing on arm64
- Enum editors respect the
Browseable(false)to hide certain entries in UI - Modifications made to the model at runtime via the public
ISolutionAPI get recorded and applied later on the main thread at a moment when the UI is idle - forum - App Health no longer shows messages which can't be associated with any document. Gets rid of those empty entries, which when clicked upon did either nothing or navigated to unrelated definition canvases.
- No longer import compiler generated
<Clone>$methods - When selecting a different node definition, existing pins which would lead to a different resolve result will get deleted
- Fixes stateful region choice not available on factory generated nodes
- Fixes hang in case path to C# project contains commas - forum
- Removes unconnected patch pins after drag operation - forum
- Use base64 encoding in case strings contain invalid XML chars - 1 2
- App exporter UI now in sync with app.props file. Changing anything in the UI will write the file and changing the file will update the UI.
- Fixes connectable node query when inserting into existing link - forum
- Code documentation related fixes
- Adds support for
<inheritdoc /> - Adds rudimentary support for
langwordandhrefattributes in<see />tag (https://discourse.vvvv.org/t/see-langword-null-in-documentation-comments-is-omitted-in-tooltips/22778) - Fixes missing code documentation for dotnet core classes (regression from 5.0)
- Fixes text indentation in tooltip (we see both
\nand\n\r)
- Adds support for
- Going from named to unnamed pads (and the other way round) keeps the type annotation
- Logs exceptions during patch startup to the system log
- Helpbrowser
- fixes not showing content when trying to access github via a throttled connection, much faster content indexing
- packs marked as favorite won't get removed from the
Allsection - order of the topics is preserved while searching
- Fixes Debug Window > Log that was removing empty lines from messages - forum, and message counter was missing the first repetition - forum.
- Select (ByPath) now works with globally available anonymous channels, which guarantees that everthing feels like one. No hidden syncs needed between several Select (ByPath) nodes as they share the sub-channels.
- mainwindow: improves responsiveness when resizing window
Standard Libraries
New Nodes
- ApplicationVersion
- FPS
- OSC, OSCQuery, MIDI, Redis binding nodes...
- Log (Channel) node: reports value changes and author to the Log
- DeNiro as known from vvvv beta + BezierFilter as known from the new transitions
- Adds a slim CastAs (that will never try to create a nice default value. on fail will give you the .Net default, which often is NULL or 0)
- adds NULL (OrDefault), which doesn't throw exceptions when T is a value type. handy if you want to avoid object creation, you can feed this into TryGetValue and other operations that let you specify a fallback default value
Changes
- Executor has new option: Run as Admin
Format [String]uses pin group and throws error (turns pink) in case the format string is invalid- Path.Exists/FileExists/DirectoryExists no longer return stale result
- Removes all state except for the FileInfo as other logic relies on its existence and didn't want to introduce new bugs.
- Patches should no longer use this node inside a loop / on main loop.
- IVLPropertyInfo.GetValue/WithValue now takes any object - IVLTypeInfo.Properties works correctly for non-VL types - ObjectEditor works on any object, CreateInstance takes arguments
- Example patch showing how to retrieve all classes implementing a certain interface and subsequently instantiate it dynamically
- Adds pin
To DefinitiontoShowPatchOfNode - One Direct3D11 device per app, graphics resources can therefor be shared nicely between Skia and Stride. While it was possible to render Skia inside of Stride, one would hit a road block when that Skia graph was accessing GPU backed resources. For example https://forum.vvvv.org/t/skia-resize-prevents-layer-to-be-rendered-in-stride/20202. In this approach we register Stride as the primary device provider. Skia will test for that, and if present, use the existing device instead of creating its own (which was happing until now).
- Serialization.Raw: Adds support for
ReadOnlyMemory<T>andArraySegment<T> - Try Region has a Warn input. Let''s you easily create runtime warnings. So we have an easy workflow of turning exceptions into warnings
Fixes
- Range and Seed inputs of Random node are now optional
- Deleting a large number of UDPServers no longer takes ages
- Skia and Stride PerfMeters now uses same damping of fps value so the numbers are the same
- Fixes path not serializable for message pack
- Fixes a resource leak in VideoPlayer node
- Fixes memory leak in VideoPlayer when switching videos of different size
- VideoSourceTo* nodes use a dedicated background thread to ensure the amount of render contexts created per thread is kept to a minimum
- Fixes
ApplicationPathwhen running on Linux/OSX withdotnet ... - fixes BezierSegmentLength. thanks TremensS!
- fixed Tangent in ResampleBSpline (Tangent). Thanks Natan
- VL Type Reflection: "Indexer Properties" don't show up as Properties
- Fixes Send (Local) issue: when anonymously sending a NULL this gets ignored
- ObjectEditor (list, monadic) forwards components (e.g. attributes) to on-the-fly channels for inner editors.
- fix for WithValueByPath. Wasn't able to set a property that was NULL before
Skia
- Adds
FromSharedHandlefor Skia which in turn is getting used by texture/mesh viewers - Rendering should react to graphics device lost events (famous red cross on white background)
- Fixes
GetFillPathnode naming - Removes experimental
ParseSvgPathDataandToSvgPathData(FromSVGPathData and ToSVGPathData should be used)
Stride
- Breaking change: Collada files may not load correctly. This issue is tracked here.
- Fixes crash when resizing Stride window and at the same time having a background thread creating device resources (like a camera). It resulted in "Device creation not yet supported for GameWindowRenderer".
- Fixes
GraphicsDatanode not working correctly with mutable collections - forum - Adds missing
InputKey*implementations - Fixes
TryDisposeSequencenot returning true if all elements where disposed. FixesTextureQueuenot removing all slices on clear. - Fixes invalid usage of GPU command list in
VideoSourceToTexture - Fixes vvvv not loading patches with broken/missing shaders
- Adds
TextureToSkImagenode to turn a texture into a Skia image without blocking the GPU / without allocating every frame - Fixes race condition when loading shaders leading to completely broken vvvv. This regression was introduced with 6.5: https://discourse.vvvv.org/t/shader-compiler-throws-error-when-referencing-file-via-include/22652/4
- Adds
Locationaka Gizmo for manipulating entities and controlling values, to be used in Edit Mode (F4). EditMode comes with Undo for those Gizmo changes and nice Size management of Gizmos. Those are always rendered on top and can get resized via Shift-Scroll - Adds
WASD Camera(thanks @motzi)
ImGui
- Adds new
ImGuiInputTextFlags.ItemDeactivationReturnsTruefor Input widgets- When set on input widgets they will bang when modified and deactivated.
- Added same behavior to Drag widgets when tabbing into them. For Slider widgets this was already the default behavior. Basically this fixes an inconsistency in ImGui itself.
- The
ObjectEditorwill use that behavior as default when spawing input widgets.
ObjectEditorcan deal withbyte,sbyte,short,ushort,uint...- Fixes
ObjectEditornot showing label of property of typeOptional<T> - Adds
Input (String Callback)region - Adds dockable windows to Stride backend (thanks @kopffarben)
- fixes ImGui based windows not reacting on first click
- Adds
Custom Glyph Rangepin to theFontConfig, allows using icon-fonts and any glyph ranges. - Adds
ImGuiSliderFlags- forum,IsWindowDocked- forum - Adds
Input (Path), and advancedInput (TimeSpan)andDrag (TimeSpan) - FIxes
SetIndentStylewas not converting to hecto
Redis
- If not configured otherwise the client will try to reconnect indefinitely
- Adds
SyncAsyncand marksScanas obsolete - Fixes system not restoring client side tracking in multi-server setup
- Adds advanced
Get,GetAsync,Set,SetAsyncnodes toRedisClient - Adds new pin
WhentoBindingnode allowing to control the condition under which the value is written to Redis