Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Oct 11, 2025

SmartHopper 1.0.0: Canvas Button, Component Badges & New Providers

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

  • Added support for Anthropic and OpenRouter, alongside MistralAI, OpenAI, and DeepSeek.

✨ 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! 🎨

…l to Infrastructure

- Introduce AIRequestBase and AIRequestCall
- Rename AIRequestBody→AIBody and IAIRequestBody→IAIBody
- Migrate AIToolCall from AITools to Infrastructure/AICall
- Update providers and Grasshopper tools to new API
- Tidy AIReturn/IAIRequest and adjust AIStatefulAsyncComponentBase logic
…eplace SpecialTypes.AIText with AIInteractionText across providers
marc-romu and others added 26 commits October 10, 2025 12:13
…ss providers (#321)

## Description

This PR focuses on improving the conversation session implementation and
tool calling across different AI providers, with particular attention to
WebChat UI consistency and reliability.

## Key Changes
- **Provider Fixes**
  - Fixed tool calling in DeepSeek, OpenRouter, and Anthropic providers
  - Centralized URL normalization and base URL handling
  - Added safety checks for tool call arguments

- **Conversation Session**
  - Unified internal loop for streaming and non-streaming paths
  - Fixed issues with streaming responses after tool calls
  - Improved interaction identification and key generation

- **WebChat UI**
  - Fixed message ordering and duplication issues
  - Enhanced message rendering with collapsible sections
  - Improved scrolling behavior and auto-scrolling
  - Better error handling for policy messages

- **Special Turns API**
  - New API for greeting generation in conversation sessions
  - Extensible design for future special turn types

## Technical Details
- Added `IAIKeyedInteraction` interface for standardized key calculation
- Improved interaction encoding/decoding in providers
- Enhanced error handling and validation
- Better separation of concerns between delta and partial events

## Breaking Changes

- Changed `AIProvider.DefaultServerUrl` from `string` to `Uri`
- Converted `InitializeProvider()` to async `InitializeProviderAsync()`
- Removed provider-level model fallback and wildcard resolution
- Updated WebChat message key generation
- Modified tool call validation and execution flow
- Updated internal conversation management APIs
- Added required `SelectModel()` to `IAIProvider`
- Removed direct access to some internal APIs
- Changed behavior of tool result processing
- Updated return types and error handling patterns

## Testing Done

- [x] Verified tool calling across all supported providers
- [x] Tested streaming and non-streaming conversation flows
- [x] Validated WebChat UI consistency
- [x] Verified special turn functionality

## Checklist

- [ ] This PR is focused on a single feature or bug fix
- [x] Version in Solution.props was updated, if necessary, and follows
semantic versioning
- [x] CHANGELOG.md has been updated
- [x] PR title follows [Conventional
Commits](https://www.conventionalcommits.org/en/v1.1.0/) format
- [x] PR description follows [Pull Request Description
Template](https://github.com/architects-toolkit/SmartHopper/blob/main/CONTRIBUTING.md#pull-request-description-template)
This PR updates the development version date in Solution.props to
reflect the latest changes.

This is an automated PR created by the Update Development Version Date
workflow.
This PR updates the version badge in the README.md to match the current
version in Solution.props.

This is an automated PR created by the Update Version Badge workflow.
## Description
Fixed an issue in the AIListFilter component where it was incorrectly
looking for an `indices` key in the tool result when the actual response
contains a `result` key. This was causing the component to return empty
results even when the AI successfully identified matching indices.

### Changes Made
- Updated AIListFilter.cs to read from `toolResult["result"]` instead of
`toolResult["indices"]`
- Added better error handling and debug logging
- Updated CHANGELOG.md to document the fix

### Testing Done
- Verified that the component correctly filters and returns items when
using text-based criteria
- Tested with various list filtering scenarios to ensure proper
functionality
- Confirmed that the debug logs now show the correct indices being
processed

## Breaking Changes
- None. This is a bug fix that maintains backward compatibility.

## Checklist

- [x] This PR is focused on a single feature or bug fix
- [x] Version in Solution.props was updated, if necessary, and follows
semantic versioning
- [x] CHANGELOG.md has been updated
- [x] PR title follows [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) format
- [x] PR description follows [Pull Request Description
Template](#pull-request-description-template)
## Description

This PR updates the documentation in preparation for the 1.0.0-alpha
release. The changes include:

- Added video links to showcase functionality
- Updated logo and branding
- Added link to the project webpage
- Added workflow to automatically set the "ready-to-use" badge to YES
when a milestone is closed

## Breaking Changes

No breaking changes - this is a documentation-only update.

## Testing Done

- Verified all documentation links are working
- Confirmed the new workflow triggers correctly on milestone close
- Checked that the documentation renders correctly in the browser

## Checklist

- [x] This PR is focused on a single feature or bug fix
- [ ] Version in Solution.props was updated, if necessary, and follows
semantic versioning
- [ ] CHANGELOG.md has been updated
- [x] PR title follows [Conventional
Commits](https://www.conventionalcommits.org/en/v1.1.0/) format
- [x] PR description follows [Pull Request Description
Template](https://github.com/architects-toolkit/SmartHopper/blob/main/CONTRIBUTING.md#pull-request-description-template)
… fixes (#326)

This PR prepares the release for version 1.0.0-alpha with version update
and code style fixes:

- Updated version in Solution.props
- Updated changelog with closed-solved issues
- Updated README badges
@github-actions github-actions bot requested a review from marc-romu as a code owner October 11, 2025 16:27
@marc-romu marc-romu added this to the 1.0.0-alpha milestone Oct 11, 2025
@marc-romu marc-romu merged commit e38cbc6 into main Oct 11, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants