chore(deps)!: Node 24 actions, Ubuntu 26.04, Ruby 3.4.11, drop Ruby 3.2, bump gems + bun
Merged
MH
1mo ago+201+201+012345678901234567890123456789-171-171-012345678901234567890123456789
Summary
This clears the CI annotation Node.js 20 is deprecated … actions/checkout@v4 and brings every dependency up to date, so the release can go ahead.
| Area | Change |
|---|---|
| GitHub Actions | checkout v4→v7, cache v4→v6, upload-artifact v4→v7, download-artifact v4→v8, docker setup-buildx v3→v4, login v3→v4, build-push v6→v7, ssh-agent v0.9.1→v0.10.0, configure-rubygems-credentials v1.0.0→v2.1.0 (still SHA-pinned) |
release.yml | dropped the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 env workaround |
docs/ bundle | rails 8.1.4, mcp 1.6.1, playwright-ruby-client 1.63, capybara-playwright-driver 0.5.12, rubocop 1.91, plus transitive updates |
docs/ bun | daisyui 5.7.47, playwright 1.63.0 (kept in step with the Ruby client) |
| Dockerfiles | Bun 1.3.2→1.4.2 in docs/Dockerfile and the generator's Dockerfile.tt |
| Ruby 3.2 dropped | required_ruby_version >= 3.3, RuboCop TargetRubyVersion 3.3, CI + release matrices 3.3/3.4, AGENTS.md + installation page. Breaking for consumers on 3.2, so the release should be a minor bump at least. |
| Runners | every job ubuntu-latest → ubuntu-26.04 (incl. the reusable deploy.yml) |
| Ruby | docs site 3.4.2 → 3.4.11 (.ruby-version, Dockerfile, generator fallback) |
| Docs lint | docs/.rubocop → --ignore-parent-exclusion; CI's docs-site job now runs bundle exec rubocop |
rake release | also commits the refreshed docs/Gemfile.lock (it lagged a release behind every time) |
| Install generator | package.json stub floors raised to tailwindcss/@tailwindcss/cli ^4.3.3, daisyui ^5.7.47 |
The reusable deploy.yml is called at @main by every docs site. Once this merges, they all get the Node 24 actions with no change on their side.
Test plan
- New generator spec: the stub's devDependencies must equal
docs/package.json's for the same keys. It failed on the old floors and passes now. -
bundle exec rakeat root: 954 examples, 0 failures, 94.71% line coverage, rubocop clean. mcp 1.6.1 and simplecov 1.3.1 were bumped locally (root lock is gitignored). -
docs/:bun run build:css(daisyUI 5.7.47),bundle exec rspec: 15 examples including the Playwright system specs, 0 failures -
docs/under Ruby 3.4.11: rspec 15/15, rubocop 34 files clean, CSS builds - CI green on ubuntu-26.04, with no Node 20 / ubuntu-latest annotations left
- The next release run exercises upload-artifact v7 / download-artifact v8 and configure-rubygems-credentials v2.1.0. Its inputs are unchanged, all optional, and we pass none.
Deviations & judgment calls
- Why docs rubocop crashed: RuboCop takes the outermost Gemfile's directory as the project root. From
docs/it therefore merged../.rubocop.ymlexcludes, which loads plugins the docs bundle doesn't have. With those plugins added it inspected 0 files, because the root excludesdocs/**/*.--ignore-parent-exclusionin adocs/.rubocopargs file fixes the cause. Adding the plugin gems to the docs bundle would only have hidden it. - Root
Gemfile.lockstays gitignored. This was decided in review. The gemspec's file whitelist keeps it out of the package either way. - Trusted publishing is already in place.
release.ymluses OIDC (id-token: write) +configure-rubygems-credentialswith no API token. - Held back by upstream constraints: diff-lcs 2.0 (rspec) and marcel 2.x (activestorage).
- Bun 1.4.2 in the Dockerfiles so the image's Bun matches the one that writes
bun.lock. - The
rake releasechange has no spec; the release task has no test harness.