Skip to content

feat: set up monorepo release process with changesets#1

Merged
hetari merged 1 commit intomainfrom
feat/changeset
Mar 20, 2026
Merged

feat: set up monorepo release process with changesets#1
hetari merged 1 commit intomainfrom
feat/changeset

Conversation

@hetari
Copy link
Copy Markdown
Owner

@hetari hetari commented Mar 20, 2026

No description provided.

@netlify
Copy link
Copy Markdown

netlify Bot commented Mar 20, 2026

👷 Deploy Preview for sulaf processing.

Name Link
🔨 Latest commit caa83be
🔍 Latest deploy log https://app.netlify.com/projects/sulaf/deploys/69bdb06f8f584c000851f525

@netlify
Copy link
Copy Markdown

netlify Bot commented Mar 20, 2026

Deploy Preview for sulaf canceled.

Name Link
🔨 Latest commit caa83be
🔍 Latest deploy log https://app.netlify.com/projects/sulaf/deploys/69bdb06f8f584c000851f525

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 20, 2026

🦋 Changeset detected

Latest commit: caa83be

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
Name Type
@sulaf/registry Patch
@sulaf/cli Patch
@sulaf/ui Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 20, 2026

📝 Walkthrough

Summary by CodeRabbit

Release Notes

  • Chores
    • Initialized monorepo infrastructure with automated release workflow via GitHub Actions for coordinated version management and package publishing.
    • Updated registry deployment configuration with new hosting endpoint and standardized project naming across packages.
    • Configured changesets for consistent package versioning and changelog generation.

Walkthrough

The pull request establishes a monorepo release automation system using Changesets. It introduces Changesets configuration, a GitHub Actions release workflow, npm scripts for versioning and publishing, and updates registry package metadata with new deployment URLs and naming conventions.

Changes

Cohort / File(s) Summary
Changesets Configuration
.changeset/brown-weeks-brake.md, .changeset/config.json
Added Changesets metadata marking three packages for patch release, and configured Changesets with changelog generation, repository name, and internal dependency version bump behavior.
Release Automation
.github/workflows/release.yml
Added GitHub Actions workflow triggered on main branch pushes to create release pull requests via Changesets action.
NPM Release Scripts
package.json
Added version, publish, and release scripts to orchestrate Changesets versioning and publishing workflows.
Registry Package Updates
packages/registry/package.json, packages/registry/scripts/registry.config.ts
Added explicit version metadata and updated registry configuration with new Netlify deployment URL and monorepo name (sulaf replacing sulaf-ui).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

📦 From chaos springs order, with Changesets in place,
A monorepo awakens, automation's embrace,
Versioning, publishing, all in one go,
The release pipeline's ready—let the versions flow! 🚀

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive No description was provided by the author. The check cannot assess whether a missing description relates to the changeset. Add a PR description explaining the purpose of setting up changesets, the release workflow, and any configuration choices made.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main objective of the PR: setting up a monorepo release process using changesets. All changes align with this goal.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ 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 feat/changeset

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.

Tip

You can disable the changed files summary in the walkthrough.

Disable the reviews.changed_files_summary setting to disable the changed files summary in the walkthrough.

@socket-security
Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednuxt-shiki@​0.3.28510010089100
Addedshadcn-nuxt@​2.4.310010010086100
Addednuxt@​4.4.29710010095100
Addednuxt-og-image@​6.0.1961009696100

View full report

Copy link
Copy Markdown

@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: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.changeset/config.json:
- Around line 3-7: The "repo" value in the changelog config is currently just
"sulaf", which yields malformed GitHub links; update the "repo" property in the
changeset config object to the full GitHub slug in "owner/repo" format (e.g.,
"sulaf/your-repo-name") so the changelog generator can build correct
links—locate the "repo" key in the config JSON and replace the single-token
value with the full slug.

In @.github/workflows/release.yml:
- Around line 18-24: Update the GitHub Actions release workflow to match
repository constraints: replace the "Setup Node.js 20" step
(actions/setup-node@v3) with setup-node@v4 and set node-version to 24, add a
step to install Bun using setup-bun@v2 (targeting bun@1.3.10), and replace the
"Install Dependencies" step that runs `yarn` with a step that runs `bun install
--frozen-lockfile`; ensure step names reflect these changes so the workflow uses
Node 24 and Bun 1.3.10 for installs.
- Around line 16-21: Update the GitHub Actions step versions and Node target:
change the uses of actions/checkout@v3 and actions/setup-node@v3 to
actions/checkout@v4 and actions/setup-node@v4, and update the setup-node input
node-version from 20 to 24 so the workflow uses the maintained action versions
and a current Node runtime; locate the steps referencing "uses:
actions/checkout" and "uses: actions/setup-node" to apply these changes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 70a37d0c-84cf-4f85-8a81-027cf9a18751

