Releases: function-store/FunctionStore_tools
v2.10.1 minor update
New Features:
- Added POP support to ColorUI
- ParRandomizer: in 2025+ versions
ui.rolloverParGroup
is available for randomizing ParGroups ParRandomizer: Ctrl+RightClick-> reset all params; Ctrl+Shift+RightClick-> set current params as default
- New special case for CustomParTools Shift/Alt+Drag an
index
parameter -> maximum will be the number of inputs to theswitchOP
(presumably) --- This is a precursor for a general support for this special case.
Fixed:
- Promoting ParGroups now with correct label (via diamond button or otherwise)
- Promoting
ParGroupPulse
(like Reset + ResetPulse together) will promote both parameters correctly - Fixed ColorUI auto-import from json file
v2.10.0 POPs support
POPs support added to the toolkit
You can still update to this version for TD2023.18800+ projects, as all changes have been made to be backwards compatible --- and I intend to keep it that way as long as I can, or at least until official release of TD2025.
🟣 POPs support added to the following components: 🟣
- OpTemplates
- ResetPLS
- OpMenu IOFilter
- AltSelect
- iop lister/select
- GlobalOutSelect
- OpStore
Fixed:
- MidiMapper and OscMapper for POPs version
v2.9.4
This release is largely optimization and fixes, read the previous release notes for latest features!
Important:
- Disabled QuickOp due to weird unsolvable bugs (for now)
Improvements:
- Reduced ambient cook time for the toolkit (should be around 0.04 ms)
- Added undo action for CustomParTools
Fixes:
- Fixed unwanted AltSelect when SwapOp
- Fixed pathbar drag-drop param
- Fixed HydroHomie animation
v2.9.3
💻New minimum TD version requirement updated to 2023.11880
-
NEW: NavBar mods revamped and more powerful!
- Hovering over a parent in the pathbar and holding
Alt
shows available shortcuts (Global, Parent, iop) [buggy on Mac!] - Holding
Ctrl
also shows all parameters and their values (hitCtrl
again to poll values) [works on Mac]- This retains the popup window until clicked
- Clicking on any of the items will copy a reference to that object
- You can then paste this to any expression or script
- Right-Clicking on any of the parameters will open the parameter customization window of that param
‼️ Middle-Clicking on a parent in the pathbar opens parameters!‼️ ‼️ Long-Middle-Clicking on a parent in the pathbar opens parent customization!- If you don't have a 3 button mouse handy,
alt+RightClick
equates to middle clicking
- Hovering over a parent in the pathbar and holding
-
NEW: QuickParCustom: parameter hover actions to promote/customize parameters
alt.x
hovered param: Promote to parent (Bind by default, holdshift
as well to use Expression instead)- If parameter is already promoted this shortcut will open the promoted param's customization
alt.\
hovered param: Customize parameter (if it's a Custom Par it will customize its owner comp, otherwise the promoted owner)ctrl.alt.\
hovered param: Toggle between Bind and Expression modes
️
-
NEW: ExprHotStrings special parent shortcut
- If enabled #! will resolve to the closest parent shortcut
- and #!! will also add a .par after it
- #!.par.Something -> parent.Project.par.Something (for example)
- #!!Something -> parent.Project.par.Something (for example)
- Encouraging even more to use parent shortcuts (which you can easily add by
ctrl+shift-clicking
on the diamond button
- If enabled #! will resolve to the closest parent shortcut
-
FIXED: HotkeyManager unwanted prompts
- Really hope this is fixed, let me know!
-
Added more
Active
toggles to main params of the toolkit -
Other minor fixes and improvements
v2.9.2
📈 This is a small update to the latest major release, see those notes below!
You can also heck the release notes video
-
NEW: 💧 HydroHomie: reminds you to drink water every 45 minutes
- This feature is off by default. It is optional (but recommended) to turn this on under the toolkit
UI
custom par page - Shows a small alert icon in the toolbar to remind you taking a few sips of water. Important!
- Clicking the icon will make it go away until the next reminder
- The interval can be changed from the default 45 minutes right clicking on the icon that opens the settings
- If it was enabled, can also be disabled in the same menu
- Thank me later 💦
- This feature is off by default. It is optional (but recommended) to turn this on under the toolkit
-
NEW: ⌨️HotkeyManager: externalized toolkit hotkeys
- Any hotkey changes made are now externalized into your user palette
FNSTools_ext/tables
folder so they are retained and synced between your projects - Hotkeys can be changed for most tools --- find them inside the toolkit in the marked area!
- This is ground-work for a future actual hotkey manager
- Can always revert or force to default hotkeys
- Any hotkey changes made are now externalized into your user palette
-
Improvement/fix: 🛂 BorderlessTD (see below or wiki for more info)
- Fix Fullscreen On Start on by default since TD doesn't start full screen for whatever reason
- Force Full Screen (always) can be turned off to have TD borderless in a fancy zone for example. It is on by default though.
- Both settable on top level custom par page
UI
- Fixed default startup state and file name display
- When in borderless mode, clicking on the displayed file name saves the file!
-
Improvement/fix: 🔝CustomParCustomize (see below or wiki for more info)
- Order of text fields changed to resemble the Component Editor behavior more, but with some improved UX
- Meaning the par name is first and can be any string that will be stripped from illegal characters
- But the original text is used for the parameter label
- Meaning the par name is first and can be any string that will be stripped from illegal characters
- Fixed custom promoting
Pulse
parameters
- Order of text fields changed to resemble the Component Editor behavior more, but with some improved UX
-
Fix: iopPromote
- iOP Promoting tables/dats fixed from previous release
Previous v2.9.x release notes below:
🚀 The last big feature update before the POPs era begins! Major refactor incoming—stay tuned!
🚀 New Features:
-
NEW: 🖼️ Paste From Clipboard by DotSimulate (Windows only): copy an image to your clipboard and paste it directly in TD with
alt+v
shortcut- You will be met with three options (hotkeys 1,2,3): 🟢 Paste as Movie File In, 🔵 Paste as locked Script TOP, 🟠 Paste as Annotate
- When pasting as Movie File, the image also gets saved in the folder specified by toolkit settings (default:
Assets/clipboard_images
) 📂 - The other two options will produce a locked TOP which increases your
.toe
file size but avoids external dependencies - ❗ WINDOWS ONLY — if anyone knows of a native Mac solution (not using external Python libs), let us know!
-
NEW: 📌 QuickMarks by Alex Guevara: jump between different spots in your project file/network quickly
- Save QuickMark:
Ctrl+Alt+{number}
, on MacCtrl+Option+{number}
- Recall QuickMark:
Ctrl+{number}
- Remove QuickMark:
Ctrl+Alt+Shift+{number}
(on MacOption
instead ofAlt
) - QuickMarks persist with your project file, so they’ll be there next time you open it 📁
- Save QuickMark:
-
NEW: 📦 QuickCollapse: Quickly collapse selected nodes into a BaseCOMP for better organization and reuse.
Ctrl+W
: Collapse selected nodes into aBaseCOMP
(base1
)Ctrl+Shift+W
: Dialog pops up to name theBaseCOMP
and Parent Shortcut before collapsing
-
NEW: ⚙️ CustomParCustomize: A fast way to customize parameter promotion—name it, set min/max values, and tweak clamping.
Label
andParName
for all params, and for slider-type params:min
,max
values,clamping
tickboxes, anddefault
value- Invoked by holding
Ctrl
orAlt
(Opt
) while drag-and-dropping a parameter onto thediamond
button or a parent in the path bar - Quickly jump between text fields by pressing
Tab
andShift+Tab
-
NEW: 🖥️ BorderlessTD: For a cleaner TouchDesigner look. More screen space is better!
F7
: Toggle Windows title bar (Windows only)Alt+F7
orOpt+F7
for Mac: Toggle showing Timeline- Can also be toggled by Right- or Middle-Clicking (respectively) on the
Toggle Network Grid
icon in the toolbar. - Startup default for both can be set in toolkit settings
-
NEW: 🎨 ColorUI: Recolor any TouchDesigner UI element, create presets, import/export, and share!
- Available as a new tab in
MY_UI
(Fx
symbol 🎛️) - Includes recoloring OP Families (looking at you, POPs)
- Or any UI element by choosing from the dropdown
- Saving colors locally saves them to the component and can be auto-loaded on startup
- Export to JSON, and import — imported settings take precedence over local
- Available as a new tab in
-
NEW: 🎹 ResetMIDIPls: Bypass and un-bypass MIDI operators to unstick them (requested by Jacopo)
- Built into
midiMapper
and its button on the toolbar - 🎛️ In
midiMapper
, a new button resets the selectedDevice ID
- 🖱️ Middle-click the
midiMapper
toolbar button to reset all - Can be set to auto-reset all on startup
- Built into
-
Added new feature to drop tables to promote as ParMenus as suggested by Alphamoonbase.Berlin
- optional headers as
name
andlabel
in whichever order - if these headers are missing first column is
name
second column islabel
but that can also be ommitted
- optional headers as
-
New hotkey to reset hovered parameter to default as suggested by gibberish:
Ctrl+Shift+R
Ctrl+Alt+Shift+R
will reset all parameters of the active page of the hovered parameter
🛠️ Improvements/Fixes:
-
Fixed Paste from Clipboard in hotfix
-
Hopefully fixed ColorUI bug?
-
🍥 RayTK Hotkey Conflict Solution: when both toolkits are installed and there is a conflict with ParReset tool's hotkeys you will be greeted with a popup to change either tool's hotkeys
-
📌 Promoting parameters always defaults to the currently active page of the target (parent)
- Also other minor improvements around this feature
- Can now promote full pages of any operator by dragging an operator onto the diamond button
-
Promoting single pars of ParGroups will promote the whole group
-
🔄 Refactored Greg's OpMenu IOFilters to inject themselves instead of cloning the whole UI. Re-enabled by default.
-
🖥️ VSCodeTools: Default interpreter is set to the TD version if a POP build is available for the workspace file (since those come with typing support)
- In VSCode/Cursor, you might still have to change manually to the workspace-defined interpreter, as this cannot be automated
-
📜 QuickExt stubs/typing: Added feature to deploy QuickExt stubs/typing
- Can be deployed to interpreter typings
-
⏳ QuickTime: Middle-clicking the toolbar icon now resets internal timers
-
🔄 GlobalOutSelect: Now requires manual refresh by clicking the button in its UI for optimization reasons
-
🖼️ Perform Window Tool: Alpha is now automatically preserved for NDI/Spout
-
🐞 Various minor improvements and bug fixes
⚠️ Known Issues:
- 📝 Stubbing to a local VSCode workspace folder negates the TD interpreter-provided typings (if available and set)
- 🍎 Parent Shortcut pathbar pop-menus act weird on Mac
- 🛠️ CustomParCustomize pop-menu can act unpredictably on Mac
-
- Promoting single pars of ParGroups will promote the whole group
🔜 This is the last major feature update before starting a major toolkit refactor and integrating POPs features. This will be a big undertaking but will greatly improve the ability to invite others to integrate their tools and for users to customize their experience.
The toolkit will also be renamed. But that's for the future! 🚧
v2.9.1 (hotfix)
🚀 The last big feature update before the POPs era begins! Major refactor incoming—stay tuned!
(this is also a hotfix of v2.9.1 with two new features too)
🚀 New Features:
-
NEW: 🖼️ Paste From Clipboard by DotSimulate (Windows only): copy an image to your clipboard and paste it directly in TD with
alt+v
shortcut- You will be met with three options (hotkeys 1,2,3): 🟢 Paste as Movie File In, 🔵 Paste as locked Script TOP, 🟠 Paste as Annotate
- When pasting as Movie File, the image also gets saved in the folder specified by toolkit settings (default:
Assets/clipboard_images
) 📂 - The other two options will produce a locked TOP which increases your
.toe
file size but avoids external dependencies - ❗ WINDOWS ONLY — if anyone knows of a native Mac solution (not using external Python libs), let us know!
-
NEW: 📌 QuickMarks by Alex Guevara: jump between different spots in your project file/network quickly
- Save QuickMark:
Ctrl+Alt+{number}
, on MacCtrl+Option+{number}
- Recall QuickMark:
Ctrl+{number}
- Remove QuickMark:
Ctrl+Alt+Shift+{number}
(on MacOption
instead ofAlt
) - QuickMarks persist with your project file, so they’ll be there next time you open it 📁
- Save QuickMark:
-
NEW: 📦 QuickCollapse: Quickly collapse selected nodes into a BaseCOMP for better organization and reuse.
Ctrl+W
: Collapse selected nodes into aBaseCOMP
(base1
)Ctrl+Shift+W
: Dialog pops up to name theBaseCOMP
and Parent Shortcut before collapsing
-
NEW: ⚙️ CustomParCustomize: A fast way to customize parameter promotion—name it, set min/max values, and tweak clamping.
Label
andParName
for all params, and for slider-type params:min
,max
values,clamping
tickboxes, anddefault
value- Invoked by holding
Ctrl
orAlt
(Opt
) while drag-and-dropping a parameter onto thediamond
button or a parent in the path bar - Quickly jump between text fields by pressing
Tab
andShift+Tab
-
NEW: 🖥️ BorderlessTD: For a cleaner TouchDesigner look. More screen space is better!
F7
: Toggle Windows title bar (Windows only)Alt+F7
orOpt+F7
for Mac: Toggle showing Timeline- Can also be toggled by Right- or Middle-Clicking (respectively) on the
Toggle Network Grid
icon in the toolbar. - Startup default for both can be set in toolkit settings
-
NEW: 🎨 ColorUI: Recolor any TouchDesigner UI element, create presets, import/export, and share!
- Available as a new tab in
MY_UI
(Fx
symbol 🎛️) - Includes recoloring OP Families (looking at you, POPs)
- Or any UI element by choosing from the dropdown
- Saving colors locally saves them to the component and can be auto-loaded on startup
- Export to JSON, and import — imported settings take precedence over local
- Available as a new tab in
-
NEW: 🎹 ResetMIDIPls: Bypass and un-bypass MIDI operators to unstick them (requested by Jacopo)
- Built into
midiMapper
and its button on the toolbar - 🎛️ In
midiMapper
, a new button resets the selectedDevice ID
- 🖱️ Middle-click the
midiMapper
toolbar button to reset all - Can be set to auto-reset all on startup
- Built into
-
Added new feature to drop tables to promote as ParMenus as suggested by Alphamoonbase.Berlin
- optional headers as
name
andlabel
in whichever order - if these headers are missing first column is
name
second column islabel
but that can also be ommitted
- optional headers as
-
New hotkey to reset hovered parameter to default as suggested by gibberish:
Ctrl+Shift+R
Ctrl+Alt+Shift+R
will reset all parameters of the active page of the hovered parameter
🛠️ Improvements/Fixes:
-
Fixed Paste from Clipboard in hotfix
-
Hopefully fixed ColorUI bug?
-
🍥 RayTK Hotkey Conflict Solution: when both toolkits are installed and there is a conflict with ParReset tool's hotkeys you will be greeted with a popup to change either tool's hotkeys
-
📌 Promoting parameters always defaults to the currently active page of the target (parent)
- Also other minor improvements around this feature
- Can now promote full pages of any operator by dragging an operator onto the diamond button
-
Promoting single pars of ParGroups will promote the whole group
-
🔄 Refactored Greg's OpMenu IOFilters to inject themselves instead of cloning the whole UI. Re-enabled by default.
-
🖥️ VSCodeTools: Default interpreter is set to the TD version if a POP build is available for the workspace file (since those come with typing support)
- In VSCode/Cursor, you might still have to change manually to the workspace-defined interpreter, as this cannot be automated
-
📜 QuickExt stubs/typing: Added feature to deploy QuickExt stubs/typing
- Can be deployed to interpreter typings
-
⏳ QuickTime: Middle-clicking the toolbar icon now resets internal timers
-
🔄 GlobalOutSelect: Now requires manual refresh by clicking the button in its UI for optimization reasons
-
🖼️ Perform Window Tool: Alpha is now automatically preserved for NDI/Spout
-
🐞 Various minor improvements and bug fixes
⚠️ Known Issues:
- 📝 Stubbing to a local VSCode workspace folder negates the TD interpreter-provided typings (if available and set)
- 🍎 Parent Shortcut pathbar pop-menus act weird on Mac
- 🛠️ CustomParCustomize pop-menu can act unpredictably on Mac
-
- Promoting single pars of ParGroups will promote the whole group
🔜 This is the last major feature update before starting a major toolkit refactor and integrating POPs features. This will be a big undertaking but will greatly improve the ability to invite others to integrate their tools and for users to customize their experience.
The toolkit will also be renamed. But that's for the future! 🚧
v2.9.0
🚀 The last big feature update before the POPs era begins! Major refactor incoming—stay tuned!
🚀 New Features:
-
NEW: 🖼️ Paste From Clipboard by DotSimulate (Windows only): copy an image to your clipboard and paste it directly in TD with
alt+v
shortcut- You will be met with three options (hotkeys 1,2,3): 🟢 Paste as Movie File In, 🔵 Paste as locked Script TOP, 🟠 Paste as Annotate
- When pasting as Movie File, the image also gets saved in the folder specified by toolkit settings (default:
Assets/clipboard_images
) 📂 - The other two options will produce a locked TOP which increases your
.toe
file size but avoids external dependencies - ❗ WINDOWS ONLY — if anyone knows of a native Mac solution (not using external Python libs), let us know!
-
NEW: 📌 QuickMarks by Alex Guevara: jump between different spots in your project file/network quickly
- Save QuickMark:
Ctrl+Alt+{number}
, on MacCtrl+Option+{number}
- Recall QuickMark:
Ctrl+{number}
- Remove QuickMark:
Ctrl+Alt+Shift+{number}
(on MacOption
instead ofAlt
) - QuickMarks persist with your project file, so they’ll be there next time you open it 📁
- Save QuickMark:
-
NEW: 📦 QuickCollapse: Quickly collapse selected nodes into a BaseCOMP for better organization and reuse.
Ctrl+W
: Collapse selected nodes into aBaseCOMP
(base1
)Ctrl+Shift+W
: Dialog pops up to name theBaseCOMP
and Parent Shortcut before collapsing
-
NEW: ⚙️ CustomParCustomize: A fast way to customize parameter promotion—name it, set min/max values, and tweak clamping.
Label
andParName
for all params, and for slider-type params:min
,max
values,clamping
tickboxes, anddefault
value- Invoked by holding
Ctrl
orAlt
(Opt
) while drag-and-dropping a parameter onto thediamond
button or a parent in the path bar - Quickly jump between text fields by pressing
Tab
andShift+Tab
-
NEW: 🖥️ BorderlessTD: For a cleaner TouchDesigner look. More screen space is better!
F7
: Toggle Windows title bar (Windows only)Alt+F7
orOpt+F7
for Mac: Toggle showing Timeline- Can also be toggled by Right- or Middle-Clicking (respectively) on the
Toggle Network Grid
icon in the toolbar. - Startup default for both can be set in toolkit settings
-
NEW: 🎨 ColorUI: Recolor any TouchDesigner UI element, create presets, import/export, and share!
- Available as a new tab in
MY_UI
(Fx
symbol 🎛️) - Includes recoloring OP Families (looking at you, POPs)
- Or any UI element by choosing from the dropdown
- Saving colors locally saves them to the component and can be auto-loaded on startup
- Export to JSON, and import — imported settings take precedence over local
- Available as a new tab in
-
NEW: 🎹 ResetMIDIPls: Bypass and un-bypass MIDI operators to unstick them (requested by Jacopo)
- Built into
midiMapper
and its button on the toolbar - 🎛️ In
midiMapper
, a new button resets the selectedDevice ID
- 🖱️ Middle-click the
midiMapper
toolbar button to reset all - Can be set to auto-reset all on startup
- Built into
🛠️ Improvements/Fixes:
-
🍥 RayTK Hotkey Conflict Solution: when both toolkits are installed and there is a conflict with ParReset tool's hotkeys you will be greeted with a popup to change either tool's hotkeys
-
📌 Promoting parameters always defaults to the currently active page of the target (parent)
- Also other minor improvements around this feature
- Can now promote full pages of any operator by dragging an operator onto the diamond button
-
Promoting single pars of ParGroups will promote the whole group
-
🔄 Refactored Greg's OpMenu IOFilters to inject themselves instead of cloning the whole UI. Re-enabled by default.
-
🖥️ VSCodeTools: Default interpreter is set to the TD version if a POP build is available for the workspace file (since those come with typing support)
- In VSCode/Cursor, you might still have to change manually to the workspace-defined interpreter, as this cannot be automated
-
📜 QuickExt stubs/typing: Added feature to deploy QuickExt stubs/typing
- Can be deployed to interpreter typings
-
⏳ QuickTime: Middle-clicking the toolbar icon now resets internal timers
-
🔄 GlobalOutSelect: Now requires manual refresh by clicking the button in its UI for optimization reasons
-
🖼️ Perform Window Tool: Alpha is now automatically preserved for NDI/Spout
-
🐞 Various minor improvements and bug fixes
⚠️ Known Issues:
- 📝 Stubbing to a local VSCode workspace folder negates the TD interpreter-provided typings (if available and set)
- 🍎 Parent Shortcut pathbar pop-menus act weird on Mac
- 🛠️ CustomParCustomize pop-menu can act unpredictably on Mac
-
- Promoting single pars of ParGroups will promote the whole group
🔜 This is the last major feature update before starting a major toolkit refactor and integrating POPs features. This will be a big undertaking but will greatly improve the ability to invite others to integrate their tools and for users to customize their experience.
The toolkit will also be renamed. But that's for the future! 🚧
v2.8.1f
This release is v2.8.0f with some more QuickExt functionality.
v2.8.0f notes below
New features:
- QuickExt has been mega-updated with ExtUtils - containing CustomParHelper and NoNode for the ultimate Python extension experience - Please read the wiki if you use Python Extensions - and if not this is where it gets more user-friendly!
- CustomParTools is now added to each pane in the NavBar
- Ctrl+Shift+Click on CustomParTools to add Parent Shortcut
- Cleaned up window placement dialog (popMenus)
Fixes:
- Fixed ExprHotStrings syncing
- macOS: Attempted to fix NavBar popMenus focus problem. This made it usable again, however inconsistent in the extra features... gotta hit up Derivative for this.
- macOS: fixed VSCodeTools fallback location thanks to @rosofo
- Added a static exception to ResetPLS to ignore sceneChanger by default
v2.8.0f
New features:
- QuickExt has been mega-updated with
ExtUtils
- containing CustomParHelper and NoNode for the ultimate Python extension experience - Please read the wiki if you use Python Extensions - and if not this is where it gets more user-friendly! - CustomParTools is now added to each pane in the NavBar
- Ctrl+Shift+Click on CustomParTools to add Parent Shortcut
- Cleaned up window placement dialog (popMenus)
Fixes:
- Fixed ExprHotStrings syncing
- macOS: Attempted to fix NavBar popMenus focus problem. This made it usable again, however inconsistent in the extra features... gotta hit up Derivative for this.
- macOS: fixed VSCodeTools fallback location thanks to @rosofo
- Added a static exception to ResetPLS to ignore
sceneChanger
by default
v2.7.1 hotfix
Changes:
- Huge update to
QuickExt
with a lot of new features to streamline working with Extensions throughCustomParTools !
- New on-extension-init configurable
self.par{Parname}
,self.eval{Parname}
attributes andon{Parname}
callbacks! - These automatically created attributes are non-promoted (callbacks used to be)
- There's a lot of configurability
- Please check the Wiki for more info!!!
- New on-extension-init configurable
- Updated the default path for
ScriptSyncFile
inVSCodeTools
to create a folder with the parent name if externalizing an Extension script - Externalized all major scripts and extensions --- let the AIs feed off my code online!
- Collected OpMenu mods into one COMP for better overview - (creates dependency from OpTemplates though)
- Updated
UPDATER
to skip major version changes by default, unless forced with thef
at the end of the tag --- this release is a live test of that feature - Toolbar icons can be reordered and disabled
- Currently by pulsing the custom parameter Open Toolbar Definition (which links to the table /FunctionStore_tools/FNS_Toolbar/ToolbarDef where you can define these)
- This config does not yet sync globally between project files!
- Also updated
VSCodeTools.tox
standalone release
Bugfixes:
-
Fixed conflict with T3D OpMenu mods
-
Fixed ResetPLS Timeline Reset for local timelines
-
Fixed a bug in config saving/loading --- need to add Seq support!
-
Hotfix: added callbacks for full Sequence Blocks
-
Hotfix: fixed non-promoted ParGroup callbacks