Skip to content

Prepare MDV prerelease release workflow and rename zarrextra - #42

Merged
xinaesthete merged 2 commits into
mainfrom
codex/prepare-release-and-changesets
Jun 8, 2026
Merged

Prepare MDV prerelease release workflow and rename zarrextra#42
xinaesthete merged 2 commits into
mainfrom
codex/prepare-release-and-changesets

Conversation

@xinaesthete

@xinaesthete xinaesthete commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add Changesets prerelease setup for the first MDV-targeted next release line.
  • Rename @spatialdata/zarrextra to unscoped zarrextra and update workspace references, docs, and build aliases accordingly.
  • Add a root release guide and make GitHub Actions prepare version PRs only, with manual npm publishing kept out of repo secrets.

Testing

  • pnpm build
  • pnpm -r --filter @spatialdata/vis test
  • pnpm docs:build
  • npm dry-runs for zarrextra, @spatialdata/core, and @spatialdata/vis with the next tag
  • git diff --check

Summary by CodeRabbit

  • New Features

    • SpatialData.js packages are now available as prerelease versions on npm via the next tag (e.g., npm install @spatialdata/core@next).
    • zarrextra is now published as a separately available package on npm.
  • Documentation

    • Updated installation guides to reflect package availability on npm.
    • Clarified prerelease status and installation procedures across the ecosystem.

@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

This PR establishes a complete npm release system for SpatialData.js by unscoping the zarrextra package, configuring Changesets for prerelease versioning, adding GitHub Actions automation, setting public access on all packages, and comprehensively documenting release procedures.

Changes

Release Infrastructure & Package Unscoping

