Compare commits

..

1 Commits

Author SHA1 Message Date
google-labs-jules[bot]
111bdb2062 feat: Improve Swagger documentation
This commit improves the Swagger documentation by using rswag to generate it from the request specs.

The following changes were made:
- All request specs in `spec/requests/api/v1/` were updated to use the rswag DSL.
- The `spec/swagger_helper.rb` was configured to generate a `swagger.json` file.
- The `config/database.yml` was updated to use environment variables, which makes it easier to use in different environments.
- The generated `swagger.json` file is now based on the OpenAPI 3.0 specification.
2025-09-10 12:36:32 +00:00
96 changed files with 3526 additions and 5604 deletions

View File

@@ -27,7 +27,7 @@ services:
command: sleep infinity
db:
image: postgres:17
image: postgres:latest
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql/data

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -103,7 +103,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -74,7 +74,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'
@@ -112,7 +112,7 @@ jobs:
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: screenshots
path: tmp/screenshots

View File

@@ -6,7 +6,7 @@ jobs:
contributors:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v5
- name: Install ruby version specified in .ruby-version
uses: ruby/setup-ruby@v1
with:
@@ -53,7 +53,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Configure sysctl limits
run: |
@@ -89,7 +89,7 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
uses: actions/setup-node@v5
with:
node-version: '12'

View File

@@ -187,16 +187,18 @@ end
group :test do
gem 'axe-core-capybara'
gem 'axe-core-rspec'
gem "percy-capybara", "~> 5.0.0"
gem 'rails-controller-testing'
gem "rspec-rebound"
gem 'selenium-webdriver'
gem 'timecop'
gem 'vcr'
gem "rspec-rebound"
gem "percy-capybara", "~> 5.0.0"
end
group :travis do
gem 'platform-api'
end
gem "i18n_data", "~> 1.1"

View File