📥 Commits

Reviewing files that changed from the base of the PR and between 42f9fbe and caa83be.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • .changeset/brown-weeks-brake.md
  • .changeset/config.json
  • .github/workflows/release.yml
  • package.json
  • packages/registry/package.json
  • packages/registry/scripts/registry.config.ts
📜 Review details
⏰ 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 - sulaf
  • GitHub Check: Header rules - sulaf
  • GitHub Check: Pages changed - sulaf
🧰 Additional context used
🪛 actionlint (1.7.11)
.github/workflows/release.yml

[error] 16-16: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


[error] 19-19: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🪛 markdownlint-cli2 (0.21.0)
.changeset/brown-weeks-brake.md

[warning] 7-7: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

🔇 Additional comments (4)
packages/registry/package.json (1)

3-3: Good addition for Changesets compatibility.

Adding an explicit package version here is the right move for monorepo release/version workflows.

packages/registry/scripts/registry.config.ts (1)

6-6: Config rename looks consistent with registry output generation.

baseUrl, registry.name, and registry.homepage updates are aligned and will flow correctly into generated registry metadata.

Also applies to: 28-29

.changeset/brown-weeks-brake.md (1)

1-7: Changeset file is correctly structured for patch releases.

The package bump declarations and summary message are valid for the release flow.

package.json (1)

26-29: Changesets script split is clean and conventional.

Separating version and publish scripts and keeping a composed release command improves release-step clarity.

