Skip to content

Conversation

edison1105
Copy link
Member

@edison1105 edison1105 commented Aug 22, 2025

now using continuous release with pkg.pr.new

Summary by CodeRabbit

  • Chores
    • Removed automated canary/minor release workflows; scheduled and manual canary publishing is discontinued.
  • Refactor
    • Eliminated canary release path and related logic, unifying the release flow to stable packages only.
    • Consolidated build outputs and package handling; canary variants are no longer produced.
    • Streamlined publishing behavior (including provenance in CI when applicable).

Impact: The canary release channel is no longer available. Users will receive only standard stable releases going forward.

now using continuous release with pkg.pr.new
Copy link

coderabbitai bot commented Aug 22, 2025

Walkthrough

Removes two GitHub Actions canary workflows, deletes canary-related logic from the release script, and updates Rollup config to drop canary package handling. The release flow is simplified to a single path; build and CommonJS plugin behavior no longer special-case canary variants.

Changes

Cohort / File(s) Summary of Changes
CI Canary Workflows Removed
​.github/workflows/canary.yml, ​.github/workflows/canary-minor.yml
Deleted scheduled/manual canary release workflows and associated steps (checkout, pnpm setup, install, canary publish).
Build Config Canary References Removed
rollup.config.js
isCompatPackage now matches only @vue/compat; removed *-canary handling. resolveNodePlugins cjs ignore list applies only to @vue/compiler-sfc (drops canary variant).
Release Flow Simplified (Removed Canary Mode)
scripts/release.js
Eliminated canary CLI flag, versioning, package renaming, dependency updates, registry collision checks, and canary-specific publish/provenance paths. Consolidated to a single standard release process with lockfile update always executed.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer
  participant CI as CI Runner
  participant RS as Release Script
  participant NPM as npm Registry

  Dev->>CI: Trigger release (tag/command)
  CI->>RS: Run unified release
  RS->>RS: Determine target version (standard)
  RS->>RS: Update packages and lockfile
  RS->>NPM: Publish (with provenance if CI & default registry)
  NPM-->>RS: Publish result
  RS-->>CI: Exit status
  CI-->>Dev: Report outcome
Loading
sequenceDiagram
  autonumber
  actor Sched as (Removed) Scheduler/Manual
  participant CI as CI Runner
  participant RS as Release Script
  participant NPM as npm Registry

  note over Sched,CI: Previous canary flow (removed)
  Sched--xCI: Run canary workflow (deleted)
  CI--xRS: Release with canary flag (deleted)
  RS--xNPM: Publish with canary tag/version (deleted)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested labels

ready to merge

Poem

A rabbit taps the “release” with cheer,
No more canaries flitting near—
One path, hop-light, the burrow’s clear,
Rollup trimmed, the scripts sincere.
CI hums, the carrots steer,
Publish done—thump-thump!—we cheer. 🥕✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch edison/chore/dropCanaryRelease

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

Size Report

Bundles

File Size Gzip Brotli
runtime-dom.global.prod.js 101 kB 38.4 kB 34.6 kB
vue.global.prod.js 159 kB 58.5 kB 52.1 kB

Usages

Name Size Gzip Brotli
createApp (CAPI only) 46.5 kB 18.2 kB 16.7 kB
createApp 54.5 kB 21.2 kB 19.4 kB
createSSRApp 58.7 kB 22.9 kB 20.9 kB
defineCustomElement 59.5 kB 22.8 kB 20.8 kB
overall 68.5 kB 26.4 kB 24.1 kB

Copy link

pkg-pr-new bot commented Aug 22, 2025

Open in StackBlitz

@vue/compiler-core

npm i https://pkg.pr.new/@vue/compiler-core@13794

@vue/compiler-dom

npm i https://pkg.pr.new/@vue/compiler-dom@13794

@vue/compiler-sfc

npm i https://pkg.pr.new/@vue/compiler-sfc@13794

@vue/compiler-ssr

npm i https://pkg.pr.new/@vue/compiler-ssr@13794

@vue/reactivity

npm i https://pkg.pr.new/@vue/reactivity@13794

@vue/runtime-core

npm i https://pkg.pr.new/@vue/runtime-core@13794

@vue/runtime-dom

npm i https://pkg.pr.new/@vue/runtime-dom@13794

@vue/server-renderer

npm i https://pkg.pr.new/@vue/server-renderer@13794

@vue/shared

npm i https://pkg.pr.new/@vue/shared@13794

vue

npm i https://pkg.pr.new/vue@13794

@vue/compat

npm i https://pkg.pr.new/@vue/compat@13794

commit: 1d60836

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (3)
rollup.config.js (1)

138-146: No lingering “-canary” references in source code
A sweep confirmed that only the lockfile (pnpm-lock.yaml) contains “canary” entries (e.g. [email protected]), which is expected and does not affect your build scripts. There are no hard-coded @vue/...-canary imports or special-case logic in your source.

That said, since you already drive the compat build from packageOptions.compat, you can simplify and decouple the export-mode logic from the package name:

• In rollup.config.js (around lines 138–146), replace

const isCompatPackage = pkg.name === '@vue/compat'

with

// Driven by the compat build flag instead of package name
const isCompatPackage = isCompatBuild

