chore: update 263-compatibility-with-mac from dev#391
Merged
Conversation
… packages (#379) ## Description This release migrates all GhJSON-related code to external NuGet packages (`ghjson-dotnet`), simplifying the SmartHopper codebase and enabling independent development and versioning of the GhJSON library. The migration includes comprehensive API refactoring to use organized façade classes exclusively. ### Highlights - **GhJSON API Simplification**: All SmartHopper code now imports only `GhJSON.Core` and `GhJSON.Grasshopper` namespaces, removing deep namespace dependencies - **Façade Pattern**: Unified access points via `GhJson.*` and `GhJsonGrasshopper.*` static methods - **Serialization Options**: New factory methods `GhJsonGrasshopper.Options.Standard()`, `.Optimized()`, and `.Lite()` - **Script Components**: Centralized via `GhJsonGrasshopper.Script.*` methods - **Document Operations**: Unified via `GhJson.CreateDocument()`, `.Merge()`, `.Parse()`, `.Fix()`, `.IsValid()`, `.Serialize()` ### Tool-Specific Updates - `gh_get`: Delegates to `GhJsonGrasshopper.GetWithOptions()` with options factories and `ExtractRuntimeData()` - `gh_put`: Uses `GhJsonGrasshopper.Put()` with `PutOptions.PreserveExternalConnections` - `gh_merge`: Uses `GhJson.Merge()` façade - `gh_tidy_up`: Uses `GhJsonGrasshopper.Options.Standard()` - `gh_connect`: Delegates to `GhJsonGrasshopper.ConnectComponents()` - `script_edit`, `script_generate`: Use `GhJsonGrasshopper.Script.*` façade methods ### Additional Changes - Added annual automation to update copyright years in `src/**/*.csproj` and normalize C# license headers - Changed `ISelectingComponent` to use `IGH_DocumentObject` instead of `IGH_ActiveObject` to support scribble selection - Removed legacy `ScriptParameterSettingsParser.cs` (now in ghjson-dotnet façade) - Updated documentation and version to 1.3.0-dev ## Breaking Changes - **Internal refactoring only**: No public API changes for plugin consumers - Code that directly referenced internal GhJSON namespaces (e.g., `GhJSON.Core.Models.*`, `GhJSON.Grasshopper.Serialization.*`) must update to use façade methods ## Testing Done - Verified all AI tools function correctly with the new ghjson-dotnet integration - Tested serialization/deserialization round-trips via façade methods - Confirmed script component handling works with new `GhJsonGrasshopper.Script.*` API - Validated connection depth expansion and external connection preservation in `gh_get`/`gh_put` ## 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](https://github.com/architects-toolkit/SmartHopper/blob/main/CONTRIBUTING.md#pull-request-description-template)
This PR prepares the release for version 1.3.0-alpha with version update and code style fixes: - Updated version in Solution.props - Updated changelog with closed-solved issues - Updated README badges
…lity improvements (#383) # Description This PR implements comprehensive security enhancements and macOS compatibility improvements for SmartHopper: **Security Enhancements:** - Added SHA-256 hash verification system for AI provider DLLs to protect against tampered code - New "Verify Providers Hash" menu item for manual provider integrity verification - Comprehensive verification dialog with detailed status and hash comparison - Automatic hash generation during release workflow with public hash repository - Platform-appropriate security: Authenticode + hash verification on Windows, hash-only on macOS **macOS Compatibility:** - Fixed provider loading on non-Windows platforms by skipping unsupported Authenticode verification - Resolved URL handling issues that caused incorrect file:// URI generation - Fixed ComponentStateManager deadlocks by refactoring event firing outside state locks - Enhanced WebChatDialog to prevent crashes on macOS by using null baseUri for LoadHtml **UI Improvements:** - Enhanced About dialog with automatic version detection using new VersionHelper class - Added platform information display for better user support **Infrastructure:** - Added comprehensive input validation and sanitization to GitHub Actions - Created reusable GitHub Actions for build, hash calculation, and publishing - Refactored test workflows to user workflows with updated descriptions ## Breaking Changes No breaking changes. All changes are backward compatible and enhance existing functionality. ## Testing Done - Verified SHA-256 hash verification does not cause issues when hash file cannot be retrieved from the internet on Windows - Tested provider loading functionality on Windows platforms - Confirmed ComponentStateManager works well on Windows - Validated WebChatDialog works on Windows - Tested enhanced About dialog version detection Testing on MacOS is pending because I do not have any to try it on. ## 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.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 (#384) This PR prepares the release for version 1.4.0-alpha with version update and code style fixes: - Updated version in Solution.props - Updated changelog with closed-solved issues - Updated README badges
# SmartHopper 1.4.0: Enhanced Security and MacOS Compatibility This release introduces critical security enhancements with SHA-256 provider hash verification and significantly improves macOS compatibility, making SmartHopper more secure and accessible across platforms. ## 🔒 Provider Hash Verification Added comprehensive SHA-256 hash verification system for AI provider DLLs to enhance security across all platforms. The new verification system includes a "Verify Providers Hash" menu item for manual integrity checks, automatic hash generation during release workflows, and multi-tier verification with graceful degradation when hashes are unavailable. ## 🖥️ Enhanced About Dialog Improved About dialog now automatically displays current SmartHopper version and platform information using the new VersionHelper class, providing users with clear system information at a glance. ## 🍎 macOS Compatibility Improvements Significant enhancements for macOS users including provider loading support on non-Windows platforms with appropriate security warnings, fixed URL handling to prevent incorrect file:// URI generation, and resolved component state management deadlocks by reorganizing event firing patterns. ## 🔧 Settings and Encryption Fixed first-time initialization to use EncryptionVersion 2 by default, which stores a local hash for secrets encryption, improving the security of stored API keys and sensitive configuration data. ## 🛡️ Security Enhancements Enhanced provider security with SHA-256 hash verification system to protect against tampered provider DLLs, implementing platform-appropriate security measures with Authenticode + hash verification on Windows and hash verification on macOS. ## 🛠️ Technical Requirements - Rhino 8.24 or above is required - Windows 10/11 (macOS compatibility improved) - Valid API keys for MistralAI, OpenAI or DeepSeek ##⚠️ Important Notes - This release includes significant security improvements for provider verification - macOS compatibility has been substantially improved - API keys are required, and usage costs apply based on your provider - Some features may still be subject to change in future releases ## 🤝 We Value Your Feedback! Help shape SmartHopper's future by: - Sharing your experiences with the new security features - Reporting any macOS compatibility issues via our [issues](https://github.com/architects-toolkit/SmartHopper/issues) - Suggesting improvements via our [discussion](https://github.com/architects-toolkit/SmartHopper/discussions) - Telling us what security features would help your workflow most We hope you enjoy these enhanced security and compatibility improvements! Happy designing! 🎨
…r list - Changed platform requirements from "MacOS has not been tested" to official macOS support - Added Anthropic and OpenRouter to the list of supported AI providers
- Added publish-to-github-pages composite action with comprehensive input validation and error handling
- Implemented version-specific hash manifest publishing to `.github/pages/hashes/{version}.json`
- Added auto-detection of stable vs prerelease versions for `latest.json` updates
- Created dynamic HTML index page with version listing via GitHub API
- Replaced deprecated upload-release-asset action with softprops/action-gh-release
…lease workflow - Removed duplicate "Publish Hash Manifest to GitHub Pages" step - Removed deprecated upload-release-asset action for hash manifest upload - Kept single publish-to-github-pages action that handles both zip and hash manifest publishing
…o-github-pages action - Added hash file caching to runner temp directory before git operations - Prevents file loss during git stash/checkout operations that may remove the hash file - Updated hash file path to use cached version for subsequent operations
…and deployment steps - Renamed publish-to-github-pages action to generate-github-pages - Removed git operations from generation action (checkout, commit, push) - Removed github-token input requirement from generation action - Created new publish-github-pages action using actions/upload-pages-artifact - Added separate deploy-pages job in release workflow with GitHub Pages environment - Updated pages directory structure to use .github/pages with
…ges index - Added versions.json manifest generation in generate-github-pages action - Manifest includes version metadata (name, version, isLatest, isStable, url) - Versions are pre-sorted in manifest (latest first, then descending by version) - Updated index.html to fetch versions from manifest instead of GitHub API - Removed GitHub API dependency and simplified client-side JavaScript - Improved page title
…merge
- Modified generate-github-pages action to copy all hash files from repository /hashes folder before adding current version
- Added step in release-4-build workflow to commit hash files to repository via PR
- Hash files are committed to /hashes/{version}.json with auto-merge PR creation
- Removed inline GitHub Pages deployment from release-4-build workflow
- Created new release-5-deploy-pages workflow triggered on hash PR merge
…le in release workflow - Replaced multi-line bash-style PR body with PowerShell variable assignment - Fixed line breaks using PowerShell backtick-n escape sequence - Consolidated gh pr create command into single line with variable reference
…hash PR creation - Added pull-requests: write permission to workflow - Wrapped PR creation and auto-merge in try-catch block for proper error handling - Added explicit success/warning messages with checkmarks - Exit with error code 1 if PR creation fails to prevent silent failures
chore: add provider hash manifest for version 1.4.0-alpha Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…ployment workflow - Changed fetch-depth from 1 to 0 in checkout action - Ensures complete git history is available for accurate version detection
…les from repository folder - Removed version-specific inputs (hash-file, version, update-latest) from generate-github-pages action - Changed action to process all hash files from hashes folder instead of single version - Automatically determine latest version from all hash files (prioritize stable over prerelease) - Move latest.json and versions.json to pages root directory instead of hashes subdirectory - Updated release-5-deploy-pages workflow
chore: add provider hash manifest for version 1.4.0-alpha Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
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.
No description provided.