Skip to content

Releases: architects-toolkit/SmartHopper

SmartHopper 1.2.2-alpha: Enhanced Performance and Stability [Patch]

27 Dec 15:41
fcc55c8

Choose a tag to compare

  • Component Stability: Promoted StatefulComponentBaseV2 to default stateful base, ensuring more reliable component behavior
  • Chat Performance: Optimized DOM updates with keyed queuing, template caching, and LRU diffing to reduce redundant work on large chats
  • Streaming Visuals: Removed heavy animations and switched to lighter wipe-in effects for better responsiveness during message streaming
  • UI Freeze Prevention: Reduced WebChat dialog freezes while dragging/resizing by throttling DOM updates and processing in smaller batches
  • Token Optimization: Simplified CanvasButton assistant system prompt to reference instruction tools instead of embedding long guidelines
  • Selection Context: Enhanced selection counting with Rhino UI thread reading and robust Attributes.Selected fallback
  • Tool Instructions: Added instruction_get tool to provide detailed operational guidance on demand
  • Memory Efficiency: Reduced idempotency cache size from 1000 to 100 entries to lower memory footprint
  • DeepSeek Fixes: Resolved deepseek-reasoner model failures and duplicated reasoning display issues
  • Message Display: Fixed user messages not appearing in chat UI and improved turn-based metrics aggregation

Full Changelog: 1.2.1-alpha...1.2.2-alpha

SmartHopper 1.2.1-alpha: Runtime data snapshots & script canvas wrappers [Patch]

07 Dec 09:11
4650419

Choose a tag to compare

This patch release focuses on richer inspection of Grasshopper definitions (including runtime data snapshots), smoother script component workflows, and small but important chat and UI fixes.

Detailed list of changes

  • Added new script wrapper tool script_generate_and_place_on_canvas that generates a Grasshopper script component and places it on the canvas in a single call, simplifying chat workflows and reducing token usage.
  • Updated script tools so the low-level script_generate / script_edit tools are hidden from chat (still available via AIScript components) while wrapper tools handle full generate-and-place / edit-and-replace flows.
  • Changed script generation behavior so script_generate no longer returns a pre-placement instanceGuid; instead, wrapper tools now report the real instanceGuid assigned by Grasshopper after placement.
  • Enhanced gh_get to optionally include snapshots of runtime/volatile data (branch counts, item counts, and sample values) for inputs and outputs, enabling richer debugging and inspection.
  • Added specialized gh_get variants such as gh_get_selected_with_data, gh_get_by_guid_with_data, and gh_get_errors_with_data to retrieve focused subsets of the document together with their runtime data.
  • Improved gh_put tool results by returning an instanceGuids array with the actual GUIDs of components placed on the canvas, making follow-up queries and wiring much easier.
  • Relaxed GhJSON validation so documents without any connections are treated as valid (missing connections is now considered an empty list instead of an error).
  • Fixed a chat UI bug where sending the same user message twice could cause one message to be collapsed; each user message now gets a unique turn ID and shows correctly in the conversation.
  • Improved conversation session turn handling so tool results inherit the correct turn ID from their tool calls, leading to accurate per-turn metrics aggregation in the UI.
  • Refined dialog positioning so StyledMessageDialog windows open centered on the Rhino/Eto main window for a more predictable and polished user experience.

What's Changed

  • feat(tools): add runtime data getters and script canvas placement wrappers by @marc-romu in #359

Full Changelog: 1.2.0-alpha...1.2.1-alpha

SmartHopper 1.2.0-alpha: Script Components Unleashed

06 Dec 20:55
d4b3cc1

Choose a tag to compare

This alpha release focuses on powerful AI-assisted scripting workflows, GhJSON merge/edit tools, and clearer on-canvas guidance—so you can create, review, and refine Grasshopper scripts in seconds.

🧠 AI-powered scripting workflows

