release: 3.0.0 — restore npm semver continuity from 2.x#217
Conversation
This is the stable REST-only release of @avaprotocol/sdk-js + @avaprotocol/types, ending the 4.0.0-dev.X pre-release line that preceded it. Versions: - @avaprotocol/sdk-js 4.0.0-dev.3 → 3.0.0 - @avaprotocol/types 4.0.0-dev.0 → 3.0.0 - sdk-js's dep on types: 4.0.0-dev.0 → ^3.0.0 Why 3.0.0 (not 4.0.0) --------------------- The pre-release dev iterations used a major version (`4.0.0-dev.X`) that matched the internal codebase generation tag (`src/v4/` directory). Publishing the stable release as `3.0.0` instead restores npm semver continuity from `2.17.0` — consumers see the expected single-major bump rather than a skipped major number. The `src/v4/` internal directory name is preserved as a codebase generation tag — the prior gRPC iteration was internally "v3" but published as the 2.x npm line, and the REST rewrite is "v4" internally regardless of its npm version. Renaming the internal directories would be cosmetic churn with no consumer-visible benefit; the npm version is what consumers see. The `4.0.0-dev.X` versions remain on npm under the `dev` dist-tag for anyone who pinned them during the rewrite; they're functionally equivalent to 3.0.0 minus the Position D auth changes shipped in #214. What's in this PR ----------------- - packages/types/package.json: 4.0.0-dev.0 → 3.0.0 - packages/sdk-js/package.json: 4.0.0-dev.3 → 3.0.0 (+ types dep) - CHANGELOG.md entries for both packages explaining the cutover, the breaking changes vs 2.x, and the npm-continuity rationale - README "Versioning notes" callout at the top of both READMEs flagging the rewrite + pointing at CHANGELOG for the detail - Stale "As of 4.0.0-dev.3" code comment in packages/sdk-js/src/v4/protocols/index.ts updated to "3.0.0" What is NOT in this PR ---------------------- - README content past the version-note callout still describes the 2.x gRPC client. Rewriting it for the 3.x REST client is a follow-up doc PR — out of scope for the version cutover. - No changeset markdown file. Changesets supports `patch`/`minor`/ `major` bumps from the current version (4.0.0-dev.3 → 4.0.0, 4.1.0, or 5.0.0); going backwards to 3.0.0 requires manual version setting. Future releases use changeset normally. Prerequisites for the actual `npm publish` ------------------------------------------ The publish scripts on `main` are broken in two ways that PR #216 (chore/publish-script-tag-detection) fixes: 1. No `--tag` flag → would publish 3.0.0 as `latest` (correct for this release, by coincidence) but would silently clobber `latest=2.17.0` with any future pre-release. 2. Pre-publish step runs `yarn protoc-gen` (v2.x gRPC leftover), aborts the script before publish. Merge #216 first, then this PR, then `yarn publish` from main. Or, if you want to publish manually before #216 lands: cd packages/types && npm publish --access public cd ../sdk-js && npm publish --access public (stable 3.0.0 has no pre-release suffix, so npm's default `latest` tag is correct — the `--tag` issue only bites pre-releases.)
Code Review — release/3.0.0OverviewThis is a release-prep PR that promotes both packages from Issues1. Self-contradicting README paragraphs (both READMEs)
The blockquote warns readers that the following content is outdated, but the paragraph immediately after still reads as a definitive first-person description, not a marked-as-stale section. A developer speed-reading for the first time will hit Minimal fix — prefix the outdated paragraph so the intent is clear: -`@avaprotocol/sdk-js` is a simple, type-safe wrapper around gRPC ...
+> **[2.x — archived]** `@avaprotocol/sdk-js` was a simple, type-safe wrapper around gRPC ...Or wrap the whole stale section in a 2. Version-pinned comment in source code
// As of 3.0.0 the actual address/ABI/topic data lives in the
// standalone `@avaprotocol/protocols` package ...Per the project's CLAUDE.md conventions, comments should only explain the why when non-obvious. A version anchor ( Nits
Positives
SummaryBlocking: The README contradiction (issue 1) is worth a one-line fix per file before merge — it avoids a confusing first impression for 3.0.0 adopters. Everything else is minor. 🤖 Generated with Claude Code |
There was a problem hiding this comment.
Pull request overview
This PR cuts a stable 3.0.0 release for @avaprotocol/sdk-js and @avaprotocol/types, ending the 4.0.0-dev.X pre-release line while keeping the internal src/v4/ generation tag unchanged.
Changes:
- Bumps
@avaprotocol/sdk-jsand@avaprotocol/typesversions to3.0.0, and updatessdk-js → typesdependency to^3.0.0. - Adds
3.0.0release notes to both package CHANGELOGs explaining the REST cutover and versioning rationale. - Adds top-of-README “versioning notes” callouts and updates a stale
4.0.0-dev.3inline code comment to3.0.0.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Adds a top-level callout about the 3.0.0 REST rewrite and semver continuity rationale. |
| packages/types/package.json | Sets @avaprotocol/types version to 3.0.0. |
| packages/types/CHANGELOG.md | Adds 3.0.0 entry describing OpenAPI-derived REST types and rationale. |
| packages/sdk-js/src/v4/protocols/index.ts | Updates stale version reference in comment (4.0.0-dev.3 → 3.0.0). |
| packages/sdk-js/README.md | Adds a top-of-file callout about 3.0.0 REST rewrite and semver continuity rationale. |
| packages/sdk-js/package.json | Sets @avaprotocol/sdk-js version to 3.0.0 and bumps @avaprotocol/types dependency to ^3.0.0. |
| packages/sdk-js/CHANGELOG.md | Adds 3.0.0 entry describing the REST client cutover, breaking changes, and versioning rationale. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| `ava-sdk-js` is the official TypeScript SDK for Ava Protocol's AVS. | ||
|
|
||
| > **3.0.0 is a REST-only rewrite.** The 2.x line spoke gRPC; the 3.x line speaks the aggregator gateway's `/api/v1/...` REST API. The `4.0.0-dev.X` versions on npm are pre-release iterations of this rewrite that we ultimately stabilized as `3.0.0` to keep semver continuity from 2.x — see [packages/sdk-js/CHANGELOG.md](./packages/sdk-js/CHANGELOG.md) for the full rationale. The sections below still describe the 2.x gRPC client; an updated quick-start for the 3.x REST client is tracked in a follow-up doc PR. | ||
|
|
||
| `ava-sdk-js` is a simple, type-safe wrapper around gRPC designed to simplify integration with Ava Protocol's AVS. It enables developers to interact with Ava Protocol efficiently, whether on the client-side or server-side, and provides full TypeScript support for a seamless development experience. |
| `@avaprotocol/sdk-js` is the official TypeScript SDK for Ava Protocol's AVS. | ||
|
|
||
| > **3.0.0 is a REST-only rewrite.** The 2.x line spoke gRPC; the 3.x line speaks the aggregator gateway's `/api/v1/...` REST API. The `4.0.0-dev.X` versions on npm are pre-release iterations of this rewrite that we ultimately stabilized as `3.0.0` to keep semver continuity from 2.x — see [CHANGELOG.md](./CHANGELOG.md) for the full rationale. The README sections below still describe the 2.x gRPC client; an updated quick-start for the 3.x REST client is tracked in a follow-up doc PR. | ||
|
|
||
| `@avaprotocol/sdk-js` is a simple, type-safe wrapper around gRPC designed to simplify integration with Ava Protocol's AVS. It enables developers to interact with Ava Protocol efficiently, whether on the client-side or server-side, and provides full TypeScript support for a seamless development experience. |
Co-authored-by: Wei Lin <wei@avaprotocol.org>
Summary
Stable 3.0.0 release of
@avaprotocol/sdk-js+@avaprotocol/types, ending the4.0.0-dev.Xpre-release line.@avaprotocol/sdk-js4.0.0-dev.33.0.0@avaprotocol/types4.0.0-dev.03.0.0sdk-js → typesdep4.0.0-dev.0^3.0.0Why 3.0.0 (not 4.0.0)
The pre-release dev iterations (
4.0.0-dev.0→4.0.0-dev.3) used a major version that matched the internal codebase generation tag (src/v4/directory). Publishing the stable as3.0.0instead restores npm semver continuity from2.17.0— consumers see the expected single-major bump rather than a skipped major.The
src/v4/internal directory name is preserved as a codebase generation tag — the prior gRPC iteration was internally "v3" but published as the 2.x npm line, and the REST rewrite is "v4" internally regardless of its npm version. Renaming the internal directories would be cosmetic churn with no consumer-visible benefit; the npm version is what consumers see.The
4.0.0-dev.Xversions remain on npm under thedevdist-tag for anyone who pinned them during the rewrite; they're functionally equivalent to 3.0.0 minus the Position D auth changes shipped in #214.What's in this PR
packages/types/package.json:4.0.0-dev.0→3.0.0packages/sdk-js/package.json:4.0.0-dev.3→3.0.0(+ types dep bumped to^3.0.0)// As of 4.0.0-dev.3code comment inpackages/sdk-js/src/v4/protocols/index.tsupdated to3.0.0What is NOT in this PR
patch/minor/majorbumps from the current version (4.0.0-dev.3→4.0.0,4.1.0, or5.0.0). Going backwards to3.0.0requires manual version setting. Future releases go through changesets normally.Prerequisite: merge #216 first
The publish scripts on
mainare broken in two ways that #216 (chore/publish-script-tag-detection) fixes:--tagflag → would publish any version aslatest(correct for 3.0.0 stable by coincidence, but would silently clobberlatest=2.17.0with any future pre-release).yarn protoc-gen(v2.x gRPC leftover), aborts the script before publish.Recommended sequence:
main:yarn publish(now safe — pickslatestautomatically for stable 3.0.0)gh release create v3.0.0 --title "v3.0.0" --notes-from-tagOr, if you want to publish manually before #216 lands:
Stable
3.0.0has no pre-release suffix, so npm's defaultlatesttag is correct — the--tagbug only bites pre-releases.Test plan
yarn install— lockfile cleanyarn workspace @avaprotocol/types build— cleanyarn workspace @avaprotocol/sdk-js build— cleanyarn test tests/v4/smoke.test.ts— 12/12 passnpx tsc --noEmit -p .— no new errors (pre-existing estimateFees + smoke.test cast errors unchanged)yarn publish: verifynpm view @avaprotocol/sdk-js dist-tagsshowslatest: 3.0.0🤖 Generated with Claude Code