Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Generated by auto-changelog.
Unreleased¶
v2.26.1 - 2026-10-12¶
Commits¶
- a pattern every ramp key shares answers with the ramp; menu_items refuses a string
177d86c - raise the mcp floor to 1.21.1
7780a62
v2.26.0 - 2026-10-12¶
Merged¶
- set_playback_range widens the global range to hold it
#153 - node card shows OnCreated parms, every VOP signature, and outputs named by a parm
#149 - run_shelf_tool answers runningTool, cleans up a failed run, and takes dop_network
#150 - get_usd_attribute lists sample times, and values on request
#156 - delete_node takes several paths in one call
#154 - a merge keeps the scene's set -g variables
#152 - get_parameters filters by what a value holds
#155 - a parm at its factory default is not a broken reference
#148 - write_cache stops listing a File Cache's unused file parm
#151 - non_default_only reports a changed ramp as one entry, not a row per key
#147 - a spare menu takes its items, labels and default, and is refused without items
#146
Commits¶
- answer runningTool, clean up failed runs, take dop_network
2511dde - card shows OnCreated parms, signatures, parm-named outputs
bcfa98e - keep reporting a spare or user asset's own default reference
ee605a4 - value_contains reads every keyframe and skips folders
8fc8332 - a ramp key that holds value_contains is not folded away
5b75b4f - restore merge globals literally, and after a failed merge too
3d5ceb3 - a batch delete refuses a node inside a locked asset before deleting any
8637be8 - sample_times centres on the time read; all_samples refuses full
c278273 - a failed run never destroys the artist's moved nodes, and names the right alternatives
c570591 - named_by_parm is checked on the probe, not guessed from names
8fce247 - widen the global range only when Houdini clamped the playback range
a4de05a - the card runs OnCreated only for assets shipped under $HFS
4707973
v2.25.0 - 2026-10-05¶
Merged¶
- viewer stays out of DOP views, cook_frame_range without a deadline, and four smaller fixes
#145 - get_parameters(non_default_only) reads only the changed parameters
#144 - get_attrib_stats gains group, unique, distance_to and attribute ratios
#143 - list_children(recursive=True) does not walk into locked assets
#142 - copy_node names the inputs the copy kept and the ones it lost
#141 - a ramp is written and read whole, as one value
#140 - run_shelf_tool names nodes added to existing networks and takes the selected objects
#139 - node card lists radio folder sets, default expressions and VOP output types
#138 - an {"expr": ...} component of a list sets that component's expression
#137 - "Node has no geometry" names the node's own cook error
#136 - frame_all pads a point to a 1-unit cube; the docs say what an object frames and what distance is
#135 - simulation_cache names a simulation that reads an edit upstream of it, and one a SOP Solver's SOPs sit in
#134 - FXHOUDINIMCP_TIMEOUT no longer puts a deadline on write_cache, start_render and press_button
#133
Commits¶
- the Scene Viewer stays out of DOP views, and captures name its network
06855f4 - cook_frame_range has no deadline, shows progress and can be stopped
7e05d46 - get_node_card gives a template menu's labels when they differ from its tokens
e35cdb1 - get_node_info names a SOP local variable instead of evaluating it
3ff0c6b - an unknown argument is refused with the argument meant
6b7c252 - the GUI runner removes the camera it makes at /obj
1adb33a - a toggle's default expression is one string, not its letters
62d6989 - list_children flags unsynced locked assets and walks a locked one's insides
9e20f5b - cook_frame_range is named among the commands with no deadline
9db3d5d - a SOP parent_path lends its editor to SOP tools only
e387664 - a dry run checks a ramp, and non_default_only reads ramps and folders right
42c8191 - simulation_cache follows a subnet's output and keeps an asset's own network
72a96f7 - get_attrib_stats names a missing group and counts string tuples whole
ef5d639 - a toggle's on/off default is not listed as an expression
fb4cbd1 - Esc during a cook stops cook_frame_range at that frame
f37487e - rewiring a solver's inputs names its simulation_cache
4e2f01b - is_at_default judges a ramp as non_default_only does
93934a6 - copy_node names a wire from the subnet's own input as such
cacdf4a - run get_attrib_stats' numpy path in CI
a310525 - move the vocab fixture to module level
2278840
v2.24.3 - 2026-10-05¶
Merged¶
- register Cline where Cline 3 reads its MCP servers
#132 - answer initialize before looking for Houdini
#131 - viewport captures draw no selection outline
#128
Fixed¶
- register Cline where Cline 3 reads its MCP servers
#130 - answer initialize before looking for Houdini
#129
Commits¶
- selection_hidden puts back boxes, notes, dots and hidden nodes
528caa2 - time the lifespan with wait_for, which Python 3.10 has
c0e72cd
v2.24.2 - 2026-10-01¶
Merged¶
- start_render gives out-of-process renderers time to show their file
#127 - create_render_node resolves renderer names to the ROP types /out has
#126 - start_render watches Mantra's vm_picture output
#125 - get_dop_relationships lists the simulation's relationships
#124 - set_usd_attribute and set_light_properties accept vector values given as lists
#123 - set_parameter sees an expression that a write left on two keys
#122
v2.24.1 - 2026-09-30¶
Merged¶
- setup_render sets the resolution the Karma ROP renders at
#121 - clear_cache deletes the files on File Cache 2.0
#120
Commits¶
- name #113 by its title, not its merge note
d7344c4 - list the nine PRs merged by hand in 2.24.0
3d05244 - Connect a Client covers every client install registers, not only Claude
56f9d89 - no client is featured over the others
59b3799 - the JSON client example escapes its backslashes again
be520eb - format the clone package-file example
735fb7d - re-encode the animated banner at webp quality 90
526b244 - the Karma resolution test catches the bug without a licence
37972a8
v2.24.0 - 2026-09-29¶
Merged¶
- The one conflict was the imports of parameter_handlers.py: main's
#113 - a locked parm is named before the write, and run_callbacks runs a parm's callback as the UI does
#97
Commits¶
- review of #97 -- cached locks, callback errors, no callbacks in a dry run unless needed
f6818c9 - get_attrib_stats measures several nodes over several frames in one call
5f2ef4b - press_button runs a field's action button with action=True and refuses a press that does nothing
d67334b - build_network wires from an output by name, and a wrong name fails the dry run
0dec237 - moving the network editor keeps the viewport camera and the selection
27d1ee7 - get_parameters(include_defaults) reports the default beside the value
0d6fcf9 - build_network takes any text in a code field whose menu lists snippets
8b7b15a - a recursive get_parameters sweep reads a locked HDA, not the nodes inside it
fcdf948 - a write inside a DOP network names the simulation to reset in simulation_cache
b02420e - set_viewport_display sets the reference plane, particle point size and colour scheme
f207e1c - set_viewport_direction places the free view, frame_all frames given nodes or a box
deb6878 - the free view's rotation turns the way a camera with the same r does
6e5eaca - a callback error names the route it came from
09cd047 - get_attrib_stats refuses node_path with node_paths, and node_paths always answers rows
5833896 - a whole float source_output stays an output index
d92985d - a toggle's "on"/"off" default token is not reported as a default expression
706a161 - let the cache-note mocks take the arguments main added
53314e7 - include_locked_assets loads the locked assets' delayed contents before reading them
3cf34d9 - Merge pull request #117 from d-potrivaev/feat/attrib-stats-frames-nodes
10dee13 - Merge pull request #118 from d-potrivaev/feat/get-parameters-defaults
7a9081a - Merge pull request #119 from d-potrivaev/fix/get-parameters-skip-locked-hda-internals
66c93b9 - re-selecting a node outside the new network no longer pulls the editor back
c61af57 - a view's camera is only bound again in the kind of network it was recorded in
dc8b917 - no default beside a value at its default; the locked-asset skip count follows node_type
78f59e1 - set_current_network is checked to leave the editor where it went
4ebed2f - point_size in a LOP network sets the Solaris viewer, not the object one
e61c20f - Merge pull request #110 from d-potrivaev/fix/build-network-source-output-by-name
98012a7 - Merge pull request #111 from d-potrivaev/fix/build-network-code-field-not-strict-menu
976fbfd - Merge pull request #112 from d-potrivaev/feat/press-button-script-action
9ed1cc2 - orbiting the free view is refused while a USD camera is looked through
6018742 - Merge pull request #116 from d-potrivaev/feat/viewport-direction-framing
20fd8f9 - Merge pull request #115 from d-potrivaev/feat/viewport-display-extras
e40555e - Merge pull request #114 from d-potrivaev/fix/network-navigation-keeps-viewer-state
b43101c - frame_all says when it drops a camera; the orbit refusal names the right tool
921a8b2
v2.23.0 - 2026-09-29¶
Commits¶
- name the three PRs merged with conflicts by their titles
7700ec3 - an animated spiral banner in place of the two header logos
cdce4b6 - even spacing between the banner, the tagline and the badges
81433b6 - drop the tagline under the banner, which already names the project
6c55629 - render_quad_view wrote one image and reported four
219ec40 - output_path is optional on the five capture tools
8f3df18 - refuse arguments a tool does not declare
fba013a - a requested name that is taken is refused, not numbered up
ed87722 - volume sums, threshold boxes, sampling and field comparison
1059132 - a requested USD time is cooked, not only labelled; world transforms over frames
6fb12b6 - name a BaseException from the main thread instead of KeyError 'result'
1d814f7 - list, switch, start and stop Houdini sessions; scan ports at once
edccadb - render_sheet tiles a frame range into one image, no viewport needed
0a8f515 - credit JTCHE/houdini-mcp for the adapted volume code
fa516e7 - write the banner through a context manager, as ruff's SIM115 asks
d0e61dd - ruff format the banner script
3593195
v2.22.0 - 2026-09-29¶
Merged¶
-
Conflicts:
#103¶ -
Conflicts:
#104¶ -
Conflicts:
#98¶ - get_node_info reads a node's errors before it evaluates its parameters
#102 - copy_node places the copy beside its original, not on top of it
#106
Commits¶
- make the unwritable-path cases fail on Linux and macOS too
efe7242 - override_expression clears an expression without leaving warnings on the node
deb7b83 - capture_network_editor frames the requested node at once and reports what the image shows
c87abec - a Python button callback that raises is an error reply, not a modal dialog that hangs the bridge
8760909 - get_usd_prim reads attributes at the current frame, and get_usd_attributes reads many prims in one call
9922c25 - get_geometry_info says when a node inside a for-each loop is read as one slice
1cf267c - update_hda says whether the library file was written
dd4ac3b - the loop warning only suggests reading the loop's output
47820b8 - verify_network names errors left over from an earlier cook and can recook them
e601513 - set_viewport_display shows or hides the environment background on every view
d0620ee - start_render takes overrides for one render and waits for a Karma LOP to finish
aea9603 - a default expression is Hscript unless told otherwise, and a failing one is named
2d44359 - explain_node reads a node's errors before it evaluates its parameters
9316397 - Merge pull request #99 from d-potrivaev/feat/usd-at-stage-frame
251e0dc - Merge pull request #105 from d-potrivaev/feat/update-hda-says-saved
13528e0 - Merge pull request #107 from d-potrivaev/fix/hda-default-expression-hscript
586a46c - Merge pull request #100 from d-potrivaev/fix/network-editor-no-fly
0e9eb34 - Merge pull request #108 from d-potrivaev/feat/viewport-environment-background
439768c - tool count after get_usd_attributes; update_hda says so when the library mtime did not move
53d94e8 - Merge pull request #94 from d-potrivaev/test/portable-unwritable-path
18f8b84 - Merge pull request #109 from d-potrivaev/feat/start-render-overrides
e6b2ce2 - Merge pull request #96 from d-potrivaev/fix/press-button-no-modal
ab1d243 - a nested multiparm callback gets script_multiparm_index2..N as pressButton() gives it
7abb263 - the live suite passes again on 22.0.368
ff58688 - 208 tools, with the per-category counts recounted from the source
7fa0ce8
v2.21.0 - 2026-09-23¶
Commits¶
- verify catches dangling channel references, and results come back compact
586b0b4 - every setup_* sim now simulates, caches all its streams, and is seen alone
d568e09 - Solaris renders are verified against their real output, and Solaris builds report the stage
58ae3a6 - wait for husk's late error before calling a render silent, and check every gprim for a material
1749f1f - create_hda keeps the promoted interface and the inputs; set_parameters sets expressions
cf81c02 - cook from a saved hip, build into /tasks, and validate multiparm menus
366d089 - read Copernicus layers, and verify a copnet by its image
26f9ea6 - node cards say where a multiparm's instances start counting
9b601a0 - node reports list only what a node has, and reload_plugin re-imports the Houdini side
64d8089 - statistics, pages and group queries stop building a Python object per element
21dd86f - eight tools no longer report success for things that did not happen
7bfbfc5 - set_usd_attribute and set_light_properties edit the stage that is actually read
4119365 - render ranges, render settings, sop chains, materials, resets and expressions report what they did
70f219f - the largest replies are capped, measured before and after
c16c7b1 - build_network probes each type once, USD walks stop at the depth asked for
43bf6d2 - expressions replace animation instead of one key segment; CHOP and volume evidence
778c15f - click-waiting shelf tools run as a Ctrl+click; long frame ranges are thinned
36cab96 - display lands on the finished network; material library builds report the stage
ad86783 - start from the Simulate shelf tool's default crowd
06bbaa1 - compact tool wrapper registers on mcp 1.14
f06533f
v2.20.0 - 2026-09-23¶
Merged¶
- get_node_card lists the items of a script-generated menu
#91 - read time-sampled USD attributes at the current frame and walk instance proxies on request
#87 - get_prim_intrinsics reads many prims in one call, with the prim each extreme is on
#89 - build_network takes expressions in parms and says when a literal did not take
#86 - set_parameter names a kept expression, a ch() write-through and the raw string
#85 - get_attrib_stats reads vertex attributes, so uv and N ranges come back in one call
#90 - get_parameters(inside=...) reads the same patterns across a network
#93 - get_stage_info accepts a LOP network and answers through its display node
#88 - get_parm_references about one parameter leaves the node-level lists out
#92 - recognise an embedded definition by its library path, since HOM has no isEmbedded()
#84
Commits¶
- layout_children names a bad parent path with auto-layout off, and the node-name check reads discipline.md
d18d52a
v2.19.0 - 2026-09-20¶
Commits¶
- guard link_parameters and upsert spare parameters
d378d12 - register the server with every MCP client on the machine, not only Claude
14516da
v2.18.0 - 2026-09-18¶
Merged¶
- get_usd_bound_material resolves the material a prim renders with and where the binding comes from
#82 - get_parameter describes a Data parameter instead of answering null
#79 - load_scene merges named nodes from another hip file and reports what arrived
#81 - get_node_card lists connectors by index and name, and build_network wires inputs by input_name
#76
Commits¶
- set_hda_interface and edit_hda_interface author and edit an asset's Type Properties interface
421cc02 - get_parm_references and get_parm_template_tree read who references a parameter and the whole interface as a tree
f27a458 - a subnet's indirect inputs are a wiring source for connect_nodes, connect_nodes_batch and build_network
6144a7e - merge_hip merges named nodes from another hip file and reports what arrived
e88eec4 - change_node_type swaps a node's type in place, and press_button presses a button parameter and reads the node back
66fa7b9 - change_node_type and press_button answer what review found
bb06d36 - fold merge_hip into load_scene and attribute what a merge brought
8658b34 - one Data-parameter reader for get_parameter and get_parameters
81970c2 - one connector rule, and a card probe that leaves no trace it can avoid
dc8f4fa - a wire from a subnet's input connector can be undone, and every refusal is named
61c9cf3 - references cover every channel function and backticks; the tree shares the schema serializer
50b0725 - resolve bindings for the purpose Karma renders, and let get_usd_materials say where a material renders
45937b4 - set_hda_interface is edit_hda_interface with inserts, and one write path checks everything first
b7c8bc3 - a set KeyValueDictionary Data parameter keeps its value
c382bb9 - Merge pull request #83 from d-potrivaev/feat/hdaiface
8d2693a - Merge pull request #78 from d-potrivaev/feat/parmrefs
f66c28b - Merge pull request #80 from d-potrivaev/feat/nodeverbs
e96ebfd - Merge pull request #77 from d-potrivaev/feat/indirect
14f3e92 - close the three leftovers from the #77, #78 and #83 reviews
41293d6
v2.17.0 - 2026-09-16¶
Merged¶
- The package file carries every Houdini-side setting, and a reinstall keeps the values you changed
#69
Commits¶
- link_parameters writes chs() for a String destination and a path relative to the destination node
6a6c856 - get_node_info compares a tuple component with its own default, not the whole tuple
33b6aaa - list_usd_prims and get_usd_prim_stats treat the root as a path, not a string prefix
0ab9384 - list_hda_versions lists the whole version family of a type
a1e924a - cooked-evidence replies say when the update mode keeps nodes from cooking
54496a6 - USD arrays come back summarised unless asked for in full; get_usd_attribute reads windows
62ec2a1 - adopt Conventional Commits in the changelog config and the release bot
8ecd78b - add a contributing guide and issue and pull request templates
289dd9d - full=True returns every element, and limit=0 cannot page forever
5045736 - give the relativePathTo fake a real relative path
5f34da6 - list_hda_versions fails cleanly on an unparsable type name
1c86d10
v2.16.0 - 2026-09-14¶
Merged¶
- Auto-layout is off by default
#67 - Live tests for the two adoption promises: a failed build leaves nothing and costs no undo step, fresh nodes never move placed ones
#66 - Grab the network editor from Houdini's window, name the shader per render context, make the output grace period configurable
#65 - Fix what the August live-session reports found: lights on H22, MaterialX params, render settings on LOP ROPs, husk's late file, expression-driven parms
#64 - Keep flipbook captures from launching MPlay, which inherits the server socket and holds the port after Houdini exits
#61 - Read only material-path parameters in get_material_info instead of evaluating every parameter of every node
#62 - Leave the VOP signature menu to Houdini in build_network's strict-menu check
#63
Commits¶
- Ignore uv.lock
9e88c84
v2.15.2 - 2026-09-13¶
Merged¶
- Name the upstream node when a render or cache chain fails
#60
v2.15.1 - 2026-09-13¶
Merged¶
- No deadline on cache writes and renders
#59
v2.15.0 - 2026-09-13¶
Merged¶
- Caches and renders run in the foreground by default again, with an hour's timeout, so the user sees Houdini's progress dialog
#58
v2.14.2 - 2026-09-13¶
Merged¶
- Report cache completeness and Load from Disk in get_cache_status, and turn the toggle on after a verified write
#57
v2.14.1 - 2026-09-13¶
Merged¶
- Fit the server instructions in the 2 KB a client shows, and serve the full rules as get_workflow_guide("discipline")
#56
v2.14.0 - 2026-09-13¶
Merged¶
- Refuse blocking shelf tools, run long caches and renders in the background by default, and report progress while Houdini works
#55
v2.13.1 - 2026-09-12¶
Merged¶
- Validate multiparm instance parameters at dry-run, and say why "no single node" is not a reason for VEX
#54
v2.13.0 - 2026-09-12¶
Merged¶
- Make write_cache background real, fix cache status on File Cache 2.0, add settle_seconds, and raise the client timeout
#53 - Serve the workflow guides as a tool, and tell the agent when to stop fixing and read
#52 - Fix what a live storm-shot session had to work around by hand
#51 - Tell the agent when a cache is mandatory, and to isolate the element it is iterating on
#50
v2.12.0 - 2026-09-12¶
Merged¶
- Stop embedding a JPEG in screenshot responses, return the file path only
#49 - Drop the custom stylesheet and use Zensical's default theme
#48 - Replace MkDocs with Zensical
#47 - Serialise docs deploys so a tag push and a main push stop racing to gh-pages
#46
v2.11.1 - 2026-09-12¶
Merged¶
- Make cook_top_node admit failed work items, and read in-process PDG logs
#45 - Remove the mkdocs git-committers cache that #43 committed by accident
#44
v2.11.0 - 2026-09-12¶
Merged¶
- Add undo, network annotations, object transforms, per-command timeouts, a project sandbox and a browser guard
#43 - Close the holes the placement floor left open
#42 - Place new nodes instead of stacking them at the origin
#37
v2.10.0 - 2026-07-29¶
Merged¶
- Stop tools reporting success they never checked, and test that they admit failure
#35
Commits¶
- Remove untitled.hip, a probe artifact that should never have been committed
6fcb274
v2.9.0 - 2026-07-29¶
Merged¶
- Add the tools a real session needed, instead of leaving it in execute_python
#34
v2.8.0 - 2026-07-29¶
Merged¶
- Support mcp 2.x, correct the dependency floor, and stop the generator eating version markers
#33
v2.7.0 - 2026-07-29¶
Merged¶
- Give every shipped help corpus its own workflow guide
#32
v2.6.2 - 2026-07-28¶
Merged¶
- Put a number on what a tool call costs
#31
v2.6.1 - 2026-07-28¶
Merged¶
- Say which config file the client registration was written to
#30
v2.6.0 - 2026-07-28¶
Merged¶
- Make
installfinish instead of handing back homework#29
v2.5.0 - 2026-07-28¶
Merged¶
- Stop the entry point swallowing unknown commands, and add
uninstall#28
v2.4.0 - 2026-07-27¶
Merged¶
- Consolidate the installation docs into one path
#27 - Make Connect a Client explain itself, and stop it handing out a footgun
#26 - Add
fxhoudinimcp install, so setup is two commands instead of four#25
v2.3.0 - 2026-07-27¶
Merged¶
- Generate the node domains, and correct the instructions against SideFX's docs
#24
v2.2.1 - 2026-07-27¶
Merged¶
- Claim mixed-case node names instead of hiding them
#23
v2.2.0 - 2026-07-27¶
Merged¶
- Generate search hints for the node contexts nobody had written up
#22 - Let a second Houdini serve, and let the client find it
#21 - Find hython under either documented macOS framework layout
#20
Commits¶
- Find hython under either macOS framework layout
2e1d548 - Generate search hints for the contexts nobody had written up
d09f1d5
v2.1.0 - 2026-07-27¶
Merged¶
- Ship the plugin in the package, and detect a plugin older than the server
#19
Commits¶
- Detect a Houdini plugin older than the MCP server
25cec21 - Ship the Houdini plugin in the package, with a command to wire it up
9b486f4
v2.0.1 - 2026-07-27¶
Merged¶
- Confirm readiness off the main thread during auto-start
#18
v2.0.0 - 2026-07-27¶
Merged¶
- Hold advertised node types to a declared version range (fixes 20.5 and 22.0)
#17 - Fix #9, #10, #11, #15; add Houdini 22 support, an MCP menu, and loopback binding
#16
Fixed¶
- Merge pull request #16 from healkeiser/fix/houdini-issues-9-10-11-15
#9 - Stop the package file's default path from looking like a working one
#11 - Keep mcp.health free of HOM access, and encode responses locally
#9 - Coerce HOM values to JSON instead of failing the whole response
#15
Commits¶
- Prevent blocking PDG calls from deadlocking Houdini
ee1cf84 - Fix Sdf.PrimSpec.nameChildren iteration for USD 0.26.5
27c35d5 - Reconnect to Houdini after it restarts
41cd775 - Resolve PDG graph context for TOP networks on Houdini 22
abeecc2 - Add python3.13libs so the plugin loads in Houdini 22
b2c78cd - Load the plugin under Houdini 22 (python3.13libs)
5f0bb80 - Bind the server to loopback, and make the run mode explicit
5e1739b - Add an MCP main menu
cdfd022 - Drop the shelf in favour of the MCP menu
9154b92 - Keep hip_file in the connection-status payload
0d377b7 - Wrap every transport failure, not the three we happened to name
a50d886 - Hold advertised node names to a declared version range
c23d057 - Let the Solaris scenario run on Houdini 20.5
2643578 - Derive the node-availability annotations instead of maintaining them
27dcace - Accumulate the node table so one Houdini install is enough
79ab843 - Warn when the connected Houdini has never been sampled
8cf8b4f
v1.3.0 - 2026-06-11¶
Commits¶
- Force the node-first discipline: justification gate + modeling patterns
e6ca077 - Serve Houdini''s own shipped manual: search_help + get_help_page
c113704
v1.2.0 - 2026-06-10¶
Commits¶
- Bump workflow actions off the deprecated Node 20 runtime
7d7cf05 - Fix network-editor capture on Houdini 21; add live GUI session checks
b16664a - Fix setup_rbd_sim: it built a network that simulated nothing
0ac1bda - Add the senior-artist core: graph intelligence tools + discipline
d4b8af5
v1.1.0 - 2026-06-10¶
Merged¶
- User-facing scenario tests, 100% command coverage, cross-platform runner
#8 - Perf: benchmark sweep + geometry handler optimizations (14.2s outlier -> 70ms)
#7 - Add live integration test suite (hython) + fix three handler bugs it caught
#6 - Make automatic node layout a toggle via FXHOUDINIMCP_AUTO_LAYOUT
#5 - Fix untyped tool parameter schemas rejected by strict MCP clients
#4 - Harden Houdini MCP startup health checks
#3
Fixed¶
- Make automatic node layout a toggle via FXHOUDINIMCP_AUTO_LAYOUT
#2 - Fix untyped tool parameter schemas rejected by strict MCP clients
#1
Commits¶
- Versionning system
7787b2d - Versionning system
e3bd909 - Versionning system
accc80e - Add live integration test suite + fix three handler bugs it caught
700cd1e - Optimize geometry handlers found slow by the perf sweep
9f79fc2 - Add user-facing scenario tests, 100% command coverage, cross-platform runner
bb183a0 - Add deep authoring scenarios; fix silent light parm bugs in LOPs
3f7a48d - Close remaining test layers: HTTP transport e2e, prompts, resources
43d6575 - Align documented tool counts with the 173 registered commands
3f02172
v1.0.0 - 2026-03-31¶
Commits¶
- Various optimizations
77d8fda - Various optimizations
0b0a851 - Various optimizations
6843422 - Various optimizations
210bed8 - Versionning system
72df7fd
v0.3.1 - 2026-02-23¶
Commits¶
- Version pulled from Git tag
86fae87
v0.3.0 - 2026-02-23¶
Commits¶
- Relative depth for referenced parms
27abafe - Relative depth for referenced parms
5f23237 - Node first prompting (was overly reliant on VEX)
ae33fb9 - LOPs material
b254bff
v0.2.1 - 2026-02-23¶
v0.2.0 - 2026-02-23¶
Commits¶
- Removed relative imports
8c40929 - Black formatter
39779c8 - Reduced docstrings for faster AI parsing
fb7066f - Clearer instructions
7ba60d6 - Fuzzy filtering for parm names
cc2f7ec - Screenshot tools
a0582b6 - Hallucinations on parms, lack of node focusing for user visual feedback
6cfb9d7 - Bloated token usage for images workflow
6d6a1d7 - Removed tmp files
3ac16ac
v0.1.1 - 2026-02-22¶
v0.1.0 - 2026-02-22¶
Commits¶
- Initial commit
578eb4b