Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
ebe5956
feat(ai-tools): new gh-connect gh-generate rhino-get-geometry and rhi…
marc-romu Oct 13, 2025
e69a3ac
feat(ai-tools): improved scripting tools and new script_edit tool
marc-romu Oct 13, 2025
9796cd9
chore: remove dev-ready-badge-reset workflow file from GitHub Actions
marc-romu Oct 14, 2025
7cc32c6
feat: add manual version override option for Yak upload workflow
marc-romu Oct 14, 2025
c84c035
docs: add hotfix workflow
marc-romu Oct 14, 2025
222e596
chore: bump version to 1.0.2-dev.251014
marc-romu Oct 14, 2025
6e419bf
ci: update github workflows (#344)
marc-romu Oct 14, 2025
1c30b15
docs: update version badge for dev
actions-user Oct 14, 2025
3132d1b
docs: update version badge for dev to 1.0.2-dev.251014 (#345)
marc-romu Oct 14, 2025
77cde05
refactor(grasshopper-utils): full reorganization - phase 1
marc-romu Oct 14, 2025
7a77871
refactor(grasshopper-utils): full reorganization - phase 2
marc-romu Oct 14, 2025
34758cb
refactor(grasshopper-utils): full reorganization - phase 3
marc-romu Oct 14, 2025
8180052
feat: add test project with 20+ unit tests for AI response parsing an…
marc-romu Oct 14, 2025
2061a6d
chore
marc-romu Oct 15, 2025
576be95
docs(ghjson): documentation for new ghjson schema
marc-romu Oct 15, 2025
d5ab7e8
feat: add document metadata support to gh_get with schema version and…
marc-romu Oct 15, 2025
52669b6
feat: implement group serialization and recreation in GhJSON format
marc-romu Oct 15, 2025
03a4bf3
fix: prevent infinite loop when creating groups by disabling undo and…
marc-romu Oct 15, 2025
b8ef92b
feat: implement data type serialization with registry and format stan…
marc-romu Oct 15, 2025
7d77060
feat: update geometric data type serialization formats and add parame…
marc-romu Oct 20, 2025
1ab8c28
feat: implement enhanced GhJSON schema with consolidated component pr…
marc-romu Oct 20, 2025
d6e671d
feat: add persistence for selected objects in SelectingComponentBase …
marc-romu Oct 20, 2025
ad7f548
feat: implement property management v2 with context-aware filtering a…
marc-romu Oct 20, 2025
c2f9c57
feat: use integer IDs instead of GUIDs for connection serialization a…
marc-romu Oct 20, 2025
20c556f
docs and selecting fix
marc-romu Oct 20, 2025
489392c
docs: chore documentation files
marc-romu Oct 20, 2025
29eeed2
refactor: rename AIOptimized context to Standard and remove unused pr…
marc-romu Oct 20, 2025
b0de51a
test: remove PropertyManager tests
marc-romu Oct 20, 2025
a2e8b31
refactor: simplify GhJSON format by removing properties field and uni…
marc-romu Oct 22, 2025
61023a0
refactor: simplify component properties and enhance state serializati…
marc-romu Oct 22, 2025
32b22bf
refactor: improvements in scripting tools
marc-romu Oct 22, 2025
4fc2360
chore: update Rhino and Grasshopper dependencies from 8.19 to 8.24
marc-romu Oct 22, 2025
193f342
refactor: use reflection for LanguageSpec to support cross-platform c…
marc-romu Oct 22, 2025
1ed78d4
feat: add centralized sanitization utilities and tests
marc-romu Oct 27, 2025
1181dc0
feat: migrate from DocumentIntrospection to new serialization system
marc-romu Oct 27, 2025
f1020d0
feat: enhance McNeel forum tools search and summarization
marc-romu Nov 2, 2025
bbee4d7
fix: prevent null reference when processing script language type
marc-romu Nov 2, 2025
10f84a4
docs: consolidate GhJSON documentation structure
marc-romu Nov 6, 2025
36cca4d
fix: several issues in serialization and deserialization
marc-romu Nov 6, 2025
630db38
fix: several issues in serialization and deserialization of script co…
marc-romu Nov 6, 2025
3080459
Merge branch 'feature/1.1.0-new-ai-tools' of https://github.com/archi…
marc-romu Nov 6, 2025
faf5ffe
feat: improve script component serialization and deserialization
marc-romu Nov 9, 2025
72cede2
feat: implement VB Script 3-section serialization with parameter mana…
marc-romu Nov 9, 2025
d29ab93
feat: add script and param modifier system
marc-romu Nov 9, 2025
67e330b
refactor: reorganize AI tool categories for better organization
marc-romu Nov 9, 2025
410c9a6
docs: update AI tools documentation and bug report template
marc-romu Nov 9, 2025
fed1d35
refactor: rename parameter data mapping tools for clarity
marc-romu Nov 10, 2025
cb31348
fix: update script component GUIDs to match Grasshopper runtime values
marc-romu Nov 10, 2025
ac96194
refactor: reorganize AI tool categories for testing
marc-romu Nov 10, 2025
d7355f1
feat: add AI script component tools for creation, editing, and review
marc-romu Nov 16, 2025
74d9039
feat: add web and McNeel forum knowledge retrieval components
marc-romu Nov 16, 2025
5ee5efd
refactor: rename AI tools for component preview and lock operations
marc-romu Nov 16, 2025
0c90716
refactor: consolidate script creation and editing into unified script…
marc-romu Nov 19, 2025
236ee44
refactor: simplify mcneel_forum_search tool to return raw results only
marc-romu Nov 22, 2025
d22f8c4
feat: add McNeel forum topic summarization and enhance post summariza…
marc-romu Nov 22, 2025
919be33
feat: add McNeel forum topic related component and update component i…
marc-romu Nov 22, 2025
758004e
refactor: simplify McNeel forum summarization components to output on…
marc-romu Nov 22, 2025
fc04387
refactor: disable untested AI tools by prefixing filenames with under…
marc-romu Nov 22, 2025
25eb3a1
refactor: standardize data processing with RunProcessingAsync and Pro…
marc-romu Nov 23, 2025
e3c7d87
refactor(dataprocessing): centralize processing options and update co…
marc-romu Nov 23, 2025
513f7a4
refactor: update component GUIDs for DataTreeProcessor test components
marc-romu Nov 23, 2025
a1a8dd3
refactor: update DataTreeProcessor test components to use CalculatePr…
marc-romu Nov 23, 2025
bbd075c
docs: add comprehensive data-tree processing schema documentation
marc-romu Nov 23, 2025
6e9caa6
refactor: new DataTreeProcessor flat tree broadcasting
marc-romu Nov 23, 2025
5fac619
refactor: fix flat tree broadcasting to exclude self-tree from topolo…
marc-romu Nov 23, 2025
b847e94
feat: add mistral-small and mistral-medium model variants to MistralA…
marc-romu Nov 23, 2025
aba0fb4
refactor: extract system prompts and user prompt templates to readonl…
marc-romu Nov 23, 2025
7f68cc8
chore: bump version to 1.1.0-dev.251123
marc-romu Nov 23, 2025
9225de1
feat: enhance web_generic_page_read with dedicated support for Wikipe…
marc-romu Nov 23, 2025
5ce68fa
refactor: remove mcneel_forum_topic_related tool and component
marc-romu Nov 23, 2025
04c8f8f
chore: update video-installation thumbnail
marc-romu Nov 23, 2025
70051c7
docs: add system requirements section to README
marc-romu Nov 23, 2025
7ff7c9d
refactor: remove AIScriptGenerator and AIScriptReview components and …
marc-romu Nov 23, 2025
5fefee5
docs: update README badge to ready_to_use YES and set McNeel Forum Po…
marc-romu Nov 23, 2025
e137669
docs: improve AI tool descriptions with usage guidance and workflow r…
marc-romu Nov 23, 2025
2ce30b1
Merge branch 'dev' into feature/1.1.0-new-ai-tools
marc-romu Nov 23, 2025
db8ac4b
docs: remove trailing whitespace from markdown and code files
marc-romu Nov 23, 2025
c88eb28
test: remove ParseIndicesFromResponse_JsonArrayUnsorted_ReturnsSorted…
marc-romu Nov 23, 2025
6fe4b16
feat(core): add AI knowledge tools and GhJSON/property management v2 …
marc-romu Nov 23, 2025
8ecc024
chore: prepare release 1.1.0-alpha with version update and code style…
actions-user Nov 23, 2025
fa14ae6
chore: prepare release 1.1.0-alpha with version update and code style…
marc-romu Nov 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ body:
attributes:
label: Rhino Version
description: What version of Rhino are you using?
placeholder: e.g. RH8.23
placeholder: e.g. RH8.25
validations:
required: true

Expand All @@ -44,7 +44,7 @@ body:
attributes:
label: SmartHopper Version
description: What version of SmartHopper are you using?
placeholder: e.g. 1.0.0-alpha
placeholder: e.g. 1.1.0-alpha
validations:
required: true

Expand Down
4 changes: 2 additions & 2 deletions .github/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@
- name: "component: AI ScriptReview"
color: "000"
description: "Issues related to the AI Script Review component"
- name: "component: AI ScriptGenerate"
- name: "component: AI ScriptGenerator"
color: "000"
description: "Issues related to the AI Script Generate component"
description: "Issues related to the AI Script Generator component"
- name: "component: AI ListEvaluate"
color: "000"
description: "Issues related to the AI List Evaluate component"
Expand Down
179 changes: 179 additions & 0 deletions .github/workflows/HOTFIX_WORKFLOW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
# 🔥 Hotfix Workflow Guide

This guide explains how to create and release hotfixes for production issues that need immediate attention, bypassing the normal dev branch workflow.

## Overview

The hotfix workflow allows you to:

- Branch directly from `main` for emergency fixes
- Increment only the patch version (X.X.**Z**)
- Create a release without waiting for the next milestone
- Merge directly to `main` without going through `dev`

## When to Use Hotfixes

Use the hotfix workflow for:

- **Critical bugs** in production
- **Security vulnerabilities** requiring immediate patches
- **Data loss** or corruption issues
- **Breaking functionality** that affects users

**Do NOT use for:**

- Regular feature development (use `dev` branch)
- Non-critical bug fixes (wait for next milestone)
- Improvements or enhancements

## Workflow Steps

### Step 1: Create Hotfix Branch

1. Go to **Actions** → **🔥 0 Create Hotfix Branch**
2. Click **Run workflow**
3. Enter a brief description (e.g., `fix-null-reference-crash`)
4. Click **Run workflow**

This creates a branch: `hotfix/X.X.X-description` (e.g., `hotfix/1.2.5-fix-null-reference-crash`)

### Step 2: Make Your Changes

1. Checkout the newly created `hotfix/X.X.X-description` branch
2. Make your fix
3. Commit and push your changes
4. **Test thoroughly** - this will go directly to production!


### Step 3: Prepare Hotfix Release

1. Go to **Actions** → **🔥 1 Prepare Hotfix Release**
2. Select the `hotfix/X.X.X-description` branch
3. Click **Run workflow**

This workflow will:
- Create a `release/X.X.X-hotfix-description` branch
- Update version in `Solution.props`
- Update `CHANGELOG.md` with release notes
- Update README badges
- Create a PR to `main` with priority label

### Step 4: Review and Merge PR

1. Review the PR created by the workflow
2. Ensure all validations pass:
- ✅ Version Check
- ✅ Code Style Check
- ✅ Using Directives Check
- ✅ Changelog Check
- ✅ .NET CI Tests
3. Merge the PR to `main`


### Step 5: Automatic Release (Triggered on Merge)

Once merged to `main`, the following happens automatically:

1. **🏁 3 Create Release** - Creates a GitHub Release (draft)
2. **🏁 4 Build Project** - Builds the project and attaches artifacts
3. **🏁 5 Upload to Yak** - Publishes to Yak package manager


### Step 6: Sync Changes Back to Dev

After the hotfix is released, you should sync the changes back to `dev`:

#### Option A: Cherry-pick (Recommended)

```bash
git checkout dev
git cherry-pick <hotfix-commit-sha>
git push origin dev
```

**Option B: Merge main into dev**
```bash
git checkout dev
git merge main
git push origin dev
```

#### Option C: Manual PR

Create a PR from `main` to `dev` with the hotfix changes.

## Version Numbering

Hotfixes increment the **patch** version:

- Current main version: `1.2.4`
- Hotfix version: `1.2.5`

### Automatic Conflict Resolution

The workflow automatically handles version conflicts:

**Milestone Conflicts:**

- All open milestones with patch ≥ hotfix patch (same major.minor) are incremented
- Milestones are updated from highest to lowest to prevent collisions
- Each milestone shifts up by one patch version
- Example with hotfix `1.0.1`:
- `1.0.3` → `1.0.4`
- `1.0.2` → `1.0.3`
- `1.0.1` → `1.0.2`

**Dev Branch Conflicts:**

- If dev branch has version `1.2.4` or `1.2.5` (≤ hotfix patch)
- A PR is created to update dev to `1.2.6` (next patch after hotfix)
- Solution.props and README.md are automatically updated in the PR
- Branch: `chore/bump-dev-version-for-hotfix-X.X.X`
- You'll need to review and merge this PR separately
- Example: Dev `1.2.4-alpha.1` → `1.2.6-alpha.1`

## Workflow Files

- **hotfix-0-new-branch.yml** - Creates hotfix branch from main
- **hotfix-1-release-hotfix.yml** - Prepares release branch and PR
- **release-3-pr-to-main-closed.yml** - Creates GitHub Release (existing)
- **release-4-build.yml** - Builds and uploads artifacts (existing)
- **release-5-upload-yak.yml** - Publishes to Yak (existing)


## Validations

All PRs to `main` (including hotfixes) run:

- Version format validation
- Code style checks
- Using directives validation
- Changelog update verification
- .NET build and tests


## Comparison with Regular Release

| Aspect | Regular Release | Hotfix Release |
|--------|----------------|----------------|
| **Source Branch** | `dev` | `main` |
| **Trigger** | Milestone close | Manual workflow |
| **Version Increment** | Major/Minor/Patch | Patch only |
| **Target Branch** | `dev` → `main` | `main` directly |
| **Use Case** | Planned features | Emergency fixes |
| **Testing** | Full QA cycle | Rapid validation |

## Example Scenario

**Problem:** Users report a crash when opening settings dialog.

**Solution:**

1. Run **🔥 0 Create Hotfix Branch** with description: `fix-settings-dialog-crash`
2. Branch created: `hotfix/1.2.5-fix-settings-dialog-crash`
3. Fix the bug in `SettingsDialog.cs`
4. Commit: `fix: prevent null reference in settings dialog initialization`
5. Run **🔥 1 Prepare Hotfix Release**
6. Review and merge PR to `main`
7. Release `1.2.5` is automatically created and published
8. Cherry-pick fix back to `dev` branch
Loading
Loading