@@ -33,49 +33,47 @@ GEM
GEM
remote: https://rubygems.org/
specs:
actioncable (7.2.3)
actionpack (= 7.2.3)
activesupport (= 7.2.3)
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.2.3)
actionpack (= 7.2.3)
activejob (= 7.2.3)
activerecord (= 7.2.3)
activestorage (= 7.2.3)
activesupport (= 7.2.3)
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.3)
actionpack (= 7.2.3)
actionview (= 7.2.3)
activejob (= 7.2.3)
activesupport (= 7.2.3)
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.2.3)
actionview (= 7.2.3)
activesupport (= 7.2.3)
cgi
actionpack (7.2.2.2)
actionview (= 7.2.2.2)
activesupport (= 7.2.2.2)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4, < 3.3)
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)
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.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.2.3)
activesupport (= 7.2.3)
actionview (7.2.2.2)
activesupport (= 7.2.2.2)
builder (~> 3.1)
cgi
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
@@ -84,27 +82,27 @@ GEM
addressable
active_median (0.6.0)
activesupport (>= 7.1)
active_record_union (1.4.0)
activerecord (>= 6.0)
active_utils (3.6.0)
active_record_union (1.3.0)
activerecord (>= 4.0)
active_utils (3.5.0)
activesupport (>= 4.2)
i18n
activejob (7.2.3)
activesupport (= 7.2.3)
activejob (7.2.2.2)
activesupport (= 7.2.2.2)
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.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)
activestorage (7.2.3)
actionpack (= 7.2.3)
activejob (= 7.2.3)
activerecord (= 7.2.3)
activesupport (= 7.2.3)
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.2.3)
activesupport (7.2.2.2)
base64
benchmark (>= 0.3)
bigdecimal
@@ -121,15 +119,15 @@ GEM
ast (2.4.3)
autoprefixer-rails (10.4.16.0)
execjs (~> 2)
axe-core-api (4.11.0)
axe-core-api (4.10.3)
dumb_delegator
ostruct
virtus
axe-core-capybara (4.11.0)
axe-core-api (= 4.11.0)
axe-core-capybara (4.10.3)
axe-core-api (= 4.10.3)
dumb_delegator
axe-core-rspec (4.11.0)
axe-core-api (= 4.11.0)
axe-core-rspec (4.10.3)
axe-core-api (= 4.10.3)
dumb_delegator
ostruct
virtus
@@ -139,12 +137,12 @@ GEM
thread_safe (~> 0.3, >= 0.3.1)
base64 (0.3.0)
bcrypt (3.1.20)
benchmark (0.5.0)
benchmark (0.4.1)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
rouge (>= 1.0.0)
bigdecimal (3.3.1)
bigdecimal (3.2.3)
bluecloth (2.2.0)
bonsai-elasticsearch-rails (7.0.1)
elasticsearch-model (< 8)
@@ -158,7 +156,7 @@ GEM
actionpack (>= 6.1)
activemodel (>= 6.1)
builder (3.3.0)
bullet (8.1.0)
bullet (8.0.8)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (12.0.0)
@@ -185,8 +183,7 @@ GEM
image_processing (~> 1.1)
marcel (~> 1.0.0)
ssrf_filter (~> 1.0)
cgi (0.5.0)
chartkick (5.2.1)
chartkick (5.2.0)
childprocess (5.0.0)
coderay (1.1.3)
coercible (1.0.0)
@@ -201,7 +198,7 @@ GEM
comfy_bootstrap_form (4.0.9)
rails (>= 5.0.0)
concurrent-ruby (1.3.5)
connection_pool (2.5.5)
connection_pool (2.5.4)
crass (1.0.6)
crowdin-api (1.12.0)
open-uri (>= 0.1.0, < 0.2.0)
@@ -211,7 +208,7 @@ GEM
gli (>= 2.7.0)
i18n (>= 0.6.4)
rubyzip (>= 1.0.0)
csv (3.3.5)
csv (3.3.1)
csv_shaper (1.4.0)
activesupport (>= 3.0.0)
csv
@@ -222,7 +219,7 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.5.0)
date (3.4.1)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
devise (4.9.4)
@@ -254,7 +251,7 @@ GEM
elasticsearch-transport (7.0.0)
faraday
multi_json
erb (6.0.0)
erb (5.0.2)
erubi (1.13.1)
erubis (2.7.0)
excon (1.2.5)
@@ -267,7 +264,7 @@ GEM
railties (>= 6.1.0)
faker (3.5.2)
i18n (>= 1.8.11, < 2)
faraday (2.14.0)
faraday (2.13.4)
faraday-net_http (>= 2.0, < 3.5)
json
logger
@@ -280,7 +277,7 @@ GEM
friendly_id (5.5.1)
activerecord (>= 4.0.0)
gbifrb (0.2.0)
geocoder (1.8.6)
geocoder (1.8.5)
base64 (>= 0.1.0)
csv (>= 3.0.0)
gibbon (1.2.1)
@@ -288,21 +285,21 @@ GEM
multi_json (>= 1.9.0)
gli (2.22.2)
ostruct
globalid (1.3.0)
globalid (1.2.1)
activesupport (>= 6.1)
gravatar-ultimate (2.0.0)
activesupport (>= 2.3.14)
rack
haml (7.0.2)
haml (6.3.0)
temple (>= 0.8.2)
thor
tilt
haml-rails (3.0.0)
haml-rails (2.1.0)
actionpack (>= 5.1)
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.67.0)
haml_lint (0.66.0)
haml (>= 5.0)
parallel (~> 1.10)
rainbow
@@ -327,21 +324,20 @@ GEM
multi_xml (>= 0.5.2)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
i18n-tasks (1.1.2)
i18n-tasks (1.0.15)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
erubi
highline (>= 3.0.0)
highline (>= 2.0.0)
i18n
parser (>= 3.2.2.1)
prism
rails-i18n
rainbow (>= 2.2.2, < 4.0)
ruby-progressbar (~> 1.8, >= 1.8.1)
terminal-table (>= 1.5.1)
i18n_data (1.1.0)
simple_po_parser (~> 1.1)
icalendar (2.12.1)
icalendar (2.11.2)
base64
ice_cube (~> 0.16)
logger
@@ -352,18 +348,17 @@ GEM
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
io-console (0.8.1)
irb (1.15.3)
irb (1.15.2)
pp (>= 0.6.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jquery-rails (4.6.1)
jquery-rails (4.6.0)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (2.16.0)
json-schema (6.0.0)
json (2.13.2)
json-schema (5.1.0)
addressable (~> 2.8)
bigdecimal (~> 3.1)
jsonapi-resources (0.10.7)
activerecord (>= 4.1)
concurrent-ruby
@@ -389,8 +384,7 @@ GEM
loofah (2.24.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.9.0)
logger
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
@@ -417,7 +411,7 @@ GEM
mini_magick (4.12.0)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
minitest (5.26.2)
minitest (5.25.5)
moneta (1.0.0)
msgpack (1.8.0)
multi_json (1.15.0)
@@ -425,7 +419,7 @@ GEM
bigdecimal (~> 3.1)
net-http (0.6.0)
uri
net-imap (0.5.12)
net-imap (0.5.9)
date
net-protocol
net-pop (0.1.2)
@@ -435,14 +429,14 @@ GEM
net-smtp (0.5.1)
net-protocol
netrc (0.11.0)
nio4r (2.7.5)
nokogiri (1.18.10)
nio4r (2.7.4)
nokogiri (1.18.9)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.18.10-x86_64-linux-gnu)
nokogiri (1.18.9-x86_64-linux-gnu)
racc (~> 1.4)
oauth (0.5.6)
oj (3.16.12)
oj (3.16.11)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
omniauth (1.9.2)
@@ -458,7 +452,7 @@ GEM
orm_adapter (0.5.0)
ostruct (0.6.3)
parallel (1.27.0)
parser (3.3.10.0)
parser (3.3.9.0)
ast (~> 2.4.1)
racc
percy-capybara (5.0.0)
@@ -470,22 +464,22 @@ GEM
moneta (~> 1.0.0)
rate_throttle_client (~> 0.1.0)
popper_js (2.11.8)
pp (0.6.3)
pp (0.6.2)
prettyprint
prettyprint (0.2.0)
prism (1.6.0)
prism (1.4.0)
pry (0.15.2)
coderay (~> 1.1)
method_source (~> 1.0)
psych (5.2.6)
date
stringio
public_suffix (6.0.2)
puma (7.1.0)
public_suffix (6.0.1)
puma (7.0.2)
nio4r (~> 2.0)
query_diet (0.7.3)
query_diet (0.7.2)
racc (1.8.1)
rack (2.2.21)
rack (2.2.17)
rack-cors (2.0.2)
rack (>= 2.0.0)
rack-protection (3.2.0)
@@ -498,20 +492,20 @@ GEM
rackup (1.0.1)
rack (< 3)
webrick
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)
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.2.3)
railties (= 7.2.2.2)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -531,42 +525,39 @@ GEM
rails_stdout_logging
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
railties (7.2.3)
actionpack (= 7.2.3)
activesupport (= 7.2.3)
cgi
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)
tsort (>= 0.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
raindrops (0.20.1)
rake (13.3.1)
rake (13.3.0)
rate_throttle_client (0.1.2)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rdoc (6.16.1)
rdoc (6.14.2)
erb
psych (>= 4.0.0)
tsort
recaptcha (5.21.1)
recaptcha (5.20.1)
redis-client (0.23.2)
connection_pool
regexp_parser (2.11.3)
reline (0.6.3)
regexp_parser (2.11.2)
reline (0.6.2)
io-console (~> 0.5)
responders (3.2.0)
actionpack (>= 7.0)
railties (>= 7.0)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.4.4)
rexml (3.4.1)
rouge (4.1.2)
rspec (3.13.0)
rspec-core (~> 3.13.0)
@@ -576,7 +567,7 @@ GEM
activemodel (>= 3.0)
activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0)
rspec-core (3.13.6)
rspec-core (3.13.5)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
@@ -594,23 +585,23 @@ GEM
rspec-support (~> 3.13)
rspec-rebound (0.2.1)
rspec-core (~> 3.3)
rspec-support (3.13.6)
rspec-support (3.13.4)
rspectre (0.2.0)
parser (>= 3.3.7.1)
prism (~> 1.3)
rspec (~> 3.10)
rswag-api (2.17.0)
activesupport (>= 5.2, < 8.2)
railties (>= 5.2, < 8.2)
rswag-specs (2.17.0)
activesupport (>= 5.2, < 8.2)
json-schema (>= 2.2, < 7.0)
railties (>= 5.2, < 8.2)
rswag-api (2.16.0)
activesupport (>= 5.2, < 8.1)
railties (>= 5.2, < 8.1)
rswag-specs (2.16.0)
activesupport (>= 5.2, < 8.1)
json-schema (>= 2.2, < 6.0)
railties (>= 5.2, < 8.1)
rspec-core (>= 2.14)
rswag-ui (2.17.0)
actionpack (>= 5.2, < 8.2)
railties (>= 5.2, < 8.2)
rubocop (1.81.7)
rswag-ui (2.16.0)
actionpack (>= 5.2, < 8.1)
railties (>= 5.2, < 8.1)
rubocop (1.80.2)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@@ -618,19 +609,19 @@ GEM
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.47.1, < 2.0)
rubocop-ast (>= 1.46.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.48.0)
rubocop-ast (1.46.0)
parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-capybara (2.22.1)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-factory_bot (2.28.0)
rubocop-factory_bot (2.27.1)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rails (2.34.1)
rubocop-rails (2.33.3)
activesupport (>= 4.2.0)
lint_roller (~> 1.1)
rack (>= 1.1)
@@ -639,10 +630,10 @@ GEM
rubocop-rake (0.7.1)
lint_roller (~> 1.1)
rubocop (>= 1.72.1)
rubocop-rspec (3.8.0)
rubocop-rspec (3.7.0)
lint_roller (~> 1.1)
rubocop (~> 1.81)
rubocop-rspec_rails (2.32.0)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rspec_rails (2.31.0)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rspec (~> 3.5)
@@ -650,7 +641,7 @@ GEM
ruby-units (4.1.0)
ruby-vips (2.2.1)
ffi (~> 1.12)
rubyzip (3.2.1)
rubyzip (3.0.1)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
@@ -664,13 +655,13 @@ GEM
sprockets (> 3.0)
sprockets-rails
tilt
scout_apm (5.8.0)
scout_apm (5.7.1)
parser
searchkick (5.3.1)
activemodel (>= 6.1)
hashie
securerandom (0.4.1)
selenium-webdriver (4.38.0)
selenium-webdriver (4.35.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
@@ -692,7 +683,7 @@ GEM
activesupport (>= 5.2)
sprockets (>= 3.0.0)
ssrf_filter (1.1.2)
stringio (3.1.8)
stringio (3.1.7)
sysexits (1.2.0)
temple (0.10.4)
terminal-table (4.0.0)
@@ -703,17 +694,16 @@ GEM
thread_safe (0.3.6)
tilt (2.6.1)
timecop (0.9.10)
timeout (0.4.4)
tsort (0.2.0)
timeout (0.4.3)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (3.2.0)
unicode-emoji (~> 4.1)
unicode-emoji (4.1.0)
unicode-display_width (3.1.5)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
unicorn (6.1.0)
kgio (~> 2.6)
raindrops (~> 0.7)
uniform_notifier (1.18.0)
uniform_notifier (1.17.0)
uri (1.0.3)
useragent (0.16.11)
validate_url (1.0.15)
@@ -731,7 +721,7 @@ GEM
nokogiri (>= 1.2.0)
rack (>= 1.0)
rack-test (>= 0.5.3)
webrick (1.9.2)
webrick (1.9.1)
websocket (1.2.11)
websocket-driver (0.8.0)
base64

View File

@@ -16,27 +16,3 @@
.homepage--list-item {
height: 100px;
}
.releases {
.card {
.card-header {
}
.card-body {
h2 {
background-color: transparent;
color: black;
box-shadow: none;
}
img {
border: 0.5em solid #111;
margin-left: 5%;
margin-right: 5%;
width: 90%;
}
ul {
margin-bottom: 1em;
margin-top: 1em;
}
}
}
}

View File

@@ -24,17 +24,6 @@ class ActivitiesController < DataController
end
def show
if @activity.finished? && @activity.owner == current_member && (@activity.updated_at + 2.weeks) > Time.now
@repeat_link = new_activity_path(
name: @activity.name,
garden_id: @activity.garden_id,
planting_id: @activity.planting_id,
category: @activity.category,
description: @activity.description,
due_date: 2.weeks.from_now.to_date
)
end
respond_with @activity
end
@@ -43,10 +32,6 @@ class ActivitiesController < DataController
owner: current_member,
due_date: Date.today
)
@activity.name = params[:name] if params[:name]
@activity.description = params[:description] if params[:description]
@activity.category = params[:category] if params[:category]
@activity.due_date = params[:due_date] if params[:due_date]
if params[:garden_id]
@activity.garden = Garden.find_by(
owner: current_member,
@@ -73,21 +58,7 @@ class ActivitiesController < DataController
def create
@activity = Activity.new(activity_params)
@activity.owner = current_member
@activity.due_date ||= Date.today
if @activity.save
if params[:repeat_times].to_i > 0
repeat_times = params[:repeat_times].to_i
repeat_weeks = params[:repeat_weeks].to_i
repeat_times.times do |i|
new_activity = @activity.dup
new_activity.due_date = @activity.due_date + (i + 1) * repeat_weeks.weeks
new_activity.save
end
end
end
@activity.save
respond_with @activity
end
@@ -106,8 +77,7 @@ class ActivitiesController < DataController
def activity_params
params.require(:activity).permit(
:name, :description, :category, :finished,
:garden_id, :planting_id, :due_date,
:repeat_times, :repeat_weeks
:garden_id, :planting_id, :due_date
)
end

View File

@@ -1,40 +0,0 @@
# frozen_string_literal: true
module Admin
class CropCompanionsController < AdminController
before_action :set_crop
def index
@crop_companions = @crop.crop_companions
end
def new
@crop_companion = @crop.crop_companions.new
end
def create
@crop_companion = @crop.crop_companions.new(crop_companion_params)
if @crop_companion.save
redirect_to admin_crop_crop_companions_path(@crop), notice: 'Companion was successfully created.'
else
render :new
end
end
def destroy
@crop_companion = @crop.crop_companions.find(params[:id])
@crop_companion.destroy
redirect_to admin_crop_crop_companions_path(@crop), notice: 'Companion was successfully destroyed.'
end
private
def set_crop
@crop = Crop.find_by!(slug: params[:crop_slug])
end
def crop_companion_params
params.require(:crop_companion).permit(:crop_b_id, :source_url)
end
end
end

View File

@@ -188,11 +188,10 @@ class CropsController < ApplicationController
def crop_params
params.require(:crop).permit(
:name, :en_wikipedia_url, :en_youtube_url,
:name, :en_wikipedia_url,
:parent_id, :perennial,
:request_notes, :reason_for_rejection,
:rejection_notes,
:description,
:row_spacing, :spread, :height,
:sowing_method, :sun_requirements, :growing_degree_days,
scientific_names_attributes: %i(scientific_name _destroy id)

View File

@@ -39,10 +39,7 @@ class GardensController < DataController
def create
@garden.owner_id = current_member.id
if @garden.save
link = new_activity_path(name: 'Weed the garden bed', garden_id: @garden.id, due_date: 2.weeks.from_now.to_date)
flash[:notice] = t('gardens.created_prompt_html', link: link).html_safe
end
flash[:notice] = I18n.t('gardens.created') if @garden.save
respond_with(@garden)
end

View File

@@ -46,12 +46,6 @@ class PlantingsController < DataController
.where.not(id: @planting.id)
.includes(:owner, :crop, :garden)
.limit(6)
if @planting.finished? && @planting.garden.plantings.current.none? && (@planting.updated_at + 2.weeks) > Time.zone.now
@cultivate_soil_link = new_activity_path(name: 'Cultivate soil', garden_id: @planting.garden_id, category: "Soil Cultivation",
description: "Recently finished #{@planting.crop.name} planting. Prepare for next planting.")
end
respond_with @planting
end

View File

@@ -1,6 +1,5 @@
# frozen_string_literal: true
require 'nokogiri'
module ApplicationHelper
def parse_date(str)
str ||= '' # Date.parse barfs on nil
@@ -120,22 +119,4 @@ module ApplicationHelper
def og_description(description)
strip_tags(description).split(' ')[0..20].join(' ')
end
def github_releases
return [] if Rails.env.test?
feed_url = 'https://github.com/Growstuff/growstuff/releases.atom'
Rails.cache.fetch(feed_url, expires_in: 1.day) do
response = Faraday.get(feed_url)
doc = Nokogiri::XML(response.body)
doc.xpath('//xmlns:entry').first(2).map do |entry|
{
title: entry.xpath('xmlns:title').text,
content: entry.xpath('xmlns:content').text,
link: entry.xpath('xmlns:link/@href').text,
updated: entry.xpath('xmlns:updated').text
}
end
end
end
end

View File

@@ -13,7 +13,7 @@ module AutoSuggestHelper
resource = resource.class.name.downcase
source_path = Rails.application.routes.url_helpers.send("search_#{source}s_path", format: :json)
%(
<input id="#{source}" class="auto-suggest #{options[:class]}" #{'required="required"' if options[:required]}
<input id="#{source}" class="auto-suggest #{options[:class]}" #{options[:required] ? 'required="required"' : ''}
type="text" value="#{default}" data-source-url="#{source_path}",
placeholder="e.g. lettuce">
<noscript class="text-warning">

View File

@@ -85,20 +85,7 @@ module ButtonsHelper
end
def activity_edit_button(activity, classes: "btn btn-raised btn-info")
edit_button(edit_activity_path(slug: activity.slug), classes:)
end
def activity_copy_button(activity, classes: 'btn')
link_to new_activity_path(
name: activity.name,
description: activity.description,
category: activity.category,
garden_id: activity.garden_id,
planting_id: activity.planting_id,
due_date: activity.due_date
), class: classes do
copy_icon + ' ' + t('buttons.copy')
end
edit_button(edit_activity_path(activity), classes:)
end
def activity_finish_button(activity, classes: 'btn btn-default btn-secondary')

View File

@@ -17,12 +17,4 @@ module CropsHelper
def crop_ebay_seeds_url(crop)
"https://www.ebay.com/sch/i.html?_nkw=#{CGI.escape crop.name}"
end
def youtube_video_id(url)
return unless url
regex = %r{(?:youtube(?:-nocookie)?\.com/(?:[^/\n\s]+/\S+/|(?:v|e(?:mbed)?)/|\S*?[?&]v=)|youtu\.be/)([a-zA-Z0-9_-]{11})}
match = url.match(regex)
match[1] if match
end
end

View File

@@ -7,8 +7,8 @@ module EventHelper
def event_description(event)
render "#{event.event_type.pluralize}/description", event_model: resolve_model(event)
rescue ActionView::MissingTemplate
"#{event.event_type.humanize.downcase}d"
rescue ActionView::MissingTemplate
"#{event.event_type.humanize.downcase}d"
end
def resolve_model(event)

View File

@@ -59,10 +59,6 @@ module IconsHelper
image_icon 'delete'
end
def copy_icon
icon('far', 'copy')
end
def add_photo_icon
image_icon 'add-photo'
end

View File

@@ -76,7 +76,6 @@ class Ability
if member.role? :crop_wrangler
can :wrangle, Crop
can :manage, Crop
can :manage, CropCompanion
can :manage, ScientificName
can :manage, AlternateName
can :openfarm, Crop

View File

@@ -19,6 +19,10 @@ module OpenFarmData
fetch_attr('tags_array')
end
def description
fetch_attr('description')
end
def common_names
fetch_attr('common_names')
end
@@ -39,6 +43,6 @@ module OpenFarmData
def fetch_attr(key)
return if openfarm_data.blank?
openfarm_data.dig('attributes', key)
openfarm_data.fetch('attributes', {}).fetch(key, nil)
end
end

View File

@@ -55,12 +55,6 @@ class Crop < ApplicationRecord
message: 'is not a valid English Wikipedia URL'
},
if: :approved?
validates :en_youtube_url,
format: {
with: %r{\A(?:https?://)?(?:www\.)?(?:youtube(?:-nocookie)?\.com/(?:(?:v|e(?:mbed)?)/|\S*?[?&]v=)|youtu\.be/)[a-zA-Z0-9_-]{11}(?:[?&]\S*)?\z},
message: 'is not a valid YouTube URL'
},
allow_blank: true
validates :name, uniqueness: { scope: :approval_status }, if: :pending?
def to_s
@@ -96,7 +90,7 @@ class Crop < ApplicationRecord
def popular_plant_parts
PlantPart.joins(:harvests)
.where("crop_id = ?", id)
.order(count_harvests_id: :desc)
.order("count_harvests_id DESC")
.group("plant_parts.id", "plant_parts.name")
.count("harvests.id")
end
@@ -159,20 +153,8 @@ class Crop < ApplicationRecord
where(["lower(crops.name) = :value", { value: name.downcase }])
end
def all_companions
return companions unless parent
(companions + parent.companions).uniq
end
before_destroy :destroy_reverse_companionships
private
def destroy_reverse_companionships
CropCompanion.where(crop_b: self).destroy_all
end
def count_uses_of_property(col_name)
plantings.unscoped
.where(crop_id: id)

View File

@@ -3,7 +3,6 @@
class Forum < ApplicationRecord
extend FriendlyId
include Ownable
validates :name, presence: true
validates :description, presence: true
friendly_id :name, use: %i(slugged finders)

View File

@@ -2,7 +2,6 @@
class GardenType < ApplicationRecord
extend FriendlyId
friendly_id :name, use: %i(slugged finders)
has_many :gardens, dependent: :nullify

View File

@@ -2,14 +2,12 @@
class Member < ApplicationRecord
include Discard::Model
acts_as_messageable # messages can be sent to this model
include Geocodable
include MemberFlickr
include MemberNewsletter
extend FriendlyId
friendly_id :login_name, use: %i(slugged finders)
#
@@ -107,10 +105,9 @@ class Member < ApplicationRecord
uniqueness: {
case_sensitive: false
}
validates :website_url, format: { with: %r{\Ahttps?://}, message: "must start with http:// or https://" }, allow_blank: true
validates :other_url, format: { with: %r{\Ahttps?://}, message: "must start with http:// or https://" }, allow_blank: true
validates :instagram_handle, :facebook_handle, :bluesky_handle,
format: { without: %r{\Ahttps?://|/}, message: "should be a handle, not a URL" }, allow_blank: true
validates :website_url, format: { with: /\Ahttps?:\/\//, message: "must start with http:// or https://" }, allow_blank: true
validates :other_url, format: { with: /\Ahttps?:\/\//, message: "must start with http:// or https://" }, allow_blank: true
validates :instagram_handle, :facebook_handle, :bluesky_handle, format: { without: %r{\Ahttps?:\/\/|\/}, message: "should be a handle, not a URL" }, allow_blank: true
#
# Triggers

View File

@@ -47,7 +47,7 @@ class Photo < ApplicationRecord
info = flickr.photos.getInfo(photo_id: source_id)
licenses = flickr.photos.licenses.getInfo
license = licenses.find { |l| l.id.to_i == info.license.to_i }
Rails.logger.error("Cannot find license: #{[info.license, licenses].inspect}") unless license
Rails.logger.error("Cannot find license: " + [info.license, licenses].inspect) unless license
{
title: calculate_title(info),
license_name: license.name,

View File

@@ -2,7 +2,6 @@
class PlantPart < ApplicationRecord
extend FriendlyId
friendly_id :name, use: %i(slugged finders)
has_many :harvests, dependent: :destroy

View File

@@ -25,8 +25,6 @@ class Planting < ApplicationRecord
has_many :harvests, dependent: :destroy
has_many :activities, dependent: :destroy
scope :current, -> { where.not(finished: true).where.not(failed: true) }
#
# Ancestry of food
belongs_to :parent_seed, class_name: 'Seed', # parent,

View File

@@ -2,7 +2,6 @@
class Role < ApplicationRecord
extend FriendlyId
friendly_id :name, use: %i(slugged finders)
validates :name, uniqueness: true, presence: true

View File

@@ -6,7 +6,6 @@ class Seed < ApplicationRecord
include Finishable
include Ownable
include SearchSeeds
friendly_id :seed_slug, use: %i(slugged finders)
TRADABLE_TO_VALUES = %w(nowhere locally nationally internationally).freeze
@@ -49,7 +48,7 @@ class Seed < ApplicationRecord
"are heirloom, hybrid, or unknown" }
validates :source, allow_blank: true,
inclusion: { in: SOURCE_VALUES, message: "You must say where the seeds are from," \
"or that you don't know" }
"or that you don't know" }
#
# Delegations

View File

@@ -7,9 +7,9 @@ module Api
@model.owner = context[:current_user]
end
has_one :owner, class_name: 'Member', always_include_linkage_data: true
has_one :garden, always_include_linkage_data: true
has_one :planting, always_include_linkage_data: true
has_one :owner, class_name: 'Member'
has_one :garden
has_one :planting
attribute :name
attribute :description

View File

@@ -12,7 +12,7 @@ module Api
has_many :photos
has_one :parent, class_name: 'Crop', always_include_linkage_data: true
has_one :parent, class_name: 'Crop'
attribute :name
attribute :en_wikipedia_url

View File

@@ -7,7 +7,7 @@ module Api
@model.owner = context[:current_user]
end
has_one :owner, class_name: 'Member', always_include_linkage_data: true
has_one :owner, class_name: 'Member'
has_many :plantings
has_many :photos

View File

@@ -10,9 +10,9 @@ module Api
@model.plant_part = PlantPart.first
end
has_one :crop, always_include_linkage_data: true
has_one :planting, always_include_linkage_data: true
has_one :owner, class_name: 'Member', always_include_linkage_data: true
has_one :crop
has_one :planting
has_one :owner, class_name: 'Member'
# has_one :plant_part
has_many :photos

View File

@@ -9,7 +9,6 @@ module Api
has_many :plantings, foreign_key: 'owner_id'
has_many :harvests, foreign_key: 'owner_id'
has_many :seeds, foreign_key: 'owner_id'
has_many :activities, foreign_key: 'owner_id'
has_many :photos

View File

@@ -8,7 +8,7 @@ module Api
@model.owner = context[:current_user]
end
has_one :owner, class_name: 'Member', always_include_linkage_data: true
has_one :owner, class_name: 'Member'
has_many :plantings
has_many :gardens
has_many :harvests

View File

@@ -7,9 +7,9 @@ module Api
@model.owner = context[:current_user]
end
has_one :garden, always_include_linkage_data: true
has_one :crop, always_include_linkage_data: true
has_one :owner, class_name: 'Member', always_include_linkage_data: true
has_one :garden
has_one :crop
has_one :owner, class_name: 'Member'
has_many :photos
has_many :harvests

View File

@@ -7,8 +7,8 @@ module Api
@model.owner = context[:current_user]
end
has_one :owner, class_name: 'Member', always_include_linkage_data: true
has_one :crop, always_include_linkage_data: true
has_one :owner, class_name: 'Member'
has_one :crop
attribute :description
attribute :quantity

View File

@@ -3,7 +3,7 @@
class BaseResource < JSONAPI::Resource
abstract
%i(create update remove).each do |action|
[:create, :update, :remove].each do |action|
set_callback action, :before, :authorize
end

View File

@@ -3,7 +3,6 @@
%a#activity-actions-button.btn.btn-info.dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-bs-toggle" => "dropdown", type: "button", href: '#'} Actions
.dropdown-menu.dropdown-menu-xs{"aria-labelledby" => "planting-actions-button"}
= activity_edit_button(activity, classes: 'dropdown-item')
= activity_copy_button(activity, classes: 'dropdown-item')
- if activity.active
= activity_finish_button(activity, classes: 'dropdown-item')
.dropdown-divider

View File

@@ -10,8 +10,9 @@
%a.activity-menu.btn.dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-bs-toggle" => "dropdown", type: "button", href: '#'}
.dropdown-menu{"aria-labelledby" => "activity-menu"}
= activity_edit_button(activity, classes: 'dropdown-item')
= activity_copy_button(activity, classes: 'dropdown-item')
= link_to edit_activity_path(slug: activity.slug), class: 'dropdown-item' do
= edit_icon
= t('buttons.edit')
- if activity.active
= activity_finish_button(activity, classes: 'dropdown-item')

View File

@@ -17,7 +17,7 @@
.row
.col-md-12
= f.text_field :name, required: true, label: 'What needs to be done?', autofocus: true
= f.text_field :name, required: true, label: 'What needs to be done?'
.row
.col-md-4
= f.select(:category, Activity::CATEGORIES, include_blank: true)
@@ -43,14 +43,6 @@
value: @activity.due_date ? @activity.due_date.to_fs(:ymd) : '',
label: 'When?'
.row
.col-md-6
= label_tag :repeat_times, 'Repeat how many times?'
= number_field_tag :repeat_times, nil, class: 'form-control'
.col-md-6
= label_tag :repeat_weeks, 'Every how many weeks?'
= number_field_tag :repeat_weeks, nil, class: 'form-control'
%hr
.row

View File

@@ -12,7 +12,6 @@
%li.breadcrumb-item= link_to @activity.owner, member_activities_path(@activity.owner)
%li.breadcrumb-item.active= link_to @activity.name, @activity
.activity
.row
.col-md-8.col-xs-12
@@ -23,14 +22,9 @@
%small.text-muted= @activity.category
%tt
= @activity.due_date
- if @repeat_link
.alert.alert-info
Activity marked as finished recently. Would you like to repeat in the near future?
= link_to 'Repeat this activity', @repeat_link, class: 'btn btn-secondary btn-sm ml-2'
- if @activity.description.present?
:markdown
#{strip_tags markdownify(@activity.description)}
= render 'likes/likes', object: @activity
= render 'activities/actions', activity: @activity

View File

@@ -1,16 +0,0 @@
%h1= "Companions for #{@crop.name}"
= link_to 'New Companion', new_admin_crop_crop_companion_path(@crop), class: 'btn btn-primary'
%table.table
%thead
%tr
%th Name
%th Source URL
%th Actions
%tbody
- @crop_companions.each do |companion|
%tr
%td= companion.crop_b.name
%td= companion.source_url
%td= link_to 'Delete', admin_crop_crop_companion_path(@crop, companion), method: :delete, data: { confirm: 'Are you sure?' }

View File

@@ -1,6 +0,0 @@
%h1= "New Companion for #{@crop.name}"
= bootstrap_form_for [:admin, @crop, @crop_companion] do |f|
= f.collection_select :crop_b_id, Crop.order(:name), :id, :name, { label: 'Companion' }
= f.text_field :source_url, label: 'Source URL'
= f.submit 'Create'

View File

@@ -42,7 +42,6 @@
%span.help-block Living more than two years
%h2 OpenFarm Data
= f.text_area :description, label: 'Description'
= f.number_field :row_spacing, label: 'Row Spacing (cm)', min: 0
= f.number_field :spread, label: 'Spread (cm)', min: 0
= f.number_field :height, label: 'Height (cm)', min: 0
@@ -55,9 +54,6 @@
= f.url_field :en_wikipedia_url, id: "en_wikipedia_url", label: 'Wikipedia URL'
%span.help-block
Link to the crop's page on the English language Wikipedia (required).
= f.url_field :en_youtube_url, label: 'YouTube URL'
%span.help-block
Link to a YouTube video about the crop in English.
-# Only crop wranglers see the crop hierarchy (for now)
- if can? :wrangle, @crop

View File

@@ -14,10 +14,6 @@
= icon 'far', 'update'
Fetch data from GBIF
= link_to admin_crop_crop_companions_path(crop), class: 'dropdown-item' do
= icon 'fas', 'leaf'
Manage Companions
- if can? :destroy, crop
.dropdown-divider
= delete_button(crop, classes: 'dropdown-item text-danger')

View File

@@ -24,18 +24,12 @@
%section.prediction
= cute_icon
= render 'predictions', crop: @crop
- if @crop.all_companions.any?
- if @crop.companions.any?
%section.companions
%h2 Companions
- @crop.all_companions.each do |companion|
- @crop.companions.each do |companion|
= render 'crops/tiny', crop: companion
- if @crop.en_youtube_url.present?
%section.youtube
%h2 Video
.embed-responsive.embed-responsive-16by9
%iframe.embed-responsive-item{ src: "https://www.youtube.com/embed/#{youtube_video_id(@crop.en_youtube_url)}", allowfullscreen: true }
%section.photos
= cute_icon
= render 'crops/photos', crop: @crop
@@ -163,10 +157,3 @@
= icon 'fas', 'external-link-alt'
Wikihow instructions
%li.list-group-item
= link_to "https://www.youtube.com/results?search_query=#{CGI.escape "growing #{@crop.name}"}",
target: "_blank",
class: 'card-link',
rel: "noopener noreferrer" do
= icon 'fab', 'youtube'
YouTube

View File

@@ -1,11 +0,0 @@
%section.releases
= cute_icon
- github_releases.each do |release|
%h2= link_to release[:title], release[:link], target: "_blank"
.card
.card-header
%small= release[:updated].to_date.to_s
.card-body= release[:content].html_safe
%p
= link_to 'Find out more »', 'https://github.com/Growstuff/growstuff/releases', target: "_blank", class: 'btn btn-block'

View File

@@ -62,7 +62,6 @@
%section.members
= cute_icon
= render 'members', cached: true
.row
.col-12.col-lg-6
%section.pwa-install
= cute_icon
@@ -75,6 +74,4 @@
.card
.card-body
%h3= t('home.pwa_android_title')
%p= t('home.pwa_android_steps_html')
.col-12.col-lg-6
= render 'releases'
%p= t('home.pwa_android_steps_html')

View File

@@ -82,10 +82,6 @@
%section
%h2 Current activities for planting
- if @cultivate_soil_link
.alert.alert-info
This was the last planting recently in this bed. Would you like to cultivate the soil soon?
= link_to 'Cultivate soil', @cultivate_soil_link, class: 'btn btn-secondary btn-sm ml-2'
.index-cards
- if @current_activities&.size&.positive?
- @current_activities.each do |activity|

View File

@@ -1,31 +1,27 @@
development:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: growstuff_dev
user: postgres
password: postgres
host: db
host: <%= ENV.fetch("DATABASE_HOST") { 'db' } %>
test:
adapter: postgresql
<<: *default
database: growstuff_test
user: postgres
password: postgres
host: db
host: <%= ENV.fetch("DATABASE_HOST") { 'db' } %>
production:
adapter: postgresql
database: growstuff_prod
pool: 5
timeout: 5000
username: growstuff
host: localhost
password: thisisnottherealpassword
<<: *default
url: <%= ENV['DATABASE_URL'] %>
staging:
adapter: postgresql
database: growstuff_prod
pool: 5
timeout: 5000
username: growstuff
host: localhost
password: thisisnottherealpassword
<<: *default
url: <%= ENV['DATABASE_URL'] %>

View File

@@ -1,5 +1,4 @@
# frozen_string_literal: true
class UnauthorisedError < JSONAPI::Error
end
JSONAPI.configure do |config|

View File

@@ -5,7 +5,7 @@ Mailboxer.setup do |config|
config.uses_emails = true
# Configures the default from for emails sent for Messages and Notifications
config.default_from = "Growstuff <#{ENV.fetch('GROWSTUFF_EMAIL', 'no-reply@growstuff.org')}>"
config.default_from = "Growstuff <#{ENV.fetch('GROWSTUFF_EMAIL', "no-reply@growstuff.org")}>"
# Configures the methods needed by mailboxer
# config.email_method = :email

View File

@@ -72,7 +72,6 @@ en:
add: Add
add_photo: Add photo
add_seed_to_stash: Add %{crop_name} seeds to stash
copy: Copy
delete: Delete
edit: Edit
harvest: Harvest
@@ -126,7 +125,6 @@ en:
updated: Garden was successfully updated.
confirm_delete: All plantings associated with this garden will also be deleted. Are you sure?
confirm_deactivate: All plantings associated with this garden will be marked as finished. Are you sure?
created_prompt_html: "Garden was successfully created. Would you like to <a href=\"%{link}\">plan to weed this garden bed in two weeks</a>?"
harvests:
created: Harvest was successfully created.
harvest_something: Harvest something

View File

@@ -138,9 +138,6 @@ Rails.application.routes.draw do
namespace :admin do
resources :members, param: :slug
resources :roles
resources :crops, param: :slug do
resources :crop_companions
end
end
namespace :api do

View File

@@ -1,7 +0,0 @@
# frozen_string_literal: true
class AddSourceUrlToCropCompanions < ActiveRecord::Migration[6.1]
def change
add_column :crop_companions, :source_url, :string
end
end

View File

@@ -4,11 +4,11 @@ class PopulateCropFieldsFromOpenfarmData < ActiveRecord::Migration[5.2]
if crop.openfarm_data.present?
attributes = crop.openfarm_data.fetch('attributes', {})
crop.update_columns(
row_spacing: attributes['row_spacing'],
spread: attributes['spread'],
height: attributes['height'],
sowing_method: attributes['sowing_method'],
sun_requirements: attributes['sun_requirements'],
row_spacing: attributes['row_spacing'],
spread: attributes['spread'],
height: attributes['height'],
sowing_method: attributes['sowing_method'],
sun_requirements: attributes['sun_requirements'],
growing_degree_days: attributes['growing_degree_days']
)
end

View File

@@ -4,7 +4,7 @@ class CreateGardenCollaborators < ActiveRecord::Migration[7.2]
t.references :member
t.references :garden
t.timestamps
t.index %i(member_id garden_id), unique: true
t.index [:member_id, :garden_id], unique: true
end
end
end

View File

@@ -1,5 +0,0 @@
class AddEnYoutubeUrlToCrops < ActiveRecord::Migration[7.2]
def change
add_column :crops, :en_youtube_url, :string
end
end

View File

@@ -1,25 +0,0 @@
# frozen_string_literal: true
class AddDescriptionToCrops < ActiveRecord::Migration[7.2]
# Temporary model to avoid validation issues
class Crop < ApplicationRecord
end
def up
add_column :crops, :description, :text
# Ensure the new column is available to the temporary model
Crop.reset_column_information
Crop.find_each do |crop|
next if crop.openfarm_data.blank?
description = crop.openfarm_data.dig('attributes', 'description')
crop.update_column(:description, description) if description.present?
end
end
def down
remove_column :crops, :description
end
end

View File

@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2025_11_28_200506) do
ActiveRecord::Schema[7.2].define(version: 2025_09_01_130830) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -221,7 +221,6 @@ ActiveRecord::Schema[7.2].define(version: 2025_11_28_200506) do
t.integer "crop_b_id", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "source_url"
t.index ["crop_a_id", "crop_b_id"], name: "index_crop_companions_on_crop_a_id_and_crop_b_id"
end
@@ -259,8 +258,6 @@ ActiveRecord::Schema[7.2].define(version: 2025_11_28_200506) do
t.string "sowing_method"
t.string "sun_requirements"
t.integer "growing_degree_days"
t.string "en_youtube_url"
t.text "description"
t.index ["creator_id"], name: "index_crops_on_creator_id"
t.index ["name"], name: "index_crops_on_name"
t.index ["parent_id"], name: "index_crops_on_parent_id"

View File

@@ -1,142 +0,0 @@
# robots.txt for based on the one for http://www.wikipedia.org/ and friends
# Observed spamming large amounts of https://en.wikipedia.org/?curid=NNNNNN
# and ignoring 429 ratelimit responses, claims to respect robots:
# http://mj12bot.com/
User-agent: MJ12bot
Disallow: /
# advertising-related bots:
User-agent: Mediapartners-Google*
Disallow: /
# Wikipedia work bots:
User-agent: IsraBot
Disallow:
User-agent: Orthogaffe
Disallow:
# Crawlers that are kind enough to obey, but which we'd rather not have
# unless they're feeding search engines.
User-agent: UbiCrawler
Disallow: /
User-agent: DOC
Disallow: /
User-agent: Zao
Disallow: /
# Some bots are known to be trouble, particularly those designed to copy
# entire sites. Please obey robots.txt.
User-agent: sitecheck.internetseer.com
Disallow: /
User-agent: Zealbot
Disallow: /
User-agent: MSIECrawler
Disallow: /
User-agent: SiteSnagger
Disallow: /
User-agent: WebStripper
Disallow: /
User-agent: WebCopier
Disallow: /
User-agent: Fetch
Disallow: /
User-agent: Offline Explorer
Disallow: /
User-agent: Teleport
Disallow: /
User-agent: TeleportPro
Disallow: /
User-agent: WebZIP
Disallow: /
User-agent: linko
Disallow: /
User-agent: HTTrack
Disallow: /
User-agent: Microsoft.URL.Control
Disallow: /
User-agent: Xenu
Disallow: /
User-agent: larbin
Disallow: /
User-agent: libwww
Disallow: /
User-agent: ZyBORG
Disallow: /
User-agent: Download Ninja
Disallow: /
# Misbehaving: requests much too fast:
User-agent: fast
Disallow: /
#
# Sorry, wget in its recursive mode is a frequent problem.
# Please read the man page and use it properly; there is a
# --wait option you can use to set the delay between hits,
# for instance.
#
User-agent: wget
Disallow: /
#
# The 'grub' distributed client has been *very* poorly behaved.
#
User-agent: grub-client
Disallow: /
#
# Doesn't follow robots.txt anyway, but...
#
User-agent: k2spider
Disallow: /
#
# Hits many times per second, not acceptable
# http://www.nameprotect.com/botinfo.html
User-agent: NPBot
Disallow: /
# A capture bot, downloads gazillions of pages with no public benefit
# http://www.webreaper.net/
User-agent: WebReaper
Disallow: /
# Per their statement, semrushbot respects crawl-delay directives
# We want them to overall stay within reasonable request rates to
# the backend (20 rps); keeping in mind that the crawl-delay will
# be applied by site and not globally by the bot, 5 seconds seem
# like a reasonable approximation
User-agent: SemrushBot
Crawl-delay: 5
#
# Friendly, low-speed bots are welcome viewing pages, but not
# dynamically-generated pages please.
#
# Another exception is for REST API documentation, located at
# /api/rest_v1/?doc.
#
User-agent: *
Disallow: /api/

View File

@@ -1,576 +0,0 @@
---
http_interactions:
- request:
method: get
uri: https://github.com/Growstuff/growstuff/releases.atom
body:
encoding: US-ASCII
string: ''
headers:
User-Agent:
- Faraday v2.13.4
response:
status:
code: 200
message: OK
headers:
date:
- Sun, 21 Sep 2025 02:18:49 GMT
content-type:
- application/atom+xml; charset=utf-8
content-length:
- '279630'
vary:
- X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding,
Accept, X-Requested-With
etag:
- W/"a71d1199680206756396de0199f1fdce"
cache-control:
- max-age=0, private, must-revalidate
strict-transport-security:
- max-age=31536000; includeSubdomains; preload
x-frame-options:
- deny
x-content-type-options:
- nosniff
x-xss-protection:
- '0'
referrer-policy:
- no-referrer-when-downgrade
content-security-policy:
- 'default-src ''none''; base-uri ''self''; child-src github.githubassets.com
github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/;
connect-src ''self'' uploads.github.com www.githubstatus.com collector.github.com
raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com
github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com
*.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com
github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com
proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com
*.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/
productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/
productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/
productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/
productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/
productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/
productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/
productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/
productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/
productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/
productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com
github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com
wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com
api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com;
font-src github.githubassets.com; form-action ''self'' github.com gist.github.com
copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors
''none''; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com;
img-src ''self'' data: blob: github.githubassets.com media.githubusercontent.com
camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com
private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com
release-assets.githubusercontent.com secured-user-images.githubusercontent.com/
user-images.githubusercontent.com/ private-user-images.githubusercontent.com
opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/
copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/
github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com
spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com;
manifest-src ''self''; media-src github.com user-images.githubusercontent.com/
secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com
github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src
github.githubassets.com; style-src ''unsafe-inline'' github.githubassets.com;
upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/
github.com/assets/ gist.github.com/assets-cdn/worker/'
server:
- github.com
accept-ranges:
- bytes
set-cookie:
- _gh_sess=xJrmArfokZYtt1aHQF847Sp8NCwPOhcepzs0IFx%2Bu05Z0QRe8yyM69DWZ2cBbTeRK0HvQo1PzB40Hu7olNbovZ8mZNWtZ6M8AZu0tEXk3L6MEO9WjvGcHT0cw%2BTUFLpwJc3y%2FAUNYBsprc3VeGmdzKcouPoTnAwh5D5aXFahNaFrVXJRh2SqmoVjog5ulFs46i6UaouI539eN%2FA8PnQtQGGTrGEH7w3Iqfj4KPKMJlsinlYqdVjXwqlam1k0vDS3bgr%2FcL5VRB46g%2BwgvikY7w%3D%3D--KhSd7lAgAYWXGgmN--tiFbDAqc1s3FtBOXDd%2FF5Q%3D%3D;
Path=/; HttpOnly; Secure; SameSite=Lax, _octo=GH1.1.849096703.1758421128;
Path=/; Domain=github.com; Expires=Mon, 21 Sep 2026 02:18:48 GMT; Secure;
SameSite=Lax, logged_in=no; Path=/; Domain=github.com; Expires=Mon, 21 Sep
2026 02:18:48 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id:
- 8A20:1E747D:267CA3A:310CF77:68CF6088
body:
encoding: UTF-8
string: |
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
<id>tag:github.com,2008:https://github.com/Growstuff/growstuff/releases</id>
<link type="text/html" rel="alternate" href="https://github.com/Growstuff/growstuff/releases"/>
<link type="application/atom+xml" rel="self" href="https://github.com/Growstuff/growstuff/releases.atom"/>
<title>Release notes from growstuff</title>
<updated>2025-09-10T11:16:12Z</updated>
<entry>
<id>tag:github.com,2008:Repository/5337437/release71</id>
<updated>2025-09-10T11:17:13Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release71"/>
<title>release71</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add API token generation, authentication, and CRUD for a number of the API resources by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3400159792&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4237&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4237/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4237&quot;&gt;#4237&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rubocop - Controllers by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3401856125&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4241&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4241/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4241&quot;&gt;#4241&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rubocop - lib by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3401863143&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4242&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4242/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4242&quot;&gt;#4242&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release70...release71&quot;&gt;&lt;tt&gt;release70...release71&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release70</id>
<updated>2025-09-09T12:54:06Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release70"/>
<title>release70</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Activities &amp;gt; Due Date &amp;gt; Only render if available by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391234816&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4218&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4218/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4218&quot;&gt;#4218&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;By default, skip to content when linking to garden(s) by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391214216&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4217&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4217/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4217&quot;&gt;#4217&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump actions/setup-node from 4 to 5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3383479766&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4205&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4205/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4205&quot;&gt;#4205&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix garden order on planting new by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391326979&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4220&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4220/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4220&quot;&gt;#4220&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _modal.html.haml to sort consistently by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391328854&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4221&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4221/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4221&quot;&gt;#4221&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Harvests &amp;gt; Unrated Planting &amp;gt; Deep link to content when rating by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391344120&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4224&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4224/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4224&quot;&gt;#4224&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Render history of activities on gardens, plantings by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391341007&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4223&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4223/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4223&quot;&gt;#4223&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extend Crop Model and Migrate Data from OpenFarm by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391138132&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4209&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4209/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4209&quot;&gt;#4209&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update garden_resource to filter by owner by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3393094890&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4229&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4229/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4229&quot;&gt;#4229&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump puma from 7.0.0 to 7.0.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3396957723&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4231&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4231/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4231&quot;&gt;#4231&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump factory_bot_rails from 6.5.0 to 6.5.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3392912753&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4227&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4227/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4227&quot;&gt;#4227&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;feat: Add more filters to API resources by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3395872125&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4230&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4230/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4230&quot;&gt;#4230&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add aliases by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3398267093&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4232&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4232/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4232&quot;&gt;#4232&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Activity name by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3398283573&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4233&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4233/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4233&quot;&gt;#4233&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delegate by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3398310267&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4234&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4234/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4234&quot;&gt;#4234&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix UX by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3398322653&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4235&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4235/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4235&quot;&gt;#4235&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release69...release70&quot;&gt;&lt;tt&gt;release69...release70&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release69</id>
<updated>2025-09-07T05:25:11Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release69"/>
<title>release69</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Feature: Display likes on timeline by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3371668209&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4183&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4183/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4183&quot;&gt;#4183&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://private-user-images.githubusercontent.com/365751/486483882-1b747d93-fc4d-43d5-b7c6-4bc01918b8ac.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTg0MjE0MjgsIm5iZiI6MTc1ODQyMTEyOCwicGF0aCI6Ii8zNjU3NTEvNDg2NDgzODgyLTFiNzQ3ZDkzLWZjNGQtNDNkNS1iN2M2LTRiYzAxOTE4YjhhYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwOTIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDkyMVQwMjE4NDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNzE1NTM5ZjEzN2Y4MGJkYzk1ZWZhNTI1MDdmNTRiMzk1NTBhNzY4ZmEyNTgzYThjOTgyNjExN2MyYjIxZDA1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9._vVILscYrOcJEvY3SUFgteXUx7E-gu4peqwKB0x3Fp4&quot;&gt;&lt;img width=&quot;1920&quot; height=&quot;888&quot; alt=&quot;image&quot; src=&quot;https://private-user-images.githubusercontent.com/365751/486483882-1b747d93-fc4d-43d5-b7c6-4bc01918b8ac.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTg0MjE0MjgsIm5iZiI6MTc1ODQyMTEyOCwicGF0aCI6Ii8zNjU3NTEvNDg2NDgzODgyLTFiNzQ3ZDkzLWZjNGQtNDNkNS1iN2M2LTRiYzAxOTE4YjhhYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwOTIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDkyMVQwMjE4NDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNzE1NTM5ZjEzN2Y4MGJkYzk1ZWZhNTI1MDdmNTRiMzk1NTBhNzY4ZmEyNTgzYThjOTgyNjExN2MyYjIxZDA1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9._vVILscYrOcJEvY3SUFgteXUx7E-gu4peqwKB0x3Fp4&quot; content-type-secured-asset=&quot;image/png&quot; style=&quot;max-width: 100%; height: auto; max-height: 888px;&quot;&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Add overall_rating to Plantings by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3088934117&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4062&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4062/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4062&quot;&gt;#4062&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://private-user-images.githubusercontent.com/365751/486483906-bec07b16-fb8a-4cdd-801a-ecc3674bdcce.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTg0MjE0MjgsIm5iZiI6MTc1ODQyMTEyOCwicGF0aCI6Ii8zNjU3NTEvNDg2NDgzOTA2LWJlYzA3YjE2LWZiOGEtNGNkZC04MDFhLWVjYzM2NzRiZGNjZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwOTIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDkyMVQwMjE4NDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mYmE4NGJhOWE3NDQ3OTU5ZjNjZTg3NjgwODhjZjQ1OTUxNzliNWVhNTA1NGUxMTY1MWZkZmZmOGZiNWVlODk5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.6l0Vpkh4G9NnrgbsIiL3VIZRyopwcTErGBvLK93VlmY&quot;&gt;&lt;img width=&quot;961&quot; height=&quot;950&quot; alt=&quot;image&quot; src=&quot;https://private-user-images.githubusercontent.com/365751/486483906-bec07b16-fb8a-4cdd-801a-ecc3674bdcce.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTg0MjE0MjgsIm5iZiI6MTc1ODQyMTEyOCwicGF0aCI6Ii8zNjU3NTEvNDg2NDgzOTA2LWJlYzA3YjE2LWZiOGEtNGNkZC04MDFhLWVjYzM2NzRiZGNjZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwOTIxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDkyMVQwMjE4NDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mYmE4NGJhOWE3NDQ3OTU5ZjNjZTg3NjgwODhjZjQ1OTUxNzliNWVhNTA1NGUxMTY1MWZkZmZmOGZiNWVlODk5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.6l0Vpkh4G9NnrgbsIiL3VIZRyopwcTErGBvLK93VlmY&quot; content-type-secured-asset=&quot;image/png&quot; style=&quot;max-width: 100%; height: auto; max-height: 950px;&quot;&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Add seed source to Seed model by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372188710&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4186&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4186/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4186&quot;&gt;#4186&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Surface more Activities detail by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391205973&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4215&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4215/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4215&quot;&gt;#4215&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Other&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bump terser from 1.2.5 to 1.2.6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3162179301&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4077&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4077/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4077&quot;&gt;#4077&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix: Only show &#39;add a bio&#39; link on own profile by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3370746719&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4180&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4180/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4180&quot;&gt;#4180&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add a lot of indexes by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372313098&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4187&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4187/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4187&quot;&gt;#4187&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove haml-lint-extractor by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372446254&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4188&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4188/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4188&quot;&gt;#4188&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove openfarm service by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372597940&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4189&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4189/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4189&quot;&gt;#4189&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Specs: Sign up, sign in don&#39;t need JS by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372678414&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4190&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4190/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4190&quot;&gt;#4190&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _facts.haml by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372926974&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4193&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4193/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4193&quot;&gt;#4193&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rename _facts.haml to _facts.html.haml by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372929057&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4194&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4194/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4194&quot;&gt;#4194&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update README.md by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372959357&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4196&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4196/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4196&quot;&gt;#4196&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update README.md by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3373018412&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4197&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4197/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4197&quot;&gt;#4197&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix crash on adding Flickr photo by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3373245292&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4198&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4198/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4198&quot;&gt;#4198&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Specs: Remove JS testing from footer by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3372916540&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4192&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4192/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4192&quot;&gt;#4192&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.6.0 to 3.7.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3378410555&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4200&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4200/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4200&quot;&gt;#4200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump pg from 1.6.1 to 1.6.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3381687318&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4202&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4202/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4202&quot;&gt;#4202&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: Preserve screenshots as build artifacts in all feature workflows by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3381583971&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4201&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4201/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4201&quot;&gt;#4201&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump puma from 6.6.1 to 7.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3383479121&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4204&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4204/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4204&quot;&gt;#4204&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.80.1 to 1.80.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3383394063&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4203&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4203/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4203&quot;&gt;#4203&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Change garden sort order to be by name and planting by most to least recent when creating an activity by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391152496&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4212&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4212/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4212&quot;&gt;#4212&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix styling of cards to space evenly by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391205834&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4214&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4214/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4214&quot;&gt;#4214&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update ci-features-posts.yml by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3391211668&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4216&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4216/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4216&quot;&gt;#4216&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release68...release69&quot;&gt;&lt;tt&gt;release68...release69&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release68</id>
<updated>2025-08-31T05:53:07Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release68"/>
<title>release68</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fix current plantings not to show failed by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3366602664&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4162&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4162/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4162&quot;&gt;#4162&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove openfarm.cc links by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3359537130&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4155&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4155/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4155&quot;&gt;#4155&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Partially improve menu on mobile by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3366949319&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4164&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4164/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4164&quot;&gt;#4164&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deal with age_in_days.nil? by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3367030961&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4166&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4166/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4166&quot;&gt;#4166&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix Menu (a bit), Fix mobile UX for Crops by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3367440684&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4168&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4168/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4168&quot;&gt;#4168&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix width of ready to harvest by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3369747795&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4172&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4172/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4172&quot;&gt;#4172&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add PWA installation instructions to homepage by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3369687819&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4171&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4171/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4171&quot;&gt;#4171&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Crops &amp;gt; Card &amp;gt; Apply Btn group vertical by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3369790053&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4175&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4175/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4175&quot;&gt;#4175&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Garden Delete - Extract strings and fix missing translation bug by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3369762250&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4173&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4173/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4173&quot;&gt;#4173&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Seeds for trade - avoid showing expired seeds on homepage. by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3369804888&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4176&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4176/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4176&quot;&gt;#4176&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release67...release68&quot;&gt;&lt;tt&gt;release67...release68&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release67</id>
<updated>2025-08-29T10:33:55Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release67"/>
<title>release67</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Delete lib/tasks/openfarm.rake by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3349263439&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4148&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4148/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4148&quot;&gt;#4148&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove twitter authentication by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3349241113&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4146&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4146/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4146&quot;&gt;#4146&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.10 to 3.16.11 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3102367492&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4066&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4066/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4066&quot;&gt;#4066&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add comments to photos by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3308051996&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4130&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4130/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4130&quot;&gt;#4130&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add international alternate names for crops by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3308060382&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4132&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4132/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4132&quot;&gt;#4132&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add transplant feature for plantings by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3308069126&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4133&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4133/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4133&quot;&gt;#4133&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add rake task to remove missing photos by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3349994459&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4149&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4149/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4149&quot;&gt;#4149&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.79.2 to 1.80.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3352103319&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4151&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4151/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4151&quot;&gt;#4151&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.7.0 to 5.7.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3357406580&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4152&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4152/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4152&quot;&gt;#4152&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix age in days, percentage grown calculations for future dates by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3359434343&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4153&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4153/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4153&quot;&gt;#4153&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add failed status to plantings by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3350079522&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4150&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4150/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4150&quot;&gt;#4150&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove Openfarm data fetching by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3359562422&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4157&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4157/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4157&quot;&gt;#4157&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add maintenance task to finish expired seeds by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3359501988&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4154&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4154/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4154&quot;&gt;#4154&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.1.5 to 5.2.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3152344465&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4072&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4072/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4072&quot;&gt;#4072&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add One click ask AI prompts for companion planting and growing guides by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3359623398&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4159&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4159/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4159&quot;&gt;#4159&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.80.0 to 1.80.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3362467609&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4161&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4161/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4161&quot;&gt;#4161&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release66...release67&quot;&gt;&lt;tt&gt;release66...release67&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release66</id>
<updated>2025-08-24T07:09:06Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release66"/>
<title>release66</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Swap to iteration for now, so callbacks are happy by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307083808&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4119&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4119/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4119&quot;&gt;#4119&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swap to iteration for now, so callbacks are happy by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307092213&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4121&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4121/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4121&quot;&gt;#4121&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Specs: Target a desktop, fixing tests in codespaces at least. by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307108239&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4125&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4125/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4125&quot;&gt;#4125&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.79.1 to 1.79.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3295474884&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4109&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4109/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4109&quot;&gt;#4109&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Opt into view transitions by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307104118&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4123&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4123/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4123&quot;&gt;#4123&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Split up ci by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307122518&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4126&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4126/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4126&quot;&gt;#4126&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump recaptcha from 5.19.0 to 5.20.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3251685055&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4094&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4094/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4094&quot;&gt;#4094&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mailboxer translations by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3226179946&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4086&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4086/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4086&quot;&gt;#4086&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add filtering for tradeable seeds by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307041362&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4111&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4111/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4111&quot;&gt;#4111&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.13.2 to 2.13.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3269119557&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4101&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4101/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4101&quot;&gt;#4101&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add rspec-retry by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307222230&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4129&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4129/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4129&quot;&gt;#4129&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-activemodel-mocks from 1.2.1 to 1.3.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3303025252&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4110&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4110/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4110&quot;&gt;#4110&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump puma from 6.6.0 to 6.6.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3282873023&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4105&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4105/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4105&quot;&gt;#4105&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faker from 3.5.1 to 3.5.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3194839891&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4082&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4082/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4082&quot;&gt;#4082&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.6.4 to 5.7.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3293767944&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4108&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4108/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4108&quot;&gt;#4108&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 8.0.7 to 8.0.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3109137433&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4067&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4067/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4067&quot;&gt;#4067&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rake from 13.2.1 to 13.3.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3102363086&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4065&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4065/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4065&quot;&gt;#4065&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 8.0.1 to 8.0.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3317204760&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4138&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4138/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4138&quot;&gt;#4138&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rails from 7.2.2.1 to 7.2.2.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3321056047&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4142&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4142/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4142&quot;&gt;#4142&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.32.0 to 2.33.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3321054378&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4141&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4141/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4141&quot;&gt;#4141&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.34.0 to 4.35.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3317198776&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4137&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4137/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4137&quot;&gt;#4137&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;feat: Add social media links to user profiles by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3308056339&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4131&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4131/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4131&quot;&gt;#4131&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump actions/checkout from 4 to 5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3314848903&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4136&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4136/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4136&quot;&gt;#4136&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Amend delete_pictures rake task to remove legacy S3 photos by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3349203097&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4143&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4143/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4143&quot;&gt;#4143&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update CONTRIBUTORS.md by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3349240540&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4145&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4145/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4145&quot;&gt;#4145&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve profile page display slightly by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3349228225&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4144&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4144/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4144&quot;&gt;#4144&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release65...release66&quot;&gt;&lt;tt&gt;release65...release66&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release65</id>
<updated>2025-08-10T01:47:37Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release65"/>
<title>release65</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bump bullet from 8.0.1 to 8.0.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2965407029&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4025&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4025/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4025&quot;&gt;#4025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspectre from 0.1.0 to 0.2.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2924079537&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4010&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4010/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4010&quot;&gt;#4010&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.75.1 to 1.75.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2971546760&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4026&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4026/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4026&quot;&gt;#4026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.30.3 to 2.31.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2962620851&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4024&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4024/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4024&quot;&gt;#4024&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump haml_lint from 0.61.1 to 0.62.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2978816663&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4029&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4029/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4029&quot;&gt;#4029&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 8.0.2 to 8.0.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2975933437&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4027&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4027/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4027&quot;&gt;#4027&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.30.1 to 4.31.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2975951457&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4028&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4028/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4028&quot;&gt;#4028&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.6.2 to 5.6.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2992165606&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4034&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4034/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4034&quot;&gt;#4034&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump icalendar from 2.10.3 to 2.11.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2992163024&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4033&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4033/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4033&quot;&gt;#4033&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.12.2 to 2.13.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2981911276&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4031&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4031/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4031&quot;&gt;#4031&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump dotenv-rails from 3.1.7 to 3.1.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2987852196&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4032&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4032/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4032&quot;&gt;#4032&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.1.4 to 5.1.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2998780461&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4035&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4035/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4035&quot;&gt;#4035&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump axe-core-capybara from 4.10.2 to 4.10.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2998781968&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4036&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4036/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4036&quot;&gt;#4036&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.5.0 to 3.6.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3007922702&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4039&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4039/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4039&quot;&gt;#4039&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump jquery-ui-rails from &lt;code&gt;413265e&lt;/code&gt; to 7.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2981910919&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4030&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4030/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4030&quot;&gt;#4030&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.75.2 to 1.75.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3027398373&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4047&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4047/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4047&quot;&gt;#4047&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 8.0.3 to 8.0.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3010235913&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4042&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4042/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4042&quot;&gt;#4042&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump nokogiri from 1.18.7 to 1.18.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3009879510&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4041&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4041/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4041&quot;&gt;#4041&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump jquery-ui-rails from &lt;code&gt;413265e&lt;/code&gt; to 7.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3010240223&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4043&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4043/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4043&quot;&gt;#4043&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump net-imap from 0.4.19 to 0.4.20 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3026736713&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4046&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4046/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4046&quot;&gt;#4046&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump active_median from 0.5.0 to 0.6.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3038921359&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4051&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4051/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4051&quot;&gt;#4051&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.75.4 to 1.75.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3038916765&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4050&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4050/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4050&quot;&gt;#4050&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 7.1.1 to 8.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3033322298&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4048&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4048/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4048&quot;&gt;#4048&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.31.0 to 4.32.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3038926097&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4052&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4052/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4052&quot;&gt;#4052&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump jquery-ui-rails from &lt;code&gt;413265e&lt;/code&gt; to 8.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3035413351&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4049&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4049/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4049&quot;&gt;#4049&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump jquery-ui-rails from &lt;code&gt;413265e&lt;/code&gt; to 8.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3055881508&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4054&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4054/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4054&quot;&gt;#4054&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 8.0.5 to 8.0.6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3045045531&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4053&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4053/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4053&quot;&gt;#4053&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.13.0 to 2.13.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3024111978&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4045&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4045/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4045&quot;&gt;#4045&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump loofah from 2.24.0 to 2.24.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3059131713&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4055&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4055/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4055&quot;&gt;#4055&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump jquery-ui-rails from &lt;code&gt;413265e&lt;/code&gt; to 8.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3062206279&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4056&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4056/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4056&quot;&gt;#4056&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 8.0.6 to 8.0.7 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3068141057&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4057&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4057/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4057&quot;&gt;#4057&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.31.0 to 2.32.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3072904008&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4059&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4059/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4059&quot;&gt;#4059&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.75.5 to 1.76.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3116735833&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4068&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4068/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4068&quot;&gt;#4068&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump jquery-ui-rails from &lt;code&gt;413265e&lt;/code&gt; to 8.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3072911054&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4060&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4060/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4060&quot;&gt;#4060&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Yeet codeclimate into the sun by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3226181933&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4087&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4087/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4087&quot;&gt;#4087&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Drop simplecov for now by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3226211576&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4092&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4092/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4092&quot;&gt;#4092&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.76.0 to 1.78.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3214818207&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4085&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4085/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4085&quot;&gt;#4085&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.13.1 to 2.13.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3208278999&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4083&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4083/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4083&quot;&gt;#4083&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.32.0 to 4.34.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3187796189&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4080&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4080/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4080&quot;&gt;#4080&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 8.0.0 to 8.0.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3162178889&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4076&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4076/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4076&quot;&gt;#4076&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump factory_bot_rails from 6.4.4 to 6.5.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3148919980&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4071&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4071/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4071&quot;&gt;#4071&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump icalendar from 2.11.0 to 2.11.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3167218848&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4078&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4078/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4078&quot;&gt;#4078&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump nokogiri from 1.18.8 to 1.18.9 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3250850711&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4093&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4093/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4093&quot;&gt;#4093&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump pg from 1.5.9 to 1.6.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3288756423&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4106&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4106/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4106&quot;&gt;#4106&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump haml_lint from 0.62.0 to 0.66.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3288763986&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4107&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4107/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4107&quot;&gt;#4107&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.78.0 to 1.79.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3282869121&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4104&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4104/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4104&quot;&gt;#4104&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add CrowdIn translations support by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307052417&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4114&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4114/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4114&quot;&gt;#4114&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump to Ruby 3.3.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307055555&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4115&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4115/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4115&quot;&gt;#4115&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add crowdin tools by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307070926&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4116&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4116/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4116&quot;&gt;#4116&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add rake task to delete pictures with source OpenFarm by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307049516&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4113&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4113/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4113&quot;&gt;#4113&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/google-labs-jules/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/google-labs-jules&quot;&gt;@google-labs-jules&lt;/a&gt;[bot] made their first contribution in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;3307052417&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4114&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4114/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4114&quot;&gt;#4114&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release64...release65&quot;&gt;&lt;tt&gt;release64...release65&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release64</id>
<updated>2025-03-29T06:13:58Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release64"/>
<title>release64</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;September 2024 release by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2554821218&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3868&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3868/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3868&quot;&gt;#3868&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump recaptcha from 5.17.0 to 5.17.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2697528860&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3939&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3939/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3939&quot;&gt;#3939&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-api from 2.15.0 to 2.16.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2657943765&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3930&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3930/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3930&quot;&gt;#3930&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.68.0 to 1.69.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2697520629&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3938&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3938/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3938&quot;&gt;#3938&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.69.0 to 1.69.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2716829235&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3941&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3941/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3941&quot;&gt;#3941&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.69.1 to 1.69.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2737624710&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3948&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3948/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3948&quot;&gt;#3948&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump recaptcha from 5.17.1 to 5.18.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2726203523&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3943&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3943/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3943&quot;&gt;#3943&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump geocoder from 1.8.3 to 1.8.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2719778895&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3942&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3942/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3942&quot;&gt;#3942&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump actionpack from 7.2.1.1 to 7.2.2.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2731370476&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3945&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3945/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3945&quot;&gt;#3945&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.12.1 to 2.12.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2729304215&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3944&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3944/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3944&quot;&gt;#3944&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump dotenv-rails from 3.1.4 to 3.1.6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2740925725&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3949&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3949/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3949&quot;&gt;#3949&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.2.0 to 3.3.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2737621882&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3946&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3946/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3946&quot;&gt;#3946&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.7 to 3.16.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2741613325&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3951&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3951/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3951&quot;&gt;#3951&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump dotenv-rails from 3.1.6 to 3.1.7 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2747008400&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3952&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3952/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3952&quot;&gt;#3952&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump geocoder from 1.8.4 to 1.8.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2749452167&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3954&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3954/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3954&quot;&gt;#3954&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.6 to 7.3.7 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2747009449&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3953&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3953/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3953&quot;&gt;#3953&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.27.0 to 2.28.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2759412361&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3956&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3956/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3956&quot;&gt;#3956&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump pry from 0.15.0 to 0.15.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2758564726&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3955&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3955/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3955&quot;&gt;#3955&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.8 to 3.16.9 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2762800086&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3957&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3957/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3957&quot;&gt;#3957&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump loofah from 2.23.1 to 2.24.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2764897540&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3958&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3958/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3958&quot;&gt;#3958&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.4.0 to 5.5.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2767124810&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3959&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3959/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3959&quot;&gt;#3959&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.5.0 to 5.6.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2791876760&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3962&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3962/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3962&quot;&gt;#3962&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.69.2 to 1.70.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2783244726&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3960&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3960/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3960&quot;&gt;#3960&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump recaptcha from 5.18.0 to 5.19.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2789029485&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3961&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3961/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3961&quot;&gt;#3961&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump terser from 1.2.4 to 1.2.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2800972222&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3964&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3964/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3964&quot;&gt;#3964&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.3.0 to 3.4.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2800975942&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3966&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3966/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3966&quot;&gt;#3966&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.27.0 to 4.28.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2800973002&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3965&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3965/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3965&quot;&gt;#3965&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.7 to 7.3.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2800976414&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3967&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3967/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3967&quot;&gt;#3967&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.28.0 to 2.29.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2811915329&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3970&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3970/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3970&quot;&gt;#3970&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.70.0 to 1.72.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2859575101&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3986&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3986/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3986&quot;&gt;#3986&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump msgpack from 1.7.5 to 1.8.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2837457975&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3978&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3978/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3978&quot;&gt;#3978&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump net-imap from 0.4.17 to 0.4.19 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2843266893&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3979&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3979/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3979&quot;&gt;#3979&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rake from 0.6.0 to 0.7.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2857069504&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3985&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3985/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3985&quot;&gt;#3985&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.4.0 to 3.5.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2857067033&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3984&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3984/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3984&quot;&gt;#3984&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rack from 2.2.10 to 2.2.11 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2859669365&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3987&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3987/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3987&quot;&gt;#3987&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.29.1 to 2.30.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2857065575&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3983&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3983/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3983&quot;&gt;#3983&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.8 to 7.3.9 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2857063692&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3981&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3981/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3981&quot;&gt;#3981&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 7.1.0 to 7.1.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2837457564&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3977&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3977/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3977&quot;&gt;#3977&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump haml_lint from 0.59.0 to 0.60.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2822653474&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3972&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3972/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3972&quot;&gt;#3972&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 8.0.0 to 8.0.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2844470582&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3980&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3980/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3980&quot;&gt;#3980&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump active_utils from 3.4.1 to 3.5.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2834743483&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3976&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3976/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3976&quot;&gt;#3976&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.1.2 to 5.1.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2826682206&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3973&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3973/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3973&quot;&gt;#3973&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump nokogiri from 1.18.2 to 1.18.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2863323147&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3988&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3988/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3988&quot;&gt;#3988&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump puma from 6.5.0 to 6.6.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2817446832&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3971&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3971/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3971&quot;&gt;#3971&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.28.0 to 4.29.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2868214077&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3990&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3990/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3990&quot;&gt;#3990&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.6.0 to 5.6.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2874076437&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3991&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3991/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3991&quot;&gt;#3991&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.29.0 to 4.29.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2874076852&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3992&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3992/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3992&quot;&gt;#3992&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.1.3 to 5.1.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2865334904&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3989&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3989/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3989&quot;&gt;#3989&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump haml_lint from 0.60.0 to 0.61.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2877421299&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3994&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3994/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3994&quot;&gt;#3994&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.9 to 3.16.10 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2877421852&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3995&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3995/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3995&quot;&gt;#3995&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.30.1 to 2.30.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2877419063&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3993&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3993/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3993&quot;&gt;#3993&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.72.2 to 1.73.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2883642759&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3996&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3996/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3996&quot;&gt;#3996&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump i18n-tasks from 1.0.14 to 1.0.15 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2906317164&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4001&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4001/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4001&quot;&gt;#4001&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump uri from 1.0.2 to 1.0.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2895592727&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3998&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3998/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3998&quot;&gt;#3998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.30.2 to 2.30.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2896458466&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3999&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3999/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3999&quot;&gt;#3999&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rack from 2.2.12 to 2.2.13 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2908896068&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4002&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4002/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4002&quot;&gt;#4002&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-capybara from 2.21.0 to 2.22.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2909380447&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4004&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4004/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4004&quot;&gt;#4004&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.73.0 to 1.73.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2893274139&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3997&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3997/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3997&quot;&gt;#3997&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec_rails from 2.30.0 to 2.31.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2909378530&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4003&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4003/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4003&quot;&gt;#4003&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-factory_bot from 2.26.1 to 2.27.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2899629103&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4000&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4000/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4000&quot;&gt;#4000&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump platform-api from 3.7.0 to 3.8.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2913006084&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4005&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4005/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4005&quot;&gt;#4005&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.73.2 to 1.75.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2951896144&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4018&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4018/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4018&quot;&gt;#4018&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump csv_shaper from 1.3.2 to 1.4.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2934437725&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4012&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4012/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4012&quot;&gt;#4012&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump nokogiri from 1.18.3 to 1.18.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2939771258&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4015&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4015/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4015&quot;&gt;#4015&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-capybara from 2.22.0 to 2.22.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2916069575&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4008&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4008/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4008&quot;&gt;#4008&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-factory_bot from 2.27.0 to 2.27.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2916069033&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4007&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4007/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4007&quot;&gt;#4007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump haml_lint from 0.61.0 to 0.61.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2937566651&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4014&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4014/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4014&quot;&gt;#4014&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.29.1 to 4.30.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2942271042&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4016&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4016/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4016&quot;&gt;#4016&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve reliability of test by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2957685540&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4021&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4021/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4021&quot;&gt;#4021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump byebug from 11.1.3 to 12.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2948597946&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4017&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4017/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4017&quot;&gt;#4017&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump ruby by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2957676292&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4020&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4020/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4020&quot;&gt;#4020&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Split CI into the core app, and then feature specs by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2957743826&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4022&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4022/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4022&quot;&gt;#4022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.6.1 to 5.6.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2937565628&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/4013&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/4013/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/4013&quot;&gt;#4013&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release63...release64&quot;&gt;&lt;tt&gt;release63...release64&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release63</id>
<updated>2024-11-26T22:29:08Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release63"/>
<title>release63</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;August 2024 release by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2486548720&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3833&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3833/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3833&quot;&gt;#3833&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump haml_lint from 0.58.0 to 0.59.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2554750847&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3865&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3865/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3865&quot;&gt;#3865&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoid showing plantings which are finished by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2512161750&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3845&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3845/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3845&quot;&gt;#3845&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Garden show and edit: encourage descriptions, add more calls to action by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2512164674&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3846&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3846/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3846&quot;&gt;#3846&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Garden collaboration (small part of community gardens) by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2554710176&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3862&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3862/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3862&quot;&gt;#3862&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-activemodel-mocks from 1.2.0 to 1.2.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2563298028&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3873&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3873/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3873&quot;&gt;#3873&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.0.5 to 3.1.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2560848482&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3872&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3872/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3872&quot;&gt;#3872&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-specs from 2.14.0 to 2.15.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2569550019&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3877&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3877/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3877&quot;&gt;#3877&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump msgpack from 1.7.2 to 1.7.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2569548326&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3876&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3876/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3876&quot;&gt;#3876&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-ui from 2.14.0 to 2.15.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2569540841&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3874&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3874/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3874&quot;&gt;#3874&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-api from 2.14.0 to 2.15.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2569542241&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3875&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3875/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3875&quot;&gt;#3875&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump terser from 1.2.3 to 1.2.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2572375810&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3878&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3878/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3878&quot;&gt;#3878&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump active_median from 0.4.1 to 0.5.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2572376913&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3879&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3879/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3879&quot;&gt;#3879&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Default a new activity as being done today by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583573592&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3880&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3880/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3880&quot;&gt;#3880&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Render where a planting is in card view by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583601667&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3882&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3882/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3882&quot;&gt;#3882&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _plantings.scss by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583889118&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3883&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3883/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3883&quot;&gt;#3883&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update auto_suggest_helper.rb to support required by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583891600&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3884&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3884/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3884&quot;&gt;#3884&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update seeds to have a min day range by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583896872&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3886&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3886/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3886&quot;&gt;#3886&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583912029&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3887&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3887/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3887&quot;&gt;#3887&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove required text UI element by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583921641&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3888&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3888/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3888&quot;&gt;#3888&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update gardens to have a non 0 area by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583895590&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3885&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3885/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3885&quot;&gt;#3885&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml to mark dropdowns required by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583929962&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3889&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3889/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3889&quot;&gt;#3889&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml to require a min of 1 when planting by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583937275&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3891&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3891/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3891&quot;&gt;#3891&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml to require a min of 1 seed by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583937839&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3892&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3892/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3892&quot;&gt;#3892&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml to mark required by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583940537&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3893&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3893/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3893&quot;&gt;#3893&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swap activities to datepicker by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583935682&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3890&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3890/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3890&quot;&gt;#3890&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swap to HTML5 date field by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583949420&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3895&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3895/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3895&quot;&gt;#3895&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583952232&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3896&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3896/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3896&quot;&gt;#3896&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swap harvest to html5 date field by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583948773&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3894&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3894/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3894&quot;&gt;#3894&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update _form.html.haml to make seeds tradeable-to required by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2583981613&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3898&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3898/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3898&quot;&gt;#3898&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rails from 7.2.1 to 7.2.1.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2591003405&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3902&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3902/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3902&quot;&gt;#3902&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump axe-core-capybara from 4.10.0 to 4.10.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2596703739&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3905&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3905/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3905&quot;&gt;#3905&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.66.1 to 1.67.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2591004835&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3903&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3903/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3903&quot;&gt;#3903&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump pg from 1.5.8 to 1.5.9 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2613335619&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3912&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3912/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3912&quot;&gt;#3912&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump loofah from 2.22.0 to 2.23.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2613326383&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3911&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3911/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3911&quot;&gt;#3911&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump database_cleaner from 2.0.2 to 2.1.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2613324497&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3910&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3910/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3910&quot;&gt;#3910&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faker from 3.4.2 to 3.5.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2601604524&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3907&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3907/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3907&quot;&gt;#3907&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.2 to 7.3.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2610682730&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3908&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3908/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3908&quot;&gt;#3908&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.1.0 to 5.1.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2593935790&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3904&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3904/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3904&quot;&gt;#3904&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.26.2 to 2.27.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2617571308&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3913&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3913/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3913&quot;&gt;#3913&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.1.0 to 3.2.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2617582003&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3916&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3916/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3916&quot;&gt;#3916&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.25.0 to 4.26.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2626123256&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3919&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3919/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3919&quot;&gt;#3919&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.67.0 to 1.68.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2628513702&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3921&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3921/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3921&quot;&gt;#3921&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump loofah from 2.23.0 to 2.23.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2617572298&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3914&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3914/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3914&quot;&gt;#3914&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.4 to 7.3.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2634696212&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3923&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3923/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3923&quot;&gt;#3923&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump discard from 1.3.0 to 1.4.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2637228509&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3924&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3924/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3924&quot;&gt;#3924&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.6 to 3.16.7 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2632084358&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3922&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3922/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3922&quot;&gt;#3922&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump axe-core-capybara from 4.10.1 to 4.10.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2648401010&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3928&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3928/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3928&quot;&gt;#3928&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump bullet from 7.2.0 to 8.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2648400139&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3927&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3927/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3927&quot;&gt;#3927&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.1.1 to 5.1.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2623147618&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3918&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3918/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3918&quot;&gt;#3918&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump pry from 0.14.2 to 0.15.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2667542362&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3934&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3934/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3934&quot;&gt;#3934&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump msgpack from 1.7.3 to 1.7.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2651262496&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3929&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3929/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3929&quot;&gt;#3929&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.12.0 to 2.12.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2661047620&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3933&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3933/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3933&quot;&gt;#3933&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump puma from 6.4.3 to 6.5.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2689564321&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3936&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3936/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3936&quot;&gt;#3936&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 7.0.1 to 7.1.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2648394946&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3925&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3925/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3925&quot;&gt;#3925&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.26.0 to 4.27.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2693500119&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3937&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3937/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3937&quot;&gt;#3937&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump factory_bot_rails from 6.4.3 to 6.4.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2617573556&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3915&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3915/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3915&quot;&gt;#3915&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-ui from 2.15.0 to 2.16.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2657945801&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3931&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3931/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3931&quot;&gt;#3931&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-specs from 2.15.0 to 2.16.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2657947724&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3932&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3932/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3932&quot;&gt;#3932&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.5 to 7.3.6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2678314576&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3935&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3935/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3935&quot;&gt;#3935&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release62...release63&quot;&gt;&lt;tt&gt;release62...release63&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/5337437/release62</id>
<updated>2024-09-29T07:12:50Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/Growstuff/growstuff/releases/tag/release62"/>
<title>release62</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bump rubocop-rspec from 3.0.3 to 3.0.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2450209135&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3816&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3816/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3816&quot;&gt;#3816&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.4 to 3.16.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2455134114&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3817&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3817/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3817&quot;&gt;#3817&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-specs from 2.13.0 to 2.14.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2465085397&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3820&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3820/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3820&quot;&gt;#3820&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-ui from 2.13.0 to 2.14.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2465083269&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3819&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3819/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3819&quot;&gt;#3819&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rswag-api from 2.13.0 to 2.14.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2465081951&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3818&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3818/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3818&quot;&gt;#3818&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 6.1.3 to 6.1.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2469641460&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3821&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3821/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3821&quot;&gt;#3821&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump axe-core-rspec from 4.9.1 to 4.10.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2480059748&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3827&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3827/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3827&quot;&gt;#3827&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rexml from 3.3.4 to 3.3.6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2481717131&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3829&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3829/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3829&quot;&gt;#3829&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump vcr from 6.2.0 to 6.3.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2477354337&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3825&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3825/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3825&quot;&gt;#3825&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.0 to 7.3.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2469642623&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3822&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3822/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3822&quot;&gt;#3822&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump chartkick from 5.0.7 to 5.1.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2477350996&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3824&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3824/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3824&quot;&gt;#3824&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump query_diet from 0.7.1 to 0.7.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2480057978&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3826&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3826/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3826&quot;&gt;#3826&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rails from 7.1.3.4 to 7.1.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2482504365&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3830&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3830/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3830&quot;&gt;#3830&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.25.1 to 2.26.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2486125374&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3831&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3831/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3831&quot;&gt;#3831&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump micromatch from 4.0.5 to 4.0.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2486548087&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3832&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3832/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3832&quot;&gt;#3832&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.10.1 to 2.11.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2488505276&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3834&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3834/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3834&quot;&gt;#3834&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rails 7.2.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2406735872&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3789&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3789/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3789&quot;&gt;#3789&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 6.1.4 to 7.0.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2502095429&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3839&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3839/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3839&quot;&gt;#3839&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.23.0 to 4.24.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2493710399&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3835&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3835/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3835&quot;&gt;#3835&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump ruby-units from 4.0.3 to 4.1.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2502100530&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3840&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3840/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3840&quot;&gt;#3840&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.65.1 to 1.66.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2500242483&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3838&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3838/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3838&quot;&gt;#3838&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sidekiq from 7.3.1 to 7.3.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2507096162&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3843&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3843/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3843&quot;&gt;#3843&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rspec-rails from 7.0.0 to 7.0.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2504508632&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3841&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3841/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3841&quot;&gt;#3841&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop from 1.66.0 to 1.66.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2506964916&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3842&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3842/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3842&quot;&gt;#3842&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update overrides.scss by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2498754015&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3837&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3837/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3837&quot;&gt;#3837&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.26.0 to 2.26.1 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2513182600&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3849&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3849/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3849&quot;&gt;#3849&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rspec from 3.0.4 to 3.0.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2513180649&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3848&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3848/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3848&quot;&gt;#3848&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump pg from 1.5.7 to 1.5.8 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2513185705&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3850&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3850/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3850&quot;&gt;#3850&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sprockets from 3.7.3 to 3.7.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2515703205&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3852&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3852/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3852&quot;&gt;#3852&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump oj from 3.16.5 to 3.16.6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2515699494&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3851&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3851/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3851&quot;&gt;#3851&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump scout_apm from 5.3.8 to 5.4.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2518778544&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3853&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3853/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3853&quot;&gt;#3853&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump puma from 6.4.2 to 6.4.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2535501695&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3856&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3856/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3856&quot;&gt;#3856&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump faraday from 2.11.0 to 2.12.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2535500880&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3855&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3855/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3855&quot;&gt;#3855&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump dotenv-rails from 3.1.2 to 3.1.4 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2532912171&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3854&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3854/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3854&quot;&gt;#3854&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump sprockets from 3.7.4 to 3.7.5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2538095681&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3857&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3857/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3857&quot;&gt;#3857&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump icalendar from 2.10.2 to 2.10.3 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2541813458&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3858&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3858/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3858&quot;&gt;#3858&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump rubocop-rails from 2.26.1 to 2.26.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2541816017&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3860&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3860/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3860&quot;&gt;#3860&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump selenium-webdriver from 4.24.0 to 4.25.0 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2541814149&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3859&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3859/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3859&quot;&gt;#3859&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bump webrick from 1.8.1 to 1.8.2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;organization&quot; data-hovercard-url=&quot;/orgs/dependabot/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/dependabot&quot;&gt;@dependabot&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2554710257&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3863&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3863/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3863&quot;&gt;#3863&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update dependabot.yml by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CloCkWeRX/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CloCkWeRX&quot;&gt;@CloCkWeRX&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2554749857&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/Growstuff/growstuff/issues/3864&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/Growstuff/growstuff/pull/3864/hovercard&quot; href=&quot;https://github.com/Growstuff/growstuff/pull/3864&quot;&gt;#3864&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/Growstuff/growstuff/compare/release61...release62&quot;&gt;&lt;tt&gt;release61...release62&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>CloCkWeRX</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/365751?s=60&amp;v=4"/>
</entry>
</feed>
recorded_at: Sun, 21 Sep 2025 02:18:49 GMT
recorded_with: VCR 6.3.1

View File

@@ -101,7 +101,7 @@ describe CropsController do
it { expect { subject }.to change(AlternateName, :count).by(2) }
it { expect { subject }.to change(ScientificName, :count).by(1) }
context 'with data' do
context 'with openfarm data' do
let(:crop_params) do
{
crop: {
@@ -110,18 +110,16 @@ describe CropsController do
row_spacing: 10,
spread: 20,
height: 30,
description: 'hello',
sowing_method: 'direct',
sun_requirements: 'full sun',
growing_degree_days: 100,
en_youtube_url: 'https://www.youtube.com/watch?v=INZybkX8tLI'
growing_degree_days: 100
},
alt_name: { '1': "egg plant", '2': "purple apple" },
sci_name: { '1': "fancy sci name", '2': "" }
}
end
it 'saves data' do
it 'saves openfarm data' do
subject
crop = Crop.last
expect(crop.row_spacing).to eq(10)
@@ -130,8 +128,6 @@ describe CropsController do
expect(crop.sowing_method).to eq('direct')
expect(crop.sun_requirements).to eq('full sun')
expect(crop.growing_degree_days).to eq(100)
expect(crop.description).to eq 'hello'
expect(crop.en_youtube_url).to eq 'https://www.youtube.com/watch?v=INZybkX8tLI'
end
end
end

View File

@@ -4,7 +4,6 @@ require 'rails_helper'
RSpec.describe GardenTypesController, type: :controller do
include Devise::Test::ControllerHelpers
let(:valid_params) { { name: 'My second GardenType' } }
let(:garden_type) { FactoryBot.create(:garden_type) }

View File

@@ -4,7 +4,6 @@ require 'rails_helper'
RSpec.describe GardensController, type: :controller do
include Devise::Test::ControllerHelpers
let(:valid_params) { { name: 'My second Garden' } }
let(:garden) { FactoryBot.create(:garden) }

View File

@@ -1,38 +0,0 @@
require 'rails_helper'
RSpec.feature 'Creating a recurring activity' do
let(:member) { create(:member) }
let!(:garden) { create(:garden, owner: member) }
before do
login_as(member)
visit new_activity_path
end
scenario 'a member creates a recurring activity' do
fill_in 'What needs to be done?', with: 'Water the plants'
select 'Watering', from: 'activity_category'
fill_in 'Repeat how many times?', with: '3'
fill_in 'Every how many weeks?', with: '2'
click_button 'Save'
expect(page).to have_content('Activity was successfully created.')
expect(Activity.count).to eq(4)
original_activity = Activity.first
expect(original_activity.name).to eq('Water the plants')
expect(original_activity.due_date).to eq(Date.today)
second_activity = Activity.second
expect(second_activity.name).to eq('Water the plants')
expect(second_activity.due_date).to eq(Date.today + 2.weeks)
third_activity = Activity.third
expect(third_activity.name).to eq('Water the plants')
expect(third_activity.due_date).to eq(Date.today + 4.weeks)
fourth_activity = Activity.fourth
expect(fourth_activity.name).to eq('Water the plants')
expect(fourth_activity.due_date).to eq(Date.today + 6.weeks)
end
end

View File

@@ -26,7 +26,7 @@ describe "Harvesting a crop", :js, :search do
within "form#new_harvest" do
choose plant_part.name
fill_in "When?", with: Time.new(2014, 6, 15)
fill_in "When?", with: Time.new(2014, 06, 15)
fill_in "How many?", with: 42
fill_in "Weighing (in total)", with: 42
fill_in "Notes", with: "It's killer."

View File

@@ -1,10 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
feature 'GitHub Releases', :vcr do
scenario 'Viewing the releases widget on the homepage' do
visit root_path
expect(page).to have_link('Find out more »', href: 'https://github.com/Growstuff/growstuff/releases')
end
end

View File

@@ -2,7 +2,7 @@
require 'rails_helper'
describe "member deletion", :flaky do
describe "member deletion", flaky: true do
context "with activity and followers" do
let(:member) { FactoryBot.create(:member) }
let(:other_member) { FactoryBot.create(:member) }
@@ -63,7 +63,7 @@ describe "member deletion", :flaky do
member.reload
expect(member.discarded?).to be true
# Frustratingly, this cannot be discarded? and also meet
# Frustratingly, this cannot be discarded? and also meet
# `@member = Member.confirmed.kept.find_by!(slug: params[:slug])`
#
# Yet, we see the below assert fail in CI.

View File

@@ -187,7 +187,7 @@ describe "Planting a crop", :js, :search do
check "finished"
fill_in "Finished date", with: "2015-06-25"
click_button "Save"
expect(page).to have_content "was successfully updated"
expect(page).to have_content "planting was successfully updated"
expect(page).to have_content "Finished"
end

View File

@@ -544,20 +544,6 @@ describe Crop do
end
end
context "destroying a crop" do
let!(:crop_a) { FactoryBot.create(:crop) }
let!(:crop_b) { FactoryBot.create(:crop) }
before do
CropCompanion.create(crop_a: crop_a, crop_b: crop_b)
CropCompanion.create(crop_a: crop_b, crop_b: crop_a)
end
it "destroys companion links" do
expect { crop_a.destroy }.to change { CropCompanion.count }.from(2).to(0)
end
end
context "crop rejections" do
let!(:rejected_reason) do
FactoryBot.create(:crop, name: 'tomato',

View File

@@ -523,7 +523,6 @@ describe Planting do
context "failed" do
let(:failed_planting) { FactoryBot.create(:planting, failed: true) }
it 'has a failed field' do
expect(failed_planting.failed).to be true
end
@@ -536,20 +535,20 @@ describe Planting do
end
it 'is not included in the active scope' do
@p = FactoryBot.create(:planting)
@f = FactoryBot.create(:planting, failed: true)
described_class.active.should include @p
described_class.active.should_not include @f
@p = FactoryBot.create(:planting)
@f = FactoryBot.create(:planting, failed: true)
described_class.active.should include @p
described_class.active.should_not include @f
end
it 'cannot be finished and failed' do
@f = FactoryBot.build(:planting, finished: true, failed: true)
@f.should_not be_valid
@f = FactoryBot.build(:planting, finished: true, failed: true)
@f.should_not be_valid
end
it 'is not finished' do
@f = FactoryBot.build(:planting, finished: true, failed: true)
expect(@f.finished?).to be false
@f = FactoryBot.build(:planting, finished: true, failed: true)
expect(@f.finished?).to be false
end
end
@@ -588,7 +587,7 @@ describe Planting do
FactoryBot.create(:finished_planting, owner: member, garden: member.gardens.first)
end
let!(:failed_planting) do
FactoryBot.create(:planting, failed: true, owner: member, garden: member.gardens.first)
FactoryBot.create(:planting, failed: true, owner: member, garden: member.gardens.first)
end
it { expect(member.plantings.active).to include(planting) }

View File

@@ -1,95 +1,95 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Activities', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Activities API', type: :request do
path '/api/v1/activities' do
get 'Lists activities' do
tags 'Activities'
produces 'application/vnd.api+json'
parameter name: 'filter[owner-id]', in: :query, type: :string, required: false
parameter name: 'filter[garden-id]', in: :query, type: :string, required: false
parameter name: 'filter[planting-id]', in: :query, type: :string, required: false
parameter name: 'filter[category]', in: :query, type: :string, required: false
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let!(:activity) { FactoryBot.create(:activity, owner: member, garden: create(:garden, owner: member), planting: create(:planting, owner: member)) }
let!(:activity2) { FactoryBot.create(:activity) }
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string },
description: { type: :string },
category: { type: :string },
finished: { type: :boolean },
'due-date': { type: :string, format: 'date-time' }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
garden: { '$ref' => '#/components/schemas/relationship' },
planting: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
it '#index' do
get('/api/v1/activities', params: {}, headers:)
expect(subject['data'].size).to eq(2)
end
it '#show' do
get("/api/v1/activities/#{activity.id}", params: {}, headers:)
expect(subject['data']['id']).to eq(activity.id.to_s)
end
context 'filtering' do
it 'filters by owner' do
get("/api/v1/activities?filter[owner-id]=#{activity.owner.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(activity.id.to_s)
end
it 'filters by garden' do
get("/api/v1/activities?filter[garden-id]=#{activity.garden.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(activity.id.to_s)
end
it 'filters by planting' do
get("/api/v1/activities?filter[planting-id]=#{activity.planting.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(activity.id.to_s)
end
it 'filters by category' do
get("/api/v1/activities?filter[category]=#{activity.category}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(2)
expect(subject['data'][0]['id']).to eq(activity.id.to_s)
expect(subject['data'][1]['id']).to eq(activity2.id.to_s)
let!(:activity) { FactoryBot.create(:activity, garden: create(:garden), planting: create(:planting)) }
run_test!
end
end
end
context '#update' do
let(:params) do
{
'data' => {
'type' => 'activities',
'id' => activity.id.to_s,
'attributes' => {
'description' => 'A new description',
'finished' => true,
'due-date' => '2025-10-31'
}
}
}
end
path '/api/v1/activities/{id}' do
get 'Retrieves an activity' do
tags 'Activities'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
it 'updates the activity' do
patch "/api/v1/activities/#{activity.id}", params: params.to_json, headers: auth_headers
expect(response).to have_http_status(:ok)
# Check response
expect(subject['data']['attributes']['description']).to eq('A new description')
expect(subject['data']['attributes']['finished']).to eq(true)
expect(subject['data']['attributes']['due-date']).to eq('2025-10-31')
# Check database
activity.reload
expect(activity.description).to eq('A new description')
expect(activity.finished).to eq(true)
expect(activity.due_date.to_s).to eq('2025-10-31')
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string },
description: { type: :string },
category: { type: :string },
finished: { type: :boolean },
'due-date': { type: :string, format: 'date-time' }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
garden: { '$ref' => '#/components/schemas/relationship' },
planting: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:activity) { FactoryBot.create(:activity, garden: create(:garden), planting: create(:planting)) }
let(:id) { activity.id }
run_test!
end
end
end
end

View File

@@ -1,103 +1,98 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Crops', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Crops API', type: :request do
path '/api/v1/crops' do
get 'Lists crops' do
tags 'Crops'
produces 'application/vnd.api+json'
parameter name: 'filter[approval_status]', in: :query, type: :string, required: false, description: 'Filter by approval status. Defaults to "approved".'
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:crop) { FactoryBot.create(:crop) }
let(:crop_encoded_as_json_api) do
{ "id" => crop.id.to_s,
"type" => "crops",
"links" => { "self" => resource_url },
"attributes" => attributes,
"relationships" => {
"plantings" => plantings_as_json_api,
"parent" => parent_as_json_api,
"harvests" => harvests_as_json_api,
"seeds" => seeds_as_json_api,
"photos" => photos_as_json_api
} }
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string },
'en-wikipedia-url': { type: :string, format: 'uri', 'x-nullable': true },
perennial: { type: :boolean, 'x-nullable': true },
'median-lifespan': { type: :integer, 'x-nullable': true },
'median-days-to-first-harvest': { type: :integer, 'x-nullable': true },
'median-days-to-last-harvest': { type: :integer, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
plantings: { '$ref' => '#/components/schemas/relationship' },
parent: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' },
seeds: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let!(:crop) { FactoryBot.create(:crop) }
run_test!
end
end
end
let(:resource_url) { "http://www.example.com/api/v1/crops/#{crop.id}" }
path '/api/v1/crops/{id}' do
get 'Retrieves a crop' do
tags 'Crops'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
let(:seeds_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/seeds",
"related" => "#{resource_url}/seeds" } }
end
let(:harvests_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/harvests",
"related" => "#{resource_url}/harvests" } }
end
let(:parent_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/parent",
"related" => "#{resource_url}/parent" } }
end
let(:plantings_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/plantings",
"related" => "#{resource_url}/plantings" } }
end
let(:photos_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/photos",
"related" => "#{resource_url}/photos" } }
end
let(:attributes) do
{
"name" => crop.name,
"en-wikipedia-url" => crop.en_wikipedia_url,
"perennial" => false,
"median-lifespan" => nil,
"median-days-to-first-harvest" => nil,
"median-days-to-last-harvest" => nil
}
end
describe '#index' do
before { get '/api/v1/crops', params: {}, headers: }
it { expect(subject['data']).to include(crop_encoded_as_json_api) }
end
describe '#show' do
before { get "/api/v1/crops/#{crop.id}", params: {}, headers: }
it { expect(subject['data']['attributes']).to eq(attributes) }
it { expect(subject['data']['relationships']).to include("plantings" => plantings_as_json_api) }
it { expect(subject['data']['relationships']).to include("harvests" => harvests_as_json_api) }
it { expect(subject['data']['relationships']).to include("seeds" => seeds_as_json_api) }
it { expect(subject['data']['relationships']).to include("photos" => photos_as_json_api) }
it { expect(subject['data']['relationships']).to include("parent" => parent_as_json_api) }
it { expect(subject['data']).to eq(crop_encoded_as_json_api) }
end
it '#create' do
expect do
post '/api/v1/crops', params: { 'crop' => { 'name' => 'can i make this' } }, headers:
end.to raise_error ActionController::RoutingError
end
it '#update' do
expect do
post "/api/v1/crops/#{crop.id}", params: { 'crop' => { 'name' => 'can i modify this' } }, headers:
end.to raise_error ActionController::RoutingError
end
it '#delete' do
expect do
delete "/api/v1/crops/#{crop.id}", params: {}, headers:
end.to raise_error ActionController::RoutingError
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string },
'en-wikipedia-url': { type: :string, format: 'uri', 'x-nullable': true },
perennial: { type: :boolean, 'x-nullable': true },
'median-lifespan': { type: :integer, 'x-nullable': true },
'median-days-to-first-harvest': { type: :integer, 'x-nullable': true },
'median-days-to-last-harvest': { type: :integer, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
plantings: { '$ref' => '#/components/schemas/relationship' },
parent: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' },
seeds: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:crop) { FactoryBot.create(:crop) }
let(:id) { crop.id }
run_test!
end
end
end
end

View File

@@ -1,187 +1,223 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Gardens', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Gardens API', type: :request do
path '/api/v1/gardens' do
get 'Lists gardens' do
tags 'Gardens'
produces 'application/vnd.api+json'
parameter name: 'filter[active]', in: :query, type: :string, required: false
parameter name: 'filter[garden_type]', in: :query, type: :string, required: false
parameter name: 'filter[owner_id]', in: :query, type: :string, required: false
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:garden) { FactoryBot.create(:garden) }
let(:garden_encoded_as_json_api) do
{ "id" => garden.id.to_s,
"type" => "gardens",
"links" => { "self" => resource_url },
"attributes" => { "name" => garden.name },
"relationships" =>
{
"owner" => owner_as_json_api,
"plantings" => plantings_as_json_api,
"photos" => photos_as_json_api
} }
end
let(:resource_url) { "http://www.example.com/api/v1/gardens/#{garden.id}" }
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
plantings: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let(:plantings_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/plantings",
"related" => "#{resource_url}/plantings" } }
end
let(:owner_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/owner",
"related" => "#{resource_url}/owner" } }
end
let(:photos_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/photos",
"related" => "#{resource_url}/photos" } }
end
it '#index' do
get('/api/v1/gardens', params: {}, headers:)
expect(subject['data']).to include(garden_encoded_as_json_api)
end
it '#show' do
get("/api/v1/gardens/#{garden.id}", params: {}, headers:)
expect(subject['data']).to include(garden_encoded_as_json_api)
end
context 'filtering' do
let!(:garden2) { FactoryBot.create(:garden, active: false, garden_type: FactoryBot.create(:garden_type)) }
pending 'filters by active' do
get('/api/v1/gardens?filter[active]=true', params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(garden.id.to_s)
let!(:garden) { FactoryBot.create(:garden) }
run_test!
end
end
it 'filters by garden_type' do
get("/api/v1/gardens?filter[garden_type]=#{garden2.garden_type.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(garden2.id.to_s)
end
it 'filters by owner' do
get("/api/v1/gardens?filter[owner_id]=#{garden2.owner.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(2)
expect(subject['data'][1]['id']).to eq(garden2.id.to_s)
end
end
describe '#create' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:garden_params) do
{
data: {
type: 'gardens',
attributes: {
name: 'My API Garden'
post 'Creates a garden' do
tags 'Gardens'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :garden, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string }
},
required: ['name']
}
},
required: ['type', 'attributes']
}
}
}.to_json
end
},
required: ['data']
}
it 'returns 401 Unauthorized without a token' do
post '/api/v1/gardens', params: garden_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
response '201', 'created' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:garden) { { data: { type: 'gardens', attributes: { name: 'My API Garden' } } } }
run_test!
end
it 'returns 201 Created with a valid token' do
post '/api/v1/gardens', params: garden_params, headers: auth_headers
expect(response).to have_http_status(:created)
expect(member.gardens.count).to eq(2) # 1 from after_create callback, 1 from api
response '401', 'unauthorized' do
let(:garden) { { data: { type: 'gardens', attributes: { name: 'My API Garden' } } } }
run_test!
end
end
end
describe '#update' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
path '/api/v1/gardens/{id}' do
get 'Retrieves a garden' do
tags 'Gardens'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
plantings: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:garden) { FactoryBot.create(:garden) }
let(:id) { garden.id }
run_test!
end
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:garden) { create(:garden, owner: member) }
let(:other_member_garden) { create(:garden) }
let(:update_params) do
{
data: {
type: 'gardens',
id: garden.id.to_s,
attributes: {
name: 'An updated garden'
patch 'Updates a garden' do
tags 'Gardens'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
parameter name: :garden, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string },
attributes: {
type: :object,
properties: {
name: { type: :string }
}
}
},
required: ['type', 'id']
}
}
}.to_json
},
required: ['data']
}
response '200', 'ok' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:garden_to_update) { create(:garden, owner: member) }
let(:id) { garden_to_update.id }
let(:garden) { { data: { type: 'gardens', id: id, attributes: { name: 'An updated garden' } } } }
run_test!
end
response '401', 'unauthorized' do
let(:garden_to_update) { create(:garden) }
let(:id) { garden_to_update.id }
let(:garden) { { data: { type: 'gardens', id: id, attributes: { name: 'An updated garden' } } } }
run_test!
end
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_garden) { create(:garden) }
let(:id) { other_member_garden.id }
let(:garden) { { data: { type: 'gardens', id: id, attributes: { name: 'An updated garden' } } } }
run_test!
end
end
it 'returns 401 Unauthorized without a token' do
patch "/api/v1/gardens/#{garden.id}", params: update_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
delete 'Deletes a garden' do
tags 'Gardens'
parameter name: :id, in: :path, type: :string
it 'returns 200 OK with a valid token for own garden' do
patch "/api/v1/gardens/#{garden.id}", params: update_params, headers: auth_headers
expect(response).to have_http_status(:ok)
expect(garden.reload.name).to eq('An updated garden')
end
response '204', 'no content' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:garden_to_delete) { create(:garden, owner: member) }
let(:id) { garden_to_delete.id }
run_test!
end
it 'returns 403 Forbidden for another member\'s garden' do
update_params_for_other = {
data: {
type: 'gardens',
id: other_member_garden.id.to_s,
attributes: {
name: 'An updated garden'
}
}
}.to_json
patch "/api/v1/gardens/#{other_member_garden.id}", params: update_params_for_other, headers: auth_headers
expect(response).to have_http_status(:forbidden)
end
end
response '401', 'unauthorized' do
let(:garden_to_delete) { create(:garden) }
let(:id) { garden_to_delete.id }
run_test!
end
describe '#delete' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let!(:garden) { create(:garden, owner: member) }
let(:other_member_garden) { create(:garden) }
it 'returns 401 Unauthorized without a token' do
delete "/api/v1/gardens/#{garden.id}", headers: headers
expect(response).to have_http_status(:unauthorized)
end
it 'returns 204 No Content with a valid token for own garden' do
delete "/api/v1/gardens/#{garden.id}", headers: auth_headers
expect(response).to have_http_status(:no_content)
expect(Garden.find_by(id: garden.id)).to be_nil
end
it 'returns 403 Forbidden for another member\'s garden' do
delete "/api/v1/gardens/#{other_member_garden.id}", headers: auth_headers
expect(response).to have_http_status(:forbidden)
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_garden) { create(:garden) }
let(:id) { other_member_garden.id }
run_test!
end
end
end
end

