From 48fa69cf9e2c93d95fb6046477eb3c8d26da8b4d Mon Sep 17 00:00:00 2001 From: RahulHere Date: Fri, 20 Mar 2026 22:52:40 +0800 Subject: [PATCH 01/20] Release version 0.1.2 Prepare release v0.1.2: - Update Cargo.toml: version = "0.1.2" - Update CHANGELOG.md: [Unreleased] -> [0.1.2] - 2026-03-20 gopher-orch version: 0.1.2 Changes in this release: ### Added - Initial release of gopher-mcp-rust SDK - Rust bindings for gopher-orch native library via FFI - Runtime library loading using `libloading` crate - OAuth 2.0 authentication support (feature-gated with `auth` feature) - MCP (Model Context Protocol) client implementation - GopherAgent for AI agent orchestration - ConfigBuilder for client configuration - Auth example server with Axum web framework ### Features --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68e2da72..8e476216 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2] - 2026-03-20 + ### Added - Initial release of gopher-mcp-rust SDK - Rust bindings for gopher-orch native library via FFI @@ -21,6 +23,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `default` - Core functionality without auth - `auth` - OAuth 2.0 token validation via native library + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2...HEAD +[0.1.2]: https://github.com/GopherSecurity/gopher-mcp-rust/releases/tag/v0.1.2 From f4a6dca895909cd08714c8af3bd65381843ebe91 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:04:20 +0800 Subject: [PATCH 02/20] Release version 0.1.2.1 Prepare release v0.1.2.1: - Update Cargo.toml: version = "0.1.2.1" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.1] - 2026-03-21 gopher-orch version: 0.1.2 Changes in this release: --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e476216..53820324 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.1] - 2026-03-21 + ## [0.1.2] - 2026-03-20 ### Added @@ -24,7 +26,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `auth` - OAuth 2.0 token validation via native library + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.1...HEAD +[0.1.2.1]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2...v0.1.2.1 [0.1.2]: https://github.com/GopherSecurity/gopher-mcp-rust/releases/tag/v0.1.2 From 4dc64b625e03fa7e3705e6b82407b6aad26a8a8c Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:08:14 +0800 Subject: [PATCH 03/20] Convert extended versions to semver format for crates.io crates.io only supports semver (X.Y.Z), not 4-part versions (X.Y.Z.E). This change converts extended versions to semver pre-release format: - X.Y.Z.E -> X.Y.Z-E in Cargo.toml - Git tags remain as vX.Y.Z.E Changes: - Add CARGO_VERSION variable for semver-compatible version - Update Cargo.toml from 0.1.2.1 to 0.1.2-1 - Show both versions in summary when they differ --- dump-version.sh | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/dump-version.sh b/dump-version.sh index 15eb7f07..bcc65808 100755 --- a/dump-version.sh +++ b/dump-version.sh @@ -165,6 +165,7 @@ echo -e "${YELLOW}Step 2: Determining target version...${NC}" if [ -z "$INPUT_VERSION" ]; then # No argument provided, use gopher-orch version directly TARGET_VERSION="$GOPHER_ORCH_VERSION" + CARGO_VERSION="$TARGET_VERSION" echo -e " No version argument provided" echo -e " Using gopher-orch version: ${GREEN}$TARGET_VERSION${NC}" else @@ -177,15 +178,20 @@ else exit 1 fi TARGET_VERSION="$INPUT_VERSION" + CARGO_VERSION="$TARGET_VERSION" elif echo "$INPUT_VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'; then # X.Y.Z.E format - first 3 parts must match gopher-orch INPUT_BASE=$(echo "$INPUT_VERSION" | sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+$/\1/') + INPUT_EXT=$(echo "$INPUT_VERSION" | sed -E 's/^[0-9]+\.[0-9]+\.[0-9]+\.([0-9]+)$/\1/') if [ "$INPUT_BASE" != "$GOPHER_ORCH_VERSION" ]; then echo -e "${RED}Error: Version base $INPUT_BASE does not match gopher-orch version $GOPHER_ORCH_VERSION${NC}" echo "Extended version X.Y.Z.E must have X.Y.Z matching gopher-orch." exit 1 fi TARGET_VERSION="$INPUT_VERSION" + # Convert X.Y.Z.E to X.Y.Z-E for Cargo.toml (semver pre-release format) + CARGO_VERSION="${INPUT_BASE}-${INPUT_EXT}" + echo -e " ${CYAN}Note: Cargo version will be ${CARGO_VERSION} (semver format)${NC}" else echo -e "${RED}Error: Invalid version format '$INPUT_VERSION'${NC}" echo "Expected format: X.Y.Z or X.Y.Z.E" @@ -223,17 +229,17 @@ if [ ! -f "$CARGO_TOML" ]; then exit 1 fi -# Get current version -CURRENT_VERSION=$(grep -E '^version = "[0-9]+\.[0-9]+\.[0-9]+"' "$CARGO_TOML" | head -1 | sed -E 's/version = "([^"]+)"/\1/') +# Get current version (matches X.Y.Z or X.Y.Z-N format) +CURRENT_VERSION=$(grep -E '^version = "' "$CARGO_TOML" | head -1 | sed -E 's/version = "([^"]+)"/\1/') echo -e " Current version: ${YELLOW}$CURRENT_VERSION${NC}" if [ "$DRY_RUN" = false ]; then - # Update version in Cargo.toml - sed -i.bak -E "s/^version = \"[0-9]+\.[0-9]+\.[0-9]+.*\"/version = \"$TARGET_VERSION\"/" "$CARGO_TOML" + # Update version in Cargo.toml (use CARGO_VERSION for semver compatibility) + sed -i.bak -E "s/^version = \"[^\"]+\"/version = \"$CARGO_VERSION\"/" "$CARGO_TOML" rm -f "${CARGO_TOML}.bak" fi -echo -e " Updated to: ${GREEN}$TARGET_VERSION${NC}" +echo -e " Updated to: ${GREEN}$CARGO_VERSION${NC}" # ----------------------------------------------------------------------------- # Step 5: Check [Unreleased] section has content @@ -452,6 +458,9 @@ echo -e "${GREEN} Release preparation complete!${NC}" echo -e "${GREEN}========================================${NC}" echo "" echo -e "Version: ${CYAN}$TARGET_VERSION${NC}" +if [ "$CARGO_VERSION" != "$TARGET_VERSION" ]; then + echo -e "Cargo version: ${CYAN}$CARGO_VERSION${NC} (semver)" +fi echo -e "Tag: ${CYAN}$TAG_VERSION${NC}" echo -e "gopher-orch: ${CYAN}$GOPHER_ORCH_VERSION${NC}" if [ "$PUBLISH_CRATES" = true ]; then @@ -476,7 +485,7 @@ if [ "$PUBLISH_CRATES" = true ]; then echo "" echo " # From crates.io" echo " [dependencies]" - echo " gopher-orch = \"$TARGET_VERSION\"" + echo " gopher-orch = \"$CARGO_VERSION\"" fi echo "" echo " # From GitHub" From 8ec108cdd5d97e4ab0f7bc393c853d69a2e1d314 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:09:45 +0800 Subject: [PATCH 04/20] Release version 0.1.2.3 Prepare release v0.1.2.3: - Update Cargo.toml: version = "0.1.2.3" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.3] - 2026-03-21 gopher-orch version: 0.1.2 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53820324..fe2ac04a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.3] - 2026-03-21 + ## [0.1.2.1] - 2026-03-21 ## [0.1.2] - 2026-03-20 @@ -27,8 +29,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.1...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.3...HEAD +[0.1.2.3]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.1...v0.1.2.3 [0.1.2.1]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2...v0.1.2.1 [0.1.2]: https://github.com/GopherSecurity/gopher-mcp-rust/releases/tag/v0.1.2 From e36ec78f243262a22739aca5a87062aca27ac381 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:13:12 +0800 Subject: [PATCH 05/20] Move crates.io publishing to CI workflow only dump-version.sh now only prepares the release locally: - Updates Cargo.toml and CHANGELOG.md - Creates git commit and tag - No longer publishes to crates.io directly Publishing to crates.io is handled by the CI workflow after pushing, which provides better automation and consistency. --- dump-version.sh | 85 ++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 69 deletions(-) diff --git a/dump-version.sh b/dump-version.sh index bcc65808..a931c9e2 100755 --- a/dump-version.sh +++ b/dump-version.sh @@ -6,7 +6,6 @@ # ./dump-version.sh [OPTIONS] [VERSION] # # Options: -# --skip-crates Skip publishing to crates.io (default: publish) # --dry-run Show what would be done without making changes # --help Show this help message # @@ -22,14 +21,11 @@ # 4. Update CHANGELOG.md ([Unreleased] -> [X.Y.Z] - date) # 5. Create git tag vX.Y.Z # 6. Commit the changes -# 7. Publish to crates.io (unless --skip-crates is specified) # # After running this script: # 1. Review the changes: git show HEAD # 2. Push to release: git push origin br_release vX.Y.Z -# -# Environment variables: -# CARGO_REGISTRY_TOKEN - crates.io API token (required for publishing) +# 3. CI workflow will create GitHub Release and publish to crates.io # set -e @@ -50,17 +46,12 @@ CHANGELOG_FILE="CHANGELOG.md" CARGO_TOML="Cargo.toml" # Options -PUBLISH_CRATES=true DRY_RUN=false INPUT_VERSION="" # Parse options while [[ $# -gt 0 ]]; do case $1 in - --skip-crates|--no-crates) - PUBLISH_CRATES=false - shift - ;; --dry-run) DRY_RUN=true shift @@ -69,7 +60,6 @@ while [[ $# -gt 0 ]]; do echo "Usage: $0 [OPTIONS] [VERSION]" echo "" echo "Options:" - echo " --skip-crates Skip publishing to crates.io (default: publish)" echo " --dry-run Show what would be done without making changes" echo " --help Show this help message" echo "" @@ -78,13 +68,16 @@ while [[ $# -gt 0 ]]; do echo " Format: X.Y.Z or X.Y.Z.E" echo "" echo "Examples:" - echo " $0 # Release to GitHub and crates.io" - echo " $0 0.1.2 # Release specific version" - echo " $0 --skip-crates # Release to GitHub only" + echo " $0 # Prepare release with gopher-orch version" + echo " $0 0.1.2 # Prepare release for specific version" echo " $0 --dry-run # Preview changes without executing" echo "" - echo "Environment variables:" - echo " CARGO_REGISTRY_TOKEN crates.io API token (required for publishing)" + echo "After running this script, push to trigger CI:" + echo " git push origin br_release vX.Y.Z" + echo "" + echo "CI workflow will:" + echo " - Create GitHub Release with native binaries" + echo " - Publish to crates.io" echo "" exit 0 ;; @@ -110,13 +103,6 @@ if [ "$DRY_RUN" = true ]; then echo "" fi -if [ "$PUBLISH_CRATES" = true ]; then - echo -e "${CYAN}Publishing to: GitHub + crates.io${NC}" -else - echo -e "${YELLOW}Publishing to: GitHub only (--skip-crates)${NC}" -fi -echo "" - # ----------------------------------------------------------------------------- # Step 1: Fetch latest gopher-orch version from GitHub releases # ----------------------------------------------------------------------------- @@ -424,35 +410,6 @@ else echo -e " ${YELLOW}[DRY RUN] Would create tag $TAG_VERSION${NC}" fi -# ----------------------------------------------------------------------------- -# Step 8: Publish to crates.io -# ----------------------------------------------------------------------------- -echo "" -if [ "$PUBLISH_CRATES" = true ]; then - echo -e "${YELLOW}Step 8: Publishing to crates.io...${NC}" - - if [ "$DRY_RUN" = true ]; then - echo -e " ${YELLOW}[DRY RUN] Would run: cargo publish${NC}" - echo -e " ${CYAN}Verifying package...${NC}" - cargo publish --dry-run 2>&1 | head -20 || true - else - echo -e " ${CYAN}Running cargo publish...${NC}" - - # Publish - if cargo publish; then - echo -e " ${GREEN}Successfully published to crates.io${NC}" - else - echo -e "${RED}Error: Failed to publish to crates.io${NC}" - echo "The git commit and tag were created. You can manually publish later with:" - echo " cargo publish" - exit 1 - fi - fi -else - echo -e "${YELLOW}Step 8: Skipping crates.io publish (--skip-crates)${NC}" -fi - -echo "" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} Release preparation complete!${NC}" echo -e "${GREEN}========================================${NC}" @@ -463,30 +420,20 @@ if [ "$CARGO_VERSION" != "$TARGET_VERSION" ]; then fi echo -e "Tag: ${CYAN}$TAG_VERSION${NC}" echo -e "gopher-orch: ${CYAN}$GOPHER_ORCH_VERSION${NC}" -if [ "$PUBLISH_CRATES" = true ]; then - echo -e "crates.io: ${GREEN}Published${NC}" -else - echo -e "crates.io: ${YELLOW}Skipped${NC}" -fi echo "" echo -e "${YELLOW}Next steps:${NC}" echo " 1. Review the commit: git show HEAD" echo " 2. Push to release: git push origin br_release $TAG_VERSION" echo "" -echo -e "${CYAN}After pushing:${NC}" -echo " - CI workflow will create GitHub Release" -echo " - Native libraries will be attached to release" -if [ "$PUBLISH_CRATES" = false ]; then - echo " - Publish to crates.io manually: cargo publish" -fi +echo -e "${CYAN}After pushing, CI will:${NC}" +echo " - Create GitHub Release with native binaries" +echo " - Publish to crates.io" echo "" echo -e "${CYAN}Users can install with:${NC}" -if [ "$PUBLISH_CRATES" = true ]; then - echo "" - echo " # From crates.io" - echo " [dependencies]" - echo " gopher-orch = \"$CARGO_VERSION\"" -fi +echo "" +echo " # From crates.io" +echo " [dependencies]" +echo " gopher-orch = \"$CARGO_VERSION\"" echo "" echo " # From GitHub" echo " [dependencies]" From b7d956ee76b531f19c499dbff081e7937caffcd1 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:28:32 +0800 Subject: [PATCH 06/20] Release version 0.1.2.4 Prepare release v0.1.2.4: - Update Cargo.toml: version = "0.1.2.4" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.4] - 2026-03-21 gopher-orch version: 0.1.2 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe2ac04a..f1b73090 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.4] - 2026-03-21 + ## [0.1.2.3] - 2026-03-21 ## [0.1.2.1] - 2026-03-21 @@ -30,9 +32,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.3...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.4...HEAD +[0.1.2.4]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.3...v0.1.2.4 [0.1.2.3]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.1...v0.1.2.3 [0.1.2.1]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2...v0.1.2.1 [0.1.2]: https://github.com/GopherSecurity/gopher-mcp-rust/releases/tag/v0.1.2 From 962d33f279529b0696c6b1577c681cfbb53b801b Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:32:30 +0800 Subject: [PATCH 07/20] Fix contains() syntax in release workflow GitHub Actions requires contains() function syntax, not keyword. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 976a1910..aeef78f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -223,7 +223,7 @@ jobs: runs-on: ubuntu-latest if: | needs.release.outputs.release_created == 'true' && - (vars.PUBLISH_CRATES == 'true' || github.event.head_commit.message contains '[publish]') + (vars.PUBLISH_CRATES == 'true' || contains(github.event.head_commit.message, '[publish]')) steps: - name: Checkout uses: actions/checkout@v4 From a05bf4969a82f399659ad56446a9bc23406ea678 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:33:26 +0800 Subject: [PATCH 08/20] Release version 0.1.2.5 Prepare release v0.1.2.5: - Update Cargo.toml: version = "0.1.2.5" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.5] - 2026-03-21 gopher-orch version: 0.1.2 Changes in this release: --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b73090..d23d5f6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.5] - 2026-03-21 + ## [0.1.2.4] - 2026-03-21 ## [0.1.2.3] - 2026-03-21 @@ -33,9 +35,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.4...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.5...HEAD +[0.1.2.5]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.4...v0.1.2.5 [0.1.2.4]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.3...v0.1.2.4 [0.1.2.3]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.1...v0.1.2.3 [0.1.2.1]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2...v0.1.2.1 From cbfae97261442774c38b71547534e67d0070cc96 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:35:41 +0800 Subject: [PATCH 09/20] Improve gopher-orch download for extended versions Extended versions (X.Y.Z.E) should download native binaries from the base gopher-orch release (X.Y.Z), not the extended version tag. - Add base_version and base_version_tag outputs - Use base_version_tag for gopher-orch download - Example: v0.1.2.5 SDK downloads from gopher-orch v0.1.2 --- .github/workflows/release.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aeef78f4..42607800 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,10 +39,23 @@ jobs: # Remove 'v' prefix for version number VERSION="${VERSION_TAG#v}" + # Extract base version (X.Y.Z) for gopher-orch download + # Handles both X.Y.Z and X.Y.Z.E formats + if echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'; then + # Extended version X.Y.Z.E -> base is X.Y.Z + BASE_VERSION=$(echo "$VERSION" | sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+$/\1/') + else + # Standard version X.Y.Z + BASE_VERSION="$VERSION" + fi + echo "version_tag=${VERSION_TAG}" >> $GITHUB_OUTPUT echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "base_version=${BASE_VERSION}" >> $GITHUB_OUTPUT + echo "base_version_tag=v${BASE_VERSION}" >> $GITHUB_OUTPUT echo "Version Tag: ${VERSION_TAG}" echo "Version: ${VERSION}" + echo "Base Version: ${BASE_VERSION} (for gopher-orch download)" - name: Check if release already exists id: check_release @@ -62,19 +75,21 @@ jobs: env: GH_TOKEN: ${{ secrets.GOPHER_ORCH_TOKEN }} run: | - echo "Downloading native binaries for ${{ steps.version.outputs.version_tag }}..." + # Use base version for gopher-orch (X.Y.Z even if SDK is X.Y.Z.E) + ORCH_TAG="${{ steps.version.outputs.base_version_tag }}" + echo "Downloading native binaries from gopher-orch ${ORCH_TAG}..." mkdir -p downloads # Download all platform binaries from gopher-orch release - gh release download ${{ steps.version.outputs.version_tag }} \ + gh release download "${ORCH_TAG}" \ -R GopherSecurity/gopher-orch \ -D downloads \ -p "libgopher-orch-*.tar.gz" \ -p "libgopher-orch-*.zip" || { echo "Warning: Could not download some binaries" echo "Available assets:" - gh release view ${{ steps.version.outputs.version_tag }} -R GopherSecurity/gopher-orch --json assets -q '.assets[].name' + gh release view "${ORCH_TAG}" -R GopherSecurity/gopher-orch --json assets -q '.assets[].name' } echo "Downloaded files:" From 180f8e80f56aa2228b3863ce4d93f8cd7530f173 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:37:51 +0800 Subject: [PATCH 10/20] Release version 0.1.2.6 Prepare release v0.1.2.6: - Update Cargo.toml: version = "0.1.2.6" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.6] - 2026-03-21 gopher-orch version: 0.1.2 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d23d5f6b..6b80d1da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.6] - 2026-03-21 + ## [0.1.2.5] - 2026-03-21 ## [0.1.2.4] - 2026-03-21 @@ -36,9 +38,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.5...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.6...HEAD +[0.1.2.6]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.5...v0.1.2.6 [0.1.2.5]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.4...v0.1.2.5 [0.1.2.4]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.3...v0.1.2.4 [0.1.2.3]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.1...v0.1.2.3 From 81ce1c526c9c21fc535a41b068275d04e401e2f5 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:53:36 +0800 Subject: [PATCH 11/20] Rename package from gopher-orch to gopher-mcp-rust Update crate name for crates.io publishing: - Cargo.toml: name = "gopher-mcp-rust", lib.name = "gopher_mcp_rust" - Update all imports from gopher_orch to gopher_mcp_rust - Update examples/auth dependency - Update README.md references --- README.md | 24 ++++++++++++------------ examples/client_example_json.rs | 2 +- src/ffi/auth.rs | 2 +- src/lib.rs | 4 ++-- tests/ffi_tests.rs | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 90b53127..a28e7c55 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# gopher-orch - Rust SDK +# gopher-mcp-rust - Rust SDK Rust SDK for Gopher Orch - AI Agent orchestration framework with native C++ performance. @@ -68,7 +68,7 @@ This SDK is ideal for: │ ▼ ┌─────────────────────────────────────────────────────────────┐ -│ Rust SDK (gopher_orch) │ +│ Rust SDK (gopher_mcp_rust) │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ GopherAgent │ │ConfigBuilder│ │ Error Types │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ @@ -99,14 +99,14 @@ This SDK is ideal for: ```toml [dependencies] -gopher-orch = "0.1.0" +gopher-mcp-rust ="0.1.0" ``` ### Option 2: Git Dependency ```toml [dependencies] -gopher-orch = { git = "https://github.com/GopherSecurity/gopher-mcp-rust.git" } +gopher-mcp-rust ={ git = "https://github.com/GopherSecurity/gopher-mcp-rust.git" } ``` ### Option 3: Build from Source @@ -116,7 +116,7 @@ See [Building from Source](#building-from-source) section below. ## Quick Start ```rust -use gopher_orch::{GopherAgent, ConfigBuilder}; +use gopher_mcp_rust::{GopherAgent, ConfigBuilder}; fn main() -> Result<(), Box> { // Create an agent with API key (fetches server config from remote API) @@ -268,10 +268,10 @@ The SDK searches for the native library in this order: The main struct for creating and running AI agents: ```rust -use gopher_orch::{GopherAgent, ConfigBuilder, AgentResult}; +use gopher_mcp_rust::{GopherAgent, ConfigBuilder, AgentResult}; // Initialize the library (called automatically on first create) -gopher_orch::init()?; +gopher_mcp_rust::init()?; // Create with API key (fetches server config from remote API) let config = ConfigBuilder::new() @@ -317,7 +317,7 @@ let detailed: AgentResult = agent.run_detailed("Your prompt here"); drop(agent); // Shutdown library -gopher_orch::shutdown(); +gopher_mcp_rust::shutdown(); ``` ### ConfigBuilder @@ -325,7 +325,7 @@ gopher_orch::shutdown(); Builder for creating agent configurations: ```rust -use gopher_orch::ConfigBuilder; +use gopher_mcp_rust::ConfigBuilder; // With API key let config = ConfigBuilder::new() @@ -351,7 +351,7 @@ assert!(!config.has_server_config()); The SDK provides typed errors for different failure scenarios: ```rust -use gopher_orch::{GopherAgent, ConfigBuilder, Error}; +use gopher_mcp_rust::{GopherAgent, ConfigBuilder, Error}; fn main() { let config = ConfigBuilder::new() @@ -383,7 +383,7 @@ fn main() { ### Basic Usage with API Key ```rust -use gopher_orch::{GopherAgent, ConfigBuilder}; +use gopher_mcp_rust::{GopherAgent, ConfigBuilder}; use std::env; fn main() -> Result<(), Box> { @@ -407,7 +407,7 @@ fn main() -> Result<(), Box> { ### Using Local MCP Servers ```rust -use gopher_orch::{GopherAgent, ConfigBuilder}; +use gopher_mcp_rust::{GopherAgent, ConfigBuilder}; const SERVER_CONFIG: &str = r#"{ "succeeded": true, diff --git a/examples/client_example_json.rs b/examples/client_example_json.rs index 4fe114c8..b071ead4 100644 --- a/examples/client_example_json.rs +++ b/examples/client_example_json.rs @@ -1,6 +1,6 @@ //! Example using JSON server configuration. -use gopher_orch::{ConfigBuilder, GopherAgent}; +use gopher_mcp_rust::{ConfigBuilder, GopherAgent}; use std::env; /// Server configuration for local MCP servers diff --git a/src/ffi/auth.rs b/src/ffi/auth.rs index ca165670..4749be7e 100644 --- a/src/ffi/auth.rs +++ b/src/ffi/auth.rs @@ -5,7 +5,7 @@ //! # Example //! //! ```ignore -//! use gopher_orch::ffi::auth::GopherAuthClient; +//! use gopher_mcp_rust::ffi::auth::GopherAuthClient; //! //! let client = GopherAuthClient::new( //! "https://auth.example.com/.well-known/jwks.json", diff --git a/src/lib.rs b/src/lib.rs index 35bedc4b..c30aeedf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,11 @@ -//! # Gopher Orch Rust SDK +//! # Gopher MCP Rust SDK //! //! Rust SDK for Gopher Orch - AI Agent orchestration framework with native C++ performance. //! //! ## Quick Start //! //! ```rust,no_run -//! use gopher_orch::{GopherAgent, ConfigBuilder}; +//! use gopher_mcp_rust::{GopherAgent, ConfigBuilder}; //! //! fn main() -> Result<(), Box> { //! // Create agent with server configuration diff --git a/tests/ffi_tests.rs b/tests/ffi_tests.rs index 9e80f3dc..7e623acc 100644 --- a/tests/ffi_tests.rs +++ b/tests/ffi_tests.rs @@ -2,7 +2,7 @@ //! //! These tests verify that the FFI bindings work correctly with the native library. -use gopher_orch::{init, is_initialized, ConfigBuilder, GopherAgent}; +use gopher_mcp_rust::{init, is_initialized, ConfigBuilder, GopherAgent}; use std::path::Path; const TEST_SERVER_CONFIG: &str = r#"{ From d4b135402163b40761d7c94e527221eca03c7593 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 00:59:04 +0800 Subject: [PATCH 12/20] Update README with auth feature and fix license - Fix license from MIT to Apache-2.0 (matches LICENSE file) - Update Cargo.toml license field - Add OAuth 2.0 Authentication to features list - Add "With Auth Feature" installation section - Add "Auth MCP Server Example" section with usage docs - Update version in installation examples --- README.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a28e7c55..ddc58359 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Rust SDK for Gopher Orch - AI Agent orchestration framework with native C++ perf - **Tool Orchestration** - Manage and execute tools across multiple MCP servers - **State Management** - Built-in state graph for complex workflows - **Memory Safety** - Rust's ownership system with zero-cost abstractions +- **OAuth 2.0 Authentication** - JWT validation with JWKS support (feature-gated) ## When to Use This SDK @@ -95,24 +96,36 @@ This SDK is ideal for: ## Installation -### Option 1: Cargo (when published) +### Option 1: From crates.io ```toml [dependencies] -gopher-mcp-rust ="0.1.0" +gopher-mcp-rust = "0.1.2" ``` ### Option 2: Git Dependency ```toml [dependencies] -gopher-mcp-rust ={ git = "https://github.com/GopherSecurity/gopher-mcp-rust.git" } +gopher-mcp-rust = { git = "https://github.com/GopherSecurity/gopher-mcp-rust.git" } ``` ### Option 3: Build from Source See [Building from Source](#building-from-source) section below. +### With Auth Feature + +Enable OAuth 2.0 / JWT authentication support: + +```toml +[dependencies] +gopher-mcp-rust = { version = "0.1.2", features = ["auth"] } + +# Or with git +gopher-mcp-rust = { git = "https://github.com/GopherSecurity/gopher-mcp-rust.git", features = ["auth"] } +``` + ## Quick Start ```rust @@ -465,6 +478,59 @@ cd examples/server3002 && npm install && npm run dev ANTHROPIC_API_KEY=your-key cargo run --example client_example_json ``` +### Auth MCP Server Example + +The `examples/auth` directory contains a complete OAuth 2.0 protected MCP server example using Axum: + +```bash +cd examples/auth + +# Run with auth disabled (development mode) +./run_example.sh --no-auth + +# Run with full OAuth support +./run_example.sh +``` + +**Features:** +- OAuth 2.0 / OIDC discovery endpoints (RFC 8414, RFC 9728) +- JWT token validation via native library +- Scope-based authorization for MCP tools +- Example weather tools with different scope requirements + +**Available Tools:** + +| Tool | Scope Required | Description | +|------|----------------|-------------| +| `get-weather` | None | Get current weather for a city | +| `get-forecast` | `mcp:read` | Get 5-day weather forecast | +| `get-weather-alerts` | `mcp:admin` | Get weather alerts for a region | + +**Using the Auth Client:** + +```rust +use gopher_mcp_rust::GopherAuthClient; + +// Create auth client with JWKS endpoint +let client = GopherAuthClient::new( + "https://auth.example.com/.well-known/jwks.json", + "https://auth.example.com" +)?; + +// Validate a JWT token +let result = client.validate_token("eyJ...", 60); +if result.valid { + println!("Token is valid!"); + println!("Subject: {}", result.payload.sub); + println!("Scopes: {:?}", result.payload.scope); +} + +// Extract payload without validation +let payload = client.extract_payload("eyJ...")?; +``` + +See [examples/auth/README.md](examples/auth/README.md) for full documentation. + --- ## Development @@ -633,7 +699,7 @@ Contributions are welcome! Please read our contributing guidelines. ## License -MIT License - see [LICENSE](LICENSE) file for details. +Apache License 2.0 - see [LICENSE](LICENSE) file for details. ## Links From f25e74b5e2d44428cc79c087cde42cc633b79521 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:00:45 +0800 Subject: [PATCH 13/20] Release version 0.1.2.7 Prepare release v0.1.2.7: - Update Cargo.toml: version = "0.1.2.7" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.7] - 2026-03-21 gopher-orch version: 0.1.2 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b80d1da..f47e3173 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.7] - 2026-03-21 + ## [0.1.2.6] - 2026-03-21 ## [0.1.2.5] - 2026-03-21 @@ -39,9 +41,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.6...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.7...HEAD +[0.1.2.7]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.6...v0.1.2.7 [0.1.2.6]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.5...v0.1.2.6 [0.1.2.5]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.4...v0.1.2.5 [0.1.2.4]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.3...v0.1.2.4 From 4c4ac6278dc5914c0a96a4cc26666acf2f507bb9 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:09:57 +0800 Subject: [PATCH 14/20] Auto-push tag in release workflow - Add step to push tag to remote if not already present - User only needs to run: git push origin br_release - Workflow will detect and push the tag automatically - Fix package name in release notes (gopher-orch -> gopher-mcp-rust) --- .github/workflows/release.yml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 42607800..bfe056ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,6 +57,19 @@ jobs: echo "Version: ${VERSION}" echo "Base Version: ${BASE_VERSION} (for gopher-orch download)" + - name: Push tag to remote + run: | + VERSION_TAG="${{ steps.version.outputs.version_tag }}" + + # Check if tag exists on remote + if git ls-remote --tags origin | grep -q "refs/tags/${VERSION_TAG}$"; then + echo "Tag ${VERSION_TAG} already exists on remote" + else + echo "Pushing tag ${VERSION_TAG} to remote..." + git push origin "${VERSION_TAG}" + echo "Tag pushed successfully" + fi + - name: Check if release already exists id: check_release env: @@ -128,20 +141,20 @@ jobs: \`\`\`toml # Add to Cargo.toml [dependencies] - gopher-orch = "${VERSION}" + gopher-mcp-rust = "${VERSION}" \`\`\` Or via cargo: \`\`\`bash - cargo add gopher-orch@${VERSION} + cargo add gopher-mcp-rust@${VERSION} \`\`\` #### From GitHub \`\`\`toml [dependencies] - gopher-orch = { git = "https://github.com/GopherSecurity/gopher-mcp-rust.git", tag = "${VERSION_TAG}" } + gopher-mcp-rust = { git = "https://github.com/GopherSecurity/gopher-mcp-rust.git", tag = "${VERSION_TAG}" } \`\`\` ### Native Library Installation @@ -275,8 +288,8 @@ jobs: echo "## crates.io Publish Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "- **Version:** ${{ needs.release.outputs.version }}" >> $GITHUB_STEP_SUMMARY - echo "- **crates.io:** https://crates.io/crates/gopher-orch/${{ needs.release.outputs.version }}" >> $GITHUB_STEP_SUMMARY - echo "- **docs.rs:** https://docs.rs/gopher-orch/${{ needs.release.outputs.version }}" >> $GITHUB_STEP_SUMMARY + echo "- **crates.io:** https://crates.io/crates/gopher-mcp-rust/${{ needs.release.outputs.version }}" >> $GITHUB_STEP_SUMMARY + echo "- **docs.rs:** https://docs.rs/gopher-mcp-rust/${{ needs.release.outputs.version }}" >> $GITHUB_STEP_SUMMARY test: name: Run Tests From ce817eede9dd34e35041b70d2dfab121203632bf Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:11:16 +0800 Subject: [PATCH 15/20] Release version 0.1.2.8 Prepare release v0.1.2.8: - Update Cargo.toml: version = "0.1.2.8" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.8] - 2026-03-21 gopher-orch version: 0.1.2 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f47e3173..412d7e14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.8] - 2026-03-21 + ## [0.1.2.7] - 2026-03-21 ## [0.1.2.6] - 2026-03-21 @@ -42,9 +44,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.7...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.8...HEAD +[0.1.2.8]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.7...v0.1.2.8 [0.1.2.7]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.6...v0.1.2.7 [0.1.2.6]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.5...v0.1.2.6 [0.1.2.5]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.4...v0.1.2.5 From c3f7d40c1b6cad2176663a2306fc42e9c2c75723 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:17:01 +0800 Subject: [PATCH 16/20] Resolve publish-crates condition to not require release_created The publish-crates job was being skipped even when PUBLISH_CRATES=true because it also required release_created to be true. This failed when the GitHub release already existed (e.g., re-running the workflow). Now the job runs whenever: - vars.PUBLISH_CRATES == 'true', OR - commit message contains '[publish]' --- .github/workflows/release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bfe056ef..68df864b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,8 +250,7 @@ jobs: needs: release runs-on: ubuntu-latest if: | - needs.release.outputs.release_created == 'true' && - (vars.PUBLISH_CRATES == 'true' || contains(github.event.head_commit.message, '[publish]')) + vars.PUBLISH_CRATES == 'true' || contains(github.event.head_commit.message, '[publish]') steps: - name: Checkout uses: actions/checkout@v4 From 778292560a629f2dff361e641454335db6222917 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:17:51 +0800 Subject: [PATCH 17/20] Release version 0.1.2.9 Prepare release v0.1.2.9: - Update Cargo.toml: version = "0.1.2.9" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.9] - 2026-03-21 gopher-orch version: 0.1.2 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 412d7e14..d0e7ab3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.9] - 2026-03-21 + ## [0.1.2.8] - 2026-03-21 ## [0.1.2.7] - 2026-03-21 @@ -45,9 +47,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.8...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.9...HEAD +[0.1.2.9]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.8...v0.1.2.9 [0.1.2.8]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.7...v0.1.2.8 [0.1.2.7]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.6...v0.1.2.7 [0.1.2.6]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.5...v0.1.2.6 From 5732c3cddb58da17be873088c7a625eb105494fd Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:53:11 +0800 Subject: [PATCH 18/20] Auto-push tag in dump-version.sh The script now pushes the tag to remote automatically after creating it. This allows the release workflow to find the tag when it runs. User flow is now simplified to: 1. ./dump-version.sh X.Y.Z 2. git push origin br_release --- dump-version.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dump-version.sh b/dump-version.sh index a931c9e2..c4612166 100755 --- a/dump-version.sh +++ b/dump-version.sh @@ -21,10 +21,11 @@ # 4. Update CHANGELOG.md ([Unreleased] -> [X.Y.Z] - date) # 5. Create git tag vX.Y.Z # 6. Commit the changes +# 7. Push the tag to remote # # After running this script: # 1. Review the changes: git show HEAD -# 2. Push to release: git push origin br_release vX.Y.Z +# 2. Push to release: git push origin br_release # 3. CI workflow will create GitHub Release and publish to crates.io # @@ -73,7 +74,7 @@ while [[ $# -gt 0 ]]; do echo " $0 --dry-run # Preview changes without executing" echo "" echo "After running this script, push to trigger CI:" - echo " git push origin br_release vX.Y.Z" + echo " git push origin br_release" echo "" echo "CI workflow will:" echo " - Create GitHub Release with native binaries" @@ -405,6 +406,12 @@ gopher-orch version: $GOPHER_ORCH_VERSION Changes: $(echo "$UNRELEASED_CONTENT" | head -15) " + + # Push the tag to remote + echo "" + echo -e "${CYAN}Pushing tag $TAG_VERSION to remote...${NC}" + git push origin "$TAG_VERSION" + echo -e " ${GREEN}Tag pushed successfully${NC}" else echo -e " ${YELLOW}[DRY RUN] Would commit Cargo.toml and CHANGELOG.md${NC}" echo -e " ${YELLOW}[DRY RUN] Would create tag $TAG_VERSION${NC}" @@ -423,7 +430,7 @@ echo -e "gopher-orch: ${CYAN}$GOPHER_ORCH_VERSION${NC}" echo "" echo -e "${YELLOW}Next steps:${NC}" echo " 1. Review the commit: git show HEAD" -echo " 2. Push to release: git push origin br_release $TAG_VERSION" +echo " 2. Push to release: git push origin br_release" echo "" echo -e "${CYAN}After pushing, CI will:${NC}" echo " - Create GitHub Release with native binaries" From 3549d34a858fc559f8cd89a387ae6b39171b989c Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sat, 21 Mar 2026 01:54:22 +0800 Subject: [PATCH 19/20] Release version 0.1.2.10 Prepare release v0.1.2.10: - Update Cargo.toml: version = "0.1.2.10" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.10] - 2026-03-21 gopher-orch version: 0.1.2 Changes in this release: --- CHANGELOG.md | 6 +++++- Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0e7ab3e..ae929a84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.10] - 2026-03-21 + ## [0.1.2.9] - 2026-03-21 ## [0.1.2.8] - 2026-03-21 @@ -48,9 +50,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.9...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.10...HEAD +[0.1.2.10]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.9...v0.1.2.10 [0.1.2.9]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.8...v0.1.2.9 [0.1.2.8]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.7...v0.1.2.8 [0.1.2.7]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.6...v0.1.2.7 diff --git a/Cargo.toml b/Cargo.toml index fe5901e1..72069b3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gopher-mcp-rust" -version = "0.1.2-9" +version = "0.1.2-10" edition = "2021" authors = ["GopherSecurity"] description = "Rust SDK for Gopher Orch - AI Agent orchestration framework" From f3b47a8905cb89713981729b6135c993b4748c16 Mon Sep 17 00:00:00 2001 From: RahulHere Date: Sun, 22 Mar 2026 00:30:43 +0800 Subject: [PATCH 20/20] Release version 0.1.2.11 Prepare release v0.1.2.11: - Update Cargo.toml: version = "0.1.2.11" - Update CHANGELOG.md: [Unreleased] -> [0.1.2.11] - 2026-03-22 gopher-orch version: 0.1.2 Changes in this release: --- CHANGELOG.md | 6 +++++- Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae929a84..da223715 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2.11] - 2026-03-22 + ## [0.1.2.10] - 2026-03-21 ## [0.1.2.9] - 2026-03-21 @@ -51,9 +53,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + --- -[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.10...HEAD +[Unreleased]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.11...HEAD +[0.1.2.11]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.10...v0.1.2.11 [0.1.2.10]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.9...v0.1.2.10 [0.1.2.9]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.8...v0.1.2.9 [0.1.2.8]: https://github.com/GopherSecurity/gopher-mcp-rust/compare/v0.1.2.7...v0.1.2.8 diff --git a/Cargo.toml b/Cargo.toml index 72069b3d..0c70f006 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gopher-mcp-rust" -version = "0.1.2-10" +version = "0.1.2-11" edition = "2021" authors = ["GopherSecurity"] description = "Rust SDK for Gopher Orch - AI Agent orchestration framework"