Create powerful scripts in seconds. Let AI write, review, and refine your code following your instructions.

  • New GhJSON-based script tools:
    • script_generate and script_edit now operate directly on GhJSON for Grasshopper script components.
    • script_edit_and_replace_on_canvas combines editing and placement in a single tool call, reducing token usage and simplifying workflows.
  • Rich parameter and modifier support:
    • Full control over dataMapping (Flatten/Graft), reverse, simplify, invert, isPrincipal, required, and expression for inputs.
    • Output parameters gain matching support for dataMapping, reverse, simplify, and invert.
  • Smarter script validation:
    • ScriptCodeValidator flags non-RhinoCommon geometry libraries (e.g. System.Numerics, UnityEngine, numpy, shapely) and helps the AI auto-correct them.
    • script_generate and script_edit include a validation retry loop that detects invalid geometry patterns and re-prompts the AI with correction instructions.
    • System prompts are enriched with RhinoCommon-specific and language-specific (Python/IronPython/C#/VB.NET) guidance, imports, and type mappings.
  • Updated script components:
    • AIScriptGeneratorComponent now orchestrates script_generate / script_edit with gh_get / gh_put, exposing GhJSON, Guid, Summary, and Message outputs for better inspection.
    • AIScriptGeneratorComponent and AIScriptReviewComponent no longer require a Guid input—the target component is selected with the on-canvas button.
    • Both components now support processing multiple inputs in parallel.
    • The legacy script_fix tool has been renamed to script_review to better reflect its review-first behavior.

🧩 GhJSON merge & document tooling

  • New GhJSON helpers and merge workflows:
    • GhJsonHelpers simplifies applying pivots and restoring InstanceGuids on deserialized components.
    • GhJsonMerger merges two GhJSON GrasshopperDocument instances with automatic ID remapping and conflict resolution.
    • New gh_merge AI tool returns merged GhJSON plus merge statistics (components / connections / groups added or deduplicated).
    • New GhMergeComponents Grasshopper component (“Merge GhJSON”) lets you merge two GhJSON documents directly on canvas.
  • Smarter document extraction:
    • gh_get gains a categoryFilter parameter so you can focus AI workflows on specific component or object categories.

🎛️ Canvas UX & component UI improvements

  • Dialog-to-canvas link visualization:
    • Dialogs such as script editors can now visually link to a Grasshopper component using a bezier curve and anchor dot, mirroring the native script editor anchor experience.
    • StyledMessageDialog (ShowInfo, ShowWarning, ShowError, ShowConfirmation) accepts optional linkedInstanceGuid and linkLineColor parameters to enable this linking.
  • Enhanced component badges and selection UI:
    • AI-selecting stateful components now show a combined UI: the “Select” button plus provider/model badges in a single, clear block.
    • Selecting components use the dialog link line color for hover highlights and draw a connector line from the selection center to the “Select” button.
  • Canvas and visual polish:
    • The Canvas button prompt has been improved to guide users toward in-viewport scripting workflows and avoid unnecessary external code blocks or testing patterns.
    • Component icons have been refreshed, including outlined variants for McNeel forum and script components, and a new ghmerge icon with updated ghget / ghput icons aligned to the merge workflows.

🧬 Model guidance & provider updates

  • Model compatibility badges:
    • New “Not Recommended” badge (orange octagon with exclamation mark) appears when a chosen model is discouraged for the tools used by a component.
    • AIModelCapabilities now exposes DiscouragedForTools, and AIStatefulAsyncComponentBase exposes UsingAiTools and EffectiveRequiredCapability to drive badge logic.
    • The “Not Recommended” badge suppresses the “Verified” badge so you always see the most important status first.
  • Provider improvements:
    • Anthropic provider adds the Claude Opus 4.5 model to the registry.
    • OpenRouter gains structured-output support for JsonOutput requests and now populates finish_reason and model in metrics for chat completions.

🐞 Stability & quality-of-life fixes

  • Chat and UI reliability:
    • Chat UI now displays accurate, aggregated token metrics per turn (from user message to next user message), including tool calls and tool results.
    • ConversationSession exposes GetTurnMetrics(turnId) to aggregate metrics across interactions in a turn.
    • Tool results now inherit the correct TurnId, ensuring proper grouping and reporting.
    • Web chat dialogs are created as owned tool windows of the Rhino main Eto window, stay on top of Rhino while active, and behave correctly when confirmation dialogs appear.
  • GhJSON and scripting robustness:
    • gh_put no longer enters infinite loops when replacement mode is active and no longer hits “object expired during solution” errors; replacement now uses IsolateObject() for safe cleanup and undo support.
    • GhJSON-based script tools have updated schemas requiring nickname, preventing crashes with OpenAI structured output mode.
  • Additional minor fixes and refinements:
    • Numerous edge cases in script and GhJSON workflows have been smoothed out to make multi-step AI flows more predictable and resilient.

🛠️ Technical Requirements

  • Rhino 8.19 or above is required
  • Windows 10/11 (macOS has not been tested)
  • Valid API keys for MistralAI, OpenAI or DeepSeek

⚠️ Important Notes

  • This is an alpha release with some features still unstable or subject to change
  • API keys are required, and usage costs apply based on your provider
  • Documentation is currently under development

🤝 We Value Your Feedback!

Help shape SmartHopper's future by:

  • Sharing your experiences with the new scripting workflows and GhJSON tools
  • Suggesting improvements via our discussion
  • Telling us what AI capabilities would help your workflow most

We hope you enjoy these new features and improvements!

Happy designing! 🎨


What's Changed

  • feat(script-tools): add GhJSON-based script tools, merge workflows, and message-boxes to canvas linking by @marc-romu in #354
  • feat(scripting): enhance script tools, model compatibility, and docs by @marc-romu in #355

Full Changelog: 1.1.1-alpha...1.2.0-alpha

SmartHopper 1.1.1-alpha: Provider model updates [Patch]

24 Nov 13:16
743ab52

Choose a tag to compare

This patch focuses on AI provider registry and capability alignment, bringing clearer model identifiers and safer defaults across Anthropic and OpenAI.

Detailed list of changes:

  • Anthropic:

    • Added explicit dated model identifiers for Claude 3.x/4.x while keeping shorthand names.
    • Switched default text/tool/json model to claude-haiku-4-5 for faster, cost‑effective defaults.
    • Enabled structured‑output (beta) for Sonnet 4.5 and Opus 4.1, and restricted Text2Json capability to those models for reliability.
  • OpenAI:

    • Updated model registry to include the GPT‑5.1 series.

Full Changelog: 1.1.0-alpha...1.1.1-alpha

SmartHopper 1.1.0-alpha: Smarter GhJSON & knowledge tools

23 Nov 23:27

Choose a tag to compare

This alpha release focuses on a modern GhJSON/property system and powerful knowledge tools for McNeel forum and web—plus foundational scripting improvements that prepare SmartHopper for richer script workflows in future releases.

🌐 Knowledge tools for McNeel forum, web & Rhino files

  • McNeel forum AI tools:
    • mcneel_forum_search with configurable result limits and raw JSON post payloads.
    • mcneel_forum_post_get (renamed from web_rhino_forum_read_post) to fetch full posts by ID.
    • mcneel_forum_post/topic_summarize to generate AI‑powered summaries of forum threads.
  • web_generic_page_read now returns clean, context‑aware text for:
    • Wikipedia/Wikimedia, Discourse forums, GitHub/GitLab file URLs, and Stack Exchange questions via official APIs.

📦 Modern GhJSON & Property Management V2

  • New PropertyManagerV2 architecture with:
    • Clear separation of filtering, extraction, and application.
    • PropertyFilter, PropertyHandlers, PropertyFilterConfig, SerializationContext, and ComponentCategory for precise, scenario‑aware property control.
  • GhJSON optimization:
    • Groups only include members that are part of the current selection.
    • Runtime‑only properties (VolatileData, IsValid, ReferenceID, IsGeometryLoaded, etc.) are removed to keep JSON compact.
    • Fixed contradictory whitelist/omit rules and simplified ComponentProperty (removed Type and HumanReadable).
  • Enhanced GhJSON schema:
    • Rich parameter metadata: parameterName, dataMapping, simplify, reverse, invert, unitize, expression, variableName, isPrincipal, locked.
    • Unified value property for component state across sliders, panels, scribbles, scripts, and value lists.
    • Extended component schema with Id, Params, InputSettings, OutputSettings, and ComponentState.
    • Removed redundant/implicit fields (expressionContent, access, description, optional, type/object metadata).
    • BREAKING: The enhanced schema is now the default for all gh_get and gh_put operations, with legacy Pivot preserved for positioning compatibility.

🧠 Preparing advanced scripting workflows

  • Lays the groundwork for future scripting-focused releases with robust VB Script and script component handling:
    • Full 3‑section VB Script serialization/deserialization (imports, script, additional) with a dedicated VBScriptCode model and vbCode support in ComponentState.
    • GhJSON now extracts and restores VB Script code via ScriptSource properties (UsingCode, ScriptCode, AdditionalCode) using reflection.
  • Script components implement IGH_VariableParameterComponent for reliable dynamic parameter creation/removal:
    • Parameter settings applied via CreateParameter/DestroyParameter and VariableParameterMaintenance() with names, optional flags, and modifiers.
  • All script parameters and code operations are wrapped in RhinoApp.InvokeOnUiThread() to keep the Rhino/Grasshopper UI responsive and stable.
  • A new unified script_generator AI tool replaces legacy script_new and script_edit, creating or editing script components from natural language and optional component GUIDs—forming the base for richer scripting assistants in upcoming versions.

🧪 Reliability, workflows & test coverage

  • Utility helpers for centralized Grasshopper/Rhino operations:
    • GHConnectionUtils, GHGenerateUtils, RhinoFileUtils, RhinoGeometryUtils.
  • SelectingComponentBase now persists selected objects across file save/load, including restored selection counts and graceful handling of missing objects.
  • New SmartHopper.Core.Grasshopper.Tests project:
    • 40+ AIResponseParserTests covering complex parsing and edge cases.
    • 30+ PropertyManagerTests validating type conversion and persistent data behavior.
  • Hotfix workflow system:
    • Automated hotfix branch creation, version bumping, conflict‑safe milestone updates, and fully documented hotfix pipelines.
    • Extended CI validations and test workflows for hotfix/** and release/** branches.

🛠️ Technical Requirements

  • Rhino 8.24 or above is required
  • Windows 10/11 (macOS has not been tested)
  • Valid API keys for at least one supported AI provider (MistralAI, OpenAI, DeepSeek, Anthropic, OpenRouter)

⚠️ Important Notes

  • This is an alpha release with some features still unstable or subject to change.
  • API keys are required, and usage costs apply based on your provider and model choices.
  • Documentation is actively evolving to cover the new GhJSON schema, scripting tools, and knowledge workflows.

🤝 We Value Your Feedback!

Help shape SmartHopper’s future by:

  • Sharing your experiences with the new GhJSON, scripting, and knowledge tools
  • Suggesting improvements via our discussions
  • Telling us what AI capabilities or workflows would help your Grasshopper/Rhino practice most

We hope you enjoy these new features and improvements!

Happy designing! 🎨


Full Changelog: 1.0.1-alpha...1.1.0-alpha

SmartHopper 1.0.1-alpha: Enhanced Model Support & Error Handling [Patch]

13 Oct 08:20
76ee13a

Choose a tag to compare

This patch release introduces significant improvements to model handling, error reporting, and tool usability, along with several important bug fixes.

Detailed list of changes:

  • Enhanced Model Support:

    • Added support for any model name, even if not explicitly listed in the provider's registry
    • Expanded the provider's database with more predefined models
  • Tooling Improvements:

    • Enhanced AI Tool descriptions with better guided instructions
    • Added specialized wrappers for common Grasshopper operations (selection, visibility, grouping, etc.)
    • Improved list_filter tool with better natural language support for filtering, sorting, and reordering
  • Bug Fixes:

    • Fixed model badge display to correctly show "invalid model" status (#332, #329)
    • Improved error message visibility in WebChat UI, especially for HTTP 400 and token limit errors (#334)
    • Fixed list_filter tool's automatic sorting and deduplication issues (#335)
  • Technical Improvements:

    • Centralized error handling in AIReturn and tool calls
    • Enhanced metric aggregation in Conversation Sessions
    • Improved error handling to ensure all error messages are properly surfaced to users

What's Changed

  • fix(model): bypass capability validation for unregistered models by @marc-romu in #330
  • fix(component): fix model badge display by @marc-romu in #336
  • fix(core): improve error handling in ConversationSession and metrics aggregation by @marc-romu in #337
  • fix(gh-get): specialized ai tools by @marc-romu in #339
  • fix(list-filter): prevent automatic sorting and deduplication of result indices by @marc-romu in #340
  • refactor(models): added more predefined models by @marc-romu in #341

Full Changelog: 1.0.0-alpha...1.0.1-alpha

SmartHopper 1.0.0-alpha: Canvas Button, Component Badges & New Providers

11 Oct 16:44
e38cbc6

Choose a tag to compare

This release introduces many exciting features; that's why the version is bumped to 1.0!! The Canvas button for a live assistance chat, component badges for model compatibility, new providers, and enhanced stability and security.

🎨 Canvas Button

  • New button on the top-left corner of your canvas to trigger an AI chat with SmartHopper Assistant.
  • Designed to help with Grasshopper tasks and equipped with tools for valuable information and basic tasks.
  • Can be hidden in settings if not needed.

🏷️ Component Badges

  • New badges display model compatibility with components before running them.
  • Green tick badge for verified models (gpt-5-mini from OpenAI and mistral-small-latest from MistralAI).
  • Blue badge indicates automatic replacement of incompatible models with compatible defaults.
  • Red badge indicating that no model was found compatible.

🤖 New Providers & Streaming Support

  • Added support for Anthropic and OpenRouter, alongside MistralAI, OpenAI, and DeepSeek.
  • Now all providers can stream live responses, if provided by the API

✨ Other Improvements

  • Internal improvements for stability and expandability.
  • Encrypted API keys with individualized keys for enhanced security.

🛠️ Technical Requirements

  • Rhino 8.19 or above
  • Windows 10/11 (macOS untested)
  • Valid API keys for chosen providers (OpenAI, MistralAI, DeepSeek, Anthropic, OpenRouter)

⚠️ Important Notes

  • Settings file will rewrite on the first run due to security enhancements. Save your API keys again if you encounter issues.
  • Image generation currently supports only OpenAI DALL·E models.
  • Automatic model fallback may override user-selected models to meet component requirements. You will see a blue badge on the component indicating that the model was replaced.
  • API usage costs apply based on your provider plan.

🤝 We Value Your Feedback!

  • Share your experiences and suggestions via the discussion forum
  • Report issues or request features on the issue tracker
  • Contribute to a better SmartHopper!

Happy designing! 🎨


What's Changed

  • test(infrastructure): add comprehensive unit tests for ModelManager and AIContextManager by @marc-romu in #295
  • feat(ui): add CanvasButton to trigger SmartHopper assistant dialog by @marc-romu in #297
  • refactor(settings): reorganize settings dialog into tabs and improve API key encryption by @marc-romu in #299
  • fix(core): prevent temp file leaks in ImageViewer and resolve wildcard model default issue by @marc-romu in #302
  • refactor(infrastructure): unify AI request/return schema and provider APIs; migrate tools and WebChat by @marc-romu in #309
  • refactor(model-manager): centralize model management and provider-scoped selection by @marc-romu in #312
  • feat(components): add model badges with hover labels and provider strip by @marc-romu in #314
  • feat(conversation): introduce ConversationSession; refactor AICall, streaming, validation, and model selection by @marc-romu in #315
  • feat(core-io): introduce safe versioned persistence (V2) by @marc-romu in #317
  • feat(providers,ui,infra): Anthropic/OpenRouter providers, WebChat WebView UI, policy pipeline + streaming by @marc-romu in #318
  • refactor(webchat): Enhance conversation session and tool calling across providers by @marc-romu in #321
  • fix(components): correct index parsing in AIListFilter component by @marc-romu in #324
  • docs: update documentation for 1.0.0-alpha release by @marc-romu in #325

Full Changelog: 0.5.3-alpha...1.0.0-alpha

SmartHopper 0.5.3-alpha: Fix script_new json schema [Patch]

20 Aug 09:11
27fe074

Choose a tag to compare

Fixes small json schema request issue with gpt-5 models in tool.

What's Changed

  • fix(script_new): incompatibility with gpt-5 json schema requirements by @marc-romu in #306

Full Changelog: 0.5.2-alpha...0.5.3-alpha

SmartHopper 0.5.2-alpha: First Initialization Fix [Patch]

12 Aug 08:13
442e543

Choose a tag to compare

This patch release resolves an issue of loading settings when the SmartHopper.json file is not available. This happened to everyone who installed the plugin for the first time. 😢

Detailed list of changes

  • fix(settings): invalid settings file initialization by @marc-romu in #303

Full Changelog: 0.5.1-alpha...0.5.2-alpha

SmartHopper 0.5.1: Chat Settings and Bug Fixes [Patch]

30 Jul 10:55
90f278e

Choose a tag to compare

This patch release adds a new chat setting for AI-generated greetings and resolves several bugs related to greeting logic, toggle behavior, provider initialization, and list generation.

Detailed list of changes:

  • Added a new setting (EnableAIGreeting) to enable or disable AI-generated greetings in chat.
  • Fixed greeting generation to fall back on the provider’s default model when no model is specified in AIUtils.GetResponse.
  • Fixed components using boolean toggles not reprocessing when the Run toggle remained persistently true.
  • Fixed race conditions in AI Provider Settings by introducing lazy default values during initialization.
  • Fixed list generation in the list_generate tool to correctly handle long requests and meet expected lengths (#277).

Full Changelog: 0.5.0-alpha...0.5.1-alpha