View File

@@ -1,228 +1,257 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Harvests', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Harvests API', type: :request do
path '/api/v1/harvests' do
get 'Lists harvests' do
tags 'Harvests'
produces 'application/vnd.api+json'
parameter name: 'filter[crop_id]', in: :query, type: :string, required: false
parameter name: 'filter[planting_id]', in: :query, type: :string, required: false
parameter name: 'filter[plant_part]', in: :query, type: :string, required: false
parameter name: 'filter[owner_id]', in: :query, type: :string, required: false
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:harvest) { FactoryBot.create(:harvest) }
let(:harvest_encoded_as_json_api) do
{ "id" => harvest.id.to_s,
"type" => "harvests",
"links" => { "self" => resource_url },
"attributes" => attributes,
"relationships" => {
"crop" => crop_as_json_api,
"planting" => planting_as_json_api,
"owner" => owner_as_json_api,
"photos" => photos_as_json_api
} }
end
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
'harvested-at': { type: :string, format: 'date' },
description: { type: :string, 'x-nullable': true },
unit: { type: :string, 'x-nullable': true },
'weight-quantity': { type: :string, 'x-nullable': true },
'weight-unit': { type: :string, 'x-nullable': true },
'si-weight': { type: :number, format: :float, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
crop: { '$ref' => '#/components/schemas/relationship' },
planting: { '$ref' => '#/components/schemas/relationship' },
owner: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let(:resource_url) { "http://www.example.com/api/v1/harvests/#{harvest.id}" }
let(:crop_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/crop",
"related" => "#{resource_url}/crop" } }
end
let(:owner_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/owner",
"related" => "#{resource_url}/owner" } }
end
let(:planting_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/planting",
"related" => "#{resource_url}/planting" } }
end
let(:photos_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/photos",
"related" => "#{resource_url}/photos" } }
end
let(:attributes) do
{
"harvested-at" => "2015-09-17",
"description" => harvest.description,
"unit" => harvest.unit,
"weight-quantity" => harvest.weight_quantity.to_s,
"weight-unit" => harvest.weight_unit,
"si-weight" => harvest.si_weight
}
end
describe '#index' do
before { get '/api/v1/harvests', params: {}, headers: }
it { expect(subject['data']).to include(harvest_encoded_as_json_api) }
end
describe '#show' do
before { get "/api/v1/harvests/#{harvest.id}", params: {}, headers: }
it { expect(subject['data']['attributes']).to eq(attributes) }
it { expect(subject['data']['relationships']).to include("planting" => planting_as_json_api) }
it { expect(subject['data']['relationships']).to include("crop" => crop_as_json_api) }
it { expect(subject['data']['relationships']).to include("photos" => photos_as_json_api) }
it { expect(subject['data']['relationships']).to include("owner" => owner_as_json_api) }
it { expect(subject['data']).to eq(harvest_encoded_as_json_api) }
end
context 'filtering' do
let!(:harvest2) { FactoryBot.create(:harvest, planting: create(:planting)) }
it 'filters by crop' do
get("/api/v1/harvests?filter[crop_id]=#{harvest2.crop.id}", params: {}, headers:)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(harvest2.id.to_s)
let!(:harvest) { FactoryBot.create(:harvest) }
run_test!
end
end
it 'filters by planting' do
get("/api/v1/harvests?filter[planting_id]=#{harvest2.planting.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(harvest2.id.to_s)
end
it 'filters by plant_part' do
get("/api/v1/harvests?filter[plant_part]=#{harvest2.plant_part.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(harvest2.id.to_s)
end
it 'filters by owner' do
get("/api/v1/harvests?filter[owner_id]=#{harvest2.owner.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(harvest2.id.to_s)
end
end
describe '#create' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:crop) { create(:crop) }
let(:planting) { create(:planting, owner: member) }
let(:plant_part) { create(:plant_part) }
let(:harvest_params) do
{
data: {
type: 'harvests',
attributes: {
description: 'My API harvests'
},
relationships: {
planting: { data: { type: 'plantings', id: planting.id } }
# plant_part: { data: { type: 'plant_parts', id: plant_part.id } }
post 'Creates a harvest' do
tags 'Harvests'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :harvest, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string }
}
},
relationships: {
type: :object,
properties: {
planting: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string }
},
required: ['type', 'id']
}
},
required: ['data']
}
},
required: ['planting']
}
},
required: ['type', 'attributes', 'relationships']
}
}
}.to_json
end
},
required: ['data']
}
it 'returns 401 Unauthorized without a token' do
post '/api/v1/harvests', params: harvest_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
response '201', 'created' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:planting) { create(:planting, owner: member) }
let(:harvest) { { data: { type: 'harvests', attributes: { description: 'My API harvest' }, relationships: { planting: { data: { type: 'plantings', id: planting.id } } } } } }
run_test!
end
it 'returns 201 Created with a valid token' do
post '/api/v1/harvests', params: harvest_params, headers: auth_headers
expect(response).to have_http_status(:created)
expect(member.harvests.count).to eq(1)
response '401', 'unauthorized' do
let(:planting) { create(:planting) }
let(:harvest) { { data: { type: 'harvests', attributes: { description: 'My API harvest' }, relationships: { planting: { data: { type: 'plantings', id: planting.id } } } } } }
run_test!
end
end
end
describe '#update' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
path '/api/v1/harvests/{id}' do
get 'Retrieves a harvest' do
tags 'Harvests'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
'harvested-at': { type: :string, format: 'date' },
description: { type: :string, 'x-nullable': true },
unit: { type: :string, 'x-nullable': true },
'weight-quantity': { type: :string, 'x-nullable': true },
'weight-unit': { type: :string, 'x-nullable': true },
'si-weight': { type: :number, format: :float, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
crop: { '$ref' => '#/components/schemas/relationship' },
planting: { '$ref' => '#/components/schemas/relationship' },
owner: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:harvest) { FactoryBot.create(:harvest) }
let(:id) { harvest.id }
run_test!
end
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:harvest) { create(:harvest, owner: member) }
let(:other_member_harvest) { create(:harvest) }
let(:update_params) do
{
data: {
type: 'harvests',
id: harvest.id.to_s,
attributes: {
description: 'An updated harvest'
patch 'Updates a harvest' do
tags 'Harvests'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
parameter name: :harvest, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string }
}
}
},
required: ['type', 'id']
}
}
}.to_json
},
required: ['data']
}
response '200', 'ok' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:harvest_to_update) { create(:harvest, owner: member) }
let(:id) { harvest_to_update.id }
let(:harvest) { { data: { type: 'harvests', id: id, attributes: { description: 'An updated harvest' } } } }
run_test!
end
response '401', 'unauthorized' do
let(:harvest_to_update) { create(:harvest) }
let(:id) { harvest_to_update.id }
let(:harvest) { { data: { type: 'harvests', id: id, attributes: { description: 'An updated harvest' } } } }
run_test!
end
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_harvest) { create(:harvest) }
let(:id) { other_member_harvest.id }
let(:harvest) { { data: { type: 'harvests', id: id, attributes: { description: 'An updated harvest' } } } }
run_test!
end
end
it 'returns 401 Unauthorized without a token' do
patch "/api/v1/harvests/#{harvest.id}", params: update_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
delete 'Deletes a harvest' do
tags 'Harvests'
parameter name: :id, in: :path, type: :string
it 'returns 200 OK with a valid token for own harvest' do
patch "/api/v1/harvests/#{harvest.id}", params: update_params, headers: auth_headers
response '204', 'no content' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:harvest_to_delete) { create(:harvest, owner: member) }
let(:id) { harvest_to_delete.id }
run_test!
end
expect(response).to have_http_status(:ok)
expect(harvest.reload.description).to eq('An updated harvest')
end
response '401', 'unauthorized' do
let(:harvest_to_delete) { create(:harvest) }
let(:id) { harvest_to_delete.id }
run_test!
end
it 'returns 403 Forbidden for another member\'s harvest' do
update_params_for_other = {
data: {
type: 'harvests',
id: other_member_harvest.id.to_s,
attributes: {
description: 'An updated harvest'
}
}
}.to_json
patch "/api/v1/harvests/#{other_member_harvest.id}", params: update_params_for_other, headers: auth_headers
expect(response).to have_http_status(:forbidden)
end
end
describe '#delete' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let!(:harvest) { create(:harvest, owner: member) }
let(:other_member_harvest) { create(:harvest) }
it 'returns 401 Unauthorized without a token' do
delete "/api/v1/harvests/#{harvest.id}", headers: headers
expect(response).to have_http_status(:unauthorized)
end
it 'returns 204 No Content with a valid token for own harvest' do
delete "/api/v1/harvests/#{harvest.id}", headers: auth_headers
expect(response).to have_http_status(:no_content)
expect(Garden.find_by(id: harvest.id)).to be_nil
end
it 'returns 403 Forbidden for another member\'s harvest' do
delete "/api/v1/harvests/#{other_member_harvest.id}", headers: auth_headers
expect(response).to have_http_status(:forbidden)
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_harvest) { create(:harvest) }
let(:id) { other_member_harvest.id }
run_test!
end
end
end
end

View File

@@ -1,108 +1,91 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Members', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Members API', type: :request do
path '/api/v1/members' do
get 'Lists members' do
tags 'Members'
produces 'application/vnd.api+json'
parameter name: 'filter[login_name]', in: :query, type: :string, required: false
parameter name: 'filter[slug]', in: :query, type: :string, required: false
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:member) { FactoryBot.create(:member) }
let(:member_encoded_as_json_api) do
{ "id" => member.id.to_s,
"type" => "members",
"links" => { "self" => resource_url },
"attributes" => attributes,
"relationships" => {
"gardens" => gardens_as_json_api,
"harvests" => harvests_as_json_api,
"photos" => photos_as_json_api,
"plantings" => plantings_as_json_api,
"seeds" => seeds_as_json_api,
"activities" => activities_as_json_api
} }
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
'login-name': { type: :string },
slug: { type: :string }
}
},
relationships: {
type: :object,
properties: {
gardens: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' },
plantings: { '$ref' => '#/components/schemas/relationship' },
seeds: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let!(:member) { FactoryBot.create(:member) }
run_test!
end
end
end
let(:resource_url) { "http://www.example.com/api/v1/members/#{member.id}" }
path '/api/v1/members/{id}' do
get 'Retrieves a member' do
tags 'Members'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
let(:harvests_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/harvests",
"related" => "#{resource_url}/harvests" } }
end
let(:photos_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/photos",
"related" => "#{resource_url}/photos" } }
end
let(:seeds_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/seeds",
"related" => "#{resource_url}/seeds" } }
end
let(:activities_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/activities",
"related" => "#{resource_url}/activities" } }
end
let(:plantings_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/plantings",
"related" => "#{resource_url}/plantings" } }
end
let(:gardens_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/gardens",
"related" => "#{resource_url}/gardens" } }
end
let(:attributes) do
{
"login-name" => member.login_name,
"slug" => member.slug
}
end
describe '#index' do
before { get '/api/v1/members', params: {}, headers: }
it { expect(subject['data']).to include(member_encoded_as_json_api) }
end
describe '#show' do
before { get "/api/v1/members/#{member.id}", params: {}, headers: }
it { expect(subject['data']['relationships']).to include("gardens" => gardens_as_json_api) }
it { expect(subject['data']['relationships']).to include("plantings" => plantings_as_json_api) }
it { expect(subject['data']['relationships']).to include("seeds" => seeds_as_json_api) }
it { expect(subject['data']['relationships']).to include("harvests" => harvests_as_json_api) }
it { expect(subject['data']['relationships']).to include("photos" => photos_as_json_api) }
it { expect(subject['data']['relationships']).to include("activities" => activities_as_json_api) }
it { expect(subject['data']).to eq(member_encoded_as_json_api) }
end
it '#create' do
expect do
post '/api/v1/members', params: { 'member' => { 'login_name' => 'can i make this' } }, headers:
end.to raise_error ActionController::RoutingError
end
it '#update' do
expect do
post "/api/v1/members/#{member.id}", params: {
'member' => { 'login_name' => 'can i modify this' }
},
headers:
end.to raise_error ActionController::RoutingError
end
it '#delete' do
expect do
delete "/api/v1/members/#{member.id}", params: {}, headers:
end.to raise_error ActionController::RoutingError
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
'login-name': { type: :string },
slug: { type: :string }
}
},
relationships: {
type: :object,
properties: {
gardens: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' },
plantings: { '$ref' => '#/components/schemas/relationship' },
seeds: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:member) { FactoryBot.create(:member) }
let(:id) { member.id }
run_test!
end
end
end
end

View File

@@ -1,93 +1,93 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Photos', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Photos API', type: :request do
path '/api/v1/photos' do
get 'Lists photos' do
tags 'Photos'
produces 'application/vnd.api+json'
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:photo) { FactoryBot.create(:photo) }
let(:photo_encoded_as_json_api) do
{ "id" => photo.id.to_s,
"type" => "photos",
"links" => { "self" => resource_url },
"attributes" => attributes,
"relationships" => {
"owner" => owner_as_json_api,
"plantings" => plantings_as_json_api,
"harvests" => harvests_as_json_api,
"gardens" => gardens_as_json_api
} }
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
'thumbnail-url': { type: :string, format: :uri },
'fullsize-url': { type: :string, format: :uri },
'license-name': { type: :string },
'link-url': { type: :string, format: :uri },
title: { type: :string }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
plantings: { '$ref' => '#/components/schemas/relationship' },
gardens: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let!(:photo) { FactoryBot.create(:photo) }
run_test!
end
end
end
let(:resource_url) { "http://www.example.com/api/v1/photos/#{photo.id}" }
path '/api/v1/photos/{id}' do
get 'Retrieves a photo' do
tags 'Photos'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
let(:owner_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/owner",
"related" => "#{resource_url}/owner" } }
end
let(:harvests_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/harvests",
"related" => "#{resource_url}/harvests" } }
end
let(:gardens_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/gardens",
"related" => "#{resource_url}/gardens" } }
end
let(:plantings_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/plantings",
"related" => "#{resource_url}/plantings" } }
end
let(:attributes) do
{
"thumbnail-url" => photo.thumbnail_url,
"fullsize-url" => photo.fullsize_url,
"link-url" => photo.link_url,
"license-name" => photo.license_name,
"title" => photo.title
}
end
describe '#index' do
before { get '/api/v1/photos', params: {}, headers: }
it { expect(subject['data']).to include(photo_encoded_as_json_api) }
end
describe '#show' do
before { get "/api/v1/photos/#{photo.id}", params: {}, headers: }
it { expect(subject['data']['attributes']).to eq(attributes) }
it { expect(subject['data']['relationships']).to include("plantings" => plantings_as_json_api) }
it { expect(subject['data']['relationships']).to include("harvests" => harvests_as_json_api) }
it { expect(subject['data']['relationships']).to include("owner" => owner_as_json_api) }
it { expect(subject['data']).to eq(photo_encoded_as_json_api) }
end
it '#create' do
expect do
post '/api/v1/photos', params: { 'photo' => { 'name' => 'can i make this' } }, headers:
end.to raise_error ActionController::RoutingError
end
it '#update' do
expect do
post "/api/v1/photos/#{photo.id}", params: { 'photo' => { 'name' => 'can i modify this' } }, headers:
end.to raise_error ActionController::RoutingError
end
it '#delete' do
expect do
delete "/api/v1/photos/#{photo.id}", params: {}, headers:
end.to raise_error ActionController::RoutingError
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
'thumbnail-url': { type: :string, format: :uri },
'fullsize-url': { type: :string, format: :uri },
'license-name': { type: :string },
'link-url': { type: :string, format: :uri },
title: { type: :string }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
plantings: { '$ref' => '#/components/schemas/relationship' },
gardens: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:photo) { FactoryBot.create(:photo) }
let(:id) { photo.id }
run_test!
end
end
end
end