and update the preceding comment to reflect that exports and ESM entry selection are controlled by the compat option.

This change makes the config more robust if package names ever shift again—no further code locations require adjustment.

scripts/release.js (2)

191-194: Drop the now-redundant package-name remapping parameter.

With canary removed, updateVersions no longer needs a getNewPackageName callback. Passing keepThePackageName everywhere adds noise.

Apply this minimal change here:

-  updateVersions(targetVersion, keepThePackageName)
+  updateVersions(targetVersion)

Then simplify the helpers (outside this hunk) to remove the callback entirely:

-const keepThePackageName = (/** @type {string} */ pkgName) => pkgName
-
 /**
  * @param {string} version
- * @param {(pkgName: string) => string} getNewPackageName
  */
-function updateVersions(version, getNewPackageName = keepThePackageName) {
+function updateVersions(version) {
   // 1. update root package.json
-  updatePackage(path.resolve(__dirname, '..'), version, getNewPackageName)
+  updatePackage(path.resolve(__dirname, '..'), version)
   // 2. update all packages
   packages.forEach(p =>
-    updatePackage(getPkgRoot(p), version, getNewPackageName),
+    updatePackage(getPkgRoot(p), version),
   )
 }
 
 /**
  * @param {string} pkgRoot
  * @param {string} version
- * @param {(pkgName: string) => string} getNewPackageName
  */
-function updatePackage(pkgRoot, version, getNewPackageName) {
+function updatePackage(pkgRoot, version) {
   const pkgPath = path.resolve(pkgRoot, 'package.json')
   /** @type {Package} */
   const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))
-  pkg.name = getNewPackageName(pkg.name)
   pkg.version = version
   fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')
 }

Optional: also reword the log on Line 192 from “Updating cross dependencies...” to “Updating package versions...” to reflect the simplified behavior.


470-477: Use the intended version in publishOnly’s code path.

publishOnly() updates package.jsons to targetVersion (when provided) but calls publishPackages(currentVersion). While pnpm publish reads versions from package.json, this mismatch can produce incorrect logs and tag selection.

 async function publishOnly() {
   const targetVersion = positionals[0]
   if (targetVersion) {
     updateVersions(targetVersion)
   }
   await buildPackages()
-  await publishPackages(currentVersion)
+  await publishPackages(targetVersion || currentVersion)
 }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between a48ffda and 1d60836.

📒 Files selected for processing (4)
  • .github/workflows/canary-minor.yml (0 hunks)
  • .github/workflows/canary.yml (0 hunks)
  • rollup.config.js (2 hunks)
  • scripts/release.js (5 hunks)
💤 Files with no reviewable changes (2)
  • .github/workflows/canary.yml
  • .github/workflows/canary-minor.yml
🧰 Additional context used
🧬 Code graph analysis (1)
rollup.config.js (4)
scripts/release.js (2)
  • pkg (77-79)
  • pkg (380-380)
scripts/build.js (1)
  • pkg (165-165)
scripts/dev.js (1)
  • pkg (63-63)
scripts/utils.js (1)
  • pkg (18-18)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Redirect rules
  • GitHub Check: Header rules
  • GitHub Check: Pages changed
🔇 Additional comments (5)
rollup.config.js (1)

290-301: No @vue/compiler-sfc-canary references found
All searches for -canary in package names and any compiler-sfc-canary mentions returned no results, confirming the branch removal is complete and safe to merge.

scripts/release.js (4)

69-71: LGTM: bindings are clear and preserve previous defaults.

No behavior change; skipPrompts/skipGit default to falsy when omitted.


174-176: Unified release message looks good.

Simplifies the messaging path under --skipPrompts and matches the single non-canary flow.


214-216: Always updating the lockfile makes sense after version bumps.

Running a full pnpm install ensures the lockfile reflects the updated versions across all workspaces.


409-413: CI pnpm version lacks --provenance support
Our CI uses pnpm 10.15.0 and pnpm help publish shows no --provenance flag, so pushing it will break your release pipeline (pnpm.io).

To fix, either:

  • Upgrade your CI image to a pnpm release that officially ships --provenance (confirm via pnpm help publish | rg provenance).
  • Or switch to the env-var approach, which pnpm already honors today: NPM_CONFIG_PROVENANCE=true.

Please update scripts/release.js (around lines 409–413) accordingly:

-  if (process.env.CI && !args.registry) {
-    additionalPublishFlags.push('--provenance')
-  }
+  // add provenance metadata when releasing from CI and targeting the npm registry
+  const effectiveRegistry =
+    args.registry ||
+    process.env.npm_config_registry ||
+    process.env.NPM_CONFIG_REGISTRY ||
+    ''
+  if (
+    process.env.CI &&
+    (!effectiveRegistry ||
+      /^https?:\/\/registry\.npmjs\.org\/?$/i.test(effectiveRegistry))
+  ) {
+    // use environment variable since pnpm 10.15.0 doesn’t support --provenance
+    process.env.NPM_CONFIG_PROVENANCE = 'true'
+  }

Likely an incorrect or invalid review comment.

@edison1105 edison1105 added ready to merge The PR is ready to be merged. 🧹 p1-chore Priority 1: this doesn't change code behavior. labels Aug 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧹 p1-chore Priority 1: this doesn't change code behavior. ready to merge The PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant