Release 0.2.1: API version exposure + release automation#139
Conversation
There was a problem hiding this comment.
Pull request overview
This PR prepares the 0.2.1 release by aligning SDK version strings across languages, exposing the Basecamp API version as a first-class constant, and adding Makefile/script automation to keep versions and API version constants in sync.
Changes:
- Add
API_VERSIONconstants across SDKs and include(api:<ver>)in defaultUser-Agentstrings. - Bump SDK versions to
0.2.1across the monorepo (TypeScript, Go, Ruby, Kotlin, Swift + root metadata). - Add release automation via
make bump,make sync-api-version, andmake sync-api-version-check, and wire freshness checking intomake check.
Reviewed changes
Copilot reviewed 17 out of 19 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| typescript/src/services/authorization.ts | Updates docs/examples to remove “Basecamp 3” branding. |
| typescript/src/index.ts | Re-exports API_VERSION from the public TypeScript entrypoint. |
| typescript/src/client.ts | Bumps TS SDK version, adds API_VERSION, and updates default User-Agent format. |
| typescript/package.json | Bumps TypeScript package version to 0.2.1. |
| typescript/package-lock.json | Keeps lockfile version in sync with TS package version. |
| swift/Sources/Basecamp/BasecampConfig.swift | Bumps Swift version, adds API version, updates default User-Agent. |
| swift/README.md | Updates branding and installation version. |
| scripts/sync-api-version.sh | New script to sync API version constants from openapi.json. |
| scripts/bump-version.sh | New script to bump SDK versions across languages (and sync TS lockfile). |
| ruby/lib/basecamp/version.rb | Bumps Ruby version and adds API_VERSION. |
| ruby/lib/basecamp/http.rb | Includes API version in Ruby default User-Agent. |
| ruby/Gemfile.lock | Updates locked gem version to 0.2.1. |
| package.json | Bumps root package version to 0.2.1. |
| kotlin/sdk/src/commonMain/kotlin/com/basecamp/sdk/BasecampConfig.kt | Bumps Kotlin version, adds API_VERSION, updates default User-Agent. |
| kotlin/sdk/build.gradle.kts | Bumps Kotlin artifact version to 0.2.1. |
| kotlin/README.md | Updates branding and dependency version; adjusts User-Agent documentation. |
| go/pkg/basecamp/version.go | Bumps Go version and introduces APIVersion. |
| go/pkg/basecamp/client.go | Includes API version in Go default User-Agent. |
| Makefile | Adds bump and API version sync/check targets; wires API version drift check into make check. |
Files not reviewed (1)
- typescript/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 17 out of 19 changed files in this pull request and generated 3 comments.
Files not reviewed (1)
- typescript/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix stale TypeScript VERSION (was still "0.2.0" in client.ts)
- Add API_VERSION / apiVersion constant across all 5 SDKs,
sourced from openapi.json info.version ("2026-01-26")
- Include API version in User-Agent: basecamp-sdk-{lang}/{ver} (api:{apiVer})
- Clean up "Basecamp 3" branding → "Basecamp" in READMEs and comments
- Update stale version references in kotlin/README.md, swift/README.md,
and ruby/Gemfile.lock
- scripts/bump-version.sh: updates all 8 SDK version locations + lockfile - scripts/sync-api-version.sh: reads openapi.json info.version, updates API_VERSION constants in all 5 SDKs - Both scripts use portable sed (temp file, no -i flag) for Linux compat - make sync-api-version hooked into smithy-build for automatic sync - make sync-api-version-check wired into make check to catch drift - make bump VERSION=x.y.z validates strict semver format
- Fix &&/|| operator precedence in sync-api-version-check by using ; separators so each grep runs independently - Add jq availability guard to sync-api-version-check - Use BasecampConfig.DEFAULT_USER_AGENT in Kotlin README instead of literal Kotlin string-template syntax that renders wrong in Markdown - Stop suppressing npm stderr in bump-version.sh
Use cat+rm instead of mv so the original file's inode and permissions are retained. mktemp creates files with mode 600, and mv would replace the target with those restrictive permissions.
95efa8c to
344a8d0
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 17 out of 19 changed files in this pull request and generated 1 comment.
Files not reviewed (1)
- typescript/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
client.tswas still"0.2.0"after the version bumpAPI_VERSIONconstant across all 5 SDKs, sourced fromopenapi.jsoninfo.version("2026-01-26")basecamp-sdk-{lang}/{ver} (api:{apiVer})kotlin/README.md,swift/README.md,ruby/Gemfile.lockmake bump VERSION=x.y.z— updates all 8 SDK version locations + TS lockfilemake sync-api-version— readsopenapi.json, updates 5 API_VERSION constantsmake sync-api-version-check— wired intomake checkto catch constant drift-iflag) for Linux compatibilityTest plan
make checkpasses (all Smithy, Go, TS, Ruby, Kotlin, Swift, conformance, drift checks)make bump VERSION=0.2.1is idempotentmake sync-api-versionis idempotentmake sync-api-version-checkpasses./scripts/bump-version.sh 1.2.3foorejects trailing junkgrep -rn 'Basecamp 3' kotlin/ swift/ typescript/src/hitsgrep -rn '"0\.\(1\|2\.0\)"' go/pkg typescript/package.json typescript/src/client.ts ruby/lib kotlin/sdk swift/Sources package.jsonhits