View File

@@ -1,271 +1,301 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Plantings', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Plantings API', type: :request do
path '/api/v1/plantings' do
get 'Lists plantings' do
tags 'Plantings'
produces 'application/vnd.api+json'
parameter name: 'filter[failed]', in: :query, type: :string, required: false
parameter name: 'filter[sunniness]', in: :query, type: :string, required: false
parameter name: 'filter[perennial]', in: :query, type: :string, required: false
parameter name: 'filter[active]', in: :query, type: :string, required: false
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:planting) { FactoryBot.create(:planting) }
let(:planting_encoded_as_json_api) do
{ "id" => planting.id.to_s,
"type" => "plantings",
"links" => { "self" => resource_url },
"attributes" => attributes,
"relationships" => {
"garden" => garden_as_json_api,
"crop" => crop_as_json_api,
"owner" => owner_as_json_api,
"photos" => photos_as_json_api,
"harvests" => harvests_as_json_api
} }
end
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
slug: { type: :string },
'planted-at': { type: :string, format: 'date' },
failed: { type: :boolean },
finished: { type: :boolean },
'finished-at': { type: :string, format: 'date-time', 'x-nullable': true },
quantity: { type: :integer },
description: { type: :string, 'x-nullable': true },
sunniness: { type: :string, 'x-nullable': true },
'planted-from': { type: :string, 'x-nullable': true },
'expected-lifespan': { type: :integer, 'x-nullable': true },
'finish-predicted-at': { type: :string, format: 'date-time', 'x-nullable': true },
'first-harvest-date': { type: :string, format: 'date', 'x-nullable': true },
'last-harvest-date': { type: :string, format: 'date', 'x-nullable': true },
'crop-name': { type: :string },
'crop-slug': { type: :string },
thumbnail: { type: :string, format: :uri, 'x-nullable': true },
location: { type: :string, 'x-nullable': true },
longitude: { type: :number, format: :float, 'x-nullable': true },
latitude: { type: :number, format: :float, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
garden: { '$ref' => '#/components/schemas/relationship' },
crop: { '$ref' => '#/components/schemas/relationship' },
owner: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let(:resource_url) { "http://www.example.com/api/v1/plantings/#{planting.id}" }
let(:harvests_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/harvests",
"related" => "#{resource_url}/harvests" } }
end
let(:photos_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/photos",
"related" => "#{resource_url}/photos" } }
end
let(:owner_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/owner",
"related" => "#{resource_url}/owner" } }
end
let(:crop_as_json_api) do
{ "links" =>
{ "self" =>
"#{resource_url}/relationships/crop",
"related" => "#{resource_url}/crop" } }
end
let(:garden_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/garden",
"related" => "#{resource_url}/garden" } }
end
let(:attributes) do
{
"slug" => planting.slug,
"planted-at" => "2014-07-30",
"failed" => false,
"finished-at" => nil,
"finished" => false,
"quantity" => 33,
"description" => planting.description,
"crop-name" => planting.crop.name,
"crop-slug" => planting.crop.slug,
"sunniness" => nil,
"planted-from" => nil,
"expected-lifespan" => nil,
"finish-predicted-at" => nil,
"percentage-grown" => nil,
"first-harvest-date" => nil,
"last-harvest-date" => nil,
"thumbnail" => nil,
"location" => planting.garden.location,
"longitude" => planting.garden.longitude,
"latitude" => planting.garden.latitude
}
end
it '#index' do
get('/api/v1/plantings', params: {}, headers:)
expect(subject['data'][0].keys).to eq(planting_encoded_as_json_api.keys)
expect(subject['data'][0]['attributes'].keys.sort!).to eq(planting_encoded_as_json_api['attributes'].keys.sort!)
expect(subject['data']).to include(planting_encoded_as_json_api)
end
it '#show' do
get("/api/v1/plantings/#{planting.id}", params: {}, headers:)
expect(subject['data']['relationships']).to include("garden" => garden_as_json_api)
expect(subject['data']['relationships']).to include("crop" => crop_as_json_api)
expect(subject['data']['relationships']).to include("owner" => owner_as_json_api)
expect(subject['data']['relationships']).to include("harvests" => harvests_as_json_api)
expect(subject['data']['relationships']).to include("photos" => photos_as_json_api)
expect(subject['data']).to eq(planting_encoded_as_json_api)
end
describe '#create' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
let!(:planting) { FactoryBot.create(:planting) }
run_test!
end
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:crop) { create(:crop) }
let(:garden) { create(:garden, owner: member) }
let(:planting_params) do
{
data: {
type: 'plantings',
attributes: {
description: 'My API plantings'
},
relationships: {
crop: { data: { type: 'crops', id: crop.id } },
garden: { data: { type: 'gardens', id: garden.id } }
post 'Creates a planting' do
tags 'Plantings'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :planting, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string }
}
},
relationships: {
type: :object,
properties: {
crop: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string }
},
required: ['type', 'id']
}
},
required: ['data']
},
garden: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string }
},
required: ['type', 'id']
}
},
required: ['data']
}
},
required: ['crop', 'garden']
}
},
required: ['type', 'attributes', 'relationships']
}
}
}.to_json
end
},
required: ['data']
}
it 'returns 401 Unauthorized without a token' do
post '/api/v1/plantings', params: planting_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
response '201', 'created' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:crop) { create(:crop) }
let(:garden) { create(:garden, owner: member) }
let(:planting) { { data: { type: 'plantings', attributes: { description: 'My API planting' }, relationships: { crop: { data: { type: 'crops', id: crop.id } }, garden: { data: { type: 'gardens', id: garden.id } } } } } }
run_test!
end
it 'returns 201 Created with a valid token' do
post '/api/v1/plantings', params: planting_params, headers: auth_headers
expect(response).to have_http_status(:created)
expect(member.plantings.count).to eq(1)
end
end
describe '#update' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:planting) { create(:planting, owner: member) }
let(:other_member_planting) { create(:planting) }
let(:update_params) do
{
data: {
type: 'plantings',
id: planting.id.to_s,
attributes: {
description: 'An updated planting'
}
}
}.to_json
end
it 'returns 401 Unauthorized without a token' do
patch "/api/v1/plantings/#{planting.id}", params: update_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
it 'returns 200 OK with a valid token for own planting' do
patch "/api/v1/plantings/#{planting.id}", params: update_params, headers: auth_headers
expect(response).to have_http_status(:ok)
expect(planting.reload.description).to eq('An updated planting')
end
it 'returns 403 Forbidden for another member\'s planting' do
update_params_for_other = {
data: {
type: 'plantings',
id: other_member_planting.id.to_s,
attributes: {
description: 'An updated planting'
}
}
}.to_json
patch "/api/v1/plantings/#{other_member_planting.id}", params: update_params_for_other, headers: auth_headers
expect(response).to have_http_status(:forbidden)
end
end
describe '#delete' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let!(:planting) { create(:planting, owner: member) }
let(:other_member_planting) { create(:planting) }
it 'returns 401 Unauthorized without a token' do
delete "/api/v1/plantings/#{planting.id}", headers: headers
expect(response).to have_http_status(:unauthorized)
end
it 'returns 204 No Content with a valid token for own planting' do
delete "/api/v1/plantings/#{planting.id}", headers: auth_headers
expect(response).to have_http_status(:no_content)
expect(Garden.find_by(id: planting.id)).to be_nil
end
it 'returns 403 Forbidden for another member\'s planting' do
delete "/api/v1/plantings/#{other_member_planting.id}", headers: auth_headers
expect(response).to have_http_status(:forbidden)
end
end
describe "by member/owner" do
before :each do
@member1 = planting.owner
@planting2 = create(:planting, owner: create(:owner))
@member2 = @planting2.owner
end
describe "#show" do
it "locates the correct member" do
get "/api/v1/plantings?filter[owner-id]=#{@member1.id}"
expect(JSON.parse(response.body)['data'][0]['id']).to eq(planting.id.to_s)
get "/api/v1/plantings?filter[owner-id]=#{@member2.id}"
expect(JSON.parse(response.body)['data'][0]['id']).to eq(@planting2.id.to_s)
pending "The below should be identical to the above, but aren't."
get "/api/v1/members/#{@member1.id}/plantings"
expect(JSON.parse(response.body)['data'][0]['id']).to eq(planting.id.to_s)
get "/api/v1/members/#{@member2.id}/plantings"
expect(JSON.parse(response.body)['data'][0]['id']).to eq(@planting2.id.to_s)
response '401', 'unauthorized' do
let(:crop) { create(:crop) }
let(:garden) { create(:garden) }
let(:planting) { { data: { type: 'plantings', attributes: { description: 'My API planting' }, relationships: { crop: { data: { type: 'crops', id: crop.id } }, garden: { data: { type: 'gardens', id: garden.id } } } } } }
run_test!
end
end
end
context 'filtering' do
let!(:planting2) { FactoryBot.create(:planting, failed: true, sunniness: 'shade') }
let!(:perennial_planting) { FactoryBot.create(:planting, crop: FactoryBot.create(:crop, perennial: true)) }
path '/api/v1/plantings/{id}' do
get 'Retrieves a planting' do
tags 'Plantings'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
it 'filters by failed' do
get('/api/v1/plantings?filter[failed]=true', params: {}, headers:)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(planting2.id.to_s)
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
slug: { type: :string },
'planted-at': { type: :string, format: 'date' },
failed: { type: :boolean },
finished: { type: :boolean },
'finished-at': { type: :string, format: 'date-time', 'x-nullable': true },
quantity: { type: :integer },
description: { type: :string, 'x-nullable': true },
sunniness: { type: :string, 'x-nullable': true },
'planted-from': { type: :string, 'x-nullable': true },
'expected-lifespan': { type: :integer, 'x-nullable': true },
'finish-predicted-at': { type: :string, format: 'date-time', 'x-nullable': true },
'first-harvest-date': { type: :string, format: 'date', 'x-nullable': true },
'last-harvest-date': { type: :string, format: 'date', 'x-nullable': true },
'crop-name': { type: :string },
'crop-slug': { type: :string },
thumbnail: { type: :string, format: :uri, 'x-nullable': true },
location: { type: :string, 'x-nullable': true },
longitude: { type: :number, format: :float, 'x-nullable': true },
latitude: { type: :number, format: :float, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
garden: { '$ref' => '#/components/schemas/relationship' },
crop: { '$ref' => '#/components/schemas/relationship' },
owner: { '$ref' => '#/components/schemas/relationship' },
photos: { '$ref' => '#/components/schemas/relationship' },
harvests: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:planting) { FactoryBot.create(:planting) }
let(:id) { planting.id }
run_test!
end
end
it 'filters by sunniness' do
get('/api/v1/plantings?filter[sunniness]=shade', params: {}, headers:)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(planting2.id.to_s)
patch 'Updates a planting' do
tags 'Plantings'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
parameter name: :planting, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string }
}
}
},
required: ['type', 'id']
}
},
required: ['data']
}
response '200', 'ok' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:planting_to_update) { create(:planting, owner: member) }
let(:id) { planting_to_update.id }
let(:planting) { { data: { type: 'plantings', id: id, attributes: { description: 'An updated planting' } } } }
run_test!
end
response '401', 'unauthorized' do
let(:planting_to_update) { create(:planting) }
let(:id) { planting_to_update.id }
let(:planting) { { data: { type: 'plantings', id: id, attributes: { description: 'An updated planting' } } } }
run_test!
end
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_planting) { create(:planting) }
let(:id) { other_member_planting.id }
let(:planting) { { data: { type: 'plantings', id: id, attributes: { description: 'An updated planting' } } } }
run_test!
end
end
it 'filters by perennial' do
get('/api/v1/plantings?filter[perennial]=true', params: {}, headers:)
delete 'Deletes a planting' do
tags 'Plantings'
parameter name: :id, in: :path, type: :string
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(perennial_planting.id.to_s)
end
response '204', 'no content' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:planting_to_delete) { create(:planting, owner: member) }
let(:id) { planting_to_delete.id }
run_test!
end
it 'filters by active' do
get('/api/v1/plantings?filter[active]=true', params: {}, headers:)
response '401', 'unauthorized' do
let(:planting_to_delete) { create(:planting) }
let(:id) { planting_to_delete.id }
run_test!
end
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(2)
expect(subject['data'][0]['id']).to eq(planting.id.to_s)
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_planting) { create(:planting) }
let(:id) { other_member_planting.id }
run_test!
end
end
end
end

