git.lucas.co / hou-control
SideFX Houdini customization package
git clone https://git.lucas.co/hou-control.git

DateMessageAuthor
2026-09-18developer_attribute_initialize 1.1: Normalize optionLucas Galante
2026-09-18developer_attribute_initialize 1.1: one attribute per nodeLucas Galante
2026-09-18scene viewer: Tab / Shift+Tab warp the pointer to the next / previous viewportLucas Galante
2026-09-18keycam: refit the aspect ratio on LayoutChangedLucas Galante
2026-09-18repo moved to ~/projects/hou-control: package manifest and MCP config followLucas Galante
2026-09-18developer_attribute_initialize: dot and cross operands from a parameterLucas Galante
2026-09-18developer_attribute_initialize: Dot Product and Cross Product sourcesLucas Galante
2026-09-18otls: Develop 1.1 orders its tabs Input, Remesh, DetangleLucas Galante
2026-09-18otls: fold Surface Detangle into Develop 1.1 as a Detangle tabLucas Galante
2026-09-18otls: Develop 1.1 shows Input and Remesh as tabsLucas Galante
2026-09-18otls: fold Surface Remesh into Develop 1.1Lucas Galante
2026-09-18otls: attribute menus on every im_ parameter that reads an attributeLucas Galante
2026-09-18network editor: alt+x excises the current node from its chainLucas Galante
2026-09-18network editor: a stepped selection trades places with the nodes it lands onLucas Galante
2026-09-18check.py: drop the developer_panel check, the HDA is goneLucas Galante
2026-09-18netcursor: the box is a margin around the nodes, not a scale of the cellsLucas Galante
2026-09-18developer_analysis 1.1: integer attributes get integer statisticsLucas Galante
2026-09-17developer_analysis 1.1: one Attribute tab per analysed attributeLucas Galante
2026-09-17keycam: reset the camera aspect ratio on enter and exitLucas Galante
2026-09-17keycam: register under SOP and hide the current node's wireframeLucas Galante
2026-09-17developer_attribute_initialize: renaming an attribute follows it downstreamLucas Galante
2026-09-17developer_visualize: draws a solver's Vis tabs anywhere in the chainLucas Galante
2026-09-17network editor: Tab adds a node at the hc cursor, wired by the cellLucas Galante
2026-09-17hotkeys: alt+tab / alt+shift+tab cycle panesLucas Galante
2026-09-17session: Open Hotkey Editor panel commandLucas Galante
2026-09-17otls: attribute menus on every developer parameter that reads an attributeLucas Galante
2026-09-17otls: Diffuse, Concentrate, Migrate and Bleed handle integer attributesLucas Galante
2026-09-17pane cycling: warp the pointer through the compositorLucas Galante
2026-09-17developer_solver: Auto bounds on Color tabsLucas Galante
2026-09-17session: Next Pane / Previous Pane warp the pointer between panesLucas Galante
2026-09-17developer_embryo: drop the second-input visualizer pickupLucas Galante
2026-09-17developer_solver: Visualize tabs replace developer_panelLucas Galante
2026-09-16hotkeys: alt+t toggles the pane's tabs, alt+shift+t every pane'sLucas Galante
2026-09-16developer_surface_detangle: the Shapeshifter algorithmLucas Galante
2026-09-16otls: real menus on Attribute Remap and NormalizeLucas Galante
2026-09-16otls-audit: put the Remesh dummy-children row back; drop its unread-parameter row insteadLucas Galante
2026-09-16otls: Attribute Clip built, Constant's Class and Remesh 1.0's Transfer Method readLucas Galante
2026-09-16developer_embryo: Source and Base Resolution are readLucas Galante
2026-09-16developer_metamax: Frame Range and Shift are readLucas Galante
2026-09-16developer_attribute_combine: the Weights scale their attributesLucas Galante
2026-09-16developer_analysis: working Class Edge and Element folderLucas Galante
2026-09-16otls: read the unread parameters on Select, Suture, Time and Time RampLucas Galante
2026-09-16developer_lead 1.1: Radius parameter, Amount blendsLucas Galante
2026-09-16developer_measure: the promote reads Attribute NameLucas Galante
2026-09-16developer_volume_miasma: wire the input to the VDB conversionLucas Galante
2026-09-16developer_normalize: the Type menu selects the branchLucas Galante
2026-09-16developer_vitality 1.1: help names the Initialize toggles that create each counterLucas Galante
2026-09-16developer_attribute_initialize: age toggles labelled by what they countLucas Galante
2026-09-16developer_attribute_initialize: integer Range for integer tabsLucas Galante
2026-09-16developer_attribute_initialize: Enable toggle per tabLucas Galante
2026-09-16developer_attribute_initialize: integer attributesLucas Galante
2026-09-16developer_vitality 1.1: age attributes match Attribute InitializeLucas Galante
2026-09-16otls: descriptive parameter names that existLucas Galante
2026-09-16otls: help for every developer nodeLucas Galante
2026-09-16developer_solver: help that matches the current operatorsLucas Galante
2026-09-16developer.md: operator list matches the nodes on diskLucas Galante
2026-09-16otls-audit: record the float/vector consolidationLucas Galante
2026-09-16otls: Align, Gradient and Rotate replace the five vector_ nodesLucas Galante
2026-09-16developer_bleed: replaces float_bleed and decays vectors tooLucas Galante
2026-09-16developer_migrate: the final clamp truncated every float to 0Lucas Galante
2026-09-16developer_migrate: one node replaces float_migrate and vector_migrateLucas Galante
2026-09-16developer_concentrate: one node replaces float_concentrate and vector_concentrateLucas Galante
2026-09-16hc: tolerate a network editor with no networkLucas Galante
2026-09-16hc: scope panel commands by class, with a predicate where that variesLucas Galante
2026-09-16hc: Pin toggle on every path-based tabLucas Galante
2026-09-16developer_attribute_composite: vector operations and a few more scalar onesLucas Galante
2026-09-16developer_attribute_combine: the Attribute menus read input_0 and input_1Lucas Galante
2026-09-16developer_attribute_composite: the Attribute menu is an expressionLucas Galante
2026-09-16developer_vector_direct: the bias wrangle keeps its biased directionLucas Galante
2026-09-16developer_vector_unify: make the const and attr methods workLucas Galante
2026-09-16developer_vector_unify: make the basic method workLucas Galante
2026-09-16developer_vector_direct: read the parms and attributes that existLucas Galante
2026-09-16developer_select: fix the random and vector branchesLucas Galante
2026-09-16developer_float_concentrate: read the global and connectivity parmsLucas Galante
2026-09-16developer_attribute_combine: route by the type parms that existLucas Galante
2026-09-16im_select_primitives: fix the method mapping and the vector branchLucas Galante
2026-09-16im_select_points: restore method selection, connect the vector branchLucas Galante
2026-09-16im_select 1.0: fix the method mapping and the vector branchLucas Galante
2026-09-16im_select 2.0: restore method selection and fix the vector branchLucas Galante
2026-09-16im_transfer 1.0: read the pt_attrs parmLucas Galante
2026-09-16im_orient 1.0: delete source_dir_avg, not attr_avgLucas Galante
2026-09-16im_relax: read the rad parmLucas Galante
2026-09-16im_skeletonize: prim ids come from @primnumLucas Galante
2026-09-16im_neighbours: use the Normal Filter parmLucas Galante
2026-09-16im_layout: read the attr parmLucas Galante
2026-09-16im_gate: read the parms that exist in the point branchLucas Galante
2026-09-16im_cull: fix the integer point branchLucas Galante
2026-09-16im_twist: delete P_min and P_max on the way outLucas Galante
2026-09-16im_attractor 0.9: bound the dist attribute, not PLucas Galante
2026-09-16im_attractor 1.1: bound the dist attribute, not PLucas Galante
2026-09-16im_bounds 1.0: delete the promoted attribute when its toggle is offLucas Galante
2026-09-16im_bounds 1.1: make the min/max attribute names workLucas Galante
2026-09-16im_color_ramp: write to the Attribute parm, drop the unused im_remap1Lucas Galante
2026-09-16im_color_ramp: fix the int point branchLucas Galante
2026-09-16im_float_ramp, im_ramp_float: promote and read the same in_min/in_max detail attributesLucas Galante
2026-09-16developer_attribute_initialize: one tab per attributeLucas Galante
2026-09-16developer_analysis: write the statistics into the <attr>_info dictionaryLucas Galante
2026-09-16developer_attribute_initialize: metadata range is one vector2 keyLucas Galante
2026-09-16developer_float_migrate: Influence belongs to both methods, so put it in MainLucas Galante
2026-09-16developer_float_migrate: both methods push values along the vectorLucas Galante
2026-09-16settings: write out the new keys with their chosen valuesLucas Galante
2026-09-16developer_panel: OnUpdated rebuilds the visualizers on every instanceLucas Galante
2026-09-16hcviewregions: reap the ccectl children instead of leaving zombiesLucas Galante
2026-09-15developer_panel: Enable toggle at the top of each tabLucas Galante
2026-09-15statusbar: the menu-bar toggle in the circle popup did nothingLucas Galante
2026-09-15developer_panel: Reset Sim on the same row as Rebuild and PopulateLucas Galante
2026-09-15developer_panel: Rebuild and Populate above the separatorLucas Galante
2026-09-15developer_panel: rename Add Missing to PopulateLucas Galante
2026-09-15developer_panel: Add Missing button appends a tab per input attributeLucas Galante
2026-09-15developer_panel: label each visualizer tab by its attributeLucas Galante
2026-09-15viewregions: publish every toplevel so a swipe over the HC Panel scrollsLucas Galante
2026-09-15hc: let HC Panel control rows be as tall as their widgetsLucas Galante
2026-09-15netcursor: colour and scale settings, cursor picture painted on demandLucas Galante
2026-09-15settings: box the loose keycam row under a Mouse headingLucas Galante
2026-09-15settings: group the Node Graph tab into Nodes, Navigation and GridLucas Galante
2026-09-15developer_panel: adopt_visualizers reads onlyLucas Galante
2026-09-15developer_panel: visualizers in a tabbed multiparmLucas Galante
2026-09-15session: Open Recent command in the HC PanelLucas Galante
2026-09-15startup: main menu bar hidden by default, in both desktop modesLucas Galante
2026-09-15statusbar: open the circle's menu upwardLucas Galante
2026-09-15statusbar: give the circle its own X window so clicks reach itLucas Galante
2026-09-15statusbar: bigger circle, just left of the live-cooking toggleLucas Galante
2026-09-15statusbar: a status circle with a main-menu popupLucas Galante
2026-09-15settings: no restart notice until a restart is owedLucas Galante
2026-09-15settings: say which saved settings need a restart to take effectLucas Galante
2026-09-15hooks: refit the hcnetcursor on the click's own mouseupLucas Galante
2026-09-15developer_vector_migrate: working connectivity, influence on proximityLucas Galante
2026-09-15developer_vector_migrate: proximity defaults that reach a neighbourLucas Galante
2026-09-15developer_float_migrate: proximity defaults that reach a neighbourLucas Galante
2026-09-14developer_float_migrate: connectivity depth N now means N ringsLucas Galante
2026-09-14developer_float_migrate: make both methods actually runLucas Galante
2026-09-14developer_diffuse: replace developer_float_diffuse, diffuse vectors tooLucas Galante
2026-09-14otls: remove developer_float_initialize and developer_vector_initializeLucas Galante
2026-09-14developer_attribute_initialize: merge float and vector initialize, add variationLucas Galante
2026-09-14developer_embryo: expose the sphere radius as a Radius parmLucas Galante
2026-09-14neteditor: keyboard moves swap with the node they land onLucas Galante
2026-09-14hooks: one pending action per mouse action, so the drop swap actually runsLucas Galante
2026-09-14neteditor: drop a node onto another to swap themLucas Galante
2026-09-14neteditor: highlight the node under the hcnetcursor after a hip loadLucas Galante
2026-09-14menu: stop flashing labels on pan and zoom tooLucas Galante
2026-09-14menu: stop flashing labels on hcnetcursor navigationLucas Galante
2026-09-14neteditor: make the view follow the hcnetcursor off the edgeLucas Galante
2026-09-14neteditor: sweep the network onto the grid after every actionLucas Galante
2026-09-14neteditor: make grid snapping absolute and add a Snap to Grid commandLucas Galante
2026-09-14check: pin node_coloring inside the checks that exercise itLucas Galante
2026-09-14settings: turn node colouring off by defaultLucas Galante
2026-09-14hc: publish view-pane rectangles to the compositorLucas Galante
2026-09-14otls: rebuild the old im_cull as im_cull_pieces and wire it back inLucas Galante
2026-09-14otls: fix the VEX in four developer nodes that failed to compileLucas Galante
2026-09-14otls: add the HDA audit reportLucas Galante
2026-09-14otls: replace dummy children of renamed types across 29 assetsLucas Galante
2026-09-14otls: replace the dummy im_ramp_color inside developer_surface_remesh 1.0Lucas Galante
2026-09-14otls: remove 20 hollow rename leftoversLucas Galante
2026-09-14hc: list Dim Unused Nodes in the HC PanelLucas Galante
2026-09-14hc: draw checkboxes and dropdowns on HC Panel entriesLucas Galante
2026-09-14hc: centre the HC Panel on the Houdini windowLucas Galante
2026-09-14hc: make the HC Panel answer arrows and EscapeLucas Galante
2026-09-14hc: open the HC Panel for the pane under the cursorLucas Galante
2026-09-12hc: let node coloring and the network cursor be switched offLucas Galante
2026-09-12hc: dock the playbar in the scene viewer paneLucas Galante
2026-09-12hc: show the playbar in both desktopsLucas Galante
2026-09-12hc: delete the dead _traversalTargetLucas Galante
2026-09-12hc: spell out the currentNode staleness in the docstrings and checkLucas Galante
2026-09-12hc: turn the startup prompt off, as saved by the settings panelLucas Galante
2026-09-12hc: make currentNode mean the node that is current nowLucas Galante
2026-09-12hc: write current_node_arrow_color into hc_settings.jsonLucas Galante
2026-09-12hc: write show_prompt into hc_settings.jsonLucas Galante
2026-09-12hc: add a setting to turn the startup prompt offLucas Galante
2026-09-12hc: make Set Node Shapes selection-only, like Set Node ColorsLucas Galante
2026-09-12hc: drop the confirmation messages from the node color/shape commandsLucas Galante
2026-09-12hc: keep updateNodeColors quiet and out of the HC PanelLucas Galante
2026-09-12hc: pull the last hardcoded color into the schema, unhook Reload ColorsLucas Galante
2026-09-12hc: let Set Node Shapes honour the selection, as one undoLucas Galante
2026-09-12hc: make the bulk node color operations one undo eachLucas Galante
2026-09-12hc: add Reset Node Colors, the way back into the settingLucas Galante
2026-09-12hc: make node coloring keep hand-picked colorsLucas Galante
2026-09-11hc: point the houdini MCP server at its real pathLucas Galante
2026-09-11hc: stop the im_ramp_color preset menu raising on every cookLucas Galante
2026-09-11hc: let a launchFloating entry opt out of being tiledLucas Galante
2026-09-11hc: float the spreadsheet panel as a dialog tooLucas Galante
2026-09-11hc: float the HC Settings panel as a dialog so the WM does not tile itLucas Galante
2026-09-11hc: mask the split handles so their rounded corners are not blackLucas Galante
2026-09-11hc: restore the delay argument dropped from the pending selection actionLucas Galante
2026-09-11hc: give split handles their own X window so they can be clickedLucas Galante
2026-09-11hc: drop the deferred pin -- the tracker is what actually fixes the handlesLucas Galante
2026-09-11hc: start the agent bridge before the UI setup that can kill itLucas Galante
2026-09-11hc: pin split handles after Houdini relayouts, and keep them trackingLucas Galante
2026-09-11hc: add the selection cursor asset, ignore agent bridge scratchLucas Galante
2026-09-11hc: serve HC Settings as a Python Panel pane tabLucas Galante
2026-09-10hc: wire the keycam zoom step, and drop the HCNode wrapperLucas Galante
2026-09-10hc: declare settings, centralise per-tab state, generate the command mapLucas Galante
2026-09-10hc: track the agent bridge, reference docs and new HDAs; fix hrun pathsLucas Galante
2026-09-10hc: fix dead panel commands, settings handling and node graph redraw costLucas Galante
2026-09-10hc: run agent bridge code on Houdini's main threadLucas Galante
2026-09-10hc: stop the leader chord crashing Houdini from a timer threadLucas Galante
2026-09-10hc: rename package manifest to hou-control.jsonLucas Galante
2026-09-10hc: wire package to Houdini 22Lucas Galante
2026-04-21hc: update network editor defaults and session behaviorLucas Galante
2026-04-17hc: fix phantom zoom when pressing Ctrl in Network EditorLucas Galante
2026-04-17UI: make locked camera pill and mask colors palerLucas Galante
2026-04-17keycam: allow Shift+k to coexist globally and inside the state for translationLucas Galante
2026-04-17hc: implement precise framing logic for Perspective and Ortho projectionsLucas Galante
2026-04-17hc: fix AttributeError in HCCam by replacing centroid() with boundingBox().center()Lucas Galante
2026-04-17hc: ensure select next/prev component first completes the current node component selectionLucas Galante
2026-04-17hc: ensure select next/prev component falls back to top-left when no selection existsLucas Galante
2026-04-16keycam: rename zoom labels and symbols to explicitly separate Persp and OrthoLucas Galante
2026-04-16hc: rename all '_enabled' settings to short versions for cleaner UI and codeLucas Galante
2026-04-16hc: reorganize settings panel into a tabbed interfaceLucas Galante
2026-04-16keycam: add viewer event callback to automatically update aspect ratio on resizeLucas Galante
2026-04-16keycam: fully implement PluginHotkey system with menu-linked symbolsLucas Galante
2026-04-16keycam: integrate zoom controls into the official hotkey systemLucas Galante
2026-04-16keycam: use hybrid hotkey system with robust manual interceptionLucas Galante
2026-04-16hc: trigger navigation fallback if current node is off-screenLucas Galante
2026-04-16hc: implement Restart Houdini and add to menu/panelLucas Galante
2026-04-16hc: fix missing NetworkShapePolygon by using lines for triangleLucas Galante
2026-04-16hc: change current node off-screen indicator to triangleLucas Galante
2026-04-16hc: add automatic node tagging and global color update toolLucas Galante
2026-04-16hc: refactor and expand session/UI managementLucas Galante
2026-04-05hc: add hcmaps.pyLucas Galante
2026-04-05UI: add NodeGraphCommon.incLucas Galante
2026-04-05hooks: update uiready.pyLucas Galante
2026-04-05Network Editor: update nodegraphhooks.pyLucas Galante
2026-04-05HC: Remove hcpanel.pyLucas Galante
2026-04-05HC: Update HCLucas Galante
2026-04-05IM: Update IM SortLucas Galante
2026-04-05UI: update UI colorsLucas Galante
2026-04-05menus: update MainMenuCommon.xmlLucas Galante
2026-03-25Switch to codebergLucas Galante
2026-02-08menus: updateLucas Galante
2026-02-08keycam: get it working (again)Lucas Galante
2026-02-08shelf: update shelfLucas Galante
2026-02-08settings: add settings fileLucas Galante
2026-02-08listeners: update listenersLucas Galante
2026-02-08hc: repackage the packageLucas Galante
2026-02-08immutable methods: some stuffLucas Galante
2026-02-08layout: update hc_desktopLucas Galante
2026-02-08interface: update colorsLucas Galante
2026-02-08interface: add squared nodeshape fileLucas Galante
2026-02-08interface: add node shape flags filesLucas Galante
2026-02-08housekeeping: delete stinky old filesLucas Galante
2026-01-03hcglobal: update hide stowbar scriptlsgalante
2026-01-03update hdaslsgalante
2025-12-31hc-radialutils: improve layoutlsgalante
2025-12-31hc-bindings: updatelsgalante
2025-12-31im: update nodeslsgalante
2025-12-31gem: update gem graphlsgalante
2025-12-31im: create new sop nodeslsgalante
2025-12-31gem: create new cop nodeslsgalante
2025-12-31notes: put notes in the notes folderlsgalante
2025-12-31hc-desktop: improvelsgalante
2025-12-31color scheme: format + change some colorslsgalante
2025-12-12im: update basic nodeslsgalante
2025-12-12ughlsgalante
2025-12-12hc desktop: change gridmodelsgalante
2025-12-10Update .DS_Storelsgalante
2025-12-10gitignore: updatelsgalante
2025-12-10im color ramp: rename nodelsgalante
2025-12-10create .gitignorelsgalante
2025-12-10hc radial: create entrieslsgalante
2025-12-10hcnetwork editor: updatelsgalante
2025-12-10hdas: updatelsgalante
2025-12-10create basic package filelsgalante
2025-12-10remove fileslsgalante
2025-12-10hc_desktop: update layoutlsgalante
2025-12-10main menu bar: remove some itemslsgalante
2025-12-09first commitlsgalante