Comment thread .changeset/config.json
Comment on lines +3 to +7
"changelog": [
"@changesets/cli/changelog",
{
"repo": "sulaf"
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
# Expectation after fix: repo value contains a slash
python - <<'PY'
import json
cfg=json.load(open('.changeset/config.json'))
repo=cfg.get('changelog',[None,{}])[1].get('repo','')
print("repo =", repo)
print("valid_owner_repo_format =", "/" in repo and not repo.startswith("/") and not repo.endswith("/"))
PY

Repository: hetari/sulaf

Length of output: 100


Update changelog configuration to use full GitHub slug.

Line 6 needs the owner/repo format. Using "sulaf" alone will produce malformed changelog links.

🔧 Proposed fix
-      "repo": "sulaf"
+      "repo": "hetari/sulaf"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"changelog": [
"@changesets/cli/changelog",
{
"repo": "sulaf"
}
"changelog": [
"@changesets/cli/changelog",
{
"repo": "hetari/sulaf"
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.changeset/config.json around lines 3 - 7, The "repo" value in the changelog
config is currently just "sulaf", which yields malformed GitHub links; update
the "repo" property in the changeset config object to the full GitHub slug in
"owner/repo" format (e.g., "sulaf/your-repo-name") so the changelog generator
can build correct links—locate the "repo" key in the config JSON and replace the
single-token value with the full slug.

Comment on lines +16 to +21
uses: actions/checkout@v3

- name: Setup Node.js 20
uses: actions/setup-node@v3
with:
node-version: 20
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
# Expectation after fix: no v3 references remain
rg -n 'uses:\s*actions/(checkout|setup-node)@v3' .github/workflows/release.yml || true

Repository: hetari/sulaf

Length of output: 131


🌐 Web query:

actions/checkout deprecated v3 v4 GitHub 2025

💡 Result:

No, actions/checkout v3 is not deprecated. The official GitHub repository actively maintains multiple versions including v3, v4, v5, and v6 as of 2026. The README highlights "What's new" sections for v6, v5, and v4, with v3 still listed in the changelog with updates up to v3.6.0. There is no official deprecation notice for v3 in GitHub changelogs or docs, unlike other actions like artifacts v3 or cache v1-v2 which have explicit notices for 2025. Recommendations exist to upgrade to v4+ due to Node.js EOL concerns in v3 (Node 16), but v3 remains usable without workflow failures. Use the latest v6 for best security and features: uses: actions/checkout@v6. Upgrade path: v3 -> v4 introduces Node20; v4 -> v5 Node24; v5 -> v6 improved credential handling.

Citations:


🌐 Web query:

actions/setup-node v3 deprecated v4 node-version support

💡 Result:

actions/setup-node v3 is deprecated due to running on Node.js 16, which GitHub Actions deprecated starting late 2023. Users should upgrade to v4 or later (current latest is v6.3.0 as of March 2026). v4 was released to support Node.js 20 and avoid deprecation warnings. v4 fully supports all node-version syntaxes including major versions (e.g., 20, 22, 24), specific versions (e.g., 20.19, 24.8.0), LTS aliases (lts/iron, lts/), latest (, latest, node), nightly, RC, and V8 canary builds. It downloads from actions/node-versions repository, which includes up-to-date Node.js versions up to 24.14.0+ as of early 2026. Caching for npm/yarn/pnpm is supported. Migration from v3 to v4: Simply change uses: actions/setup-node@v3 to @v4 in workflows. No breaking changes noted; v4 maintains backward compatibility. Official docs and starter workflows recommend v6 now, but v4 resolves v3 issues. Use explicit node-version like '24' or 'lts/*' for best practices. Example: - uses: actions/setup-node@v6 with: node-version: 24 cache: 'npm'

Citations:


🏁 Script executed:

#!/bin/bash
# Check if there are other workflow files that might reference these versions
find .github/workflows -name "*.yml" -o -name "*.yaml" | head -20

Repository: hetari/sulaf

Length of output: 112


Upgrade GitHub Actions to currently maintained versions.

actions/setup-node@v3 is deprecated (uses Node.js 16, which GitHub deprecated in late 2023). While actions/checkout@v3 is still maintained, upgrading both to v4 ensures consistency with current recommended practices. Current versions are v6 for both actions, but v4 provides a solid upgrade path and is fully backward-compatible.

Proposed upgrade: checkout@v4 and setup-node@v4 with node-version: 24 (supported and recommended for Node.js 20+ actions).

🧰 Tools
🪛 actionlint (1.7.11)

[error] 16-16: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


[error] 19-19: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yml around lines 16 - 21, Update the GitHub
Actions step versions and Node target: change the uses of actions/checkout@v3
and actions/setup-node@v3 to actions/checkout@v4 and actions/setup-node@v4, and
update the setup-node input node-version from 20 to 24 so the workflow uses the
maintained action versions and a current Node runtime; locate the steps
referencing "uses: actions/checkout" and "uses: actions/setup-node" to apply
these changes.

Comment on lines +18 to +24
- name: Setup Node.js 20
uses: actions/setup-node@v3
with:
node-version: 20

- name: Install Dependencies
run: yarn
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "== Root runtime constraints =="
rg -n '"engines"|"packageManager"|"(bun|node)"\s*:' package.json -A4 -B2
echo
echo "== Workflow runtime/install config =="
rg -n 'setup-node|node-version|setup-bun|run:\s*(yarn|bun)' .github/workflows/release.yml -A2 -B1

Repository: hetari/sulaf

Length of output: 508


Align CI install/runtime with repository constraints.

Workflow uses Node.js 20 (line 21) while package.json requires "node": ">=24.0.0", and uses yarn (line 24) although the repository specifies "packageManager": "bun@1.3.10". This creates release failures and non-reproducible builds.

Update to Node 24 with setup-node@v4, replace yarn with Bun 1.3.10 via setup-bun@v2, and use bun install --frozen-lockfile for the install step.

🧰 Tools
🪛 actionlint (1.7.11)

[error] 19-19: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yml around lines 18 - 24, Update the GitHub
Actions release workflow to match repository constraints: replace the "Setup
Node.js 20" step (actions/setup-node@v3) with setup-node@v4 and set node-version
to 24, add a step to install Bun using setup-bun@v2 (targeting bun@1.3.10), and
replace the "Install Dependencies" step that runs `yarn` with a step that runs
`bun install --frozen-lockfile`; ensure step names reflect these changes so the
workflow uses Node 24 and Bun 1.3.10 for installs.

@hetari hetari merged commit ee83d1a into main Mar 20, 2026
8 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Mar 23, 2026
@hetari hetari deleted the feat/changeset branch March 23, 2026 23:10
@hetari hetari restored the feat/changeset branch March 24, 2026 02:35
@hetari hetari deleted the feat/changeset branch March 24, 2026 02:36
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