Layer / File(s) Summary
zarrextra package rename and workspace resolution
packages/zarrextra/package.json, packages/zarrextra/README.md, packages/core/package.json, packages/core/src/store/index.ts, packages/core/src/types.ts, packages/core/tests/*, packages/core/tsconfig.json, packages/core/vite.config.ts, packages/react/tsconfig.json, packages/vis/tsconfig.json, packages/vis/demo/tsconfig.json, vite.config.base.ts, vitest.config.ts
Renames zarrextra from scoped @spatialdata/zarrextra to unscoped zarrextra, updates the package name field and README, switches all internal imports and TypeScript path aliases across core, react, and vis packages to use the unscoped name, and updates Vite workspace and vitest module resolution.
Changesets prerelease setup
.changeset/config.json, .changeset/pre.json, .changeset/mdv-prerelease.md
Configures Changesets with changelog integration, defines prerelease mode (next tag), sets initialVersions for zarrextra and all @spatialdata/* packages, and declares the first MDV-targeted alpha prerelease with minor version bumps.
Release automation and publish config
.github/workflows/release.yml, package.json, packages/avivatorish/package.json, packages/layers/package.json, packages/react/package.json, packages/vis/package.json
Adds GitHub Actions workflow to open version PRs on main branch pushes, introduces changeset, version-packages, and publish:next npm scripts, installs Changesets CLI dependencies, and sets publishConfig.access: public on all packages.
Release procedures and prerelease documentation
RELEASE.md, README.md, docs/docs/core/overview.mdx, docs/docs/core/error-handling.mdx, docs/docs/core/internals.mdx, docs/docs/intro.mdx, docs/docs/vis/headless-viewer.mdx, docs/docs/vis/mdv-integration.mdx, docs/docs/vis/mdv-release-checklist.mdx
Introduces RELEASE.md documenting manual npm publishing approach, security constraints, and complete release checklist; updates user docs to replace "not on npm" notices with prerelease availability via @next tag, adds installation instructions, updates MDV smoke-test and integration docs with prerelease procedures and risk tracking.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 Twitching whiskers with release delight,
Zarrextra unscoped, now shining so bright,
Changesets configured, next tag in place,
CI workflows sprinting at breakneck pace,
Docs sing of npm—prerelease embrace!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately summarizes the two main changes: preparing an MDV prerelease release workflow and renaming the zarrextra package from scoped to unscoped.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/prepare-release-and-changesets

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
.github/workflows/release.yml (2)

19-20: 💤 Low value

Consider adding persist-credentials: false to the checkout step.

The static analysis tool flags that credentials may persist through GitHub Actions artifacts. While not critical for a version PR workflow, adding persist-credentials: false would improve security posture by preventing potential credential leakage.

🛡️ Proposed security enhancement
     - name: Checkout repository
       uses: actions/checkout@v4
+      with:
+        persist-credentials: false
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 19 - 20, The checkout step named
"Checkout repository" currently uses actions/checkout@v4 without disabling
credential persistence; update that step (the actions/checkout@v4 usage) to
include persist-credentials: false so GitHub token credentials are not left in
the workspace or artifacts. Add the persist-credentials: false option under the
uses entry for the Checkout repository step and ensure the step still functions
correctly after the change.

Source: Linters/SAST tools


20-20: ⚖️ Poor tradeoff

Consider pinning GitHub Actions to commit SHAs.

The static analysis tool recommends pinning actions to commit hashes rather than tags for improved supply chain security. While using version tags (e.g., @v4) is common practice, commit hashes provide stronger guarantees against tag manipulation.

This is a defense-in-depth measure and not critical for most repositories, but worth considering if supply chain security is a high priority.

Example pinning approach
# Instead of:
uses: actions/checkout@v4

# Use:
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

You can use tools like pin-github-action to automate this process.

Also applies to: 23-23, 28-28, 38-38

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml at line 20, Replace tag-based action refs with
pinned commit SHAs for all "uses:" entries (e.g., the occurrence "uses:
actions/checkout@v4" and the other "uses:" lines flagged) by locating each uses:
line in the workflow and substituting the tag (e.g., `@v4`) with the corresponding
commit SHA for the intended release; update the comment or annotation to retain
the human-readable tag (optional) and ensure you pin all actions mentioned in
the file so they reference immutable commit hashes rather than floating tags.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/release.yml:
- Around line 19-20: The checkout step named "Checkout repository" currently
uses actions/checkout@v4 without disabling credential persistence; update that
step (the actions/checkout@v4 usage) to include persist-credentials: false so
GitHub token credentials are not left in the workspace or artifacts. Add the
persist-credentials: false option under the uses entry for the Checkout
repository step and ensure the step still functions correctly after the change.
- Line 20: Replace tag-based action refs with pinned commit SHAs for all "uses:"
entries (e.g., the occurrence "uses: actions/checkout@v4" and the other "uses:"
lines flagged) by locating each uses: line in the workflow and substituting the
tag (e.g., `@v4`) with the corresponding commit SHA for the intended release;
update the comment or annotation to retain the human-readable tag (optional) and
ensure you pin all actions mentioned in the file so they reference immutable
commit hashes rather than floating tags.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f49bcdcd-69a2-4b44-a7b0-83d8009a99d7

📥 Commits

Reviewing files that changed from the base of the PR and between 5d1a450 and 75cc220.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (34)
  • .changeset/config.json
  • .changeset/mdv-prerelease.md
  • .changeset/pre.json
  • .github/workflows/release.yml
  • README.md
  • RELEASE.md
  • docs/docs/core/error-handling.mdx
  • docs/docs/core/internals.mdx
  • docs/docs/core/overview.mdx
  • docs/docs/intro.mdx
  • docs/docs/vis/headless-viewer.mdx
  • docs/docs/vis/mdv-integration.mdx
  • docs/docs/vis/mdv-release-checklist.mdx
  • package.json
  • packages/avivatorish/package.json
  • packages/core/package.json
  • packages/core/src/store/index.ts
  • packages/core/src/types.ts
  • packages/core/tests/badFiles.spec.ts
  • packages/core/tests/shapesRenderData.spec.ts
  • packages/core/tests/tableAssociations.spec.ts
  • packages/core/tests/tableElement.spec.ts
  • packages/core/tsconfig.json
  • packages/core/vite.config.ts
  • packages/layers/package.json
  • packages/react/package.json
  • packages/react/tsconfig.json
  • packages/vis/demo/tsconfig.json
  • packages/vis/package.json
  • packages/vis/tsconfig.json
  • packages/zarrextra/README.md
  • packages/zarrextra/package.json
  • vite.config.base.ts
  • vitest.config.ts

@xinaesthete
xinaesthete merged commit 0a73939 into main Jun 8, 2026
2 checks passed
@xinaesthete
xinaesthete deleted the codex/prepare-release-and-changesets branch June 8, 2026 16:48
@github-actions github-actions Bot mentioned this pull request Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant