WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Conversation

@RobbieTheWagner
Copy link
Member

@RobbieTheWagner RobbieTheWagner commented Dec 27, 2025

Summary by CodeRabbit

  • Chores
    • Updated dependencies and developer tooling across multiple packages (frameworks, build tools, UI libs, and utilities) to newer patch/minor versions; no user-facing behavior or public APIs changed.
  • Tests
    • Test setup adjusted to enable DOM-related matchers in the test environment.
  • Refactor
    • Minor internal readability tweak with no behavioral impact.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Dec 27, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
shepherd-docs Ready Ready Preview, Comment Dec 28, 2025 1:30am
1 Skipped Deployment
Project Deployment Review Updated (UTC)
shepherd-landing Skipped Skipped Dec 28, 2025 1:30am

@coderabbitai
Copy link

coderabbitai bot commented Dec 27, 2025

📝 Walkthrough

Walkthrough

Dependency and devDependency version bumps across multiple package.json files (root, landing, shepherd.js, packages/react), a test setup change to extend Vitest expect with @testing-library/jest-dom matchers, and a minor parentheses-only tweak in shepherd.js/src/utils/general.ts (no behavioral change).

Changes

Cohort / File(s) Summary
Root-level Dependencies
package.json
Multiple devDependency upgrades (Babel, Autoprefixer, Prettier plugin, Svelte, etc.). No scripts or runtime changes.
Landing Project
landing/package.json
Upgraded astro (^5.15.9→^5.16.6), Astro plugins (@astrojs/check, @astrojs/mdx, @astrojs/rss, @astrojs/sitemap), tailwindcss, typescript, and devDeps (@tailwindcss/typography, sharp, vite).
Shepherd.js Project (manifests)
shepherd.js/package.json
Bumped @floating-ui/dom and many devDependencies across Babel, Rollup, Svelte tooling, PostCSS/plugins, Prettier, TypeScript, and related build utilities.
React Package DevDeps
packages/react/package.json
Upgraded test/build tooling and types: @testing-library/jest-dom, @vitejs/plugin-react, happy-dom, typescript, vite, vitest.
Test Setup
test/unit/setupTests.js
Switched from importing @testing-library/jest-dom/vitest to importing matchers from @testing-library/jest-dom/matchers and extending Vitest's expect with those matchers.
Small Code Tweak
shepherd.js/src/utils/general.ts
Parentheses added in uuid() expression: `((d + Math.random() * 16) % 16)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐇 I hopped through package lanes tonight,

I nudged some versions, tidy and light.
I taught expect some matchers new,
And placed a parenthesis — nothing askew.
🥕 Small hops, smooth updates, all in view.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'pnpm update' accurately reflects the primary change: updating dependencies across multiple package.json files using pnpm.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch pnpm-update

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.

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: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dcbf384 and e5a12ba.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • landing/package.json
  • package.json
  • shepherd.js/package.json
⏰ 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). (1)
  • GitHub Check: Tests
🔇 Additional comments (4)
landing/package.json (2)

27-29: LGTM - DevDependency updates look good.

The devDependency updates for typography plugin, sharp, and vite are standard patch/minor updates.


14-24: TypeScript alignment verified and Astro configuration is compatible.

The landing package has TypeScript ^5.9.3, which aligns with the monorepo root and shepherd.js package. The astro.config.mjs correctly references all installed integrations (@astrojs/mdx, @astrojs/sitemap, @astrojs/tailwind, @astrojs/vercel), and the tsconfig.json extends Astro's strict configuration. The dependency updates are minor version changes with no evident breaking changes. Verify the build succeeds with pnpm build in the landing directory.

shepherd.js/package.json (1)

50-50: No issues with @floating-ui/dom 1.7.4 update.

This is a safe patch release containing a single fix for scrollbar-gutter: stable handling. No breaking changes.

package.json (1)

30-46: Dependency updates are safe—no breaking changes or security advisories identified.

Svelte 5.46.1 contains only patch fixes (type for currentTarget in on, skipping static optimisation for stateless deriveds after await, and preventing HMR loops) with no breaking changes. The Babel 7.28.5 packages have no known security advisories. The updates are ready to proceed.

Comment on lines +55 to +86
"@babel/core": "^7.28.5",
"@babel/plugin-transform-typescript": "^7.28.5",
"@babel/preset-env": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@rollup/plugin-babel": "^6.1.0",
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-replace": "^6.0.3",
"@rollup/plugin-terser": "^0.4.4",
"autoprefixer": "^10.4.22",
"cssnano": "^7.1.1",
"autoprefixer": "^10.4.23",
"cssnano": "^7.1.2",
"dts-bundle-generator": "^9.5.1",
"eslint-plugin-svelte": "^2.46.1",
"execa": "^9.3.1",
"execa": "^9.6.1",
"postcss": "^8.5.6",
"prettier": "^3.3.3",
"prettier-plugin-svelte": "^3.3.3",
"renamer": "^5.0.0",
"prettier": "^3.7.4",
"prettier-plugin-svelte": "^3.4.1",
"renamer": "^5.0.2",
"replace": "^1.2.2",
"rimraf": "^6.0.1",
"rollup": "^4.50.2",
"rimraf": "^6.1.2",
"rollup": "^4.54.0",
"rollup-plugin-analyzer": "^4.0.0",
"rollup-plugin-filesize": "^10.0.0",
"rollup-plugin-license": "^3.5.3",
"rollup-plugin-license": "^3.6.0",
"rollup-plugin-livereload": "^2.0.5",
"rollup-plugin-postcss": "^4.0.2",
"rollup-plugin-serve": "^2.0.2",
"rollup-plugin-svelte": "^7.2.2",
"rollup-plugin-serve": "^2.0.3",
"rollup-plugin-svelte": "^7.2.3",
"rollup-plugin-visualizer": "^5.14.0",
"svelte": "^5.25.3",
"svelte": "^5.46.1",
"svelte-preprocess": "^6.0.3",
"svelte2tsx": "0.7.13",
"typescript": "^5.7.3"
"typescript": "^5.9.3"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's find the package.json and understand the repo structure
find . -name "package.json" -type f | head -20

Repository: shipshapecode/shepherd

Length of output: 237


🏁 Script executed:

# Check if we're in the right location and explore the structure
ls -la

Repository: shipshapecode/shepherd

Length of output: 1887


🏁 Script executed:

# Verify the lines in question in the shepherd.js/package.json
if [ -f "shepherd.js/package.json" ]; then
  echo "=== Lines 55-86 of shepherd.js/package.json ==="
  sed -n '55,86p' shepherd.js/package.json
else
  echo "shepherd.js/package.json not found, checking current directory"
  pwd
fi

Repository: shipshapecode/shepherd

Length of output: 1219


🏁 Script executed:

# Get the full shepherd.js/package.json to see the scripts
cat shepherd.js/package.json

Repository: shipshapecode/shepherd

Length of output: 3096


🏁 Script executed:

# Check for build configuration files
ls -la shepherd.js/ | grep -E "rollup|webpack|tsconfig|vite"

Repository: shipshapecode/shepherd

Length of output: 197


🏁 Script executed:

# List all files in shepherd.js to understand the structure
ls -la shepherd.js/

Repository: shipshapecode/shepherd

Length of output: 1171


🏁 Script executed:

# Check the rollup configuration
cat shepherd.js/rollup.config.mjs

Repository: shipshapecode/shepherd

Length of output: 4217


🏁 Script executed:

# Check tsconfig.json
cat shepherd.js/tsconfig.json

Repository: shipshapecode/shepherd

Length of output: 2073


🏁 Script executed:

# Check if there are any recent commit messages related to these changes
git log --oneline shepherd.js/package.json | head -10

Repository: shipshapecode/shepherd

Length of output: 85


🏁 Script executed:

# Let's verify that all the imports in rollup.config.mjs match the devDependencies
# Extract imports from rollup.config.mjs
echo "=== Imports in rollup.config.mjs ==="
grep "^import" shepherd.js/rollup.config.mjs | sed "s/.*from ['\"]\([^'\"]*\)['\"].*/\1/" | sort

echo ""
echo "=== Checking these against devDependencies ==="
# Get the list of devDependencies (just the package names, without versions)
python3 << 'EOF'
import json
import re

with open('shepherd.js/package.json', 'r') as f:
    pkg = json.load(f)
    
dev_deps = set(pkg['devDependencies'].keys())

# Imports from rollup.config.mjs
imports = [
    'autoprefixer',
    'execa',
    'cssnano',
    '@rollup/plugin-babel',
    'rollup-plugin-serve',
    'rollup-plugin-livereload',
    'rollup-plugin-filesize',
    'rollup-plugin-license',
    'rollup-plugin-postcss',
    '@rollup/plugin-replace',
    '@rollup/plugin-node-resolve',
    'svelte-preprocess',
    'rollup-plugin-svelte',
    'rollup-plugin-visualizer',
    'svelte2tsx',
    '@rollup/plugin-terser'
]

print("Checking all imports are in devDependencies:")
all_present = True
for imp in imports:
    if imp in dev_deps:
        print(f"✓ {imp}")
    else:
        print(f"✗ MISSING: {imp}")
        all_present = False

print(f"\nAll imports present: {all_present}")
EOF

Repository: shipshapecode/shepherd

Length of output: 152


🏁 Script executed:

# Check babel.config.cjs to ensure it's compatible
cat shepherd.js/babel.config.cjs

Repository: shipshapecode/shepherd

Length of output: 464


🏁 Script executed:

# Check svelte.config.js
cat shepherd.js/svelte.config.js

Repository: shipshapecode/shepherd

Length of output: 301


🏁 Script executed:

# Let's check if there are any CI configuration files that might show how the build is tested
find . -name ".github" -type d
ls -la .github/workflows/ | head -20

Repository: shipshapecode/shepherd

Length of output: 372


🏁 Script executed:

# Check for workflow files that test the build
cat .github/workflows/test.yml 2>/dev/null || cat .github/workflows/ci.yml 2>/dev/null || echo "No main CI workflow found, listing all workflows:"
ls -la .github/workflows/

Repository: shipshapecode/shepherd

Length of output: 1621


🏁 Script executed:

# Check the publish workflow to see if it runs the build
cat .github/workflows/publish.yml

Repository: shipshapecode/shepherd

Length of output: 1094


🏁 Script executed:

# Let's also check the root package.json to see if there's a workspace build script
cat package.json | grep -A 20 '"scripts"'

Repository: shipshapecode/shepherd

Length of output: 1001


🏁 Script executed:

# Check if there's a dist directory and build artifacts that indicate successful builds
ls -la shepherd.js/dist/ 2>/dev/null || echo "No dist directory found"

Repository: shipshapecode/shepherd

Length of output: 89


🏁 Script executed:

# Check the pnpm-lock.yaml to ensure it has entries for all the dependencies
grep -A 2 "@babel/core" pnpm-lock.yaml | head -5

Repository: shipshapecode/shepherd

Length of output: 184


🏁 Script executed:

# Check if the last commit's CI workflow passed by looking at the commit
git log --oneline --all -20

Repository: shipshapecode/shepherd

Length of output: 1066


🏁 Script executed:

cd shepherd.js
pnpm build
pnpm types:check

Repository: shipshapecode/shepherd

Length of output: 1171


🏁 Script executed:

# Install dependencies first
cd shepherd.js
pnpm install

Repository: shipshapecode/shepherd

Length of output: 8457


🏁 Script executed:

# Check if there's a known issue or version mismatch with rollup-plugin-postcss
grep -i "postcss" shepherd.js/package.json

Repository: shipshapecode/shepherd

Length of output: 129


🏁 Script executed:

# Look at the git history to see what the previous state was
git log --oneline -1 shepherd.js/package.json
git show HEAD:shepherd.js/package.json | grep -A 5 "rollup-plugin-postcss"

Repository: shipshapecode/shepherd

Length of output: 302


🏁 Script executed:

# Check if there are any notes in the codebase about this
grep -r "rollup-plugin-postcss" shepherd.js/

Repository: shipshapecode/shepherd

Length of output: 204


🌐 Web query:

rollup-plugin-postcss 4.0.2 rollup 4.54.0 compatibility

💡 Result:

Short answer: Probably not fully compatible. rollup-plugin-postcss v4.0.2 was published ~4 years ago and its README documents compatibility up to Rollup v2/v3-era behavior (no explicit support for Rollup 4). Rollup 4 introduced plugin-API changes (see Rollup 4 migration notes) that can break older plugins, so expect issues unless the plugin has been updated to handle those changes—otherwise you’ll need to test or update the plugin. [1][2]

Sources

  • rollup-plugin-postcss (v4.0.2) package info / README. [1]
  • Rollup 4 “Migrating to Rollup 4” / plugin API breaking changes. [2]

If you want, I can:

  • check the plugin’s GitHub issues/PRs for Rollup 4 fixes, or
  • suggest current maintained alternatives or forks known to support Rollup 4.

🌐 Web query:

rollup-plugin-postcss rollup 4 extract css

💡 Result:

Yes — rollup-plugin-postcss supports extracting CSS. Use the plugin's extract option (true or a path). Example (Rollup 4, ESM config):

  • install: npm/yarn add postcss rollup-plugin-postcss --dev

  • rollup.config.mjs example:

    import path from 'path'
    import postcss from 'rollup-plugin-postcss'

    export default {
    input: 'src/index.js',
    output: {
    dir: 'dist',
    format: 'es'
    },
    plugins: [
    postcss({
    // extract into dist/.css
    extract: true,

      // OR extract to a specific file:
      // extract: path.resolve('dist/my-styles.css'),
    
      plugins: [] // your PostCSS plugins
    })
    

    ]
    }

Notes:

  • extract: true writes a .css next to the generated JS bundle; extract can also be a string (relative or absolute path). [1][2]

Sources:
[1] egoist/rollup-plugin-postcss README (GitHub).
[2] rollup-plugin-postcss package README (npm).


🏁 Script executed:

# Check the exact postcss configuration in rollup.config.mjs
grep -A 5 "postcss({" shepherd.js/rollup.config.mjs

Repository: shipshapecode/shepherd

Length of output: 207


🏁 Script executed:

# Look at the postcss plugin version history to see if there's a newer/compatible version
# Also check if there are any issues or workarounds documented
git log --all --oneline --grep="postcss" | head -10

Repository: shipshapecode/shepherd

Length of output: 600


🏁 Script executed:

# Check the last successful build commit before the pnpm update
git show e776198:shepherd.js/package.json | grep -E "rollup|postcss" | head -10

Repository: shipshapecode/shepherd

Length of output: 472


🏁 Script executed:

# Check if there's a newer version of rollup-plugin-postcss available
# by looking at the lock file for available versions
grep "rollup-plugin-postcss" pnpm-lock.yaml | head -20

Repository: shipshapecode/shepherd

Length of output: 171


🏁 Script executed:

# Verify the exact versions in the current state vs previous commit
echo "=== Current versions ==="
grep -E "rollup|postcss" shepherd.js/package.json

echo ""
echo "=== Previous versions (e776198) ==="
git show e776198:shepherd.js/package.json | grep -E "rollup|postcss"

Repository: shipshapecode/shepherd

Length of output: 1417


🏁 Script executed:

# Let's check if the build worked before the pnpm update by testing checkout e776198
# First, let's see if the issue is specific to rollup-plugin-postcss by checking error logs
# and looking for any known issues

# Test with the previous rollup version to see if that's the culprit
cd shepherd.js
git log --oneline --all | grep -i "postcss\|css" | head -5

Repository: shipshapecode/shepherd

Length of output: 333


🏁 Script executed:

# Check if there's been any recent discussion or issues about this in the repo
git log --all --oneline --grep="css\|postcss\|rollup" | head -10

Repository: shipshapecode/shepherd

Length of output: 642


🏁 Script executed:

# Let's check the commit that updated rollup to 4.50.2 to see if the build was passing then
git show 8c6cee7 --stat | head -20

Repository: shipshapecode/shepherd

Length of output: 834


🏁 Script executed:

# Look for any open issues or comments about rollup-plugin-postcss in the codebase
find . -name "*.md" -o -name "*.js" -o -name "*.mjs" | xargs grep -l "postcss" 2>/dev/null | head -5

Repository: shipshapecode/shepherd

Length of output: 389


Build fails with Rollup 4.54.0 due to rollup-plugin-postcss incompatibility.

The build fails with error: cp: cannot stat './tmp/js/css/shepherd.css': No such file or directory. The CSS file is not being extracted by rollup-plugin-postcss v4.0.2 when used with Rollup 4.54.0. The plugin was last updated ~4 years ago and does not support breaking changes introduced in recent Rollup 4.x versions.

Either downgrade Rollup to a compatible version (e.g., 4.50.2 which worked previously) or upgrade to a maintained fork/alternative of rollup-plugin-postcss that supports Rollup 4.54.0.

🤖 Prompt for AI Agents
In shepherd.js/package.json around lines 55 to 86 the build breaks because
rollup version 4.54.0 is incompatible with the unmaintained
rollup-plugin-postcss (v4.0.2) so the CSS asset isn’t extracted; fix by either
pinning Rollup to a working version (change the rollup dependency to "4.50.2"
and run install, then verify build) or replace rollup-plugin-postcss with a
maintained alternative that supports Rollup 4.54.0 (update package.json to the
chosen maintained fork/package, update rollup config imports/usages accordingly,
reinstall deps and verify the CSS extraction and build succeed).

@vercel vercel bot temporarily deployed to Preview – shepherd-landing December 28, 2025 01:30 Inactive
@RobbieTheWagner RobbieTheWagner merged commit ac3f9fe into main Dec 28, 2025
6 of 7 checks passed
@RobbieTheWagner RobbieTheWagner deleted the pnpm-update branch December 28, 2025 01:32
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: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 38e12fa and a045041.

📒 Files selected for processing (1)
  • test/unit/setupTests.js
⏰ 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). (1)
  • GitHub Check: Tests

Comment on lines +2 to +5
import * as matchers from '@testing-library/jest-dom/matchers';
import { expect } from 'vitest';

expect.extend(matchers);
Copy link

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

🌐 Web query:

@testing-library/jest-dom 6.x vitest setup require expect.extend

💡 Result:

Use the new vitest entry in v6 (it no longer auto-runs extend-expect). Options:

  1. Recommended — add a Vitest setup file that imports the vitest entry:
  • vitest.setup.ts (or .js)
    import '@testing-library/jest-dom/vitest'
  • point Vitest to it (vitest.config.ts):
    test: { environment: 'jsdom', setupFiles: ['./vitest.setup.ts'], globals: true }
  1. Manual — extend Vitest's expect yourself:
  • vitest.setup.ts
    import * as matchers from '@testing-library/jest-dom/matchers'
    import { expect } from 'vitest'
    expect.extend(matchers)

If using TypeScript, include types in tsconfig:

  • "types": ["vitest/globals", "@testing-library/jest-dom/vitest"] (or "@testing-library/jest-dom" if using the default path).

References: testing-library docs and repo (vitest-specific entry + v6 breaking change). [1][2][3]

Sources
[1] testing-library setup (Vitest examples).
[2] testing-library/jest-dom GitHub release notes (v6 breaking change; new import paths).
[3] testing-library docs showing import '@testing-library/jest-dom/vitest' in setup.


🌐 Web query:

vitest 4.x @testing-library/jest-dom matchers import pattern

💡 Result:

Use the vitest-specific entry or import the matchers and extend expect.

Recommended (simple, put in your Vitest setup file and add it to test.setupFiles):

  • import '@testing-library/jest-dom/vitest' // loads and registers matchers for Vitest. [1][2]

Alternative (manual extend):

  • import * as matchers from '@testing-library/jest-dom/matchers'
  • import { expect } from 'vitest'
  • expect.extend(matchers) // register only the exported matchers. [1]

TypeScript tips:

  • Make your setup file a .ts and add types in tsconfig: "types": ["vitest/globals", "@testing-library/jest-dom/vitest"] (or "@testing-library/jest-dom" if using the manual approach). Ensure the setup file is included in "include". [1][2]

References

  • @testing-library/jest-dom README (Vitest usage). [1]
  • Testing Library setup examples (Vitest setupFiles / tsconfig notes). [2]

🌐 Web query:

@testing-library/jest-dom vitest entry point /vitest vs /matchers

💡 Result:

Short answer: import '@testing-library/jest-dom/vitest' in your Vitest setup file. That path automatically registers the jest-dom matchers with Vitest's expect. Use the '/matchers' export only if you want to manually extend expect (import * as matchers from '@testing-library/jest-dom/matchers' and call expect.extend(matchers)). Also add the package to your TS types or include the setup file in tsconfig for typings. [1][2][3]

Sources:

  • @testing-library/jest-dom README (Vitest import path). [1]
  • Testing Library docs (Vitest setup example). [2]
  • Release notes / changelog describing platform-specific entry points (vitest vs matchers). [3]

Consider using the recommended Vitest entry point for @testing-library/jest-dom 6.x instead.

The manual expect.extend(matchers) approach works, but @testing-library/jest-dom 6.x provides a recommended /vitest entry point that automatically registers matchers in a simpler way. Replace the current import with:

import '@testing-library/jest-dom/vitest'

This is equivalent but more concise than separately importing matchers and calling expect.extend(). Ensure your vitest.config.ts includes this setup file in test.setupFiles and update your TypeScript config types to include "@testing-library/jest-dom/vitest" if applicable.

@github-actions github-actions bot mentioned this pull request Dec 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants