diff --git a/.github/workflows/rubyonrails.yml b/.github/workflows/rubyonrails.yml index 83c10bf57..08454c75b 100644 --- a/.github/workflows/rubyonrails.yml +++ b/.github/workflows/rubyonrails.yml @@ -11,11 +11,8 @@ jobs: matrix: include: - ruby: '3.4.4' - rails: '7.1.5.2' + rails: '7.2.2.2' allowed_failure: false # ✅ required - - ruby: '3.4.4' - rails: '7.2.2.1' - allowed_failure: false # ⚠️ allowed to fail - ruby: '3.4.4' rails: '8.0.2' allowed_failure: true # ⚠️ allowed to fail @@ -52,10 +49,10 @@ jobs: with: ruby-version: ${{ matrix.ruby }} - # Run the automatic bundle-install only on 7.1. + # Run the automatic bundle-install only on 7.2. # For 7.2 / 8.0 it just sets up Ruby *and* restores a cache layer # that we’ll reuse in the later manual install. - bundler-cache: ${{ matrix.rails == '7.1.5.2' }} + bundler-cache: ${{ matrix.rails == '7.2.2.2' }} # One cache bucket per Rails version so they don’t clobber each other. cache-version: rails-${{ matrix.rails }} @@ -63,7 +60,7 @@ jobs: # Updating Rails can legitimately blow up on the experimental tracks, # so we allow that *step* to error out without failing the job. - name: Update Rails & install gems - if: matrix.rails != '7.1.5.2' + if: matrix.rails != '7.2.2.2' id: update run: | # turn off deployment mode @@ -75,21 +72,21 @@ jobs: continue-on-error: ${{ matrix.allowed_failure }} - name: Prepare DB schema - if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success' + if: (matrix.rails == '7.2.2.2') || steps.update.outcome == 'success' run: | rm -f spec/dummy/tmp/pids/server.pid bundle exec rake -f spec/dummy/Rakefile db:schema:load continue-on-error: ${{ matrix.allowed_failure }} - name: Wait for Elasticsearch - if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success' + if: (matrix.rails == '7.2.2.2') || steps.update.outcome == 'success' run: | echo "Waiting for Elasticsearch to be healthy..." curl -s "http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=60s" || (echo "Elasticsearch not healthy" && exit 1) - name: Run RSpec - if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success' + if: (matrix.rails == '7.2.2.2') || steps.update.outcome == 'success' env: RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} run: | diff --git a/AGENTS.md b/AGENTS.md index f11e3327b..347785440 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ Instructions for GitHub Copilot and other automated contributors working in this ## Project - Ruby: 3.4.4 (installed via rbenv in setup) -- Rails: 7.1 +- Rails: 7.2 - Node: 20 - DB: PostgreSQL + PostGIS - Search: Elasticsearch 7.17.23 diff --git a/Gemfile b/Gemfile index 54658e4aa..0bd522e78 100644 --- a/Gemfile +++ b/Gemfile @@ -27,7 +27,7 @@ gem 'pundit-resources', '~> 1.1.4', github: 'better-together-org/pundit-resource # Core Rails gem gem 'rack-protection' -gem 'rails', ENV.fetch('RAILS_VERSION', '7.1.5.2') +gem 'rails', ENV.fetch('RAILS_VERSION', '7.2.2.2') # Redis for ActionCable and background jobs gem 'redis', '~> 5.4' diff --git a/Gemfile.lock b/Gemfile.lock index ba2eb677c..d2d99a042 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,7 +53,7 @@ PATH rack-attack rack-cors (>= 1.1.1, < 3.1.0) rack-mini-profiler - rails (>= 7.1, < 8.1) + rails (>= 7.2, < 8.1) reform-rails (>= 0.2, < 0.4) rswag (>= 2.3.1, < 2.17.0) ruby-openai @@ -68,51 +68,46 @@ PATH GEM remote: https://rubygems.org/ specs: - actioncable (7.1.5.2) - actionpack (= 7.1.5.2) - activesupport (= 7.1.5.2) + actioncable (7.2.2.2) + actionpack (= 7.2.2.2) + activesupport (= 7.2.2.2) 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.2.2) + actionpack (= 7.2.2.2) + activejob (= 7.2.2.2) + activerecord (= 7.2.2.2) + activestorage (= 7.2.2.2) + activesupport (= 7.2.2.2) + mail (>= 2.8.0) + actionmailer (7.2.2.2) + actionpack (= 7.2.2.2) + actionview (= 7.2.2.2) + activejob (= 7.2.2.2) + activesupport (= 7.2.2.2) + 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.2.2) + actionview (= 7.2.2.2) + activesupport (= 7.2.2.2) nokogiri (>= 1.8.5) racc - rack (>= 2.2.4) + rack (>= 2.2.4, < 3.2) 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.2.2) + actionpack (= 7.2.2.2) + activerecord (= 7.2.2.2) + activestorage (= 7.2.2.2) + activesupport (= 7.2.2.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.5.2) - activesupport (= 7.1.5.2) + actionview (7.2.2.2) + activesupport (= 7.2.2.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -125,39 +120,38 @@ GEM activestorage (>= 6.1.4) activesupport (>= 6.1.4) marcel (>= 1.0.3) - activejob (7.1.5.2) - activesupport (= 7.1.5.2) + activejob (7.2.2.2) + activesupport (= 7.2.2.2) 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.2.2) + activesupport (= 7.2.2.2) + activerecord (7.2.2.2) + activemodel (= 7.2.2.2) + activesupport (= 7.2.2.2) timeout (>= 0.4.0) activerecord-import (2.2.0) activerecord (>= 4.2) - activerecord-postgis-adapter (9.0.2) - activerecord (~> 7.1.0) - rgeo-activerecord (~> 7.0.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) + activerecord-postgis-adapter (10.0.1) + activerecord (~> 7.2.0) + rgeo-activerecord (~> 8.0.0) + activestorage (7.2.2.2) + actionpack (= 7.2.2.2) + activejob (= 7.2.2.2) + activerecord (= 7.2.2.2) + activesupport (= 7.2.2.2) marcel (~> 1.0) - activesupport (7.1.5.2) + activesupport (7.2.2.2) 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) + tzinfo (~> 2.0, >= 2.0.5) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) asset_sync (2.19.2) @@ -229,7 +223,7 @@ GEM coercible (1.0.0) descendants_tracker (~> 0.0.1) concurrent-ruby (1.3.5) - connection_pool (2.5.3) + connection_pool (2.5.4) coveralls_reborn (0.29.0) simplecov (~> 0.22.0) term-ansicolor (~> 1.7) @@ -469,10 +463,9 @@ GEM msgpack (1.8.0) multi_json (1.17.0) multipart-post (2.4.1) - mutex_m (0.3.0) net-http (0.6.0) uri - net-imap (0.5.9) + net-imap (0.5.10) date net-protocol net-pop (0.1.2) @@ -529,7 +522,7 @@ GEM pundit (2.5.0) activesupport (>= 3.0.0) racc (1.8.1) - rack (3.2.0) + rack (3.1.16) rack-attack (6.7.0) rack (>= 1.0, < 4) rack-cors (3.0.0) @@ -548,20 +541,20 @@ GEM rack (>= 1.3) rackup (2.2.1) rack (>= 3) - 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) + rails (7.2.2.2) + actioncable (= 7.2.2.2) + actionmailbox (= 7.2.2.2) + actionmailer (= 7.2.2.2) + actionpack (= 7.2.2.2) + actiontext (= 7.2.2.2) + actionview (= 7.2.2.2) + activejob (= 7.2.2.2) + activemodel (= 7.2.2.2) + activerecord (= 7.2.2.2) + activestorage (= 7.2.2.2) + activesupport (= 7.2.2.2) bundler (>= 1.15.0) - railties (= 7.1.5.2) + railties (= 7.2.2.2) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -576,10 +569,10 @@ GEM rails-i18n (7.0.10) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (7.1.5.2) - actionpack (= 7.1.5.2) - activesupport (= 7.1.5.2) - irb + railties (7.2.2.2) + actionpack (= 7.2.2.2) + activesupport (= 7.2.2.2) + irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) @@ -622,9 +615,9 @@ GEM railties (>= 5.2) rexml (3.4.1) rgeo (3.0.1) - rgeo-activerecord (7.0.1) - activerecord (>= 5.0) - rgeo (>= 1.0.0) + rgeo-activerecord (8.0.0) + activerecord (>= 7.0) + rgeo (>= 3.0) rouge (4.2.0) rspec (3.13.1) rspec-core (~> 3.13.0) @@ -791,6 +784,7 @@ GEM unicode-emoji (~> 4.0, >= 4.0.4) unicode-emoji (4.0.4) uri (1.0.3) + useragent (0.16.11) virtus (2.0.0) axiom-types (~> 0.1) coercible (~> 1.0) @@ -851,7 +845,7 @@ DEPENDENCIES pundit-resources (~> 1.1.4)! rack-mini-profiler rack-protection - rails (= 7.1.5.2) + rails (= 7.2.2.2) rails-controller-testing rb-readline rbtrace diff --git a/app/assets/stylesheets/better_together/_checklist_children.scss b/app/assets/stylesheets/better_together/_checklist_children.scss new file mode 100644 index 000000000..6c4313fc7 --- /dev/null +++ b/app/assets/stylesheets/better_together/_checklist_children.scss @@ -0,0 +1,6 @@ +/* Add top margin for child ULs only when they exist under a list-group item */ +/* Targets: