Repository navigation
Tidy the toolkit's icons and diagrams and split the busiest VIs - #51
Merged
Merged
Conversation
Report Progress.vi was the only VI in the Advanced palette whose icon body was light grey (221,221,221); Cancel Requested, Ask User, Confirm With User and the rest of the toolkit use white, as tools/icons specifies. The 453 grey pixels are now white. Banner, frame and text are unchanged pixel for pixel, and the VI is still saved in LabVIEW 20.0 format. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nine more toolkit VIs had the light grey (221,221,221) icon body that
Report Progress had: Add Result Fields, Build Discover Response,
Complete Modern MCP Result, Get Request Stream, Read Server Info, Read
Stream State, Remap Resource Not Found, Run Streamed Request and Stream
Was Cancelled. Their bodies are now white like the rest of the toolkit;
banner, frame and text are unchanged.
Add Readme Resource.vi is a subVI of the Datalogger example, not part of
the toolkit, but carried the toolkit's green MCP banner. It now has the
plain white icon of the example's other subVIs ("ADD README").
A scan of all 266 VIs finds no other grey body. Run_Tests_CLI.vi and the
two tools/ci VIs keep their own deliberate icons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 98 VIs added since v3.0.0 (53 toolkit VIs and 45 tests and fixtures) had block diagrams laid out by the generator and by a custom layout step, with crossing wires and uneven spacing. They are now arranged by LabVIEW's own Clean Up Diagram, which reads more like a hand-made diagram. Hand-drawn diagrams that existed at v3.0.0 are left as they were. Only the layout changes: no node, wire, connector pane or setting is different, every VI is executable and saved in LabVIEW 20.0 format, and the Caraya suite passes (64 tests, 212 checks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The modern-era, streaming, access and schema tests repeated the same chains on their diagrams: open an HTTP handle, add three or four headers one by one, POST, close, parse the status line; and for every check a JSON lookup followed by a comparison. Clean Up Diagram could not make those readable (up to 6000 px wide). Two new test helpers in SubVIs carry the repetition: - Send MCP request (headers).vi POSTs a request with its headers given as one multi-line string constant, one "Name: value" per line, and returns status code, headers and body. - JSON item equals.vi looks up a path and compares the item's raw JSON text with the expected text. 21 tests now call them, and chains of And gates are folded into one Compound Arithmetic. What each test sends and asserts is unchanged; where a test sent several POSTs over one handle, each request now opens its own connection, which the stateless server does not notice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The loop body that walked a control and its elements had grown to a 4000 px diagram. Its three parts are now private subVIs in MCP Server.lvlib: - List Control Elements: the elements of a cluster or array control with their JSON paths in the schema - Read Numeric Limits: minimum, maximum and unit note of an integer or number control - Make Schema Details: the description/minimum/maximum/default object merged into the schema The behaviour and the connector pane of Add Control Details To Schema are unchanged; its diagram is now about 1800 px wide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Complete Tool Entry now chains private subVIs instead of holding every step on one wide diagram: - Set Tool Title: replaces or removes the entry's title - Set Tool Annotations: adds the behaviour hints that are set - Make Output Schema: the outputSchema object, empty without outputs - Make Output Property Schema: the schema of one output, used by Make Output Schema in its loop Behaviour and connector pane of Complete Tool Entry are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The six checks used to feed four parallel ladders of Select nodes (code, message, data, status). They now go into one array in priority order; the first failing check is found with Search 1D Array and indexes constant tables of codes, messages and statuses. With no failing check the outputs fall back to the method-not-found values as before. Decoding a =?base64?...?= Mcp-Name header moved into the new private subVI Decode Header Value. Behaviour and connector pane are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests✅ All 64 tests passed. Per-test results
Protocol tests✅ Protocol tester output (0 failed required checks)VI changesVIs: 99 modified, 10 added, 0 deleted 93 more modified VIsAdded VIs (10)Report for commit 514f1bb. The installable test package is under Artifacts of this run once the build job has finished. |
JanGoebel
marked this pull request as ready for review
November 4, 2026 13:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


































































