View File

@@ -1,230 +1,261 @@
# frozen_string_literal: true
require 'rails_helper'
require 'swagger_helper'
RSpec.describe 'Seeds', type: :request do
subject { JSON.parse response.body }
RSpec.describe 'Seeds API', type: :request do
path '/api/v1/seeds' do
get 'Lists seeds' do
tags 'Seeds'
produces 'application/vnd.api+json'
parameter name: 'filter[crop]', in: :query, type: :string, required: false
parameter name: 'filter[tradable_to]', in: :query, type: :string, required: false
parameter name: 'filter[organic]', in: :query, type: :string, required: false
parameter name: 'filter[gmo]', in: :query, type: :string, required: false
parameter name: 'filter[heirloom]', in: :query, type: :string, required: false
parameter name: 'filter[owner_id]', in: :query, type: :string, required: false
let(:headers) { { 'Accept' => 'application/vnd.api+json' } }
let!(:seed) { FactoryBot.create(:seed) }
let(:seed_encoded_as_json_api) do
{ "id" => seed.id.to_s,
"type" => "seeds",
"links" => { "self" => resource_url },
"attributes" => attributes,
"relationships" => {
"owner" => owner_as_json_api,
"crop" => crop_as_json_api
} }
end
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string, 'x-nullable': true },
quantity: { type: :integer, 'x-nullable': true },
'plant-before': { type: :string, format: 'date', 'x-nullable': true },
'tradable-to': { type: :string, 'x-nullable': true },
'days-until-maturity-min': { type: :integer, 'x-nullable': true },
'days-until-maturity-max': { type: :integer, 'x-nullable': true },
organic: { type: :string, 'x-nullable': true },
gmo: { type: :string, 'x-nullable': true },
heirloom: { type: :string, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
crop: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
}
let(:resource_url) { "http://www.example.com/api/v1/seeds/#{seed.id}" }
let(:owner_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/owner",
"related" => "#{resource_url}/owner" } }
end
let(:crop_as_json_api) do
{ "links" =>
{ "self" => "#{resource_url}/relationships/crop",
"related" => "#{resource_url}/crop" } }
end
let(:attributes) do
{
"description" => seed.description,
"quantity" => seed.quantity,
"plant-before" => "2013-07-15",
"tradable-to" => seed.tradable_to,
"days-until-maturity-min" => seed.days_until_maturity_min,
"days-until-maturity-max" => seed.days_until_maturity_max,
"organic" => seed.organic,
"gmo" => seed.gmo,
"heirloom" => seed.heirloom
}
end
describe '#index' do
before { get '/api/v1/seeds', params: {}, headers: }
it { expect(subject['data']).to include(seed_encoded_as_json_api) }
end
describe '#show' do
before { get "/api/v1/seeds/#{seed.id}", params: {}, headers: }
it { expect(subject['data']['attributes']).to eq(attributes) }
it { expect(subject['data']['relationships']).to include("owner" => owner_as_json_api) }
it { expect(subject['data']['relationships']).to include("crop" => crop_as_json_api) }
it { expect(subject['data']).to eq(seed_encoded_as_json_api) }
end
describe '#create' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
let!(:seed) { FactoryBot.create(:seed) }
run_test!
end
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:crop) { create(:crop) }
let(:seed_params) do
{
data: {
type: 'seeds',
attributes: {
description: 'My API seeds'
},
relationships: {
crop: { data: { type: 'crops', id: crop.id } }
post 'Creates a seed' do
tags 'Seeds'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :seed, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string }
}
},
relationships: {
type: :object,
properties: {
crop: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string }
},
required: ['type', 'id']
}
},
required: ['data']
}
},
required: ['crop']
}
},
required: ['type', 'attributes', 'relationships']
}
}
}.to_json
end
},
required: ['data']
}
it 'returns 401 Unauthorized without a token' do
post '/api/v1/seeds', params: seed_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
response '201', 'created' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:crop) { create(:crop) }
let(:seed) { { data: { type: 'seeds', attributes: { description: 'My API seed' }, relationships: { crop: { data: { type: 'crops', id: crop.id } } } } } }
run_test!
end
it 'returns 201 Created with a valid token' do
post '/api/v1/seeds', params: seed_params, headers: auth_headers
expect(response).to have_http_status(:created)
expect(member.seeds.count).to eq(1)
response '401', 'unauthorized' do
let(:crop) { create(:crop) }
let(:seed) { { data: { type: 'seeds', attributes: { description: 'My API seed' }, relationships: { crop: { data: { type: 'crops', id: crop.id } } } } } }
run_test!
end
end
end
describe '#update' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
path '/api/v1/seeds/{id}' do
get 'Retrieves a seed' do
tags 'Seeds'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
response '200', 'successful' do
schema type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string, 'x-nullable': true },
quantity: { type: :integer, 'x-nullable': true },
'plant-before': { type: :string, format: 'date', 'x-nullable': true },
'tradable-to': { type: :string, 'x-nullable': true },
'days-until-maturity-min': { type: :integer, 'x-nullable': true },
'days-until-maturity-max': { type: :integer, 'x-nullable': true },
organic: { type: :string, 'x-nullable': true },
gmo: { type: :string, 'x-nullable': true },
heirloom: { type: :string, 'x-nullable': true }
}
},
relationships: {
type: :object,
properties: {
owner: { '$ref' => '#/components/schemas/relationship' },
crop: { '$ref' => '#/components/schemas/relationship' }
}
}
}
}
}
let(:seed) { FactoryBot.create(:seed) }
let(:id) { seed.id }
run_test!
end
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:crop) { create(:crop) }
let(:seed) { create(:seed, owner: member, crop: crop) }
let(:other_member_seed) { create(:seed) }
let(:update_params) do
{
data: {
type: 'seeds',
id: seed.id.to_s,
attributes: {
description: 'An updated seed'
patch 'Updates a seed' do
tags 'Seeds'
consumes 'application/vnd.api+json'
produces 'application/vnd.api+json'
parameter name: :id, in: :path, type: :string
parameter name: :seed, in: :body, schema: {
type: :object,
properties: {
data: {
type: :object,
properties: {
type: { type: :string },
id: { type: :string },
attributes: {
type: :object,
properties: {
description: { type: :string }
}
}
},
required: ['type', 'id']
}
}
}.to_json
},
required: ['data']
}
response '200', 'ok' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:seed_to_update) { create(:seed, owner: member) }
let(:id) { seed_to_update.id }
let(:seed) { { data: { type: 'seeds', id: id, attributes: { description: 'An updated seed' } } } }
run_test!
end
response '401', 'unauthorized' do
let(:seed_to_update) { create(:seed) }
let(:id) { seed_to_update.id }
let(:seed) { { data: { type: 'seeds', id: id, attributes: { description: 'An updated seed' } } } }
run_test!
end
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_seed) { create(:seed) }
let(:id) { other_member_seed.id }
let(:seed) { { data: { type: 'seeds', id: id, attributes: { description: 'An updated seed' } } } }
run_test!
end
end
it 'returns 401 Unauthorized without a token' do
patch "/api/v1/seeds/#{seed.id}", params: update_params, headers: headers
expect(response).to have_http_status(:unauthorized)
end
delete 'Deletes a seed' do
tags 'Seeds'
parameter name: :id, in: :path, type: :string
it 'returns 200 OK with a valid token for own seed' do
patch "/api/v1/seeds/#{seed.id}", params: update_params, headers: auth_headers
expect(response).to have_http_status(:ok)
expect(seed.reload.description).to eq('An updated seed')
end
response '204', 'no content' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:seed_to_delete) { create(:seed, owner: member) }
let(:id) { seed_to_delete.id }
run_test!
end
it 'returns 403 Forbidden for another member\'s seed' do
update_params_for_other = {
data: {
type: 'seeds',
id: other_member_seed.id.to_s,
attributes: {
description: 'An updated seed'
}
}
}.to_json
patch "/api/v1/seeds/#{other_member_seed.id}", params: update_params_for_other, headers: auth_headers
expect(response).to have_http_status(:forbidden)
end
end
response '401', 'unauthorized' do
let(:seed_to_delete) { create(:seed) }
let(:id) { seed_to_delete.id }
run_test!
end
describe '#delete' do
let!(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:headers) { { 'Accept' => 'application/vnd.api+json', 'Content-Type' => 'application/vnd.api+json' } }
let(:auth_headers) { headers.merge('Authorization' => "Bearer #{token}") }
let(:crop) { create(:crop) }
let!(:seed) { create(:seed, owner: member, crop: crop) }
let(:other_member_seed) { create(:seed) }
it 'returns 401 Unauthorized without a token' do
delete "/api/v1/seeds/#{seed.id}", headers: headers
expect(response).to have_http_status(:unauthorized)
end
it 'returns 204 No Content with a valid token for own seed' do
delete "/api/v1/seeds/#{seed.id}", headers: auth_headers
expect(response).to have_http_status(:no_content)
expect(Seed.find_by(id: seed.id)).to be_nil
end
it 'returns 403 Forbidden for another member\'s seed' do
delete "/api/v1/seeds/#{other_member_seed.id}", headers: auth_headers
expect(response).to have_http_status(:forbidden)
end
end
context 'filtering' do
let!(:seed2) do
FactoryBot.create(:seed, tradable_to: 'nationally', organic: 'certified organic', gmo: 'certified GMO-free', heirloom: 'heirloom')
end
it 'filters by crop' do
get("/api/v1/seeds?filter[crop]=#{seed2.crop.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(seed2.id.to_s)
end
it 'filters by tradable_to' do
get('/api/v1/seeds?filter[tradable_to]=nationally', params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(seed2.id.to_s)
end
it 'filters by organic' do
get('/api/v1/seeds?filter[organic]=certified organic', params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(seed2.id.to_s)
end
it 'filters by gmo' do
get('/api/v1/seeds?filter[gmo]=certified GMO-free', params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(seed2.id.to_s)
end
it 'filters by heirloom' do
get('/api/v1/seeds?filter[heirloom]=heirloom', params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(seed2.id.to_s)
end
it 'filters by owner' do
get("/api/v1/seeds?filter[owner_id]=#{seed2.owner.id}", params: {}, headers:)
expect(response).to have_http_status(:ok)
expect(subject['data'].size).to eq(1)
expect(subject['data'][0]['id']).to eq(seed2.id.to_s)
response '403', 'forbidden' do
let(:member) { create(:member) }
let(:token) do
member.regenerate_api_token
member.api_token.token
end
let(:Authorization) { "Token token=#{token}" }
let(:other_member_seed) { create(:seed) }
let(:id) { other_member_seed.id }
run_test!
end
end
end
end

View File

@@ -15,13 +15,29 @@ RSpec.configure do |config|
# document below. You can override this behavior by adding a swagger_doc tag to the
# the root example_group in your specs, e.g. describe '...', swagger_doc: 'v2/swagger.json'
config.swagger_docs = {
'v1/swagger.yaml' => {
'v1/swagger.json' => {
openapi: '3.0.1',
info: {
title: 'API V1',
version: 'v1'
},
paths: {}
paths: {},
components: {
schemas: {
relationship: {
type: :object,
properties: {
data: {
type: :object,
properties: {
id: { type: :string },
type: { type: :string }
}
}
}
}
}
}
}
}
@@ -29,5 +45,5 @@ RSpec.configure do |config|
# The swagger_docs configuration option has the filename including format in
# the key, this may want to be changed to avoid putting yaml in json files.
# Defaults to json. Accepts ':json' and ':yaml'.
config.swagger_format = :yaml
config.swagger_format = :json
end

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1006,9 +1006,9 @@ js-tokens@^4.0.0:
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.0:
version "3.14.2"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0"
integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==
version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"