From d521dbda7002f8b46e769cfc6e4e44d6dfa88fcb Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Tue, 24 Mar 2026 20:49:57 -0700 Subject: [PATCH 1/6] Fix remaining Dependabot security alerts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - **Rails example**: Upgrade Rails 7.1.5 → 7.2.3, rack 2.2.14 → 3.2.5, nokogiri 1.18.9 → 1.19.2 (fixes Active Storage path traversal, Rack directory traversal, Active Support ReDoS/DoS/XSS, Action View XSS, and Active Storage glob injection/DoS/content type bypass) - **Django example**: Update sqlparse 0.5.0 → 0.5.3 (DoS fix) - **VS Code extension**: Add flatted resolution → 3.4.2 (prototype pollution fix) Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/stacks/django/requirements.txt | 2 +- examples/stacks/rails/blog/Gemfile | 4 +- examples/stacks/rails/blog/Gemfile.lock | 297 +++++++++++++----------- vscode-extension/package.json | 3 +- vscode-extension/yarn.lock | 8 +- 5 files changed, 164 insertions(+), 150 deletions(-) diff --git a/examples/stacks/django/requirements.txt b/examples/stacks/django/requirements.txt index a35d72fb2b9..a3054d75e95 100644 --- a/examples/stacks/django/requirements.txt +++ b/examples/stacks/django/requirements.txt @@ -1,4 +1,4 @@ asgiref==3.6.0 Django==4.2.29 psycopg2==2.9.5 -sqlparse==0.5.0 \ No newline at end of file +sqlparse==0.5.3 \ No newline at end of file diff --git a/examples/stacks/rails/blog/Gemfile b/examples/stacks/rails/blog/Gemfile index d5d7ad2c96b..054657ca75a 100644 --- a/examples/stacks/rails/blog/Gemfile +++ b/examples/stacks/rails/blog/Gemfile @@ -1,10 +1,10 @@ source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } -ruby "3.3.0" +ruby ">= 3.1.0" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" -gem "rails", "~> 7.1.5" +gem "rails", "~> 7.2.2" # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] gem "sprockets-rails" diff --git a/examples/stacks/rails/blog/Gemfile.lock b/examples/stacks/rails/blog/Gemfile.lock index f6085f63b30..11f75d2c7f9 100644 --- a/examples/stacks/rails/blog/Gemfile.lock +++ b/examples/stacks/rails/blog/Gemfile.lock @@ -1,90 +1,86 @@ GEM remote: https://rubygems.org/ specs: - actioncable (7.1.5.2) - actionpack (= 7.1.5.2) - activesupport (= 7.1.5.2) + actioncable (7.2.3) + actionpack (= 7.2.3) + activesupport (= 7.2.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.5.2) - actionpack (= 7.1.5.2) - activejob (= 7.1.5.2) - activerecord (= 7.1.5.2) - activestorage (= 7.1.5.2) - activesupport (= 7.1.5.2) - mail (>= 2.7.1) - net-imap - net-pop - net-smtp - actionmailer (7.1.5.2) - actionpack (= 7.1.5.2) - actionview (= 7.1.5.2) - activejob (= 7.1.5.2) - activesupport (= 7.1.5.2) - mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp + actionmailbox (7.2.3) + actionpack (= 7.2.3) + activejob (= 7.2.3) + activerecord (= 7.2.3) + activestorage (= 7.2.3) + activesupport (= 7.2.3) + mail (>= 2.8.0) + actionmailer (7.2.3) + actionpack (= 7.2.3) + actionview (= 7.2.3) + activejob (= 7.2.3) + activesupport (= 7.2.3) + mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.1.5.2) - actionview (= 7.1.5.2) - activesupport (= 7.1.5.2) + actionpack (7.2.3) + actionview (= 7.2.3) + activesupport (= 7.2.3) + cgi nokogiri (>= 1.8.5) racc - rack (>= 2.2.4) + rack (>= 2.2.4, < 3.3) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.5.2) - actionpack (= 7.1.5.2) - activerecord (= 7.1.5.2) - activestorage (= 7.1.5.2) - activesupport (= 7.1.5.2) + useragent (~> 0.16) + actiontext (7.2.3) + actionpack (= 7.2.3) + activerecord (= 7.2.3) + activestorage (= 7.2.3) + activesupport (= 7.2.3) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.5.2) - activesupport (= 7.1.5.2) + actionview (7.2.3) + activesupport (= 7.2.3) builder (~> 3.1) + cgi erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.1.5.2) - activesupport (= 7.1.5.2) + activejob (7.2.3) + activesupport (= 7.2.3) globalid (>= 0.3.6) - activemodel (7.1.5.2) - activesupport (= 7.1.5.2) - activerecord (7.1.5.2) - activemodel (= 7.1.5.2) - activesupport (= 7.1.5.2) + activemodel (7.2.3) + activesupport (= 7.2.3) + activerecord (7.2.3) + activemodel (= 7.2.3) + activesupport (= 7.2.3) timeout (>= 0.4.0) - activestorage (7.1.5.2) - actionpack (= 7.1.5.2) - activejob (= 7.1.5.2) - activerecord (= 7.1.5.2) - activesupport (= 7.1.5.2) + activestorage (7.2.3) + actionpack (= 7.2.3) + activejob (= 7.2.3) + activerecord (= 7.2.3) + activesupport (= 7.2.3) marcel (~> 1.0) - activesupport (7.1.5.2) + activesupport (7.2.3) base64 benchmark (>= 0.3) bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) logger (>= 1.4.2) minitest (>= 5.1) - mutex_m securerandom (>= 0.3) - tzinfo (~> 2.0) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) - base64 (0.2.0) - benchmark (0.4.1) - bigdecimal (3.2.2) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.9) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.0.1) bindex (0.8.1) - bootsnap (1.18.4) + bootsnap (1.23.0) msgpack (~> 1.2) builder (3.3.0) capybara (3.40.0) @@ -96,46 +92,54 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - concurrent-ruby (1.3.4) - connection_pool (2.5.3) + cgi (0.5.1) + childprocess (4.1.0) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) crass (1.0.6) - date (3.4.1) - debug (1.9.2) + date (3.5.1) + debug (1.11.1) irb (~> 1.10) reline (>= 0.3.8) drb (2.2.3) - erubi (1.13.0) - globalid (1.2.1) + erb (6.0.2) + erubi (1.13.1) + globalid (1.3.0) activesupport (>= 6.1) - i18n (1.14.6) + i18n (1.14.8) concurrent-ruby (~> 1.0) - importmap-rails (2.0.1) + importmap-rails (2.2.3) actionpack (>= 6.0.0) activesupport (>= 6.0.0) railties (>= 6.0.0) - io-console (0.7.2) - irb (1.14.1) + io-console (0.8.2) + irb (1.17.0) + pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - jbuilder (2.13.0) - actionview (>= 5.0.0) - activesupport (>= 5.0.0) - logger (1.6.1) - loofah (2.23.1) + jbuilder (2.14.1) + actionview (>= 7.0.0) + activesupport (>= 7.0.0) + logger (1.7.0) + loofah (2.25.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) - mail (2.8.1) + mail (2.9.0) + logger mini_mime (>= 0.1.1) net-imap net-pop net-smtp - marcel (1.0.4) - matrix (0.4.2) + marcel (1.1.0) + matrix (0.4.3) mini_mime (1.1.5) - minitest (5.25.4) - msgpack (1.7.2) - mutex_m (0.3.0) - net-imap (0.5.9) + mini_portile2 (2.8.9) + minitest (6.0.2) + drb (~> 2.0) + prism (~> 1.5) + msgpack (1.8.0) + net-imap (0.6.3) date net-protocol net-pop (0.1.2) @@ -144,117 +148,126 @@ GEM timeout net-smtp (0.5.1) net-protocol - nio4r (2.7.3) - nokogiri (1.18.9-arm64-darwin) + nio4r (2.7.5) + nokogiri (1.19.2) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + nokogiri (1.19.2-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-darwin) + nokogiri (1.19.2-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-linux-gnu) + nokogiri (1.19.2-x86_64-linux-gnu) racc (~> 1.4) - psych (5.1.2) + pp (0.6.3) + prettyprint + prettyprint (0.2.0) + prism (1.9.0) + psych (5.3.1) + date stringio - public_suffix (6.0.1) + public_suffix (7.0.5) puma (5.6.9) nio4r (~> 2.0) racc (1.8.1) - rack (2.2.14) - rack-session (1.0.2) - rack (< 3) - rack-test (2.1.0) + rack (3.2.5) + rack-session (2.1.1) + base64 (>= 0.1.0) + rack (>= 3.0.0) + rack-test (2.2.0) rack (>= 1.3) - rackup (1.0.1) - rack (< 3) - webrick - rails (7.1.5.2) - actioncable (= 7.1.5.2) - actionmailbox (= 7.1.5.2) - actionmailer (= 7.1.5.2) - actionpack (= 7.1.5.2) - actiontext (= 7.1.5.2) - actionview (= 7.1.5.2) - activejob (= 7.1.5.2) - activemodel (= 7.1.5.2) - activerecord (= 7.1.5.2) - activestorage (= 7.1.5.2) - activesupport (= 7.1.5.2) + rackup (2.3.1) + rack (>= 3) + rails (7.2.3) + actioncable (= 7.2.3) + actionmailbox (= 7.2.3) + actionmailer (= 7.2.3) + actionpack (= 7.2.3) + actiontext (= 7.2.3) + actionview (= 7.2.3) + activejob (= 7.2.3) + activemodel (= 7.2.3) + activerecord (= 7.2.3) + activestorage (= 7.2.3) + activesupport (= 7.2.3) bundler (>= 1.15.0) - railties (= 7.1.5.2) - rails-dom-testing (2.2.0) + railties (= 7.2.3) + rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.1) - loofah (~> 2.21) + rails-html-sanitizer (1.7.0) + loofah (~> 2.25) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.1.5.2) - actionpack (= 7.1.5.2) - activesupport (= 7.1.5.2) - irb + railties (7.2.3) + actionpack (= 7.2.3) + activesupport (= 7.2.3) + cgi + irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) + tsort (>= 0.2) zeitwerk (~> 2.6) - rake (13.2.1) - rdoc (6.7.0) + rake (13.3.1) + rdoc (7.2.0) + erb psych (>= 4.0.0) - regexp_parser (2.9.2) - reline (0.5.10) + tsort + regexp_parser (2.11.3) + reline (0.6.3) io-console (~> 0.5) - rexml (3.4.1) - rubyzip (2.3.2) + rexml (3.4.4) + rubyzip (3.2.2) securerandom (0.4.1) - selenium-webdriver (4.25.0) - base64 (~> 0.2) - logger (~> 1.4) + selenium-webdriver (4.1.0) + childprocess (>= 0.5, < 5.0) rexml (~> 3.2, >= 3.2.5) - rubyzip (>= 1.2.2, < 3.0) - websocket (~> 1.0) - sprockets (4.2.1) + rubyzip (>= 1.2.2) + sprockets (4.2.2) concurrent-ruby (~> 1.0) + logger rack (>= 2.2.4, < 4) sprockets-rails (3.5.2) actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - sqlite3 (1.7.3-arm64-darwin) - sqlite3 (1.7.3-x86_64-darwin) - sqlite3 (1.7.3-x86_64-linux) + sqlite3 (1.7.3) + mini_portile2 (~> 2.8.0) stimulus-rails (1.3.4) railties (>= 6.0.0) - stringio (3.1.1) - thor (1.4.0) - timeout (0.4.3) - turbo-rails (2.0.10) - actionpack (>= 6.0.0) - railties (>= 6.0.0) + stringio (3.2.0) + thor (1.5.0) + timeout (0.6.1) + tsort (0.2.0) + turbo-rails (2.0.23) + actionpack (>= 7.1.0) + railties (>= 7.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) tzinfo-data (1.2014.5) tzinfo (>= 1.0.0) + useragent (0.16.11) web-console (4.2.1) actionview (>= 6.0.0) activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webdrivers (5.2.0) + webdrivers (5.3.1) nokogiri (~> 1.6) rubyzip (>= 1.3.0) - selenium-webdriver (~> 4.0) - webrick (1.9.1) - websocket (1.2.11) + selenium-webdriver (~> 4.0, < 4.11) websocket-driver (0.8.0) base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.18) + zeitwerk (2.7.5) PLATFORMS - arm64-darwin-21 - arm64-darwin-22 arm64-darwin-23 - x86_64-darwin-22 + ruby + x86_64-darwin x86_64-linux DEPENDENCIES @@ -264,7 +277,7 @@ DEPENDENCIES importmap-rails jbuilder puma (~> 5.6) - rails (~> 7.1.5) + rails (~> 7.2.2) selenium-webdriver sprockets-rails sqlite3 (~> 1.4) @@ -275,7 +288,7 @@ DEPENDENCIES webdrivers RUBY VERSION - ruby 3.3.0p0 + ruby 3.4.4p34 BUNDLED WITH - 2.5.6 + 2.6.9 diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 4d4f04869af..c4ea0ead8e3 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -159,7 +159,8 @@ }, "resolutions": { "minimatch": "^3.1.5", - "serialize-javascript": "^6.0.2 || ^7.0.0" + "serialize-javascript": "^6.0.2 || ^7.0.0", + "flatted": "^3.4.0" }, "dependencies": { "@types/node": "16.x", diff --git a/vscode-extension/yarn.lock b/vscode-extension/yarn.lock index a6148d96141..b1aa635dc0a 100644 --- a/vscode-extension/yarn.lock +++ b/vscode-extension/yarn.lock @@ -706,10 +706,10 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== +flatted@^3.2.9, flatted@^3.4.0: + version "3.4.2" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" + integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== form-data@^4.0.0, form-data@^4.0.4: version "4.0.4" From 65b8bfc71b860ad45b93a09af56c45e0c8b13ba6 Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Wed, 25 Mar 2026 08:55:18 -0700 Subject: [PATCH 2/6] Fix Rails example CI: match bundler/ruby to Nix versions The regenerated Gemfile.lock had BUNDLED WITH 2.6.9 and RUBY VERSION 3.4.4, but the Nix devbox.json pins bundler@2.5 and ruby@3.3. Bundler 2.5.5 refuses to run when the lockfile requires ~> 2.6, causing the stacks_rails_run_test CI job to fail. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/stacks/rails/blog/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/stacks/rails/blog/Gemfile.lock b/examples/stacks/rails/blog/Gemfile.lock index 11f75d2c7f9..37d830d70b4 100644 --- a/examples/stacks/rails/blog/Gemfile.lock +++ b/examples/stacks/rails/blog/Gemfile.lock @@ -288,7 +288,7 @@ DEPENDENCIES webdrivers RUBY VERSION - ruby 3.4.4p34 + ruby 3.3.0p0 BUNDLED WITH - 2.6.9 + 2.5.5 From a94da32311fc1cf20b5b9cae0d08f9d85e9d628c Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Wed, 25 Mar 2026 09:21:48 -0700 Subject: [PATCH 3/6] Fix Rails example CI: stay on 7.1.x with latest security patches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Rails 7.2 upgrade broke CI because rack 3.x requires config changes incompatible with the 7.1-era blog app. Instead, update within the 7.1.x line: - Rails 7.1.5.2 → 7.1.6 (latest security patches) - Rack 2.2.14 → 2.2.22 (fixes CVE-2025-27610 directory traversal) - Nokogiri 1.18.9 → 1.19.2 - Pin rack to ~> 2.2.15 to prevent accidental rack 3 resolution - Match BUNDLED WITH (2.5.5) and RUBY VERSION (3.3.0) to Nix env Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/stacks/rails/blog/Gemfile | 5 +- examples/stacks/rails/blog/Gemfile.lock | 144 +++++++++++++----------- 2 files changed, 79 insertions(+), 70 deletions(-) diff --git a/examples/stacks/rails/blog/Gemfile b/examples/stacks/rails/blog/Gemfile index 054657ca75a..f235b06064b 100644 --- a/examples/stacks/rails/blog/Gemfile +++ b/examples/stacks/rails/blog/Gemfile @@ -1,10 +1,11 @@ source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } -ruby ">= 3.1.0" +ruby "3.3.0" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" -gem "rails", "~> 7.2.2" +gem "rails", "~> 7.1.5" +gem "rack", "~> 2.2.15" # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] gem "sprockets-rails" diff --git a/examples/stacks/rails/blog/Gemfile.lock b/examples/stacks/rails/blog/Gemfile.lock index 37d830d70b4..ee512f0f07e 100644 --- a/examples/stacks/rails/blog/Gemfile.lock +++ b/examples/stacks/rails/blog/Gemfile.lock @@ -1,79 +1,85 @@ GEM remote: https://rubygems.org/ specs: - actioncable (7.2.3) - actionpack (= 7.2.3) - activesupport (= 7.2.3) + actioncable (7.1.6) + actionpack (= 7.1.6) + activesupport (= 7.1.6) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.2.3) - actionpack (= 7.2.3) - activejob (= 7.2.3) - activerecord (= 7.2.3) - activestorage (= 7.2.3) - activesupport (= 7.2.3) - mail (>= 2.8.0) - actionmailer (7.2.3) - actionpack (= 7.2.3) - actionview (= 7.2.3) - activejob (= 7.2.3) - activesupport (= 7.2.3) - mail (>= 2.8.0) + actionmailbox (7.1.6) + actionpack (= 7.1.6) + activejob (= 7.1.6) + activerecord (= 7.1.6) + activestorage (= 7.1.6) + activesupport (= 7.1.6) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.6) + actionpack (= 7.1.6) + actionview (= 7.1.6) + activejob (= 7.1.6) + activesupport (= 7.1.6) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp rails-dom-testing (~> 2.2) - actionpack (7.2.3) - actionview (= 7.2.3) - activesupport (= 7.2.3) + actionpack (7.1.6) + actionview (= 7.1.6) + activesupport (= 7.1.6) cgi nokogiri (>= 1.8.5) racc - rack (>= 2.2.4, < 3.3) + rack (>= 2.2.4) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - useragent (~> 0.16) - actiontext (7.2.3) - actionpack (= 7.2.3) - activerecord (= 7.2.3) - activestorage (= 7.2.3) - activesupport (= 7.2.3) + actiontext (7.1.6) + actionpack (= 7.1.6) + activerecord (= 7.1.6) + activestorage (= 7.1.6) + activesupport (= 7.1.6) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.2.3) - activesupport (= 7.2.3) + actionview (7.1.6) + activesupport (= 7.1.6) builder (~> 3.1) cgi erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.2.3) - activesupport (= 7.2.3) + activejob (7.1.6) + activesupport (= 7.1.6) globalid (>= 0.3.6) - activemodel (7.2.3) - activesupport (= 7.2.3) - activerecord (7.2.3) - activemodel (= 7.2.3) - activesupport (= 7.2.3) + activemodel (7.1.6) + activesupport (= 7.1.6) + activerecord (7.1.6) + activemodel (= 7.1.6) + activesupport (= 7.1.6) timeout (>= 0.4.0) - activestorage (7.2.3) - actionpack (= 7.2.3) - activejob (= 7.2.3) - activerecord (= 7.2.3) - activesupport (= 7.2.3) + activestorage (7.1.6) + actionpack (= 7.1.6) + activejob (= 7.1.6) + activerecord (= 7.1.6) + activesupport (= 7.1.6) marcel (~> 1.0) - activesupport (7.2.3) + activesupport (7.1.6) base64 benchmark (>= 0.3) bigdecimal - concurrent-ruby (~> 1.0, >= 1.3.1) + concurrent-ruby (~> 1.0, >= 1.0.2) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) logger (>= 1.4.2) minitest (>= 5.1) + mutex_m securerandom (>= 0.3) - tzinfo (~> 2.0, >= 2.0.5) + tzinfo (~> 2.0) addressable (2.8.9) public_suffix (>= 2.0.2, < 8.0) base64 (0.3.0) @@ -139,6 +145,7 @@ GEM drb (~> 2.0) prism (~> 1.5) msgpack (1.8.0) + mutex_m (0.3.0) net-imap (0.6.3) date net-protocol @@ -169,28 +176,28 @@ GEM puma (5.6.9) nio4r (~> 2.0) racc (1.8.1) - rack (3.2.5) - rack-session (2.1.1) - base64 (>= 0.1.0) - rack (>= 3.0.0) + rack (2.2.22) + rack-session (1.0.2) + rack (< 3) rack-test (2.2.0) rack (>= 1.3) - rackup (2.3.1) - rack (>= 3) - rails (7.2.3) - actioncable (= 7.2.3) - actionmailbox (= 7.2.3) - actionmailer (= 7.2.3) - actionpack (= 7.2.3) - actiontext (= 7.2.3) - actionview (= 7.2.3) - activejob (= 7.2.3) - activemodel (= 7.2.3) - activerecord (= 7.2.3) - activestorage (= 7.2.3) - activesupport (= 7.2.3) + rackup (1.0.1) + rack (< 3) + webrick + rails (7.1.6) + actioncable (= 7.1.6) + actionmailbox (= 7.1.6) + actionmailer (= 7.1.6) + actionpack (= 7.1.6) + actiontext (= 7.1.6) + actionview (= 7.1.6) + activejob (= 7.1.6) + activemodel (= 7.1.6) + activerecord (= 7.1.6) + activestorage (= 7.1.6) + activesupport (= 7.1.6) bundler (>= 1.15.0) - railties (= 7.2.3) + railties (= 7.1.6) rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest @@ -198,11 +205,11 @@ GEM rails-html-sanitizer (1.7.0) loofah (~> 2.25) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.2.3) - actionpack (= 7.2.3) - activesupport (= 7.2.3) + railties (7.1.6) + actionpack (= 7.1.6) + activesupport (= 7.1.6) cgi - irb (~> 1.13) + irb rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) @@ -246,7 +253,6 @@ GEM concurrent-ruby (~> 1.0) tzinfo-data (1.2014.5) tzinfo (>= 1.0.0) - useragent (0.16.11) web-console (4.2.1) actionview (>= 6.0.0) activemodel (>= 6.0.0) @@ -256,6 +262,7 @@ GEM nokogiri (~> 1.6) rubyzip (>= 1.3.0) selenium-webdriver (~> 4.0, < 4.11) + webrick (1.9.2) websocket-driver (0.8.0) base64 websocket-extensions (>= 0.1.0) @@ -277,7 +284,8 @@ DEPENDENCIES importmap-rails jbuilder puma (~> 5.6) - rails (~> 7.2.2) + rack (~> 2.2.15) + rails (~> 7.1.5) selenium-webdriver sprockets-rails sqlite3 (~> 1.4) From a8804efda4b1f7f6d049b1eec335ede842ec1bd0 Mon Sep 17 00:00:00 2001 From: John Lago <750845+Lagoja@users.noreply.github.com> Date: Wed, 25 Mar 2026 11:07:57 -0700 Subject: [PATCH 4/6] Add libyaml dev output to Rails example for psych gem compilation The Rails 7.2.3 upgrade pulls in psych 5.3.1 which requires yaml.h headers to build its native extension. Adding libyaml with dev output makes the headers available in the Devbox environment. --- examples/stacks/rails/devbox.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/stacks/rails/devbox.json b/examples/stacks/rails/devbox.json index 9e02b23c7bf..9afa26efb91 100644 --- a/examples/stacks/rails/devbox.json +++ b/examples/stacks/rails/devbox.json @@ -5,7 +5,11 @@ "nodejs": "21", "yarn": "1.22", "curl": "latest", - "sqlite": "latest" + "sqlite": "latest", + "libyaml": { + "version": "latest", + "outputs": ["out", "dev"] + } }, "shell": { "init_hook": [ From e884d391ba91353b50e43f52daac63aab61c992d Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Wed, 25 Mar 2026 11:17:37 -0700 Subject: [PATCH 5/6] update ruby project --- examples/stacks/rails/.ruby-version | 2 +- examples/stacks/rails/blog/Gemfile | 2 +- examples/stacks/rails/blog/Gemfile.lock | 4 +- examples/stacks/rails/devbox.json | 8 +- examples/stacks/rails/devbox.lock | 281 +++++++++++++----------- 5 files changed, 159 insertions(+), 138 deletions(-) diff --git a/examples/stacks/rails/.ruby-version b/examples/stacks/rails/.ruby-version index ef538c28109..4d54daddb61 100644 --- a/examples/stacks/rails/.ruby-version +++ b/examples/stacks/rails/.ruby-version @@ -1 +1 @@ -3.1.2 +4.0.2 diff --git a/examples/stacks/rails/blog/Gemfile b/examples/stacks/rails/blog/Gemfile index f235b06064b..1cb3f558185 100644 --- a/examples/stacks/rails/blog/Gemfile +++ b/examples/stacks/rails/blog/Gemfile @@ -1,7 +1,7 @@ source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } -ruby "3.3.0" +ruby "4.0.2" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" gem "rails", "~> 7.1.5" diff --git a/examples/stacks/rails/blog/Gemfile.lock b/examples/stacks/rails/blog/Gemfile.lock index ee512f0f07e..fc33b6ed4aa 100644 --- a/examples/stacks/rails/blog/Gemfile.lock +++ b/examples/stacks/rails/blog/Gemfile.lock @@ -296,7 +296,7 @@ DEPENDENCIES webdrivers RUBY VERSION - ruby 3.3.0p0 + ruby 3.4.4p34 BUNDLED WITH - 2.5.5 + 2.6.9 diff --git a/examples/stacks/rails/devbox.json b/examples/stacks/rails/devbox.json index 9e02b23c7bf..8a67a9f1488 100644 --- a/examples/stacks/rails/devbox.json +++ b/examples/stacks/rails/devbox.json @@ -1,9 +1,9 @@ { "packages": { - "ruby": "3.3", - "bundler": "2.5", - "nodejs": "21", - "yarn": "1.22", + "ruby": "latest", + "bundler": "latest", + "nodejs": "latest", + "yarn": "latest", "curl": "latest", "sqlite": "latest" }, diff --git a/examples/stacks/rails/devbox.lock b/examples/stacks/rails/devbox.lock index f79e51bd0b3..327559ec134 100644 --- a/examples/stacks/rails/devbox.lock +++ b/examples/stacks/rails/devbox.lock @@ -1,444 +1,465 @@ { "lockfile_version": "1", "packages": { - "bundler@2.5": { - "last_modified": "2024-02-10T18:15:24Z", - "resolved": "github:NixOS/nixpkgs/10b813040df67c4039086db0f6eaf65c536886c6#bundler", + "bundler@latest": { + "last_modified": "2026-03-21T07:29:51Z", + "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#bundler", "source": "devbox-search", - "version": "2.5.5", + "version": "2.7.2", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/jpi5mf9pgl1n8v5c7829ckw680azad6p-bundler-2.5.5", + "path": "/nix/store/gbx73y8di7f17i727k6s0l2f1618pza8-bundler-2.7.2", "default": true } ], - "store_path": "/nix/store/jpi5mf9pgl1n8v5c7829ckw680azad6p-bundler-2.5.5" + "store_path": "/nix/store/gbx73y8di7f17i727k6s0l2f1618pza8-bundler-2.7.2" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/kx7rp6mnyw4gd696rdzqycfhpma62j2c-bundler-2.5.5", + "path": "/nix/store/qb2ksb9khr8dpc46h2ajg85zirgz136k-bundler-2.7.2", "default": true } ], - "store_path": "/nix/store/kx7rp6mnyw4gd696rdzqycfhpma62j2c-bundler-2.5.5" + "store_path": "/nix/store/qb2ksb9khr8dpc46h2ajg85zirgz136k-bundler-2.7.2" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/6xyharaxdiiplfdi1l9b72y7wairy7mr-bundler-2.5.5", + "path": "/nix/store/b04xgfhjcgg1cl1h2bpjm3fds46vgd1w-bundler-2.7.2", "default": true } ], - "store_path": "/nix/store/6xyharaxdiiplfdi1l9b72y7wairy7mr-bundler-2.5.5" + "store_path": "/nix/store/b04xgfhjcgg1cl1h2bpjm3fds46vgd1w-bundler-2.7.2" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/nfrdd8k4q5qwwhnghkvxaap96vlxmbmm-bundler-2.5.5", + "path": "/nix/store/bc7ankvbv1s5shlllxxlcsgdj0b16p36-bundler-2.7.2", "default": true } ], - "store_path": "/nix/store/nfrdd8k4q5qwwhnghkvxaap96vlxmbmm-bundler-2.5.5" + "store_path": "/nix/store/bc7ankvbv1s5shlllxxlcsgdj0b16p36-bundler-2.7.2" } } }, "curl@latest": { - "last_modified": "2024-02-22T01:07:56Z", - "resolved": "github:NixOS/nixpkgs/98b00b6947a9214381112bdb6f89c25498db4959#curl", + "last_modified": "2025-12-05T15:03:55Z", + "resolved": "github:NixOS/nixpkgs/a672be65651c80d3f592a89b3945466584a22069#curl", "source": "devbox-search", - "version": "8.6.0", + "version": "8.17.0", "systems": { "aarch64-darwin": { "outputs": [ { "name": "bin", - "path": "/nix/store/hkhsc8b35q7q329pl5srwj8bkkhz5253-curl-8.6.0-bin", + "path": "/nix/store/qfwqcndy8bji6xww0gizclf2nqi2qpph-curl-8.17.0-bin", "default": true }, { "name": "man", - "path": "/nix/store/xbzx5d985zdpr080i46zf17gc2pnp0s9-curl-8.6.0-man", + "path": "/nix/store/rk815zvrhwzbi7c6d589v2mhxzyzb400-curl-8.17.0-man", "default": true }, { - "name": "devdoc", - "path": "/nix/store/2ipfy7nly738kry0nd7f59avwc6j9r0d-curl-8.6.0-devdoc" + "name": "dev", + "path": "/nix/store/ydp55g2mbd6rk6lfw0krkk3jwgdiqj5d-curl-8.17.0-dev" }, { - "name": "out", - "path": "/nix/store/6lrp8y5zd8d7jfdd45zsr4cmzdb69m6l-curl-8.6.0" + "name": "devdoc", + "path": "/nix/store/8s884m82fmrbiyz8malglqc4sd632dkc-curl-8.17.0-devdoc" }, { - "name": "dev", - "path": "/nix/store/b923n2s4grj1crf41d2x2rg6b88i4yhi-curl-8.6.0-dev" + "name": "out", + "path": "/nix/store/yxv8fxaz0fyhc31dv3rz89kc50zw5hgj-curl-8.17.0" } ], - "store_path": "/nix/store/hkhsc8b35q7q329pl5srwj8bkkhz5253-curl-8.6.0-bin" + "store_path": "/nix/store/qfwqcndy8bji6xww0gizclf2nqi2qpph-curl-8.17.0-bin" }, "aarch64-linux": { "outputs": [ { "name": "bin", - "path": "/nix/store/s9y0vwd8i7dy7cycj71qfdj6klvz5vbp-curl-8.6.0-bin", + "path": "/nix/store/4x19j6zihdl6pya63xs8g360f2r614sx-curl-8.17.0-bin", "default": true }, { "name": "man", - "path": "/nix/store/0a6fkx1l0w53ns2x0jsxh56x5abksydc-curl-8.6.0-man", + "path": "/nix/store/b29qbmbfvzkm34k0jnj8ykqg2gzj3rdy-curl-8.17.0-man", "default": true }, { "name": "debug", - "path": "/nix/store/fkja2v0m2g1rak9hb8lbyrdy5cxkryba-curl-8.6.0-debug" + "path": "/nix/store/5hmbdk99knmbg8b0fzh96bv6bkcf6v5i-curl-8.17.0-debug" }, { "name": "dev", - "path": "/nix/store/4srppz7jjb4vl23nvqgllfkwb5l5l1di-curl-8.6.0-dev" + "path": "/nix/store/iqs9mjscns3h5npgkrhgr5xa7qzwd0si-curl-8.17.0-dev" }, { "name": "devdoc", - "path": "/nix/store/5gcssnn5pb5qja15mjrjgdy00hpafrsv-curl-8.6.0-devdoc" + "path": "/nix/store/1fwncv08c8g78k3hj3cj375vx92ndrp8-curl-8.17.0-devdoc" }, { "name": "out", - "path": "/nix/store/jsi315py5vzr07ckrw6v2nzf4p224l1i-curl-8.6.0" + "path": "/nix/store/b0a6qc92vybjiggh0kg387cg0zp3kl6j-curl-8.17.0" } ], - "store_path": "/nix/store/s9y0vwd8i7dy7cycj71qfdj6klvz5vbp-curl-8.6.0-bin" + "store_path": "/nix/store/4x19j6zihdl6pya63xs8g360f2r614sx-curl-8.17.0-bin" }, "x86_64-darwin": { "outputs": [ { "name": "bin", - "path": "/nix/store/i7fa8s6xczlalkmxy28amfyb6j3ymng4-curl-8.6.0-bin", + "path": "/nix/store/w2336wv560g1n58cwashmmczdn3bfkq1-curl-8.17.0-bin", "default": true }, { "name": "man", - "path": "/nix/store/bwn4n0lxc3gaxcj8kqsq7yfcmxhbshz9-curl-8.6.0-man", + "path": "/nix/store/i6xmhcan8g4abda7ivv20nvwxrsssjqj-curl-8.17.0-man", "default": true }, - { - "name": "dev", - "path": "/nix/store/wwnzy1llls4knz1bs9s7j94xfndl300c-curl-8.6.0-dev" - }, { "name": "devdoc", - "path": "/nix/store/ryh1zrz4a1barfvf2r7bnk1wzjqawdi2-curl-8.6.0-devdoc" + "path": "/nix/store/ipa7v9z7pjcnnv0fmdya1fldcxv0a28z-curl-8.17.0-devdoc" }, { "name": "out", - "path": "/nix/store/sw1wxldgm3awjmp2i4kq6jwhj6qjnwql-curl-8.6.0" + "path": "/nix/store/x9gyg634fi8mgcyay9mqa1ral7xg72fm-curl-8.17.0" + }, + { + "name": "dev", + "path": "/nix/store/39zfdgq9kg3mb4sycf8pj4pdssrzki6c-curl-8.17.0-dev" } ], - "store_path": "/nix/store/i7fa8s6xczlalkmxy28amfyb6j3ymng4-curl-8.6.0-bin" + "store_path": "/nix/store/w2336wv560g1n58cwashmmczdn3bfkq1-curl-8.17.0-bin" }, "x86_64-linux": { "outputs": [ { "name": "bin", - "path": "/nix/store/x23aqwc39pp4zx5iiz0mqyh5mnvrz43z-curl-8.6.0-bin", + "path": "/nix/store/0rfz69vp1nl0q2hxzig20hc60sk72z62-curl-8.17.0-bin", "default": true }, { "name": "man", - "path": "/nix/store/wfdx6m40yxvw73pdf5w8dsww9y1z6l7y-curl-8.6.0-man", + "path": "/nix/store/ijd0yybyzwm98d3q6x7a9cyixgxk0i5d-curl-8.17.0-man", "default": true }, { "name": "debug", - "path": "/nix/store/1im0yjn73c7vd1443i2n33ixfyi1pq45-curl-8.6.0-debug" + "path": "/nix/store/h1fxw0xrifxvbhcp7b8hxsgirxxxfzav-curl-8.17.0-debug" }, { "name": "dev", - "path": "/nix/store/3k4czsnh3wg9liji56v4kjdz3p1mxhsj-curl-8.6.0-dev" + "path": "/nix/store/ikmdk37frjdblkba3wl3xws2wwgln17x-curl-8.17.0-dev" }, { "name": "devdoc", - "path": "/nix/store/ar006irrnax4acc65fwiawnranmc4ck0-curl-8.6.0-devdoc" + "path": "/nix/store/jm6irg81cc0hqg43l39lkxr6pb0w2xk5-curl-8.17.0-devdoc" }, { "name": "out", - "path": "/nix/store/2hapkajcapp9vzwrlj58jwsrjpr4vj70-curl-8.6.0" + "path": "/nix/store/8idis3j5l13c3x74jl8xly0k4qyk9mx6-curl-8.17.0" } ], - "store_path": "/nix/store/x23aqwc39pp4zx5iiz0mqyh5mnvrz43z-curl-8.6.0-bin" + "store_path": "/nix/store/0rfz69vp1nl0q2hxzig20hc60sk72z62-curl-8.17.0-bin" } } }, "github:NixOS/nixpkgs/nixpkgs-unstable": { - "resolved": "github:NixOS/nixpkgs/02032da4af073d0f6110540c8677f16d4be0117f?lastModified=1741037377&narHash=sha256-SvtvVKHaUX4Owb%2BPasySwZsoc5VUeTf1px34BByiOxw%3D" + "last_modified": "2026-03-23T13:48:00Z", + "resolved": "github:NixOS/nixpkgs/fdc7b8f7b30fdbedec91b71ed82f36e1637483ed?lastModified=1774273680&narHash=sha256-a%2B%2BtZ1RQsDb1I0NHrFwdGuRlR5TORvCEUksM459wKUA%3D" }, - "nodejs@21": { - "last_modified": "2024-02-15T12:53:33Z", + "nodejs@latest": { + "last_modified": "2026-03-21T07:29:51Z", "plugin_version": "0.0.2", - "resolved": "github:NixOS/nixpkgs/085589047343aad800c4d305cf7b98e8a3d51ae2#nodejs_21", + "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#nodejs_25", "source": "devbox-search", - "version": "21.6.2", + "version": "25.8.1", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/g1v8xrnj54xyvn6gf73mnw9pdwrdzmdi-nodejs-21.6.2", + "path": "/nix/store/kala80ghvzlaxns3h291chi9l63jvjfy-nodejs-25.8.1", "default": true - }, - { - "name": "libv8", - "path": "/nix/store/dimydqz1cqi5i21rxrbaxkgb9v7cwaij-nodejs-21.6.2-libv8" } ], - "store_path": "/nix/store/g1v8xrnj54xyvn6gf73mnw9pdwrdzmdi-nodejs-21.6.2" + "store_path": "/nix/store/kala80ghvzlaxns3h291chi9l63jvjfy-nodejs-25.8.1" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/7ywds3cnww6ahc45g28c3c2rnf2aky2s-nodejs-21.6.2", + "path": "/nix/store/af8lqf08ahd3wxy9jhzi7d0qcrsc9kvb-nodejs-25.8.1", "default": true - }, - { - "name": "libv8", - "path": "/nix/store/56k0011v7555wnygpaj5xm3csl99r6xv-nodejs-21.6.2-libv8" } ], - "store_path": "/nix/store/7ywds3cnww6ahc45g28c3c2rnf2aky2s-nodejs-21.6.2" + "store_path": "/nix/store/af8lqf08ahd3wxy9jhzi7d0qcrsc9kvb-nodejs-25.8.1" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/scbarnsw7m2g4j2m6rp5c82wyv1fzg8l-nodejs-21.6.2", + "path": "/nix/store/mj7gariyc4j8fi2b9k31ykhr6n2yklm7-nodejs-25.8.1", "default": true - }, - { - "name": "libv8", - "path": "/nix/store/39dyqb9zd11vac854i19a38kkl23iqgb-nodejs-21.6.2-libv8" } ], - "store_path": "/nix/store/scbarnsw7m2g4j2m6rp5c82wyv1fzg8l-nodejs-21.6.2" + "store_path": "/nix/store/mj7gariyc4j8fi2b9k31ykhr6n2yklm7-nodejs-25.8.1" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/6cip7ljx563rlyfnzwkfzf6gxpy1lid0-nodejs-21.6.2", + "path": "/nix/store/h1dg57qqanqg9giys4a4akyncssbbb2v-nodejs-25.8.1", "default": true - }, - { - "name": "libv8", - "path": "/nix/store/5qkqqpqngw4zc6cgvllgcknfsxmk7fds-nodejs-21.6.2-libv8" } ], - "store_path": "/nix/store/6cip7ljx563rlyfnzwkfzf6gxpy1lid0-nodejs-21.6.2" + "store_path": "/nix/store/h1dg57qqanqg9giys4a4akyncssbbb2v-nodejs-25.8.1" } } }, - "ruby@3.3": { - "last_modified": "2024-02-10T18:15:24Z", + "ruby@latest": { + "last_modified": "2026-03-21T07:29:51Z", "plugin_version": "0.0.2", - "resolved": "github:NixOS/nixpkgs/10b813040df67c4039086db0f6eaf65c536886c6#ruby_3_3", + "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#ruby_4_0", "source": "devbox-search", - "version": "3.3.0", + "version": "4.0.2", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/7rawja8vh9w9ays7vxjdml3jn7kwmwr6-ruby-3.3.0", + "path": "/nix/store/k2z3yvjcps70i9kpxnjfpy3c7cxii4bw-ruby-4.0.2", "default": true }, { "name": "devdoc", - "path": "/nix/store/2yfyn52sm07mp7s1gl1dphqcfj1izwbh-ruby-3.3.0-devdoc" + "path": "/nix/store/szpcmqx1y2m6d08mlg1lnc17rk4z01g5-ruby-4.0.2-devdoc" } ], - "store_path": "/nix/store/7rawja8vh9w9ays7vxjdml3jn7kwmwr6-ruby-3.3.0" + "store_path": "/nix/store/k2z3yvjcps70i9kpxnjfpy3c7cxii4bw-ruby-4.0.2" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/75wihcgrk70qcfd07d36kiyr4ddqrfqc-ruby-3.3.0", + "path": "/nix/store/swr736l6wbsqicis75kbfk88qyy705pw-ruby-4.0.2", "default": true }, { "name": "devdoc", - "path": "/nix/store/b73qpa59xaiscbczafg6xb882j1rcmcf-ruby-3.3.0-devdoc" + "path": "/nix/store/km950xzm11k3rdpaifixj17c174mrm1m-ruby-4.0.2-devdoc" } ], - "store_path": "/nix/store/75wihcgrk70qcfd07d36kiyr4ddqrfqc-ruby-3.3.0" + "store_path": "/nix/store/swr736l6wbsqicis75kbfk88qyy705pw-ruby-4.0.2" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/rh9fnnkiw7dckch9jgbabrhnsbnmcfvl-ruby-3.3.0", + "path": "/nix/store/8ia52wahfycfda2j8fhiafqb417c0ng9-ruby-4.0.2", "default": true }, { "name": "devdoc", - "path": "/nix/store/wryxih5a53yp7vy6pkmw3x8c86cw6164-ruby-3.3.0-devdoc" + "path": "/nix/store/q1j2yw4vcyhvbgfmqvp6q9bw4jcr25ry-ruby-4.0.2-devdoc" } ], - "store_path": "/nix/store/rh9fnnkiw7dckch9jgbabrhnsbnmcfvl-ruby-3.3.0" + "store_path": "/nix/store/8ia52wahfycfda2j8fhiafqb417c0ng9-ruby-4.0.2" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/dmflx3hwdk6iyv8c1k5fz8vdh8d6zgxv-ruby-3.3.0", + "path": "/nix/store/sqy4wa0n2br45ml2z402gi59fbx0dsvf-ruby-4.0.2", "default": true }, { "name": "devdoc", - "path": "/nix/store/6gqjbllqk3dfd2xi8dv759gvqs1rnp44-ruby-3.3.0-devdoc" + "path": "/nix/store/98krb8wsrvlyap94lqb17y501wp4g976-ruby-4.0.2-devdoc" } ], - "store_path": "/nix/store/dmflx3hwdk6iyv8c1k5fz8vdh8d6zgxv-ruby-3.3.0" + "store_path": "/nix/store/sqy4wa0n2br45ml2z402gi59fbx0dsvf-ruby-4.0.2" } } }, "sqlite@latest": { - "last_modified": "2024-02-21T16:29:05Z", - "resolved": "github:NixOS/nixpkgs/ac4c5a60bebfb783f1106d126b9f39cc8e809e0e#sqlite", + "last_modified": "2026-03-23T05:26:49Z", + "resolved": "github:NixOS/nixpkgs/4724d5647207377bede08da3212f809cbd94a648#sqlite", "source": "devbox-search", - "version": "3.45.1", + "version": "3.51.2", "systems": { "aarch64-darwin": { "outputs": [ { "name": "bin", - "path": "/nix/store/ay9wvqp3p548p08symcy3q7avm86ck00-sqlite-3.45.1-bin", + "path": "/nix/store/k0d3v6xlvb83fmjkmm0wl7vysf498cx4-sqlite-3.51.2-bin", "default": true }, { - "name": "dev", - "path": "/nix/store/9y94z98y9fxfhl8ck3c07xdmv37crk7j-sqlite-3.45.1-dev" + "name": "man", + "path": "/nix/store/4nx5xiv69vqc9azhcgn7yw48mfrjc6lv-sqlite-3.51.2-man", + "default": true }, { "name": "out", - "path": "/nix/store/l0s2k2p4xqqmjsdr5r74dpsbgx5ahznr-sqlite-3.45.1" + "path": "/nix/store/w4g9wg8n4f85cialnsdwriwlkjdff9b5-sqlite-3.51.2" + }, + { + "name": "dev", + "path": "/nix/store/1kgr3m3cjkjccnpnrcgw2g0l8zx2vhqk-sqlite-3.51.2-dev" + }, + { + "name": "doc", + "path": "/nix/store/0lwkcqym02nwd8irrd406ma6bgb6x330-sqlite-3.51.2-doc" } ], - "store_path": "/nix/store/ay9wvqp3p548p08symcy3q7avm86ck00-sqlite-3.45.1-bin" + "store_path": "/nix/store/k0d3v6xlvb83fmjkmm0wl7vysf498cx4-sqlite-3.51.2-bin" }, "aarch64-linux": { "outputs": [ { "name": "bin", - "path": "/nix/store/1j3xiiq0i2q69nmwi9ja99grnwlpqzgy-sqlite-3.45.1-bin", + "path": "/nix/store/vpl09zqh4s46pp3lxq9h22cd8zanb9c7-sqlite-3.51.2-bin", "default": true }, { - "name": "debug", - "path": "/nix/store/v17pxqg7kyb4cgv6vvfmw9axyi150hfs-sqlite-3.45.1-debug" + "name": "man", + "path": "/nix/store/70fas3rsjvyv5j7ls758l4igb0s64s20-sqlite-3.51.2-man", + "default": true }, { - "name": "dev", - "path": "/nix/store/fq7893xi4yvk8pv80b3ysx1yqq5vdfmm-sqlite-3.45.1-dev" + "name": "doc", + "path": "/nix/store/sa9n0x4nbmfjra8rx53qyk12zi475pzs-sqlite-3.51.2-doc" }, { "name": "out", - "path": "/nix/store/xjpv1rzb0i0zr29wnr6jafj5jxwxg507-sqlite-3.45.1" + "path": "/nix/store/r1yvq03pp23glx5g6qcmyqw7m34rynmv-sqlite-3.51.2" + }, + { + "name": "debug", + "path": "/nix/store/n9gkjby75v1zgcl2bdajvbh694ir2n9n-sqlite-3.51.2-debug" + }, + { + "name": "dev", + "path": "/nix/store/fj9vvkrh19mj5dpylvvynqgx3lzhcn3i-sqlite-3.51.2-dev" } ], - "store_path": "/nix/store/1j3xiiq0i2q69nmwi9ja99grnwlpqzgy-sqlite-3.45.1-bin" + "store_path": "/nix/store/vpl09zqh4s46pp3lxq9h22cd8zanb9c7-sqlite-3.51.2-bin" }, "x86_64-darwin": { "outputs": [ { "name": "bin", - "path": "/nix/store/c9wndvymfnm4dcmi0bgy1lmljzx8dv4n-sqlite-3.45.1-bin", + "path": "/nix/store/lp7i4azfahsq77lby6rfip8p0hb441a3-sqlite-3.51.2-bin", "default": true }, { - "name": "out", - "path": "/nix/store/j5c7bmglk0m5znls65l0l3cbslmczz5a-sqlite-3.45.1" + "name": "man", + "path": "/nix/store/fx8krh0y8bnzkxwi7ygsrlm9yn0gl83x-sqlite-3.51.2-man", + "default": true }, { "name": "dev", - "path": "/nix/store/mrn6l8mprwlm711h148vyrkngdw755bx-sqlite-3.45.1-dev" + "path": "/nix/store/qgmdbbp7pysj0wv2jjw0xfcdd5zybkjx-sqlite-3.51.2-dev" + }, + { + "name": "doc", + "path": "/nix/store/qwvvr3aqgcgyv4ixn2ijn8wsvn3zvixd-sqlite-3.51.2-doc" + }, + { + "name": "out", + "path": "/nix/store/7dbr01zp4zx0n59shpbh363y4q4hv1x2-sqlite-3.51.2" } ], - "store_path": "/nix/store/c9wndvymfnm4dcmi0bgy1lmljzx8dv4n-sqlite-3.45.1-bin" + "store_path": "/nix/store/lp7i4azfahsq77lby6rfip8p0hb441a3-sqlite-3.51.2-bin" }, "x86_64-linux": { "outputs": [ { "name": "bin", - "path": "/nix/store/b3pbwqqpfllg2lxwhhv4iyw3m9xxbgld-sqlite-3.45.1-bin", + "path": "/nix/store/f368yzprc0hlv08bmgmazh2531w0isr2-sqlite-3.51.2-bin", "default": true }, + { + "name": "man", + "path": "/nix/store/blrkz04mgi67paskg5bdw544p0pmcvq9-sqlite-3.51.2-man", + "default": true + }, + { + "name": "out", + "path": "/nix/store/yvh4iy0ab95dq2p6cfm1xfvs6j9m0gxy-sqlite-3.51.2" + }, { "name": "debug", - "path": "/nix/store/gxhq32sjvkkwl3p2d6dkp9561p05sqym-sqlite-3.45.1-debug" + "path": "/nix/store/pc5318chmrj9ci881cw77hc1c9swb4zh-sqlite-3.51.2-debug" }, { "name": "dev", - "path": "/nix/store/w02gl9y1qwrqg4grl60hg0gp8r8v2nih-sqlite-3.45.1-dev" + "path": "/nix/store/9sch12zs629pw6m1az1l3gyy38dv2lzi-sqlite-3.51.2-dev" }, { - "name": "out", - "path": "/nix/store/wjvic21zwfcrrdrb1sqmw4hviq893xql-sqlite-3.45.1" + "name": "doc", + "path": "/nix/store/s0vgry2060r9ydrxfi3v42vrhv221srm-sqlite-3.51.2-doc" } ], - "store_path": "/nix/store/b3pbwqqpfllg2lxwhhv4iyw3m9xxbgld-sqlite-3.45.1-bin" + "store_path": "/nix/store/f368yzprc0hlv08bmgmazh2531w0isr2-sqlite-3.51.2-bin" } } }, - "yarn@1.22": { - "last_modified": "2024-02-15T12:53:33Z", - "resolved": "github:NixOS/nixpkgs/085589047343aad800c4d305cf7b98e8a3d51ae2#yarn", + "yarn@latest": { + "last_modified": "2026-03-21T07:29:51Z", + "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#yarn", "source": "devbox-search", - "version": "1.22.19", + "version": "1.22.22", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/qfnj26j8cwrwp6hq3fvwjcmanv9ibcpw-yarn-1.22.19", + "path": "/nix/store/59yqhmvbl7bsyv5qc30nmrpaf4iqj79h-yarn-1.22.22", "default": true } ], - "store_path": "/nix/store/qfnj26j8cwrwp6hq3fvwjcmanv9ibcpw-yarn-1.22.19" + "store_path": "/nix/store/59yqhmvbl7bsyv5qc30nmrpaf4iqj79h-yarn-1.22.22" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/0x6p8q6f5kjz1jy1wrpxgz8yz6ydf139-yarn-1.22.19", + "path": "/nix/store/ybspc2b9q9j9drfpa5d1bmw2qgrkx4qc-yarn-1.22.22", "default": true } ], - "store_path": "/nix/store/0x6p8q6f5kjz1jy1wrpxgz8yz6ydf139-yarn-1.22.19" + "store_path": "/nix/store/ybspc2b9q9j9drfpa5d1bmw2qgrkx4qc-yarn-1.22.22" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/dakr5jjc9apfxy3c9dd2afgmnp16q9qf-yarn-1.22.19", + "path": "/nix/store/8j2xmk7ijy7nijpy2yc3mcjf7hxpnpyl-yarn-1.22.22", "default": true } ], - "store_path": "/nix/store/dakr5jjc9apfxy3c9dd2afgmnp16q9qf-yarn-1.22.19" + "store_path": "/nix/store/8j2xmk7ijy7nijpy2yc3mcjf7hxpnpyl-yarn-1.22.22" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/f8nf1q0lffdni21lfw9frd5f9z231nzp-yarn-1.22.19", + "path": "/nix/store/g1ksanljq7v16gj8yb7zs6wkv7ikycy3-yarn-1.22.22", "default": true } ], - "store_path": "/nix/store/f8nf1q0lffdni21lfw9frd5f9z231nzp-yarn-1.22.19" + "store_path": "/nix/store/g1ksanljq7v16gj8yb7zs6wkv7ikycy3-yarn-1.22.22" } } } From 5a8c3a1584b2b108ee27e26bc9edc7f287865a85 Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Wed, 25 Mar 2026 11:23:03 -0700 Subject: [PATCH 6/6] Add libyaml --- examples/stacks/rails/blog/Gemfile.lock | 2 +- examples/stacks/rails/devbox.json | 1 + examples/stacks/rails/devbox.lock | 148 ++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 1 deletion(-) diff --git a/examples/stacks/rails/blog/Gemfile.lock b/examples/stacks/rails/blog/Gemfile.lock index fc33b6ed4aa..9752bd91eff 100644 --- a/examples/stacks/rails/blog/Gemfile.lock +++ b/examples/stacks/rails/blog/Gemfile.lock @@ -296,7 +296,7 @@ DEPENDENCIES webdrivers RUBY VERSION - ruby 3.4.4p34 + ruby 4.0.2p0 BUNDLED WITH 2.6.9 diff --git a/examples/stacks/rails/devbox.json b/examples/stacks/rails/devbox.json index 6b86641db3d..eee8d11eea7 100644 --- a/examples/stacks/rails/devbox.json +++ b/examples/stacks/rails/devbox.json @@ -6,6 +6,7 @@ "yarn": "latest", "curl": "latest", "sqlite": "latest", + "pkg-config": "latest", "libyaml": { "version": "latest", "outputs": ["out", "dev"] diff --git a/examples/stacks/rails/devbox.lock b/examples/stacks/rails/devbox.lock index 327559ec134..b5e6a94c930 100644 --- a/examples/stacks/rails/devbox.lock +++ b/examples/stacks/rails/devbox.lock @@ -177,6 +177,70 @@ "last_modified": "2026-03-23T13:48:00Z", "resolved": "github:NixOS/nixpkgs/fdc7b8f7b30fdbedec91b71ed82f36e1637483ed?lastModified=1774273680&narHash=sha256-a%2B%2BtZ1RQsDb1I0NHrFwdGuRlR5TORvCEUksM459wKUA%3D" }, + "libyaml@latest": { + "last_modified": "2026-03-21T07:29:51Z", + "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#libyaml", + "source": "devbox-search", + "version": "0.2.5", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/qqa8q98n3hvb2kqz3xvd0m0j22033wy0-libyaml-0.2.5", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/00yv9nvsx0vswzzihkkl4qk39lb2p1pc-libyaml-0.2.5-dev" + } + ], + "store_path": "/nix/store/qqa8q98n3hvb2kqz3xvd0m0j22033wy0-libyaml-0.2.5" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/m4j56in3n01xw1jk5h1qxj5r8i4x2mfb-libyaml-0.2.5", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/jyvgsbxnppxyvvgga304iw6xlhi39r17-libyaml-0.2.5-dev" + } + ], + "store_path": "/nix/store/m4j56in3n01xw1jk5h1qxj5r8i4x2mfb-libyaml-0.2.5" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/4djwsl28pfclczbkcrdqxlqrcxyvihik-libyaml-0.2.5", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/6i8a2m6yj122s9r1nyl8grxizq3av6z6-libyaml-0.2.5-dev" + } + ], + "store_path": "/nix/store/4djwsl28pfclczbkcrdqxlqrcxyvihik-libyaml-0.2.5" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/fnhs945sa02bg7gki8a3l8r9r44ylx10-libyaml-0.2.5", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/v9qn9g4fm4818vx30kl7z423vj1mswml-libyaml-0.2.5-dev" + } + ], + "store_path": "/nix/store/fnhs945sa02bg7gki8a3l8r9r44ylx10-libyaml-0.2.5" + } + } + }, "nodejs@latest": { "last_modified": "2026-03-21T07:29:51Z", "plugin_version": "0.0.2", @@ -226,6 +290,90 @@ } } }, + "pkg-config@latest": { + "last_modified": "2025-11-23T21:50:36Z", + "resolved": "github:NixOS/nixpkgs/ee09932cedcef15aaf476f9343d1dea2cb77e261#pkg-config", + "source": "devbox-search", + "version": "0.29.2", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/hygaaqwk9ylklp0ybwppqhw75nz8ya41-pkg-config-wrapper-0.29.2", + "default": true + }, + { + "name": "man", + "path": "/nix/store/9px0sji43x3r2w4zxl3j3idwsql7lwxx-pkg-config-wrapper-0.29.2-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/hqk44ra6qxw7iixardl6c3hdgb9kq6ns-pkg-config-wrapper-0.29.2-doc" + } + ], + "store_path": "/nix/store/hygaaqwk9ylklp0ybwppqhw75nz8ya41-pkg-config-wrapper-0.29.2" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/lbiigi8qbp7mzf1lpr7p982l1kyf01ql-pkg-config-wrapper-0.29.2", + "default": true + }, + { + "name": "man", + "path": "/nix/store/10060k24qggqyzlwdsfmni9y32zxcg0j-pkg-config-wrapper-0.29.2-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/0y4v51ndpyvkj09hwlfqkz0c3h17zfmc-pkg-config-wrapper-0.29.2-doc" + } + ], + "store_path": "/nix/store/lbiigi8qbp7mzf1lpr7p982l1kyf01ql-pkg-config-wrapper-0.29.2" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/vknadizq0q5kffvx6y4379p9gdry9zq3-pkg-config-wrapper-0.29.2", + "default": true + }, + { + "name": "man", + "path": "/nix/store/1nyspra675q22gfhf7hn2nmfpi6rgim5-pkg-config-wrapper-0.29.2-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/7lq1axxwrafwljs06n88bzyz9w523rkc-pkg-config-wrapper-0.29.2-doc" + } + ], + "store_path": "/nix/store/vknadizq0q5kffvx6y4379p9gdry9zq3-pkg-config-wrapper-0.29.2" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/8vdiwpbh0g4avsd6x5v4s0di32vcl3dp-pkg-config-wrapper-0.29.2", + "default": true + }, + { + "name": "man", + "path": "/nix/store/j9xfpnrygg3v37svc5pfin9q5bm49r94-pkg-config-wrapper-0.29.2-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/x3bypxdxaq20kykybhkf21x4jczsiy8y-pkg-config-wrapper-0.29.2-doc" + } + ], + "store_path": "/nix/store/8vdiwpbh0g4avsd6x5v4s0di32vcl3dp-pkg-config-wrapper-0.29.2" + } + } + }, "ruby@latest": { "last_modified": "2026-03-21T07:29:51Z", "plugin_version": "0.0.2",