Summary
Makes the toolkit's VIs look consistent and readable: every toolkit icon gets the white body of the others, all generated diagrams are arranged with LabVIEW's own Clean Up Diagram, and the diagrams that were still hard to read after that are split into small private subVIs or restructured. No behaviour changes; every connector pane is unchanged.
Changes
Icons (
0f4d0d8,c70bfbd)Diagram arrangement (
38d62f0)BD.CleanUp) instead of the earlier generated layout.Tests (
f99c033)MCP Server tests.lvlib:Send MCP request (headers).vi: one POST with a block ofName: valueheader lines; returns status code, headers and body.JSON item equals.vi: finds one JSON path and compares it with an expected value.Add Control Details To Schema (
22e174b), modified; diagram from about 4000 to 1800 px wide. New private subVIs:List Control Elements.vi: the elements of a cluster or array control with their JSON paths in the schema.Read Numeric Limits.vi: minimum, maximum and unit note of an integer or number control.Make Schema Details.vi: the description/minimum/maximum/default object merged into the schema.Complete Tool Entry (
6a96f18), modified; now a chain of four calls. New private subVIs:Set Tool Title.vi: replaces or removes the entry's title.Set Tool Annotations.vi: adds the behaviour hints that are set.Make Output Schema.vi: the outputSchema object, empty when the tool has no outputs for it.Make Output Property Schema.vi: the schema of one output, called by Make Output Schema in its loop.Check Modern MCP Request (
514f1bb), modified. The six checks used to feed four parallel ladders of Select nodes (code, message, data, status). They now go into one array in priority order; the first failing check is found with Search 1D Array and indexes constant tables of codes, messages and statuses. With no failing check the outputs keep the earlier method-not-found values. New private subVI:Decode Header Value.vi: decodes a=?base64?...?=header value, any other value passes through.All new and changed VIs are saved in LabVIEW 20.0 format, source only, and are members of their library (checked in the files).
Code summary
Check Modern MCP Request.viComplete Tool Entry.viAdd Control Details To Schema.viDecode Header Value.vi=?base64?...?=header valueSet Tool Title.vi,Set Tool Annotations.vi,Make Output Schema.vi,Make Output Property Schema.viList Control Elements.vi,Read Numeric Limits.vi,Make Schema Details.viAdd Readme Resource.viSend MCP request (headers).vi,JSON item equals.viCheck Modern MCP Request.vi— modifiedSame checks in the same order and the same answers; only the way the answer is picked changed (before: each check fed four parallel ladders of Select nodes).
Decode Header Value.videcodes a base64-encoded Mcp-Name header before it is compared withparams.name/params.uri.failedis index ≥ 0.refusedis false.datawith the supported and requested versions.The batch check, the response assembly and the merged and cleared JSONtext errors are unchanged.
Complete Tool Entry.vi— modifiedThe error case passes through as before; the other case is now a chain (before).
Set Tool Title.vireplaces the entry's title, or removes it when title is empty.Set Tool Annotations.viadds the hints that are set underannotations, nothing when none is set.Make Output Schema.vibuilds the outputSchema; for each output it callsMake Output Property Schema.vi, which merges the indicator's type schema over its MCP type and description, dropsdefault, and leaves out pictures and outputs without a terminal. Empty when no output qualifies.Add Control Details To Schema.vi— modifiedThe walk over the control and its elements is unchanged; its loop body now calls three subVIs (before).
List Control Elements.vilists the elements of a cluster (under.properties.<label>) or an array (under.items, once per dimension) to add to the work list.Read Numeric Limits.vigives minimum, maximum and unit note forintegerandnumberschemas (representation range, tighter data entry limits, unit).Make Schema Details.vibuilds the object of description, minimum, maximum and default, each only when there is one (default only for the control itself, when not required and at most 1024 characters).Added subVIs
Their diagrams are the code that was in the three VIs above, moved without changes in logic; every frame is under "All case frames" in the detailed report.
Decode Header Value.vi,Set Tool Title.vi,Set Tool Annotations.vi,Make Output Schema.vi,Make Output Property Schema.vi,List Control Elements.vi,Read Numeric Limits.vi,Make Schema Details.vi: private, inPrivate/SubVIsnext to their caller.Tests
Send MCP request (headers).vi(added): one POST with a block ofName: valueheader lines, returns status code, headers and body.JSON item equals.vi(added): finds one JSON path and compares it with the expected value.Verified
tools/ci/Invoke-CliTest.ps1): 64 tests passed, 0 failed.Run_Protocol_Tests_CLI.vi), LabVIEW 2020: 24 of 24 required checks passed, no advisory failures.tools/test/Test-McpServer.ps1against the Datalogger example running in LabVIEW 2020: 24 of 24 required checks passed (4 tools, 1 prompt, 1 resource), no advisory failures.Not verified
Known rough edges
Start Streamed Request,Read MCP Request Metadata,Set MCP Request ContextandPrepare Request Dispatch, which are wide but read left to right and were left as they are.Make Schema Detailsand the newCheck Modern MCP Requestare still the busiest of the new set.🤖 Generated with Claude Code