You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Survey of every tool for actions worth registering as commands. Consumed by the 81-command rollout; kept for the per-tool reasoning, not as a to-do list.
since
9eca7cd 2026-08-21
FNS_CommandRegistry — command candidates survey
Survey of every FunctionStore tool for actions worth registering in the
TDXLU launcher's quick-launch palette (> / ? prefixes) via
FNS_CommandRegistry. Compiled 2026-08-21 from the live network: tool-root
custom pars (pulses / toggles / menus) plus public methods in each tool's
extension DATs.
Contract: C:/VJ/TD/Projects/TDXLPP/docs/fns-command-registry.md
(registry 1.2.0 — decorator + announce). Authoring module FNSCommand is
in every tool's docked ExtUtils since the 2026-08-21 clone rollout, so any
tool below can adopt the two-touch pattern:
How to read the tables — Status is yours: mark yes / no /
later, add notes inline. Source names the existing par or ext method
the command would wrap. Labels are palette-row drafts; ids become muscle
memory (? rec 1), so bikeshed them here, not after shipping.
IMPLEMENTED 2026-08-21 — Tiers 1–5 + Second sweep are LIVE:
81 commands from 42 owners, saved to suspects + .toe. Skipped (need
design): iopPromoter PromoteIop, PaneTypeRegistry RecallPanel,
OpTemplates PlaceTemplate, AutoRes SetRes, MY_HOTKEYS search-palette
mirror.
Built-in TD commands: DONE TDXLPP-side (evening, registry 1.4.0 /
utility 0.16.0) — implemented as TD_UI + TD_Project comps in the
launcher companion, exactly the ownership this doc recommended. They
carry the new builtin=True flag: badged COMMAND, ranked in > after
tool commands, kept out of ?. FNS tools should not normally set
builtin — none of the 81 rows here do, which is correct as-is.
Tier 1 — performance / global actions (run from anywhere, mid-set)
Status
Tool
Command (label draft)
Source
Notes
ResetPLS1
Reset all generators
Reset pulse
The VJ panic button. Highest-value row in the whole survey
HideTimeline
Toggle timeline
Hidetimeline / Enabletimeline
Classic. BorderlessTD root mirrors these toggles — register on HideTimeline, not both
BorderlessWindow
Toggle borderless
Borderless toggle
BorderlessWindow
Toggle fullscreen
Fullscreen toggle
GlobalVolControl
Toggle mute
Mute toggle
GlobalVolControl
Set volume
slider widget value
params: level float 0–1, required
QuickTime
Reset timer
Reset pulse
HydroHomie
Toggle reminder
display via ext (pattern proven 2026-08-21)
HydroHomie
Set reminder interval
Intervalminutes
params: minutes float, default from par
OUTPUT
Toggle NDI output (new)
ndiout1.active
OUTPUT
Toggle Spout/Syphon output (new)
syphonspoutout1.active
Sender name TD_FNS_OUT
OUTPUT
Toggle perform window (new)
button_perform
Confirmed: help DAT says "Perform Window"
Tier 2 — editing actions on current selection
Status
Tool
Command (label draft)
Source
Notes
SwapOps
Swap selected ops
Swap pulse
SetSmoothness
Smoothness → selected
Selected pulse / OnSelected
params: value float? Check what the pulses apply
SetSmoothness
Smoothness → all
All pulse / OnAll
paste_from_clipboard
Paste image
Pasteimage pulse
Palette-perfect trio
paste_from_clipboard
Paste as Script TOP
Pastescriptop pulse
paste_from_clipboard
Paste as annotate
Pasteannotate pulse
ParRandomizer
Randomize rollover par
OnRandomizeRolloverPar
Rollover-dependent — verify it still resolves when palette has focus
ParRandomizer
Randomize all pars of op
OnRandomizeOp(_op=None)
Randomizes the whole op (defaults to current/rollover). Per-page filtering would be a small ext addition — RandomizePar exists as the per-par primitive
ParRandomizer
Reset custom pars to defaults
OnResetAllCustom
ParRandomizer
Save custom defaults
SaveAllCustomDefaults
CustomParTools
Promote pars of selected
Promote pulse / DoPromoteAll
QuickCollapse
Collapse selected
OnCollapse
Currently hotkey-driven; palette row is a natural alias
VSCodeTools
Externalize selected
Externalizeselected pulse
VSCodeTools
Deploy stubs
Deploystubs pulse
OpToClipboard
Copy op to clipboard
OnCopy
Selection/rollover-dependent — same caveat as ParRandomizer
QuickExt
Create extension on selected (new)
ExtQuickExt.CreateExtension
The QuickExt core action — natural ? ext row
ClearPars
Clear custom pars of selected (new)
ClearParsExt.ClearPars
Destructive-ish — explicit help text
QuickParent
Add parent shortcut (new)
QuickParentExt.AddParentshortcut
params: name str? Check whether it derives the name or asks
Each of these exposes a single Active toggle; the command is
Toggle <tool> (? altselect). Cheap via the decorator, but 12 near-identical
rows — curate rather than blanket-enable.
Status
Tool
Notes
AltSelect
AutoRes
Also has SetRes ext method — a Set resolution command with w/h int params could be Tier 1 material
Deliberate frame-time eater for stress testing — help text should say so loudly
MISC/input_mouse
Toggle global mouse input
input_mouse (Global Mouse CHOP)
Feeds the mouse CHOP used for mappings
QuickPane
Split pane
QuickPaneExt.OnOpenDir(dir='left')
params: dir menu left/right/top/bottom → ? split right. (Earlier guess "filesystem dir" was wrong — it splits the current pane)
MY_HOTKEYS
Open current COMP parameters
keyboardin_currparam handler
Hotkey-only today; palette row makes it discoverable. Action body lives in keyboardin callbacks — wrap in a promoted method
MY_HOTKEYS
Open parent COMP parameters
keyboardin_parentparam handler
MY_HOTKEYS
Customize current COMP
keyboardin_currcompedit handler
Component editor on current COMP
MY_HOTKEYS
Customize parent COMP
keyboardin_parentcompedit handler
MY_HOTKEYS
Open search palette
keyboardin_searchpalette handler
Overlaps TDX_SearchPalette — one owner, not both
ResetPLS1
Edit static exceptions
Open2 pulse ("Static Exceptions")
ResetPLS1
Edit custom reset pars
Open3 pulse ("Edit Custom Reset Pars")
Built-in TD commands (new) — from the official Python API
Scoured 2026-08-21 from the offline doc mirror: UI Class,
Project Class,
App Class,
Pane Class,
Undo Class,
TDFunctions.
These aren't tool actions — they're TD itself. Ownership question to
decide first: the natural owner is the launcher's own companion
(TDXLauncherUtility ships an FNS_TDCommands base registering them), NOT a
FunctionStore tool — they should work in projects with no FNS tools
installed. Note the 24-commands-per-tool cap: the full list below exceeds
it, so either curate or split across two owners (td-dialogs +
td-session).
IMPLEMENTED 2026-08-21 (TDXLPP utility 0.15.0): two owners inside
the companion — TD_UI (dialogs & windows + panes, 22 commands)
and TD_Project (project & session + performance + files, 16),
both decorator-based with vendored fns_command, self-tagging +
announcing on init. Every API name verified against the live runtime;
PaneType turned out to have NINE members (adds opbrowser +
parameters to the list below). set cook rate and toggle power
ship hidden=True; undo/redo skipped per the note; "load recent"
became an int index param (1 = most recent) since spec menus are
registration-time snapshots and recent files churn. Window openers
defer a frame so the bus reply escapes; load/quit defer 30. Status
yes below = shipped in TDXLPP/utility/TDXLauncherUtility/ TD_UI/TDUIExt.py + TD_Project/TDProjectExt.py.
Dialogs & windows (ui.open* — one-liners, zero risk)
ui.messageBox / chooseFile / chooseFolder — building blocks for
command params, not commands themselves.
Deliberately excluded
Registry plumbing — Register, Createcallbacks, Presaveheal,
Promotepars on every FNS_*Registry host: infrastructure, not user
actions.
FNS_About boilerplate — Deploy / Openhelp / Openauthor exist on
~40 About boxes. Registering them all floods the palette. Alternative:
ONE Open tool help command with a tool menu param (menu cap is 16 —
would need a curated list or str free-typing).
midiMapper / oscMapper roots — cook-disabled COMPs
(allowCooking=False) cannot compile extensions, so they cannot own
commands (RegistryScheme hazard list). Their actions surface via
MIDIResetPLS, or need an always-cooking wrapper.
tools_ui internals — panel chrome, no standalone actions. (OUTPUT
turned out to carry real candidates — NDI/Spout toggles, promoted to
Tier 1 above.)
MISC/button_hog / input_mouse — moved to the Second sweep section
above at user request.
FNS_PreviewPanel (was PreviewPanel25) ext internals — all drop-handler plumbing
(onOpDrop, set*State); the only palette action is the Winopen row
already in Tier 3.
Implementation notes (read before building)
Registry version gate(updated 2026-08-21 evening). The live
/sys global is now 1.2.0 (shipper Repromoted) — decorator
harvest + params work TODAY. The 1.3.0 contract (hidden on
the wire, launcher-side curation + presets) needs the utility 0.14.0
companion injected; the FNSCommand module side is already 1.3.0
everywhere (master + all 66 clones carry hidden=), so decorated
code written now with hidden=True is forward-compatible — the
field simply starts riding once the newer registry lands.
hidden=True defaults (registry ≥ 1.3.0) — "advanced" rows the
palette hides until the user opts in (Settings → Quick Launch).
Suggested: ClearPars, hog/mouse toggles, ResetPLS1's two config
editors, FNS_OpMenu Resync, VSCodeTools Deploy stubs, FNS_Config
Load-all, app.power, set-cook-rate. Curation can override either
way, so this is a default, not a lockout.
Ids are permanent — launcher curation AND user-authored presets
key on tool#id; a renamed id (or COMP) orphans the user's history,
visibility overrides, and presets in one stroke. Treat every id in
this doc as shipped API once implemented.
Handlers must be quick.Run is synchronous on the main thread —
FNS_Updater.Update and anything opening windows should
run(..., delayFrames=1) and return.
Rollover/selection-dependent commands (ParRandomizer,
OpToClipboard, SwapOps) act on ui.panes state — verify the palette
overlay doesn't steal the context they read before promising them.
Owner choice for registry-backed tools: register on the TOOL comp
(FNS_Navbar, FNS_OpMenu…), not the /sys globals — globals get replaced
on version bumps and are stripped of Registration state.
Per-tool cap is 24 commands, 6 params each, menu ≤16 — nothing
above approaches the cap.