1. 0.8.0Houdini 21+

    Radial still runs without TumbleTrove. The Menu Builder button on the settings page needs TumbleTrove 0.44 or later; on an older one the menu entry stands in.

    Added

    • A settings button: a small cog just outside the ring, top right, on every menu a key opens. Click it to close the menu and open Radial's settings (without TumbleTrove, the Menu Builder's global behaviour panel). The new Settings button setting turns it off.

    • Themes, in a new Appearance section: TumbleTrove (the look so far, still the default), Match Houdini (Houdini's own UI colours, picked up as each menu opens) or Custom (an accent, fill and text colour of your choice; a light fill with dark text gives a light theme). The parameter radial follows it too.

    Changed

    • Releasing the key over a click-only button (an icon-grid cell, a drawer row, a menubar cell or the settings button) closes the menu without firing anything. It used to fire the ring sector behind the button. A flick that ends over one still fires the sector it passed through.

    Fixed

    • On macOS and Linux, a short click on the radial, a trackpad tap in particular, could go unregistered, so letting go of the key fired the sector behind the button instead. The parameter radial had the same problem.

  2. 0.7.0Houdini 21+

    Radial still runs without TumbleTrove. The Menu Builder button on the settings page needs TumbleTrove 0.44 or later; on an older one the menu entry stands in.

    Changed

    • The LOP viewer's ring holds three toggles instead of four selection kinds. Karma / Vulkan switches the viewport renderer, returning to the Karma (CPU or XPU) you last used. Camera / Persp leaves the camera for the free view and back to the same camera. Leaf / Component switches the selection kind. Component, Xform, Leaf Prim and Pt Instance stay in the builder's catalog for menus of your own.

    • Camera in the LOP viewer's centre submenu returns to the camera you last left, instead of always the first camera on the stage.

    Fixed

    • Menubar dropdowns (Display, View, Background, Camera, Render) no longer flash and close the moment they open.

    • Clicking an item that closes the radial, such as the camera item in the LOP viewer, no longer shows an error dialog.

    • In the builder, a new or duplicated menu no longer saves over one whose name differs only by case, and duplicating a menu twice no longer overwrites the first copy.

  3. 0.6.0Houdini 21+

    Radial still runs without TumbleTrove. The Menu Builder button on the settings page needs TumbleTrove 0.44 or later; on an older one the menu entry stands in.

    Added

    • A department menu can open over one pane only. Set "Opens over" in its menu settings in the builder (the spec's "pane", e.g. network.sop): it opens there on the Department menu key and still moves when the key setting changes. Over other panes the stand-in says where the menu is ("Rig menu: over SOP Network"). A Radial without the field opens such a menu over any pane.

    • The Radial settings page starts with Your menus > Radial Menu Builder > Open, so the builder is found where artists look for it.

  4. 0.5.0Houdini 21+

    Radial still runs without TumbleTrove. Department menus need TumbleTrove 0.42 or later; without a department, nothing changes from 0.4.3.

    Added

    • Department menus: Shift+Space (the new Department menu key setting) opens the menu for the workfile's department, over any pane. Where none applies, a stand-in offers the department picker or the builder.

    • "when" on any menu ({"department": [...], "entity": [...]}) limits where it applies. Menus are picked again whenever the department changes.

    • Five layers of menus: you, the project, the organisation, packages and stock. TumblePipe's department radials are stock, so a package's menu (TumbleRig's rig radial) replaces them.

    • Builder: Save to You / Project / Organisation, a Show in department picker per menu, In its departments / Always / Off for package menus, a department pill, and state chips for menus not bound here.

    Changed

    • Packages declare their radial_menus/ folder to TumbleTrove with package.register(..., contributions={"radial_menus": folder}) (TumbleTrove 0.43); add_custom_menu_dir is still the way in without it.

    • Changing "Open menus with" rebinds custom menus over the built-ins it rebinds, instead of leaving them displaced.

  5. 0.4.3Houdini 21+

    Still requires TumbleTrove >= 0.28.0 for the hotkey recorder and chord validation on the settings page, >= 0.27.0 for the Documentation entry. Radial runs standalone on its defaults without it.

    Fixed

    • hython (farm jobs, scripts) no longer prints two hdefereval ImportError tracebacks at startup. Radial's menus, hotkeys and TumbleTrove entry only install in a graphical Houdini, and now skip quietly without one.

    • The custom-menu docs' example pythonrc.py no longer breaks hython: it defers its registration only when Houdini has a UI.

  6. 0.4.2Houdini 21+

    Still requires TumbleTrove >= 0.28.0 for the hotkey recorder and chord validation on the settings page, >= 0.27.0 for the Documentation entry. Radial runs standalone on its defaults without it.

    Fixed

    • On Linux, Houdini no longer crashes with a segmentation fault right after the splash screen. The key poll called libX11 through ctypes without declaring its types, so the display pointer was cut to 32 bits and the first poll dereferenced what was left. Reported on Houdini 22.0.454.

    • On Linux, the trigger key now reads as held. The keymap was read as bytes and the bit test raised, which the poll swallowed, so Space never opened a menu even where the pointer happened to survive.

    • A new property suite pins both against a stand-in libX11, and the troubleshooting page covers the crash.

  7. 0.4.1Houdini 21+

    Still requires TumbleTrove >= 0.28.0 for the hotkey recorder and chord validation on the settings page, >= 0.27.0 for the Documentation entry. Radial runs standalone on its defaults without it.

    Fixed

    • A chord with modifiers no longer swallows its bare key. Every keyboard-triggered menu arms a Windows key hook for the whole session that drops the chord's key-down before Houdini sees it, and the hook compared the key alone, so a menu on Alt+R took every R. Once TumblePipe 1.49.0 bound its Recipes, Favourites and Pipeline menus on Alt+R, Alt+F and Alt+T, typing r, f or t in a text field the caret check misses stopped working until the field was clicked out of and back into. The hook now requires every modifier of the chord, so a plain letter reaches whatever has focus.

    • The hook's decision is one pure function, pinned by a new property suite. The docs that described the hook as key-only, or as active only while a menu shows, now describe the chord-wide, session-long behaviour.

  8. 0.4.0Houdini 21+

    Still requires TumbleTrove >= 0.28.0 for the hotkey recorder and chord validation on the settings page, >= 0.27.0 for the Documentation entry. Radial runs standalone on its defaults without it.

    Added

    • One bindings table answers what each chord opens over each pane. It replaces the global registry, the two controller lists on hou.session, the install record, the trigger's remembered key and the context closure in every controller. radial.bind/unbind/unbind_source replace register/unregister/install.

    • One context table. CONTEXTS in context.py is the only description of a context: pane group, labels, the switch governing the menu bound there, its node categories and its icons. The detector, the trigger, and the builder's tabs, filters and labels all read it. CHOP and TOP are contexts now and are offered as tabs.

    • report.py, one reporting boundary for callbacks Radial does not own. A failing action reaches the log with its traceback and Houdini's status bar; a failing provider returns its fallback and says so once per site.

    • Thirty-nine operations that were implemented but never wired are registered as catalog actions, so a menu of your own can use them: aligning and laying out nodes, homing the view, the digital-asset commands, jumping to and creating each top-level network, and the viewer's toolbar, node, view and select states. No shipped menu changes shape.

    • The four shipped menus convert to specs exactly, so a copy opens in the builder whole. Their menu-level callbacks have catalog entries, and radial.menu() looks a callback up rather than making the caller repeat itself.

    • The builder lists every loaded menu with a state chip saying whether it opens and why, and tracks what each install actually put live.

    Changed

    • A menu saved at a sub-context such as viewer.sop or network.obj now opens on the built-in key. The fold onto four contexts is gone.

    • Switching a pane off unbinds the shipped menu for that pane instead of making the chord decline over the whole pane, which is what the setting says it does. A custom menu bound there keeps opening.

    • The builder's menu-folder scanning, state and file operations moved to store.py, with no Qt and no hou, so they can be checked outside Houdini. builder.py loses 400 lines.

    • Importing every bundled menu module goes from 218 ms to 29 ms: register_action reads the calling module through sys._getframe instead of walking the stack 194 times while the UI thread waits.

    • Of 167 inner try/except handlers in the menu modules, 18 remain. The rest either logged what the boundary already logs or returned the value the boundary already returns. The seven that differ say why in place.

    • The developer guide, the data-model page, the schema doc and troubleshooting follow the boundary, the bindings and the state chips.

    Fixed

    • Chord validation on the settings page was importing a name that a rename had removed, and a bare except turned the ImportError into "nothing to validate against". Every chord had passed unchecked.

    • An item with close_on_select reached the builder unbound, because the catalog key was set as an instance attribute and dataclasses.replace does not copy those. Every shipped viewer menu is full of them.

    • Eight icons Radial names in its own source were not bundled and were fetched from unpkg.com, so a fresh install with no route out drew them blank. They ship now, with a check that they must.

    • The SOP viewer's Visualize cell was wired to a lambda that does nothing while the real implementation sat two files away.

    • A context with a pane switch and no menu behind it raised a KeyError on the startup callback, taking the whole radial down with it.

    • A custom menu displaced by another reported "not applied", telling the user to press Apply when applying is not what it needs.

    • Reverting a menu twice in the builder emptied the canvas.

    • The catalog's reverse lookup is keyed on id(callback) and kept entries for callbacks it had replaced, so a reissued id could name an unrelated action. The reporting boundary had the same trap and now keys on module and qualname.

    • validate() is canonical: every slot carries every key, so a spec and the same spec read back are dict-equal and an installed menu stops reading as edited-since-applied.

    Removed

    • The pre-TumbleTrove settings migration. That release has shipped and the code had nothing left to find.

    • Twelve duplicate operations, the item lists and section headers for rings that no longer exist, and two menus registered where nothing could reach them. Their modules stay as action catalogs.

  9. 0.3.0Houdini 21+

    Requires TumbleTrove >= 0.28.0 for the hotkey recorder and chord validation on the settings page, and >= 0.27.0 for the Documentation entry. On 0.26–0.27.1 the new settings still declare, as plain text fields; Radial still runs standalone on its defaults.

    Added

    • Settings: the key that opens the built-in menus (empty = unbound), one switch per pane, scroll-wheel zoom and middle-click behaviour, the custom-menus folder, and the parameter radial's enable and key. Changes apply live; custom menus saved on a key the built-ins move away from get a binding of their own.

    • The manual ships in the package as Markdown and renders offline under TumbleTrove > Documentation > Radial: the gestures, every item of the four built-in menus, the Radial Menu Builder, custom menus, settings, troubleshooting, and a developer guide.

    • A property suite renders the manual and follows every link; another pins the context normaliser and the settings declaration.

    Changed

    • The context normaliser moved from pythonrc into tumbleradial.trigger, which now owns the built-in controller and the parameter radial.

    • Docstrings say what the code does: submenus open on outward movement, not a dwell; the Windows key hook is armed for the whole session.

    Fixed

    • The parameter radial raised on every key release (the tap-threshold accessor was compared uncalled); it taps and latches as intended.

  10. 0.2.0Houdini 21+

    Requires tumbletrove >= 0.26.0 for the TumbleTrove integration. Radial still runs standalone without it — the Space hotkey and the Radial Menu Builder panel do not depend on the container package.

    Breaking

    • Radial no longer ships a settings window. It declares its settings and TumbleTrove renders them, in the one dialog every package's options appear in, reachable from TumbleTrove > Settings.

    • One storage backend, not two. Declared settings live in TumbleTrove's settings.json; the old local JSON file is migrated on first read.

    • package.install() is gone in TumbleTrove 0.26.0; the call is dropped and install_main_menu is renamed register_package, which is what it does. Against 0.26.0 the old call raised at startup and radial registered nothing.

    Other

    • Registration goes through the one package API: identity, menu entry and settings page in a single call.

    • The verify scripts use TumbleTrove's shared harness, which aborts rather than writing outside its sandbox.

  11. 0.1.1Houdini 21+
    • release: v0.1.1

    • docs(install_hpm): drop the stale hpm pin from the header comment

    • fix(release): register the detached archive signature

    • docs: rename Radial Editor → Radial Menu Builder

  12. 0.1.0Houdini 21+
    • docs: fix stale tumbletrove/asset_browser references after extraction

    • fix(imports): rewrite deep relative _common imports missed in extraction

    • Initial import: radial extracted from tumbletrove

Radial
Version 0.8.0

Radial menus for Houdini

Free

Created by TumbleTrove

Users39
Views254
File Size393.1 KB
ReleasedOct 13, 2026
UpdatedAug 27, 2026
Free

Free, open in the desktop app.

Sign in to use it