diff --git a/.changeset/automated-release-publishing.md b/.changeset/automated-release-publishing.md deleted file mode 100644 index 59538f20..00000000 --- a/.changeset/automated-release-publishing.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Automate stable tag releases with canonical tarball verification, npm provenance, public registry checks, and GitHub release notes. diff --git a/.changeset/stable-failure-contracts.md b/.changeset/stable-failure-contracts.md deleted file mode 100644 index d7eb5600..00000000 --- a/.changeset/stable-failure-contracts.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sheetwrite/core": minor -"@sheetwrite/react": minor -"@sheetwrite/vue": minor -"@sheetwrite/svelte": minor -"@sheetwrite/xlsx": minor ---- - -Add the canonical `SheetwriteError` envelope and stable error codes across initialization, Grid events, persistence, synchronization, collaboration, delimited text, and optional XLSX boundaries. Framework initialization callbacks now receive the same typed error class, and XLSX cancellation preserves the original abort reason as `cause`. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fad125f..48ef44d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,10 +61,13 @@ jobs: test "$(npm --version)" = "$NPM_VERSION" test "$(rustc --version | cut -d' ' -f2)" = "$RUST_VERSION" - name: Changeset status + if: github.event_name != 'pull_request' || github.head_ref != 'changeset-release/develop' run: bun run changeset:status -- --since=origin/develop - name: Install checksum-pinned wasm-pack run: bun scripts/install-wasm-pack.ts - name: Tooling contracts + env: + SKIP_CHANGESET_STATUS: ${{ github.event_name == 'pull_request' && github.head_ref == 'changeset-release/develop' }} run: bun run test:tooling - name: Import cycles run: bun run check:cycles diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c570824d..bab729c6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -105,7 +105,7 @@ jobs: id: size-history if: steps.publish.outputs.verified != '[]' run: | - VERSION="$(node -p "require('./package.json').version")" + VERSION="$(node -p "require('./packages/core/package.json').version")" echo "version=$VERSION" >> "$GITHUB_OUTPUT" bun run size:record --version="$VERSION" bun run docs:generate diff --git a/bench/CHANGELOG.md b/bench/CHANGELOG.md index 3738699d..4b1013cb 100644 --- a/bench/CHANGELOG.md +++ b/bench/CHANGELOG.md @@ -1,5 +1,12 @@ # @sheetwrite/bench +## 0.0.2 + +### Patch Changes + +- Updated dependencies [e551eb0] + - @sheetwrite/core@0.3.0 + ## 0.0.1 ### Patch Changes diff --git a/bench/package.json b/bench/package.json index 77228cfc..ae54bd59 100644 --- a/bench/package.json +++ b/bench/package.json @@ -1,6 +1,6 @@ { "name": "@sheetwrite/bench", - "version": "0.0.1", + "version": "0.0.2", "private": true, "type": "module", "description": "Performance comparison benchmarks: Sheetwrite vs Handsontable.", diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 4bc358c1..16d48911 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,16 @@ # @sheetwrite/docs-start +## 0.0.2 + +### Patch Changes + +- Updated dependencies [e551eb0] + - @sheetwrite/core@0.3.0 + - @sheetwrite/react@0.3.0 + - @sheetwrite/vue@0.3.0 + - @sheetwrite/svelte@0.3.0 + - @sheetwrite/xlsx@0.3.0 + ## 0.0.1 ### Patch Changes diff --git a/docs/package.json b/docs/package.json index 1a20971b..9ba78720 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@sheetwrite/docs-start", - "version": "0.0.1", + "version": "0.0.2", "private": true, "type": "module", "scripts": { diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index b2e40f6d..5c4b2176 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,11 @@ # @sheetwrite/core +## 0.3.0 + +### Minor Changes + +- e551eb0: Introduce the canonical `SheetwriteError` envelope and stable error codes across initialization, data sources, rendering, persistence, synchronization, collaboration, and import/export boundaries, with serialization-safe context and explicit retryability. + ## 0.2.0 ### Minor Changes diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index aaaa6d92..99fe512f 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,16 @@ # @sheetwrite/react +## 0.3.0 + +### Minor Changes + +- e551eb0: Expose typed `SheetwriteError` failures through `onInitializationError` while preserving React grid readiness and input-reset lifecycle behavior. + +### Patch Changes + +- Updated dependencies [e551eb0] + - @sheetwrite/core@0.3.0 + ## 0.2.0 ### Minor Changes diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 63fe37d8..1c5645e0 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,16 @@ # @sheetwrite/svelte +## 0.3.0 + +### Minor Changes + +- e551eb0: Normalize initialization failures into canonical `SheetwriteError` values for `onInitializationError`, including cross-realm error envelopes and retained causes. + +### Patch Changes + +- Updated dependencies [e551eb0] + - @sheetwrite/core@0.3.0 + ## 0.2.0 ### Minor Changes diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index e09f16c3..d9668f38 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -1,5 +1,16 @@ # @sheetwrite/vue +## 0.3.0 + +### Minor Changes + +- e551eb0: Emit typed `SheetwriteError` failures through the `initialization-error` event while preserving Vue grid readiness and input-reset lifecycle behavior. + +### Patch Changes + +- Updated dependencies [e551eb0] + - @sheetwrite/core@0.3.0 + ## 0.2.0 ### Minor Changes diff --git a/packages/xlsx/CHANGELOG.md b/packages/xlsx/CHANGELOG.md index db6f9722..922bd757 100644 --- a/packages/xlsx/CHANGELOG.md +++ b/packages/xlsx/CHANGELOG.md @@ -1,5 +1,16 @@ # @sheetwrite/xlsx +## 0.3.0 + +### Minor Changes + +- e551eb0: Normalize XLSX import, export, option, and resource-limit failures into canonical `SheetwriteError` values, and preserve each `AbortSignal` reason as the cancellation cause. + +### Patch Changes + +- Updated dependencies [e551eb0] + - @sheetwrite/core@0.3.0 + ## 0.2.0 ### Minor Changes diff --git a/scripts/release-workflow.test.ts b/scripts/release-workflow.test.ts index 6bc1ab22..fca0c3ca 100644 --- a/scripts/release-workflow.test.ts +++ b/scripts/release-workflow.test.ts @@ -93,6 +93,8 @@ describe("CI-completion package release workflow", () => { (step) => step.name === "Generate published package size history", ); expect(generateSizes?.if).toBe("steps.publish.outputs.verified != '[]'"); + expect(generateSizes?.run).toContain(`require('./packages/core/package.json').version`); + expect(generateSizes?.run).not.toContain(`require('./package.json').version`); expect(generateSizes?.run).toContain('bun run size:record --version="$VERSION"'); expect(generateSizes?.run).toContain("bun run docs:generate"); const openPullRequest = parsed.jobs.publish?.steps?.find( diff --git a/scripts/workflow-contract.test.ts b/scripts/workflow-contract.test.ts index 195f552e..eb103fb7 100644 --- a/scripts/workflow-contract.test.ts +++ b/scripts/workflow-contract.test.ts @@ -113,6 +113,23 @@ describe("CI and release workflow contracts", () => { ).toThrow("action is not reviewed"); }); + it("allows the generated version pull request to consume its changesets", () => { + const changesetStatus = workflows().ci.jobs.preflight?.steps?.find( + (step) => step.name === "Changeset status", + ); + expect(changesetStatus?.run).toBe("bun run changeset:status -- --since=origin/develop"); + expect(changesetStatus?.if).toBe( + "github.event_name != 'pull_request' || github.head_ref != 'changeset-release/develop'", + ); + const toolingContracts = workflows().ci.jobs.preflight?.steps?.find( + (step) => step.name === "Tooling contracts", + ); + expect(toolingContracts?.env?.SKIP_CHANGESET_STATUS).toBe( + "$" + + "{{ github.event_name == 'pull_request' && github.head_ref == 'changeset-release/develop' }}", + ); + }); + it("keeps each workflow's required toolchain versions in parity", () => { const parsed = workflows(); for (const [name, workflow] of Object.entries(parsed)) { diff --git a/scripts/workspace-tooling.test.ts b/scripts/workspace-tooling.test.ts index 13b3e371..398363b5 100644 --- a/scripts/workspace-tooling.test.ts +++ b/scripts/workspace-tooling.test.ts @@ -243,6 +243,7 @@ describe("changeset workspace contract", () => { }); it("runs the canonical Changesets status command", () => { + if (process.env.SKIP_CHANGESET_STATUS === "true") return; const root = resolve(import.meta.dir, ".."); const result = Bun.spawnSync( ["bun", "run", "changeset:status", "--", "--since=origin/develop"],