Docs Guides
Architecture
How packages, registries, installation and shared settings fit together.
For implementation details, see How FNSTools is built.
One tool, one package
Every tool in the catalog is a single .tox with its own version, its own docs page and its own line in the picker. You install the ones you want and leave the rest alone. Individual tools also require the shared core described below.
The shared core is installed with your first tool selection. It consists mainly of registries.
Registries are the backbone
A registry owns one place in TouchDesigner's interface and decides what appears there. There are nine.
| Registry | The surface it owns |
|---|---|
| ToolbarRegistry | TouchDesigner's bookmark bar |
| NavbarRegistry | every pane bar |
| MainMenuRegistry | the main menu strip |
| OpMenuRegistry | the OP Create dialog |
| PaneTypeRegistry | the pane-type menu |
| PaletteRegistry | tabs in the Palette Browser |
| TimelineRegistry | panels in the timeline |
| HubRegistry | the tabs of the Hub window |
| ConfigRegistry | the settings file |
A tool that wants a toolbar button carries a small host, and the host publishes one entry into the toolbar registry. The registry decides the order, the visibility and the placement from there, which is why you can reorder or hide anything from Hub and have it stay that way.
Registries list the installed tools. You can also clone a registry and add a host to your own component to register it, for example as a toolbar entry.
No tool depends on another tool
What a package requires is worked out from the registries it hosts. A tool with a toolbar button requires the toolbar registry. These dependencies are derived from its hosts and point to core packages.
Tools reach for each other only through a guarded lookup. ExprHotStrings uses CustomParTools when it is installed and carries on quietly when it is absent, with the extra behaviour missing and no error raised.
Installing and updating
One bucket holds every release, and each release has a manifest saying what exists, where the bytes are and what version every package is. The picker reads that manifest, downloads only what you ticked, and checks each file against it before writing anything.
Every package carries its version on itself, so the updater compares the version of the component sitting in your project against the published one. The checksum's only job is proving that a download arrived intact. You update the tools you use, and an update never installs something you did not pick.
Settings follow you
A tool's settings live in your project file. By default they also roam through one file in your user palette, so the way you set a tool up is the way you find it in your next project and after the next update. A project can opt out and keep everything to itself.
It reaches past the toolkit
Tools announce the actions they can perform, so anything able to run them can also list them: the command palette inside TouchDesigner, and TDX Launcher Ultra, which has this installer place every package for it.
Tools marked Patreon need a Patreon membership or a Gumroad licence key to download. Their catalogue entries and documentation are public. How unlocking works covers the details.
Next
- Getting started walks the install itself.
- How FNSTools is built covers implementation details and design decisions.