Compare commits

...

807 Commits

Author SHA1 Message Date
Daniel O'Connor
3127f45d0f Merge pull request #4578 from Growstuff/member-inactive-delete
Delete inactive members with no activity in 3 years
2026-04-27 02:15:17 +09:30
Daniel O'Connor
15571940f5 Add fragment cache for crop partials (#4577) 2026-04-27 01:48:35 +09:30
Daniel O'Connor
8e7dd25e98 Add rake task to cleanup inactive members (#4574)
* Add members:cleanup_inactive rake task

This task identifies and deletes members who have not logged in for over
24 months and have no gardens, plantings, or other activity (posts,
comments, seeds, harvests, etc).

Includes support for DRY_RUN=true to preview deletions.
Added tests in spec/tasks/members_spec.rb.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>

* Refactor activity check to Member#has_activity? and update rake task

- Added `Member#has_activity?` to encapsulate the check for gardens, plantings, and other activity.
- Updated `members:cleanup_inactive` rake task to use `Member#has_activity?`.
- Maintained `DRY_RUN` support and existing tests.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>

* Apply suggestion from @CloCkWeRX

* Apply suggestions from code review

Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-04-27 01:40:54 +09:30
Daniel O'Connor
2723599f27 Add fragment cache for crop partials 2026-04-26 16:07:29 +00:00
Daniel O'Connor
98c8bdc0bb Merge pull request #4564 from Growstuff/memory-optimization-2149092598558110155
Memory usage optimization
2026-04-27 00:37:51 +09:30
Daniel O'Connor
573daa8c8a Swap to modern expect style (#4571) 2026-04-26 22:58:04 +09:30
Daniel O'Connor
5174b1236e Merge pull request #4567 from Growstuff/memory-optimisation-3
Members - Nearest To - Memory improvements
2026-04-26 22:57:01 +09:30
Daniel O'Connor
5a349f8f1b Swap to modern expect style 2026-04-26 13:21:15 +00:00
Daniel O'Connor
0d850804cf Merge pull request #4570 from Growstuff/rubocop-tweaks
Rubocop fixes
2026-04-26 22:47:46 +09:30
Daniel O'Connor
161a934811 Merge pull request #4569 from Growstuff/plant_part_spec
Rubocop: Fix no expectation errors
2026-04-26 22:44:49 +09:30
Daniel O'Connor
8cfef5ce1a Rubocop fixes 2026-04-26 13:09:00 +00:00
Daniel O'Connor
6dacb0af74 Swap to modern expect style 2026-04-26 13:03:46 +00:00
Daniel O'Connor
7e2d36f99a Swap to modern expect style 2026-04-26 12:55:58 +00:00
Daniel O'Connor
3406d9e7bc Merge pull request #4568 from Growstuff/memory-usage-4
Posts - memory usage
2026-04-26 19:05:56 +09:30
Daniel O'Connor
7a91746f73 Update .dockerignore to remove .ruby-version
Remove .ruby-version from .dockerignore
2026-04-26 19:05:41 +09:30
Daniel O'Connor
209973e72b Memory usage 2026-04-26 09:26:52 +00:00
Daniel O'Connor
4848302eab Merge pull request #4565 from Growstuff/memory-usage-1
Admin - Members - optimise memory usage
2026-04-26 18:45:12 +09:30
Daniel O'Connor
920a28a144 Merge pull request #4566 from Growstuff/memory-usage-2
GBIF - optimise memory usage
2026-04-26 18:44:58 +09:30
Daniel O'Connor
fff7a14635 GBIF - optimise memory usage 2026-04-26 09:03:45 +00:00
Daniel O'Connor
0131c9b531 Admin - Members - optimise memory usage 2026-04-26 09:01:18 +00:00
Daniel O'Connor
1b091b2f6f Merge pull request #4453 from Growstuff/add-mark-as-failed-to-crop-view-13853484652230549508
Add "mark as failed" action to crop view
2026-04-26 14:44:09 +09:30
google-labs-jules[bot]
3b60e8f974 Implement blocking feature (#4199)
* Implement blocking feature

This commit introduces a blocking feature that allows members to block other members.

A blocked member is prevented from:
- following the blocker
- sending private messages to the blocker
- replying to the blocker's posts
- liking the blocker's content

The implementation includes:
- A new `Block` model and a corresponding database table.
- Updates to the `Member` model to include associations for blocks.
- A new `BlocksController` to handle blocking and unblocking actions.
- New routes for the `BlocksController`.
- UI changes to add block/unblock buttons to the member profile page.
- Validations in the `Follow`, `Comment`, and `Like` models to enforce the blocking rules.
- A check in the `MessagesController` to prevent sending messages to a member who has blocked the sender.
- A callback in the `Block` model to destroy the follow relationship when a block is created.
- New feature and model specs to test the blocking functionality.

* Implement blocking feature and fix failing tests

This commit introduces a blocking feature that allows members to block other members.

A blocked member is prevented from:
- following the blocker
- sending private messages to the blocker
- replying to the blocker's posts
- liking the blocker's content

The implementation includes:
- A new `Block` model and a corresponding database table.
- Updates to the `Member` model to include associations for blocks.
- A new `BlocksController` to handle blocking and unblocking actions.
- New routes for the `BlocksController`.
- UI changes to add block/unblock buttons to the member profile page.
- Validations in the `Follow`, `Comment`, and `Like` models to enforce the blocking rules.
- A check in the `MessagesController` to prevent sending messages to a member who has blocked the sender.
- A callback in the `Block` model to destroy the follow relationship when a block is created.
- New feature and model specs to test the blocking functionality.

This commit also fixes a failing test in the blocking feature. The error was caused by the validation being called even when the `member` association was `nil`. A guard has been added to the validation methods in the `Like`, `Follow`, and `Comment` models to prevent this from happening.

* Generate schema

* Fix tests

* Add permissions

* Define Block permissions in Ability model

The feature specs for member blocking were failing because the "Block"
link was not being rendered on member profiles. This was due to the
lack of explicit create and destroy permissions for the Block resource
in the Ability model, which is used by CanCanCan to authorize actions
and by the view to conditionally show links.

This change adds the necessary permissions to `member_abilities`:
- Allows members to create blocks (except for blocking themselves).
- Allows members to destroy blocks where they are the blocker.

These rules ensure that the "Block" and "Unblock" links are correctly
rendered and authorized for signed-in members.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>

* Comment out specs for now

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
2026-04-26 14:22:32 +09:30
google-labs-jules[bot]
7ed3a97263 Improve test coverage of ability_spec (#4283)
* Improve test coverage of ability_spec

* Fix specs

* Rubocop

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
Co-authored-by: Daniel O'Connor <365751+CloCkWeRX@users.noreply.github.com>
2026-04-26 14:21:36 +09:30
Daniel O'Connor
2aa697a6d6 Add comprehensive test coverage for forums (#4561)
* Add comprehensive test coverage for forums

- Added `spec/controllers/forums_controller_spec.rb` to test all CRUD actions and authorization for guest, member, and admin roles.
- Added `spec/features/forums_spec.rb` to cover user-facing features such as browsing forums and creating posts from within a forum.
- Updated `spec/requests/forums_spec.rb` to cover basic request flow and JSON response formats.

Note: Tests were verified for content and logic but execution in the sandbox environment was blocked by missing infrastructure (PostgreSQL and Elasticsearch).

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>

* Fix specs

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-04-26 14:18:28 +09:30
Daniel O'Connor
ed87d23ece Merge pull request #4560 from Growstuff/fix-i18n-locale-texts-16171345716630423189
Fix Rails/I18nLocaleTexts RuboCop errors
2026-04-26 13:36:10 +09:30
Daniel O'Connor
c20160e3db Merge pull request #4559 from Growstuff/update-crop-wrangling-links-4812587945321495224
Update crop wrangling guide links to GitHub wiki
2026-04-26 12:40:09 +09:30
google-labs-jules[bot]
700cb76e3a Update crop wrangling guide links to GitHub wiki
Updated links to the crop wrangling guide in the scientific names and
alternate names forms to point to the new GitHub wiki location.
Verified that other occurrences in the codebase already use the new
URL.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
2026-04-26 01:46:35 +00:00
Daniel O'Connor
5f834c475f Merge pull request #4557 from Growstuff/fix-rspec-expect-in-hook-16350019958417127399
Fix RSpec/ExpectInHook issues
2026-04-26 04:25:16 +09:30
google-labs-jules[bot]
6c7903c2a5 Fix RSpec/ExpectInHook offenses
- Move expectations from `before` hooks to `it` blocks.
- Ensure controller actions are called after expectations are set in controller specs.
- Replace synchronization expectations in hooks with Capybara `find` calls.
- Remove RSpec/ExpectInHook from .rubocop_todo.yml.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
2026-04-25 18:39:43 +00:00
Daniel O'Connor
dfa963cd65 Rubocop: RSpec/EmptyExampleGroup (#4554)
* Rubocop: RSpec/EmptyExampleGroup

* Undo renaming

* Apply suggestion from @CloCkWeRX

* Apply suggestion from @CloCkWeRX
2026-04-26 03:18:50 +09:30
Daniel O'Connor
163289e853 Fix RSpec/IndexedLet RuboCop issues in spec files (#4556)
* Fix RSpec/IndexedLet RuboCop issues in spec files

Replace indexed let variable names with descriptive names across 11 spec files.
This improves readability and complies with the RSpec/IndexedLet rule.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>

* Rubocop

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-04-26 03:10:03 +09:30
Daniel O'Connor
2001b355c4 Add Docker and CI Support (#4461)
* Add Docker, Docker Compose, and GitHub Actions CI support

- Added a production-ready `Dockerfile` based on Ruby 3.3.8-bullseye.
- Added `entrypoint.sh` to handle Rails server PID cleanup.
- Added `.dockerignore` to optimize build context.
- Added `docker-compose.yml` for local orchestration of Rails, PostgreSQL 17, and Elasticsearch 7.4.0.
- Added GitHub Actions workflow in `.github/workflows/docker-build-push.yml` to build and push the image to GHCR on pushes to the `dev` branch.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>

* Swap to 3.4.8

* Node 22

* Apply suggestion from @CloCkWeRX

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-04-26 03:07:31 +09:30
Daniel O'Connor
6a0b09b047 Merge pull request #4555 from Growstuff/remove-old-compass-rails
Remove old compass rails
2026-04-26 03:00:37 +09:30
Daniel O'Connor
4b7e0cf5d7 Merge pull request #4553 from Growstuff/RSpec/EmptyLineAfterExample
Rubocop: RSpec/EmptyLineAfterExample
2026-04-26 02:37:58 +09:30
Daniel O'Connor
a3af82d935 Merge pull request #4552 from Growstuff/Lint/SymbolConversion
Rubocop: Lint/SymbolConversion
2026-04-26 02:37:48 +09:30
Daniel O'Connor
051509b59f Merge pull request #4551 from Growstuff/Style/PercentLiteralDelimiters
Rubocop: Style/PercentLiteralDelimiters
2026-04-26 02:25:43 +09:30
Daniel O'Connor
a133eddf21 Rubocop: RSpec/EmptyLineAfterExample 2026-04-25 16:52:34 +00:00
Daniel O'Connor
0577c73833 Rubocop: Lint/SymbolConversion 2026-04-25 16:48:31 +00:00
Daniel O'Connor
7522d992b4 Rubocop: Style/PercentLiteralDelimiters 2026-04-25 16:46:15 +00:00
Daniel O'Connor
83de2fe889 Regenerate 2026-04-25 16:45:00 +00:00
Daniel O'Connor
bbe75df0ad Merge pull request #4550 from Growstuff/Style/FrozenStringLiteralComment
Rubocop: Style/FrozenStringLiteralComment
2026-04-24 08:41:23 +09:30
Daniel O'Connor
279cc88162 Update growstuff_markdown_spec.rb 2026-04-24 00:15:18 +09:30
Daniel O'Connor
fe4dd5c185 Merge pull request #4549 from Growstuff/Rails/WhereMissing
Rubocop: Rails/WhereMissing
2026-04-24 00:13:37 +09:30
Daniel O'Connor
d625eb2dbd Rubocop: Style/FrozenStringLiteralComment 2026-04-23 14:30:02 +00:00
Daniel O'Connor
2019d0e952 Rubocop: Rails/WhereMissing 2026-04-23 14:27:10 +00:00
Daniel O'Connor
e7659a75a4 Merge pull request #4548 from Growstuff/RSpecRails/HaveHttpStatus
Rubocop: RSpecRails/HaveHttpStatus
2026-04-23 23:52:40 +09:30
Daniel O'Connor
4a66bdc9fe Merge pull request #4546 from Growstuff/Rails/RedundantActiveRecordAllMethod
Rubocop: Rails/RedundantActiveRecordAllMethod
2026-04-23 23:46:39 +09:30
Daniel O'Connor
8de6b083f9 Rubocop: RSpecRails/HaveHttpStatus 2026-04-23 14:13:47 +00:00
Daniel O'Connor
accab7f84c Merge pull request #4545 from Growstuff/RSpecRails/InferredSpecType
Rubocop: RSpecRails/InferredSpecType
2026-04-23 23:29:17 +09:30
Daniel O'Connor
3f6dd59dfa Rubocop: Rails/RedundantActiveRecordAllMethod 2026-04-23 13:48:17 +00:00
Daniel O'Connor
0a71b44dea Merge pull request #4542 from Growstuff/RSpec/ContextMethod
Rubocop: RSpec/ContextMethod
2026-04-23 23:10:33 +09:30
Daniel O'Connor
ba75afb3f5 Rubocop: RSpecRails/InferredSpecType 2026-04-23 13:39:46 +00:00
Daniel O'Connor
aa1c9ceb05 Merge pull request #4543 from Growstuff/RSpec/ExpectChange
Rubocop: RSpec/ExpectChange
2026-04-23 23:02:03 +09:30
Daniel O'Connor
ea5f93f929 Merge pull request #4541 from Growstuff/Lint/EmptyBlock
Rubocop: Lint/EmptyBlock
2026-04-23 22:53:40 +09:30
Daniel O'Connor
6f59635ca7 Rubocop: RSpec/ExpectChange 2026-04-23 13:23:14 +00:00
Daniel O'Connor
6736ae3142 Rubocop: RSpec/ContextMethod 2026-04-23 13:20:47 +00:00
Daniel O'Connor
8d8ee7069c Merge pull request #4540 from Growstuff/Bundler/OrderedGems
Rubocop: Bundler/OrderedGems
2026-04-23 22:46:10 +09:30
Daniel O'Connor
5d112e9134 Rubocop: Capybara/RSpec/HaveSelector (#4539)
* Rubocop: Capybara/RSpec/HaveSelector

* Rubocop: Capybara/RSpec/HaveSelector
2026-04-23 22:45:58 +09:30
Daniel O'Connor
6ba4f39b4a Rubocop: Lint/EmptyBlock 2026-04-23 13:14:39 +00:00
Daniel O'Connor
a38d99ed4a Rubocop: Bundler/OrderedGems 2026-04-23 13:07:38 +00:00
Daniel O'Connor
f1acb35520 Merge pull request #4537 from Growstuff/FactoryBot/SyntaxMethods
Rubocop: FactoryBot/SyntaxMethods
2026-04-23 22:29:24 +09:30
Daniel O'Connor
267560aff1 Merge pull request #4494 from Growstuff/dependabot/bundler/puma-8.0.0
Bump puma from 7.2.0 to 8.0.0
2026-04-23 22:26:31 +09:30
dependabot[bot]
e862a5c5b8 Bump puma from 7.2.0 to 8.0.0
Bumps [puma](https://github.com/puma/puma) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/main/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.2.0...v8.0.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 12:47:21 +00:00
Daniel O'Connor
c0edfb9eed Merge pull request #4536 from Growstuff/Capybara/NegationMatcher
Rubocop: Capybara/NegationMatcher
2026-04-23 22:15:53 +09:30
Daniel O'Connor
a8d0c6e32e Rubocop: Layout/TrailingWhitespace (#4535) 2026-04-23 22:15:42 +09:30
Daniel O'Connor
f381ba29cc Merge pull request #4534 from Growstuff/Layout/HeredocIndentation
Rubocop: Layout/HeredocIndentation
2026-04-23 22:07:41 +09:30
Daniel O'Connor
c1f171b09e Rubocop: Capybara/NegationMatcher 2026-04-23 12:30:06 +00:00
Daniel O'Connor
b9dcd95c00 Rubocop: Layout/TrailingWhitespace 2026-04-23 12:27:06 +00:00
Daniel O'Connor
400db178e4 Merge pull request #4533 from Growstuff/Rails/RedirectBackOrTo
Rubocop: Rails/RedirectBackOrTo
2026-04-23 21:54:19 +09:30
Daniel O'Connor
aecde837cc Merge pull request #4459 from Growstuff/dependabot/github_actions/actions/upload-artifact-7
Bump actions/upload-artifact from 5 to 7
2026-04-23 21:52:13 +09:30
Daniel O'Connor
316351fb1c Merge pull request #4532 from Growstuff/Layout/IndentationWidth
Rubocop: Layout/IndentationWidth
2026-04-23 21:51:15 +09:30
Daniel O'Connor
34ce4e216f Merge pull request #4531 from Growstuff/EmptyLinesAroundClassBody
Rubocop: Layout/EmptyLinesAroundClassBody
2026-04-23 21:49:49 +09:30
Daniel O'Connor
7b8c7f4ff5 Rubocop: Rails/RedirectBackOrTo 2026-04-23 12:15:30 +00:00
Daniel O'Connor
6fe9f7f5d3 Merge pull request #4530 from Growstuff/drop-jshint
Drop jshint
2026-04-23 21:40:46 +09:30
Daniel O'Connor
ae5c125a96 Rubocop: Layout/IndentationWidth 2026-04-23 12:10:09 +00:00
Daniel O'Connor
8a70156b61 Rubocop: Layout/EmptyLinesAroundClassBody 2026-04-23 12:07:56 +00:00
dependabot[bot]
f1fde20500 Bump actions/upload-artifact from 5 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 12:05:35 +00:00
Daniel O'Connor
d32d28c5de Merge branch 'dev' of https://github.com/Growstuff/growstuff into drop-jshint 2026-04-23 11:59:08 +00:00
Daniel O'Connor
ed884c5ac6 Merge pull request #4527 from Growstuff/eslint-10
ESLint 10
2026-04-23 21:26:35 +09:30
Daniel O'Connor
84d61a7596 Merge pull request #4529 from Growstuff/eslint-9
ESLint 9
2026-04-23 21:26:22 +09:30
Daniel O'Connor
181431ce94 Merge pull request #4528 from Growstuff/eslint-8
ESLint 8
2026-04-23 21:26:14 +09:30
Daniel O'Connor
da73548695 Drop jshint 2026-04-23 11:48:07 +00:00
Daniel O'Connor
3e95581c06 Merge pull request #4526 from Growstuff/eslint
Eslint 7
2026-04-23 21:14:09 +09:30
Daniel O'Connor
37ce3d28aa ESLint 10 2026-04-23 11:42:44 +00:00
Daniel O'Connor
b7bf5d932a ESLint 9 2026-04-23 11:41:27 +00:00
Daniel O'Connor
247106d10f ESLint 8 2026-04-23 11:40:03 +00:00
Daniel O'Connor
39534eab02 eslint 7 2026-04-23 11:36:16 +00:00
Daniel O'Connor
076ba9844a Merge pull request #4525 from Growstuff/eslint
Upgrade eslint
2026-04-23 21:00:29 +09:30
Daniel O'Connor
727c754499 Upgrade eslint 2026-04-23 11:23:16 +00:00
Daniel O'Connor
ce17ec1620 Merge pull request #4522 from Growstuff/node-24
Node 24
2026-04-23 20:13:50 +09:30
Daniel O'Connor
9500de3815 Merge pull request #4521 from Growstuff/node-22
Node 22
2026-04-23 20:10:20 +09:30
Daniel O'Connor
d89e284c3a Merge pull request #4516 from Growstuff/upgrade-eslint
Bump eslint
2026-04-23 20:09:46 +09:30
Daniel O'Connor
4e7a719787 Merge pull request #4520 from Growstuff/node-20
Node 20
2026-04-23 20:04:37 +09:30
Daniel O'Connor
40e402d06a Merge pull request #4519 from Growstuff/node-18
Node 18
2026-04-23 20:04:25 +09:30
Daniel O'Connor
5cada51fad Node 24 2026-04-23 10:31:28 +00:00
Daniel O'Connor
b1c1955ed3 Merge branch 'dev' into upgrade-eslint 2026-04-23 19:59:27 +09:30
Daniel O'Connor
4fbdd2a92b Merge pull request #4518 from Growstuff/node-16
Node 16
2026-04-23 19:58:16 +09:30
Daniel O'Connor
3379526be3 Node 22 2026-04-23 10:27:01 +00:00
Daniel O'Connor
6d2a5884cb Node 20 2026-04-23 10:24:31 +00:00
Daniel O'Connor
2971bd61dd Node 18 2026-04-23 10:23:06 +00:00
Daniel O'Connor
3553165ebe Node 16 2026-04-23 10:20:50 +00:00
Daniel O'Connor
410ee0050f Merge branch 'dev' into upgrade-eslint 2026-04-23 19:47:15 +09:30
Daniel O'Connor
6ba21bd280 Merge pull request #4517 from Growstuff/node-14
Node 14
2026-04-23 19:46:54 +09:30
Daniel O'Connor
96d290d3fe Node 14 2026-04-23 10:10:16 +00:00
Daniel O'Connor
a24548defb Bump eslint 2026-04-23 09:59:45 +00:00
Daniel O'Connor
5493ecfc5e Merge pull request #4515 from Growstuff/lodash
Bump jshint
2026-04-23 19:28:01 +09:30
Daniel O'Connor
b21111e4ce Merge pull request #4514 from Growstuff/bump-addressable
Bump addressable
2026-04-23 19:25:27 +09:30
Daniel O'Connor
702ec2c47c Merge pull request #4513 from Growstuff/bump-rack
Bump rack
2026-04-23 19:24:17 +09:30
Daniel O'Connor
742bc12c89 Upgrade jshint 2026-04-23 09:50:54 +00:00
Daniel O'Connor
27b552aa8e Bump addressable 2026-04-23 09:42:43 +00:00
Daniel O'Connor
5cb6d8afba Bump rack 2026-04-23 09:41:56 +00:00
Daniel O'Connor
0729e07e55 Merge pull request #4511 from Growstuff/dependabot/bundler/bullet-8.1.1
Bump bullet from 8.1.0 to 8.1.1
2026-04-23 19:06:41 +09:30
Daniel O'Connor
28997f6053 Merge pull request #4512 from Growstuff/dependabot/bundler/aws-sdk-s3-1.220.0
Bump aws-sdk-s3 from 1.219.0 to 1.220.0
2026-04-23 19:06:31 +09:30
dependabot[bot]
732604d507 Bump aws-sdk-s3 from 1.219.0 to 1.220.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.219.0 to 1.220.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.220.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 07:07:01 +00:00
dependabot[bot]
e461fdd27e Bump bullet from 8.1.0 to 8.1.1
Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.1.0 to 8.1.1.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/8.1.0...8.1.1)

---
updated-dependencies:
- dependency-name: bullet
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 07:03:51 +00:00
Daniel O'Connor
3b40c28288 Merge pull request #4510 from Growstuff/dependabot/bundler/oj-3.17.0
Bump oj from 3.16.17 to 3.17.0
2026-04-20 17:03:57 +09:30
dependabot[bot]
a50b9dcb2a Bump oj from 3.16.17 to 3.17.0
Bumps [oj](https://github.com/ohler55/oj) from 3.16.17 to 3.17.0.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.17...v3.17.0)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 07:18:18 +00:00
Daniel O'Connor
ea0a5bfad4 Merge pull request #4508 from Growstuff/dependabot/bundler/scout_apm-6.2.0
Bump scout_apm from 6.1.1 to 6.2.0
2026-04-17 22:57:03 +09:30
dependabot[bot]
77e3db1924 Bump scout_apm from 6.1.1 to 6.2.0
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 6.1.1 to 6.2.0.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v6.1.1...v6.2.0)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 07:37:59 +00:00
Daniel O'Connor
34290be6be Merge pull request #4507 from Growstuff/dependabot/bundler/faker-3.8.0
Bump faker from 3.7.1 to 3.8.0
2026-04-17 17:06:30 +09:30
Daniel O'Connor
02e0473faa Merge pull request #4509 from Growstuff/dependabot/bundler/axe-core-rspec-4.11.2
Bump axe-core-rspec from 4.11.1 to 4.11.2
2026-04-17 17:06:14 +09:30
dependabot[bot]
95f7cefe0f Bump axe-core-rspec from 4.11.1 to 4.11.2
Bumps [axe-core-rspec](https://github.com/dequelabs/axe-core-gems) from 4.11.1 to 4.11.2.
- [Release notes](https://github.com/dequelabs/axe-core-gems/releases)
- [Changelog](https://github.com/dequelabs/axe-core-gems/blob/v4.11.2/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core-gems/compare/v4.11.1...v4.11.2)

---
updated-dependencies:
- dependency-name: axe-core-rspec
  dependency-version: 4.11.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 07:09:39 +00:00
dependabot[bot]
bcf6690a0d Bump faker from 3.7.1 to 3.8.0
Bumps [faker](https://github.com/faker-ruby/faker) from 3.7.1 to 3.8.0.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.7.1...v3.8.0)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 07:05:21 +00:00
Daniel O'Connor
734aa4795a Merge pull request #4505 from Growstuff/dependabot/bundler/rake-13.4.2
Bump rake from 13.4.1 to 13.4.2
2026-04-16 18:56:07 +09:30
dependabot[bot]
3729016770 Bump rake from 13.4.1 to 13.4.2
Bumps [rake](https://github.com/ruby/rake) from 13.4.1 to 13.4.2.
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](https://github.com/ruby/rake/compare/v13.4.1...v13.4.2)

---
updated-dependencies:
- dependency-name: rake
  dependency-version: 13.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 07:08:45 +00:00
Daniel O'Connor
a37589cdc6 Merge pull request #4504 from Growstuff/dependabot/bundler/faker-3.7.1
Bump faker from 3.6.1 to 3.7.1
2026-04-15 21:16:41 +09:30
dependabot[bot]
e86e834d94 Bump faker from 3.6.1 to 3.7.1
Bumps [faker](https://github.com/faker-ruby/faker) from 3.6.1 to 3.7.1.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.6.1...v3.7.1)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.7.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 09:06:05 +00:00
Daniel O'Connor
c73c435d01 Merge pull request #4500 from Growstuff/dependabot/bundler/timecop-0.9.11
Bump timecop from 0.9.10 to 0.9.11
2026-04-15 18:35:01 +09:30
Daniel O'Connor
0375299ec8 Merge pull request #4499 from Growstuff/dependabot/bundler/oj-3.16.17
Bump oj from 3.16.16 to 3.16.17
2026-04-15 18:34:49 +09:30
Daniel O'Connor
27fe8d58dd Merge pull request #4501 from Growstuff/dependabot/bundler/xmlrpc-0.3.4
Bump xmlrpc from 0.3.3 to 0.3.4
2026-04-15 18:34:36 +09:30
Daniel O'Connor
171792b6fd Merge pull request #4503 from Growstuff/dependabot/bundler/rake-13.4.1
Bump rake from 13.3.1 to 13.4.1
2026-04-15 18:34:23 +09:30
dependabot[bot]
83eae50449 Bump rake from 13.3.1 to 13.4.1
Bumps [rake](https://github.com/ruby/rake) from 13.3.1 to 13.4.1.
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](https://github.com/ruby/rake/compare/v13.3.1...v13.4.1)

---
updated-dependencies:
- dependency-name: rake
  dependency-version: 13.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 07:03:18 +00:00
dependabot[bot]
bf65e77700 Bump xmlrpc from 0.3.3 to 0.3.4
Bumps [xmlrpc](https://github.com/ruby/xmlrpc) from 0.3.3 to 0.3.4.
- [Release notes](https://github.com/ruby/xmlrpc/releases)
- [Changelog](https://github.com/ruby/xmlrpc/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/xmlrpc/compare/v0.3.3...v0.3.4)

---
updated-dependencies:
- dependency-name: xmlrpc
  dependency-version: 0.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 07:09:10 +00:00
dependabot[bot]
fd3e81a059 Bump timecop from 0.9.10 to 0.9.11
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.10 to 0.9.11.
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.10...v0.9.11)

---
updated-dependencies:
- dependency-name: timecop
  dependency-version: 0.9.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 07:08:25 +00:00
dependabot[bot]
5ffbcd4e63 Bump oj from 3.16.16 to 3.16.17
Bumps [oj](https://github.com/ohler55/oj) from 3.16.16 to 3.16.17.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.16...v3.16.17)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 07:05:35 +00:00
Daniel O'Connor
5d3118f833 Update nutritional data link to new URL 2026-04-11 15:12:18 +09:30
Daniel O'Connor
2073b443fa Merge pull request #4498 from Growstuff/CloCkWeRX-patch-2
Add conditional rendering for harvest thumbnail image
2026-04-11 14:57:57 +09:30
Daniel O'Connor
55934bcc4a Add conditional rendering for harvest thumbnail image 2026-04-11 14:57:36 +09:30
Daniel O'Connor
ba25755fdc Merge pull request #4495 from Growstuff/dependabot/bundler/rubocop-1.86.1
Bump rubocop from 1.86.0 to 1.86.1
2026-04-10 19:47:09 +09:30
dependabot[bot]
7d29724fd8 Bump rubocop from 1.86.0 to 1.86.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.86.0 to 1.86.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.86.0...v1.86.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.86.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 10:16:56 +00:00
Daniel O'Connor
d9c387d4f9 Merge pull request #4496 from Growstuff/dependabot/bundler/selenium-webdriver-4.43.0
Bump selenium-webdriver from 4.41.0 to 4.43.0
2026-04-10 19:46:39 +09:30
Daniel O'Connor
73487456f3 Merge pull request #4497 from Growstuff/dependabot/bundler/recaptcha-5.21.2
Bump recaptcha from 5.21.1 to 5.21.2
2026-04-10 19:45:19 +09:30
dependabot[bot]
342f7edfb1 Bump recaptcha from 5.21.1 to 5.21.2
Bumps [recaptcha](https://github.com/ambethia/recaptcha) from 5.21.1 to 5.21.2.
- [Changelog](https://github.com/ambethia/recaptcha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ambethia/recaptcha/compare/v5.21.1...v5.21.2)

---
updated-dependencies:
- dependency-name: recaptcha
  dependency-version: 5.21.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 07:07:18 +00:00
dependabot[bot]
0a1e8d8036 Bump selenium-webdriver from 4.41.0 to 4.43.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.41.0 to 4.43.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.41.0...selenium-4.43.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.43.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 07:05:41 +00:00
Daniel O'Connor
bf588a31ae Merge pull request #4492 from Growstuff/dependabot/bundler/haml_lint-0.73.0
Bump haml_lint from 0.72.0 to 0.73.0
2026-04-08 17:22:45 +09:30
Daniel O'Connor
2761886c7c Merge pull request #4493 from Growstuff/dependabot/bundler/aws-sdk-s3-1.219.0
Bump aws-sdk-s3 from 1.218.0 to 1.219.0
2026-04-08 17:22:26 +09:30
dependabot[bot]
a71e5fa61f Bump aws-sdk-s3 from 1.218.0 to 1.219.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.218.0 to 1.219.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.219.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 07:05:00 +00:00
dependabot[bot]
1eddd89bee Bump haml_lint from 0.72.0 to 0.73.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.72.0 to 0.73.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.72.0...v0.73.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.73.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-07 07:06:38 +00:00
Daniel O'Connor
6511c2682b Merge pull request #4491 from Growstuff/dependabot/bundler/active_median-1.0.0
Bump active_median from 0.6.0 to 1.0.0
2026-04-06 19:17:21 +09:30
dependabot[bot]
78b395704f Bump active_median from 0.6.0 to 1.0.0
Bumps [active_median](https://github.com/ankane/active_median) from 0.6.0 to 1.0.0.
- [Changelog](https://github.com/ankane/active_median/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/active_median/compare/v0.6.0...v1.0.0)

---
updated-dependencies:
- dependency-name: active_median
  dependency-version: 1.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 07:04:49 +00:00
Daniel O'Connor
9fa9d14616 Merge pull request #4490 from Growstuff/dependabot/bundler/aws-sdk-s3-1.218.0
Bump aws-sdk-s3 from 1.217.0 to 1.218.0
2026-04-04 09:00:24 +10:30
dependabot[bot]
8e42e63359 Bump aws-sdk-s3 from 1.217.0 to 1.218.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.217.0 to 1.218.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.218.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-01 07:26:50 +00:00
Daniel O'Connor
5004ace754 Merge pull request #4420 from Growstuff/dependabot/bundler/byebug-13.0.0
Bump byebug from 12.0.0 to 13.0.0
2026-03-26 18:10:50 +09:30
Daniel O'Connor
b6a2af6e3d Merge pull request #4404 from Growstuff/dependabot/bundler/vcr-6.4.0
Bump vcr from 6.3.1 to 6.4.0
2026-03-26 18:10:39 +09:30
dependabot[bot]
c192814d09 Bump vcr from 6.3.1 to 6.4.0
Bumps [vcr](https://github.com/vcr/vcr) from 6.3.1 to 6.4.0.
- [Release notes](https://github.com/vcr/vcr/releases)
- [Changelog](https://github.com/vcr/vcr/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vcr/vcr/compare/v6.3.1...v6.4.0)

---
updated-dependencies:
- dependency-name: vcr
  dependency-version: 6.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 08:23:21 +00:00
Daniel O'Connor
9ba7d8ba86 Merge pull request #4424 from Growstuff/dependabot/bundler/puma-7.2.0
Bump puma from 7.1.0 to 7.2.0
2026-03-26 17:52:22 +09:30
dependabot[bot]
19fdfc3682 Bump byebug from 12.0.0 to 13.0.0
Bumps [byebug](https://github.com/deivid-rodriguez/byebug) from 12.0.0 to 13.0.0.
- [Release notes](https://github.com/deivid-rodriguez/byebug/releases)
- [Changelog](https://github.com/deivid-rodriguez/byebug/blob/main/CHANGELOG.md)
- [Commits](https://github.com/deivid-rodriguez/byebug/compare/v12.0.0...v13.0.0)

---
updated-dependencies:
- dependency-name: byebug
  dependency-version: 13.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 08:14:25 +00:00
dependabot[bot]
9a15c28782 Bump puma from 7.1.0 to 7.2.0
Bumps [puma](https://github.com/puma/puma) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/main/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.1.0...v7.2.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 08:13:15 +00:00
Daniel O'Connor
aff780a19a Merge pull request #4482 from Growstuff/dependabot/bundler/terser-1.2.7
Bump terser from 1.2.6 to 1.2.7
2026-03-26 17:39:59 +09:30
Daniel O'Connor
2ade7c9226 Merge pull request #4466 from Growstuff/dependabot/bundler/faker-3.6.1
Bump faker from 3.6.0 to 3.6.1
2026-03-26 17:39:11 +09:30
Daniel O'Connor
0431d11c51 Merge pull request #4474 from Growstuff/dependabot/bundler/loofah-2.25.1
Bump loofah from 2.25.0 to 2.25.1
2026-03-26 17:39:05 +09:30
Daniel O'Connor
781c63edd7 Merge pull request #4478 from Growstuff/dependabot/bundler/icalendar-2.12.2
Bump icalendar from 2.12.1 to 2.12.2
2026-03-26 17:38:57 +09:30
Daniel O'Connor
a0590b972d Merge pull request #4484 from Growstuff/dependabot/npm_and_yarn/picomatch-2.3.2
Bump picomatch from 2.3.1 to 2.3.2
2026-03-26 17:38:47 +09:30
dependabot[bot]
06e839a527 Bump picomatch from 2.3.1 to 2.3.2
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:58:51 +00:00
dependabot[bot]
6de2ad7fe9 Bump faker from 3.6.0 to 3.6.1
Bumps [faker](https://github.com/faker-ruby/faker) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.6.0...v3.6.1)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.6.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:50:38 +00:00
dependabot[bot]
f768dc6c3c Bump loofah from 2.25.0 to 2.25.1
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.25.0 to 2.25.1.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.25.0...v2.25.1)

---
updated-dependencies:
- dependency-name: loofah
  dependency-version: 2.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:50:33 +00:00
dependabot[bot]
87a433be8e Bump icalendar from 2.12.1 to 2.12.2
Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.12.1 to 2.12.2.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.12.1...v2.12.2)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-version: 2.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:50:32 +00:00
dependabot[bot]
8bfb013cfb Bump terser from 1.2.6 to 1.2.7
Bumps [terser](https://github.com/ahorek/terser-ruby) from 1.2.6 to 1.2.7.
- [Release notes](https://github.com/ahorek/terser-ruby/releases)
- [Changelog](https://github.com/ahorek/terser-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ahorek/terser-ruby/compare/1.2.6...1.2.7)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 1.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:50:25 +00:00
Daniel O'Connor
79e5ddd8dd Merge pull request #4473 from Growstuff/dependabot/bundler/devise-5.0.3
Bump devise from 5.0.2 to 5.0.3
2026-03-26 17:19:10 +09:30
Daniel O'Connor
6ec37b1d2b Merge pull request #4472 from Growstuff/dependabot/bundler/oj-3.16.16
Bump oj from 3.16.15 to 3.16.16
2026-03-26 17:18:58 +09:30
Daniel O'Connor
56753f2869 Merge pull request #4486 from Growstuff/refactor-signup-spec-10681697950343780211
Refactor existing username signup spec
2026-03-26 17:18:35 +09:30
google-labs-jules[bot]
477812f06b Refactor signup feature spec to use direct database setup
- Rewrote the 'sign up for new account with existing username' test in
  spec/features/signup_spec.rb.
- Replaced UI-driven setup of an existing user with FactoryBot's `create`.
- Replaced UI navigation with a direct call to `new_member_registration_path`.
- Added an explicit assertion for the 'has already been taken' error
  message.
- Ensured a unique email is used for the second signup attempt to isolate
  the username validation check.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
2026-03-26 06:34:32 +00:00
dependabot[bot]
e972cd4d56 Bump devise from 5.0.2 to 5.0.3
Bumps [devise](https://github.com/heartcombo/devise) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/heartcombo/devise/releases)
- [Changelog](https://github.com/heartcombo/devise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/devise/compare/v5.0.2...v5.0.3)

---
updated-dependencies:
- dependency-name: devise
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 06:18:55 +00:00
dependabot[bot]
3039ae0dc2 Bump oj from 3.16.15 to 3.16.16
Bumps [oj](https://github.com/ohler55/oj) from 3.16.15 to 3.16.16.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.15...v3.16.16)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 06:18:55 +00:00
Daniel O'Connor
bd1da7cad0 Merge pull request #4475 from Growstuff/dependabot/bundler/aws-sdk-s3-1.217.0
Bump aws-sdk-s3 from 1.213.0 to 1.217.0
2026-03-26 15:47:23 +09:30
dependabot[bot]
38c0dd3a63 Bump aws-sdk-s3 from 1.213.0 to 1.217.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.213.0 to 1.217.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.217.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 05:57:54 +00:00
Daniel O'Connor
5e24ba113f Merge pull request #4485 from Growstuff/flaky-test-admin-forums
Decrease failures by checking for the save message first in admin tests
2026-03-26 15:25:51 +09:30
Daniel O'Connor
f94f5638c8 Decrease failures by checking for the save message first 2026-03-26 05:47:00 +00:00
dependabot[bot]
90c177408d Bump rubocop from 1.85.0 to 1.86.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.85.0 to 1.86.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.85.0...v1.86.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.86.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 20:29:42 +13:00
Daniel O'Connor
baca934a70 Merge pull request #4481 from Growstuff/dependabot/bundler/activesupport-7.2.3.1
Bump activesupport from 7.2.3 to 7.2.3.1
2026-03-24 11:53:12 +09:30
dependabot[bot]
397517547e Bump activesupport from 7.2.3 to 7.2.3.1
Bumps [activesupport](https://github.com/rails/rails) from 7.2.3 to 7.2.3.1.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v8.1.2.1/activesupport/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v7.2.3...v7.2.3.1)

---
updated-dependencies:
- dependency-name: activesupport
  dependency-version: 7.2.3.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 02:06:17 +00:00
Daniel O'Connor
07f6bc8b76 Merge pull request #4476 from Growstuff/dependabot/bundler/json-2.19.2
Bump json from 2.19.0 to 2.19.2
2026-03-20 18:37:52 +09:30
dependabot[bot]
8eaca222a0 Bump json from 2.19.0 to 2.19.2
Bumps [json](https://github.com/ruby/json) from 2.19.0 to 2.19.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.19.0...v2.19.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.19.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 12:57:30 +00:00
Daniel O'Connor
f0afcadc51 Merge pull request #4471 from Growstuff/dependabot/bundler/rspec-rails-8.0.4
Bump rspec-rails from 8.0.3 to 8.0.4
2026-03-13 18:52:54 +10:30
dependabot[bot]
adbf3cc609 Bump rspec-rails from 8.0.3 to 8.0.4
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 8.0.3 to 8.0.4.
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v8.0.3...v8.0.4)

---
updated-dependencies:
- dependency-name: rspec-rails
  dependency-version: 8.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 07:04:28 +00:00
Daniel O'Connor
152e843ca4 Merge pull request #4465 from Growstuff/dependabot/bundler/haml_lint-0.72.0
Bump haml_lint from 0.71.0 to 0.72.0
2026-03-07 14:07:37 +10:30
dependabot[bot]
21f4349b08 Bump haml_lint from 0.71.0 to 0.72.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.71.0 to 0.72.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.71.0...v0.72.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.72.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-07 03:07:58 +00:00
Daniel O'Connor
7d8ed6f681 Merge pull request #4463 from Growstuff/remove-travis
Remove travis
2026-03-07 13:36:35 +10:30
Daniel O'Connor
857fceda55 Merge pull request #4452 from Growstuff/dependabot/bundler/selenium-webdriver-4.41.0
Bump selenium-webdriver from 4.40.0 to 4.41.0
2026-03-01 16:49:47 +10:30
dependabot[bot]
2583470966 Bump selenium-webdriver from 4.40.0 to 4.41.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.40.0 to 4.41.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.40.0...selenium-4.41.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.41.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 05:57:20 +00:00
Daniel O'Connor
14f8f36d4a Merge pull request #4393 from Growstuff/dependabot/github_actions/actions/cache-5
Bump actions/cache from 4 to 5
2026-03-01 16:21:47 +10:30
Daniel O'Connor
65adc7a2f9 Merge pull request #4419 from Growstuff/dependabot/bundler/haml-7.2.0
Bump haml from 7.1.0 to 7.2.0
2026-03-01 16:19:45 +10:30
Daniel O'Connor
1e9fe31e2e Merge pull request #4457 from Growstuff/dependabot/bundler/haml_lint-0.71.0
Bump haml_lint from 0.68.0 to 0.71.0
2026-03-01 16:18:46 +10:30
Daniel O'Connor
3393d6710b Merge pull request #4454 from Growstuff/dependabot/bundler/scout_apm-6.1.1
Bump scout_apm from 6.0.2 to 6.1.1
2026-03-01 16:17:39 +10:30
Daniel O'Connor
5767b62b0f Merge pull request #4425 from Growstuff/dependabot/npm_and_yarn/lodash-4.17.23
Bump lodash from 4.17.21 to 4.17.23
2026-03-01 16:16:27 +10:30
dependabot[bot]
5e0d2b153a Bump scout_apm from 6.0.2 to 6.1.1
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 6.0.2 to 6.1.1.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v6.0.2...v6.1.1)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 05:46:24 +00:00
Daniel O'Connor
2c864f2f59 Merge pull request #4426 from Growstuff/dependabot/bundler/faker-3.6.0
Bump faker from 3.5.3 to 3.6.0
2026-03-01 16:15:55 +10:30
Daniel O'Connor
21a23af522 Merge pull request #4432 from Growstuff/dependabot/bundler/aws-sdk-s3-1.213.0
Bump aws-sdk-s3 from 1.212.0 to 1.213.0
2026-03-01 16:15:26 +10:30
Daniel O'Connor
9a4396c7c3 Merge pull request #4455 from Growstuff/dependabot/bundler/dalli-5.0.2
Bump dalli from 5.0.1 to 5.0.2
2026-03-01 16:15:08 +10:30
Daniel O'Connor
43b8ac1da8 Bump rubocop from 1.82.1 to 1.85.0 (#4458)
* Bump rubocop from 1.82.1 to 1.85.0

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.82.1 to 1.85.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.82.1...v1.85.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.85.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop from 1.82.1 to 1.85.0

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.82.1 to 1.85.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.82.1...v1.85.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.85.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Regenerate TODO

* Update exclusions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2026-03-01 15:51:34 +10:30
Daniel O'Connor
282a369d0d Update exclusions 2026-03-01 05:21:20 +00:00
Daniel O'Connor
a860cfe5a3 Regenerate TODO 2026-03-01 05:18:56 +00:00
Daniel O'Connor
4711be9fe6 Merge branch 'dependabot/bundler/rubocop-1.85.0' of https://github.com/Growstuff/growstuff into dependabot/bundler/rubocop-1.85.0 2026-03-01 05:15:54 +00:00
Daniel O'Connor
93bb82f938 Merge branch 'dev' of https://github.com/Growstuff/growstuff into dependabot/bundler/rubocop-1.85.0 2026-03-01 05:15:45 +00:00
dependabot[bot]
d8917d3c54 Bump rubocop from 1.82.1 to 1.85.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.82.1 to 1.85.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.82.1...v1.85.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.85.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 05:12:32 +00:00
dependabot[bot]
fc6ee9db36 Bump haml_lint from 0.68.0 to 0.71.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.68.0 to 0.71.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.68.0...v0.71.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.71.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 05:12:01 +00:00
dependabot[bot]
54d8f557e3 Bump dalli from 5.0.1 to 5.0.2
Bumps [dalli](https://github.com/petergoldstein/dalli) from 5.0.1 to 5.0.2.
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v5.0.1...v5.0.2)

---
updated-dependencies:
- dependency-name: dalli
  dependency-version: 5.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 05:11:50 +00:00
Daniel O'Connor
0aa182af14 Remove travis 2026-03-01 05:11:29 +00:00
Daniel O'Connor
ffc381ec6f Merge pull request #4462 from Growstuff/ruby-3.4
Ruby 3.4.8
2026-03-01 15:40:30 +10:30
dependabot[bot]
8517f2a1d9 Bump rubocop from 1.82.1 to 1.85.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.82.1 to 1.85.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.82.1...v1.85.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.85.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 03:45:22 +00:00
Daniel O'Connor
c628ed92a8 Merge pull request #4456 from Growstuff/dependabot/bundler/capybara-screenshot-1.0.27
Bump capybara-screenshot from 1.0.26 to 1.0.27
2026-03-01 14:13:56 +10:30
dependabot[bot]
81834d4f90 Bump capybara-screenshot from 1.0.26 to 1.0.27
Bumps [capybara-screenshot](https://github.com/mattheworiordan/capybara-screenshot) from 1.0.26 to 1.0.27.
- [Release notes](https://github.com/mattheworiordan/capybara-screenshot/releases)
- [Changelog](https://github.com/mattheworiordan/capybara-screenshot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mattheworiordan/capybara-screenshot/compare/v1.0.26...v1.0.27)

---
updated-dependencies:
- dependency-name: capybara-screenshot
  dependency-version: 1.0.27
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 07:05:12 +00:00
dependabot[bot]
ccfab85c97 Bump aws-sdk-s3 from 1.212.0 to 1.213.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.212.0 to 1.213.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.213.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-22 22:37:56 +00:00
Daniel O'Connor
70379e222b Merge pull request #4451 from Growstuff/dependabot/bundler/platform-api-3.9.0
Bump platform-api from 3.8.0 to 3.9.0
2026-02-23 09:07:24 +10:30
Daniel O'Connor
2e488106e1 Merge pull request #4439 from Growstuff/dependabot/bundler/oj-3.16.15
Bump oj from 3.16.13 to 3.16.15
2026-02-23 09:06:36 +10:30
dependabot[bot]
08230ab2fd Bump platform-api from 3.8.0 to 3.9.0
Bumps [platform-api](https://github.com/heroku/platform-api) from 3.8.0 to 3.9.0.
- [Changelog](https://github.com/heroku/platform-api/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/platform-api/compare/v3.8.0...v3.9.0)

---
updated-dependencies:
- dependency-name: platform-api
  dependency-version: 3.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-22 10:32:57 +00:00
dependabot[bot]
94c42d26c5 Bump oj from 3.16.13 to 3.16.15
Bumps [oj](https://github.com/ohler55/oj) from 3.16.13 to 3.16.15.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.13...v3.16.15)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-22 10:32:50 +00:00
Daniel O'Connor
351025819d Merge pull request #4441 from Growstuff/dependabot/bundler/faraday-2.14.1
Bump faraday from 2.14.0 to 2.14.1
2026-02-22 21:01:25 +10:30
dependabot[bot]
98cd516500 Bump faraday from 2.14.0 to 2.14.1
Bumps [faraday](https://github.com/lostisland/faraday) from 2.14.0 to 2.14.1.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.14.0...v2.14.1)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.14.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-22 05:30:06 +00:00
Daniel O'Connor
c6b1450625 Merge pull request #4440 from Growstuff/dependabot/bundler/dalli-5.0.0
Bump dalli from 3.2.8 to 5.0.0
2026-02-22 15:58:36 +10:30
google-labs-jules[bot]
8bafba7f9d Ensure "mark as failed" option is available when viewing a crop
This change adds the "mark as failed" action to the crop view in two places:
1. In the "Crop Actions" button group, a new "Mark as failed" button is added if the current member has active plantings of that crop. Clicking it opens a modal to select which planting failed.
2. In the "See who's planted" list, an "Actions" dropdown is added to any plantings owned by the current member, which includes the "Mark as failed" option.

A new partial `app/views/plantings/_failed_modal.html.haml` was created to handle the planting selection modal.
`app/views/crops/_actions.html.haml` and `app/views/crops/_plantings.html.haml` were updated to include these new actions.

Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
2026-02-22 00:08:58 +00:00
dependabot[bot]
3bca3de5c2 Bump dalli from 3.2.8 to 5.0.0
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.2.8 to 5.0.0.
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.2.8...v5.0.0)

---
updated-dependencies:
- dependency-name: dalli
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-21 23:50:55 +00:00
Daniel O'Connor
e2171fbe29 Merge pull request #4434 from Growstuff/dependabot/bundler/axe-core-capybara-4.11.1
Bump axe-core-capybara from 4.11.0 to 4.11.1
2026-02-22 10:19:58 +10:30
Daniel O'Connor
3feaaaa42e Merge pull request #4449 from Growstuff/dependabot/bundler/devise-5.0.2
Bump devise from 4.9.4 to 5.0.2
2026-02-22 10:19:24 +10:30
dependabot[bot]
e70dbcbaf3 Bump devise from 4.9.4 to 5.0.2
Bumps [devise](https://github.com/heartcombo/devise) from 4.9.4 to 5.0.2.
- [Release notes](https://github.com/heartcombo/devise/releases)
- [Changelog](https://github.com/heartcombo/devise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/devise/compare/v4.9.4...v5.0.2)

---
updated-dependencies:
- dependency-name: devise
  dependency-version: 5.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 07:03:45 +00:00
dependabot[bot]
de7e717bd1 Bump axe-core-capybara from 4.11.0 to 4.11.1
Bumps [axe-core-capybara](https://github.com/dequelabs/axe-core-gems) from 4.11.0 to 4.11.1.
- [Release notes](https://github.com/dequelabs/axe-core-gems/releases)
- [Changelog](https://github.com/dequelabs/axe-core-gems/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core-gems/compare/v4.11.0...v4.11.1)

---
updated-dependencies:
- dependency-name: axe-core-capybara
  dependency-version: 4.11.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 00:42:11 +00:00
dependabot[bot]
6442603147 Bump faker from 3.5.3 to 3.6.0
Bumps [faker](https://github.com/faker-ruby/faker) from 3.5.3 to 3.6.0.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.5.3...v3.6.0)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 00:42:01 +00:00
Daniel O'Connor
85c1db6ffd Merge pull request #4446 from Growstuff/dependabot/bundler/rspec-rails-8.0.3
Bump rspec-rails from 8.0.2 to 8.0.3
2026-02-20 11:10:40 +10:30
dependabot[bot]
53548c745d Bump rspec-rails from 8.0.2 to 8.0.3
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 8.0.2 to 8.0.3.
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v8.0.2...v8.0.3)

---
updated-dependencies:
- dependency-name: rspec-rails
  dependency-version: 8.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 07:02:48 +00:00
dependabot[bot]
8c894fdd54 Bump haml from 7.1.0 to 7.2.0
Bumps [haml](https://github.com/haml/haml) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/haml/haml/releases)
- [Changelog](https://github.com/haml/haml/blob/main/CHANGELOG.md)
- [Commits](https://github.com/haml/haml/compare/v7.1.0...v7.2.0)

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 11:59:22 +00:00
Daniel O'Connor
b4df4fccda Merge pull request #4408 from Growstuff/dependabot/bundler/pry-0.16.0
Bump pry from 0.15.2 to 0.16.0
2026-01-22 22:28:17 +10:30
Daniel O'Connor
60de11e6d5 Merge pull request #4423 from Growstuff/dependabot/bundler/listen-3.10.0
Bump listen from 3.9.0 to 3.10.0
2026-01-22 22:28:05 +10:30
dependabot[bot]
905e8a0fe4 Bump lodash from 4.17.21 to 4.17.23
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 23:05:37 +00:00
dependabot[bot]
4d5edd3b05 Bump listen from 3.9.0 to 3.10.0
Bumps [listen](https://github.com/guard/listen) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.9.0...v3.10.0)

---
updated-dependencies:
- dependency-name: listen
  dependency-version: 3.10.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 06:47:52 +00:00
dependabot[bot]
5d835d908d Bump pry from 0.15.2 to 0.16.0
Bumps [pry](https://github.com/pry/pry) from 0.15.2 to 0.16.0.
- [Release notes](https://github.com/pry/pry/releases)
- [Changelog](https://github.com/pry/pry/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pry/pry/compare/v0.15.2...v0.16.0)

---
updated-dependencies:
- dependency-name: pry
  dependency-version: 0.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 06:47:48 +00:00
Daniel O'Connor
3fb165e185 Merge pull request #4422 from Growstuff/dependabot/bundler/selenium-webdriver-4.40.0
Bump selenium-webdriver from 4.39.0 to 4.40.0
2026-01-20 17:16:25 +10:30
dependabot[bot]
6f62159813 Bump selenium-webdriver from 4.39.0 to 4.40.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.39.0 to 4.40.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.39.0...selenium-4.40.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.40.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-19 07:38:01 +00:00
Daniel O'Connor
7d5dc36d2c Merge pull request #4416 from Growstuff/dependabot/bundler/aws-sdk-s3-1.211.0
Bump aws-sdk-s3 from 1.208.0 to 1.211.0
2026-01-19 10:05:50 +10:30
dependabot[bot]
8b7da7eb35 Bump aws-sdk-s3 from 1.208.0 to 1.211.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.208.0 to 1.211.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.211.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-18 00:38:10 +00:00
Daniel O'Connor
32738450d1 Merge pull request #4409 from Growstuff/dependabot/bundler/pg-1.6.3
Bump pg from 1.6.2 to 1.6.3
2026-01-18 11:06:45 +10:30
dependabot[bot]
7fcb1600d7 Bump pg from 1.6.2 to 1.6.3
Bumps [pg](https://github.com/ged/ruby-pg) from 1.6.2 to 1.6.3.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.6.2...v1.6.3)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 1.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 03:43:56 +00:00
Daniel O'Connor
593071507d Merge pull request #4406 from Growstuff/dependabot/bundler/hashie-5.1.0
Bump hashie from 5.0.0 to 5.1.0
2026-01-17 14:12:32 +10:30
dependabot[bot]
28dc25ed1f Bump hashie from 5.0.0 to 5.1.0
Bumps [hashie](https://github.com/hashie/hashie) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/hashie/hashie/releases)
- [Changelog](https://github.com/hashie/hashie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hashie/hashie/compare/v5.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: hashie
  dependency-version: 5.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 13:05:19 +00:00
Daniel O'Connor
39c4dab0f7 Merge pull request #4417 from Growstuff/dependabot/bundler/httparty-0.24.0
Bump httparty from 0.22.0 to 0.24.0
2026-01-15 23:34:01 +10:30
dependabot[bot]
e2c6197c8f Bump httparty from 0.22.0 to 0.24.0
Bumps [httparty](https://github.com/jnunemaker/httparty) from 0.22.0 to 0.24.0.
- [Release notes](https://github.com/jnunemaker/httparty/releases)
- [Changelog](https://github.com/jnunemaker/httparty/blob/main/Changelog.md)
- [Commits](https://github.com/jnunemaker/httparty/compare/v0.22.0...v0.24.0)

---
updated-dependencies:
- dependency-name: httparty
  dependency-version: 0.24.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 09:07:26 +00:00
Daniel O'Connor
41b861a952 Merge pull request #4407 from Growstuff/dependabot/bundler/rubocop-1.82.1
Bump rubocop from 1.82.0 to 1.82.1
2026-01-09 19:36:37 +10:30
Daniel O'Connor
a79fc59880 Merge pull request #4411 from Growstuff/dependabot/bundler/rubocop-rails-2.34.3
Bump rubocop-rails from 2.34.2 to 2.34.3
2026-01-09 19:36:23 +10:30
Daniel O'Connor
a53289936e Merge pull request #4415 from Growstuff/dependabot/bundler/rubocop-rspec-3.9.0
Bump rubocop-rspec from 3.8.0 to 3.9.0
2026-01-09 19:36:15 +10:30
dependabot[bot]
f1494a5b69 Bump rubocop-rspec from 3.8.0 to 3.9.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.8.0 to 3.9.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.8.0...v3.9.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-version: 3.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 08:36:13 +00:00
dependabot[bot]
f4ea01e83e Bump rubocop-rails from 2.34.2 to 2.34.3
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.34.2 to 2.34.3.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.34.2...v2.34.3)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 08:36:05 +00:00
dependabot[bot]
f525c3e2de Bump rubocop from 1.82.0 to 1.82.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.82.0 to 1.82.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.82.0...v1.82.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.82.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 08:36:04 +00:00
Daniel O'Connor
a7230dbd7e Merge pull request #4410 from Growstuff/dependabot/bundler/uri-1.0.4
Bump uri from 1.0.3 to 1.0.4
2026-01-09 19:04:56 +10:30
dependabot[bot]
e7ad3f3077 Bump uri from 1.0.3 to 1.0.4
Bumps [uri](https://github.com/ruby/uri) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/ruby/uri/releases)
- [Commits](https://github.com/ruby/uri/compare/v1.0.3...v1.0.4)

---
updated-dependencies:
- dependency-name: uri
  dependency-version: 1.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-30 21:11:48 +00:00
Daniel O'Connor
fe7ed30c99 Merge pull request #4399 from Growstuff/dependabot/bundler/haml_lint-0.68.0
Bump haml_lint from 0.67.0 to 0.68.0
2025-12-26 14:00:09 +10:30
Daniel O'Connor
3bbd71edf2 Merge pull request #4403 from Growstuff/dependabot/bundler/scout_apm-6.0.2
Bump scout_apm from 6.0.1 to 6.0.2
2025-12-26 14:00:01 +10:30
dependabot[bot]
e0c56b8c8b Bump scout_apm from 6.0.1 to 6.0.2
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 6.0.1 to 6.0.2.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 07:57:00 +00:00
dependabot[bot]
523a5b038a Bump haml_lint from 0.67.0 to 0.68.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.67.0 to 0.68.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.67.0...v0.68.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.68.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 07:56:58 +00:00
Daniel O'Connor
ff6555f56c Merge pull request #4402 from Growstuff/dependabot/bundler/rubocop-1.82.0
Bump rubocop from 1.81.7 to 1.82.0
2025-12-19 18:25:51 +10:30
dependabot[bot]
d49e2ee3f8 Bump rubocop from 1.81.7 to 1.82.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.7 to 1.82.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.7...v1.82.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.82.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-18 07:20:20 +00:00
Daniel O'Connor
b958261e21 Merge pull request #4401 from Growstuff/dependabot/bundler/aws-sdk-s3-1.208.0
Bump aws-sdk-s3 from 1.207.0 to 1.208.0
2025-12-18 17:49:11 +10:30
dependabot[bot]
c12d838328 Bump aws-sdk-s3 from 1.207.0 to 1.208.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.207.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 07:02:52 +00:00
Daniel O'Connor
8bafc81005 Merge pull request #4392 from Growstuff/dependabot/bundler/sidekiq-7.3.10
Bump sidekiq from 7.3.9 to 7.3.10
2025-12-16 21:15:06 +10:30
Daniel O'Connor
8796f9d6f6 Merge pull request #4398 from Growstuff/dependabot/bundler/loofah-2.25.0
Bump loofah from 2.24.1 to 2.25.0
2025-12-16 21:14:57 +10:30
dependabot[bot]
f2b5aa3477 Bump loofah from 2.24.1 to 2.25.0
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.24.1 to 2.25.0.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.24.1...v2.25.0)

---
updated-dependencies:
- dependency-name: loofah
  dependency-version: 2.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 10:13:09 +00:00
dependabot[bot]
bbc64d5e32 Bump sidekiq from 7.3.9 to 7.3.10
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.3.9 to 7.3.10.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.3.9...v7.3.10)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-version: 7.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 10:13:02 +00:00
Daniel O'Connor
2996312c25 Merge pull request #4397 from Growstuff/dependabot/bundler/scout_apm-6.0.1
Bump scout_apm from 6.0.0 to 6.0.1
2025-12-16 20:41:55 +10:30
dependabot[bot]
5746cccb10 Bump scout_apm from 6.0.0 to 6.0.1
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 6.0.0 to 6.0.1.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v6.0.0...v6.0.1)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 08:30:39 +00:00
Daniel O'Connor
fc0f732e07 Merge pull request #4400 from Growstuff/dependabot/bundler/aws-sdk-s3-1.207.0
Bump aws-sdk-s3 from 1.205.0 to 1.207.0
2025-12-16 18:59:34 +10:30
dependabot[bot]
c1c026cd97 Bump aws-sdk-s3 from 1.205.0 to 1.207.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.205.0 to 1.207.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.207.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 07:03:57 +00:00
Daniel O'Connor
a77b601327 Merge pull request #4381 from Growstuff/update-crop-page-titles
Update Crop Page Titles
2025-12-13 12:58:14 +10:30
Daniel O'Connor
b70168e3a1 Merge pull request #4395 from Growstuff/relax-interesting-criteria
Relax the criteria as photos are uploaded less often
2025-12-13 12:58:03 +10:30
Daniel O'Connor
d279f9bb64 Merge branch 'dev' into update-crop-page-titles 2025-12-13 12:48:34 +10:30
Daniel O'Connor
83f7ff7c3f Update app/views/crops/show.html.haml 2025-12-13 12:48:14 +10:30
Daniel O'Connor
ae639b6e74 Adjust expectation 2025-12-13 02:12:20 +00:00
Daniel O'Connor
d0ca944899 Relax the criteria as photos are uploaded less often 2025-12-13 01:15:02 +00:00
Daniel O'Connor
1edd4163e1 Merge pull request #4394 from Growstuff/dependabot/bundler/haml-7.1.0
Bump haml from 7.0.2 to 7.1.0
2025-12-13 11:28:58 +10:30
dependabot[bot]
9c03e85882 Bump haml from 7.0.2 to 7.1.0
Bumps [haml](https://github.com/haml/haml) from 7.0.2 to 7.1.0.
- [Release notes](https://github.com/haml/haml/releases)
- [Changelog](https://github.com/haml/haml/blob/main/CHANGELOG.md)
- [Commits](https://github.com/haml/haml/compare/v7.0.2...v7.1.0)

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 07:02:42 +00:00
dependabot[bot]
64c33a5327 Bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 07:01:50 +00:00
Daniel O'Connor
a303fd6b77 Merge pull request #4391 from Growstuff/pin-dep
Pin dep
2025-12-09 08:21:06 +10:30
Daniel O'Connor
21fea20c7e Bump 2025-12-08 21:50:37 +00:00
Daniel O'Connor
5049b6fd3b Pin 2025-12-08 21:49:38 +00:00
Daniel O'Connor
4bb8749948 Merge pull request #4390 from Growstuff/revert-4386-dependabot/bundler/friendly_id-5.6.0
Revert "Bump friendly_id from 5.5.1 to 5.6.0"
2025-12-09 08:15:22 +10:30
Daniel O'Connor
58548de1bd Revert "Bump friendly_id from 5.5.1 to 5.6.0" 2025-12-09 08:15:08 +10:30
Daniel O'Connor
673a96aaa0 Merge pull request #4389 from Growstuff/revert-4384-dependabot/bundler/dotenv-rails-3.2.0
Revert "Bump dotenv-rails from 3.1.8 to 3.2.0"
2025-12-09 08:11:55 +10:30
Daniel O'Connor
1bc3217be6 Revert "Bump dotenv-rails from 3.1.8 to 3.2.0" 2025-12-09 08:11:40 +10:30
Daniel O'Connor
c2a94c9068 Merge pull request #4382 from Growstuff/dependabot/bundler/faker-3.5.3
Bump faker from 3.5.2 to 3.5.3
2025-12-09 00:30:01 +10:30
Daniel O'Connor
70d3856914 Merge pull request #4388 from Growstuff/dependabot/bundler/oj-3.16.13
Bump oj from 3.16.12 to 3.16.13
2025-12-09 00:29:38 +10:30
dependabot[bot]
e6487e639c Bump oj from 3.16.12 to 3.16.13
Bumps [oj](https://github.com/ohler55/oj) from 3.16.12 to 3.16.13.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.12...v3.16.13)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 10:11:56 +00:00
dependabot[bot]
8d7cc71503 Bump faker from 3.5.2 to 3.5.3
Bumps [faker](https://github.com/faker-ruby/faker) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.5.2...v3.5.3)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.5.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 10:11:43 +00:00
Daniel O'Connor
773cbd06bf Merge pull request #4385 from Growstuff/dependabot/bundler/scout_apm-6.0.0
Bump scout_apm from 5.8.0 to 6.0.0
2025-12-08 20:41:16 +10:30
Daniel O'Connor
3d7d6d9e73 Merge pull request #4384 from Growstuff/dependabot/bundler/dotenv-rails-3.2.0
Bump dotenv-rails from 3.1.8 to 3.2.0
2025-12-08 20:41:05 +10:30
Daniel O'Connor
c7b98720e9 Merge pull request #4387 from Growstuff/dependabot/bundler/selenium-webdriver-4.39.0
Bump selenium-webdriver from 4.38.0 to 4.39.0
2025-12-08 20:40:49 +10:30
Daniel O'Connor
3ddef1b2e5 Bump friendly_id from 5.5.1 to 5.6.0 (#4386)
Bumps [friendly_id](https://github.com/norman/friendly_id) from 5.5.1 to 5.6.0.
- [Changelog](https://github.com/norman/friendly_id/blob/master/Changelog.md)
- [Commits](https://github.com/norman/friendly_id/compare/5.5.1...v5.6.0)

---
updated-dependencies:
- dependency-name: friendly_id
  dependency-version: 5.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 20:40:25 +10:30
dependabot[bot]
78d665391e Bump selenium-webdriver from 4.38.0 to 4.39.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.38.0 to 4.39.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.38.0...selenium-4.39.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.39.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 07:02:25 +00:00
dependabot[bot]
cf12b910d5 Bump friendly_id from 5.5.1 to 5.6.0
Bumps [friendly_id](https://github.com/norman/friendly_id) from 5.5.1 to 5.6.0.
- [Changelog](https://github.com/norman/friendly_id/blob/master/Changelog.md)
- [Commits](https://github.com/norman/friendly_id/compare/5.5.1...v5.6.0)

---
updated-dependencies:
- dependency-name: friendly_id
  dependency-version: 5.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 07:01:36 +00:00
dependabot[bot]
400139bb6a Bump scout_apm from 5.8.0 to 6.0.0
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 5.8.0 to 6.0.0.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v5.8.0...v6.0.0)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 07:04:41 +00:00
dependabot[bot]
ceb4986542 Bump dotenv-rails from 3.1.8 to 3.2.0
Bumps [dotenv-rails](https://github.com/bkeepers/dotenv) from 3.1.8 to 3.2.0.
- [Release notes](https://github.com/bkeepers/dotenv/releases)
- [Changelog](https://github.com/bkeepers/dotenv/blob/main/Changelog.md)
- [Commits](https://github.com/bkeepers/dotenv/compare/v3.1.8...v3.2.0)

---
updated-dependencies:
- dependency-name: dotenv-rails
  dependency-version: 3.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-04 07:02:24 +00:00
google-labs-jules[bot]
7457edf559 Merge pull request #4380 from Growstuff/community-garden-landing-page
feat: Add community garden landing page
2025-12-03 18:20:40 +10:30
google-labs-jules[bot]
62951dc5d6 feat: Update crop page titles
- Include the correct English title case
- Include the scientific name if available
- Clearly indicate the crop page is a growing guide and open data repository.
2025-12-02 13:37:45 +00:00
Daniel O'Connor
f1c2a2a7fb Refactor author field to include type and name 2025-12-02 22:59:38 +10:30
Daniel O'Connor
48f96faba4 Include datePublished in social media posting
Added 'datePublished' field to social media posting data.
2025-12-02 22:58:05 +10:30
Daniel O'Connor
a0e8beb372 Update _head.html.haml 2025-12-02 22:51:08 +10:30
Daniel O'Connor
d91799cd51 Update _head.html.haml 2025-12-02 22:47:14 +10:30
Daniel O'Connor
840f57aa8f Delete public/google0bcc8a39985c1800.html 2025-12-02 22:46:06 +10:30
Daniel O'Connor
d28d2ebffd Add files via upload 2025-12-02 22:41:12 +10:30
Daniel O'Connor
fe51feb1b5 Merge pull request #4374 from Growstuff/CloCkWeRX-patch-2
Update sitemap URL in robots.txt
2025-12-02 22:36:42 +10:30
Daniel O'Connor
dad09384df Update sitemap URL in robots.txt 2025-12-02 22:36:29 +10:30
google-labs-jules[bot]
d7452280da Merge pull request #4372 from Growstuff/fix-sitemap-upload
Fix Sitemap Upload to S3
2025-12-02 22:21:26 +10:30
Daniel O'Connor
0d799f00f7 Merge pull request #4369 from Growstuff/sitemap-s3-upload
Upload Sitemap to S3
2025-12-02 02:08:11 +10:30
Daniel O'Connor
4ef1120ccb Merge pull request #4370 from Growstuff/CloCkWeRX-patch-2
Delete spec/tasks/sitemap_cached_spec.rb
2025-12-02 02:06:24 +10:30
Daniel O'Connor
4b9b85bdce bundle 2025-12-01 15:34:26 +00:00
google-labs-jules[bot]
e4c98487ba feat: Add more pages to sitemap
This commit adds static pages, harvests, posts, and photos to the sitemap.
2025-12-01 15:32:06 +00:00
Daniel O'Connor
be59bd9f27 Delete spec/tasks/sitemap_cached_spec.rb 2025-12-02 01:58:19 +10:30
google-labs-jules[bot]
62be64fd38 feat: Upload sitemap to S3 bucket
This commit configures the sitemap generation process to upload the sitemap to an S3 bucket instead of the local filesystem.

It introduces the `aws-sdk-s3` gem to handle the S3 communication. A new configuration file, `config/sitemap.rb`, has been added to define the S3 adapter and specify the models to be included in the sitemap. The S3 bucket, access keys, and region are configured via environment variables.
2025-12-01 15:27:59 +00:00
Daniel O'Connor
18df97acd6 Merge pull request #4368 from Growstuff/feature/add-sitemap-generator
Add Sitemap Generator
2025-12-02 01:32:39 +10:30
Daniel O'Connor
7ea74d8604 Delete config/sitemap.rb 2025-12-02 01:10:35 +10:30
Daniel O'Connor
0054e7d868 Delete lib/tasks/sitemap_cached.rake 2025-12-02 01:10:06 +10:30
Daniel O'Connor
b34442b16b bundle 2025-12-01 14:37:50 +00:00
Daniel O'Connor
0c6cb5b6fd Merge pull request #4367 from Growstuff/feature/dynamic-meta-descriptions
Add dynamic meta descriptions
2025-12-02 01:04:58 +10:30
google-labs-jules[bot]
7f75aed146 feat: Add sitemap generator
Adds the `sitemap_generator` gem to generate a sitemap.

- Includes static routes and dynamic routes for active crops, plantings, seeds, photos, posts, and members.
- Implements a caching mechanism to ensure the sitemap is generated no more frequently than every 72 hours.
- Updates `robots.txt` to point to the new sitemap.
- Includes a unit test for the caching Rake task.
2025-12-01 14:31:54 +00:00
google-labs-jules[bot]
91e1f1c004 feat: Add dynamic meta descriptions
This commit improves the meta descriptions for several pages by making them dynamic and object-specific.

- The default meta description in `app/views/layouts/_head.html.haml` has been updated to include a mention of open data.
- The `show.html.haml` views for crops, seeds, plantings, harvests, and members now have a `content_for :meta_description` block. This block uses the object's description or bio if available, and falls back to a generated string if not.
2025-12-01 14:21:43 +00:00
Daniel O'Connor
9e68fba87c Merge pull request #4366 from Growstuff/add-rack-deflater
Add and configure rack-deflater
2025-12-02 00:41:04 +10:30
Daniel O'Connor
ff658c0eb6 Merge pull request #4365 from Growstuff/add-meta-descriptions
Add meta descriptions to pages
2025-12-02 00:40:23 +10:30
Daniel O'Connor
88c63900c5 Update Gemfile 2025-12-02 00:33:28 +10:30
google-labs-jules[bot]
b029c65692 feat: Add and configure rack-deflater
This change adds the `rack-deflater` gem to the project and configures the application to use it. This will enable gzip compression for HTTP responses, improving performance by reducing the size of the data sent to the client.
2025-12-01 13:57:52 +00:00
Daniel O'Connor
d6a643fd88 Merge pull request #4364 from Growstuff/fix-nutrition-data-rendering
Fix nutrition data rendering
2025-12-02 00:25:34 +10:30
google-labs-jules[bot]
2742dba7fa feat: Add meta descriptions to pages
Adds a meta description tag to the landing, crops, plantings, harvests, seeds, and comments pages.

Also creates a new index page for comments.
2025-12-01 13:54:54 +00:00
Daniel O'Connor
e168070f08 Merge pull request #4363 from Growstuff/add-wikidata-pattern
Add pattern attribute to wikidata input on scientific names
2025-12-02 00:24:51 +10:30
google-labs-jules[bot]
65def47ead Fix: Correct nutrition data rendering and add AFCD name
This commit addresses two issues in the nutritional data view:

1.  **Fixes String Interpolation:** The HAML template incorrectly used an escaped hash (`\#{...}`) in string interpolations, which prevented the nutritional values from being rendered. This has been corrected by removing the backslash.
2.  **Adds AFCD Name:** The view now displays the `food_name` from the Australian Food Classification Data to provide more context to the user.
2025-12-01 13:41:31 +00:00
google-labs-jules[bot]
b5aaf2a124 feat: Add pattern attribute to wikidata input
Adds a pattern attribute to the wikidata input on scientific names to enforce the 'Q' followed by numbers format.
2025-12-01 13:30:24 +00:00
Daniel O'Connor
16956682a9 Merge pull request #4362 from Growstuff/feature/nutritional-data-partial
feat: Add nutritional data partial to crops and harvests
2025-12-01 23:58:17 +10:30
Daniel O'Connor
9ed06bebe6 Merge branch 'dev' into feature/nutritional-data-partial 2025-12-01 23:56:35 +10:30
Daniel O'Connor
e372ef3341 Merge pull request #4361 from Growstuff/improve-wikidata-rake-task
Improve Wikidata Rake Task
2025-12-01 23:56:10 +10:30
google-labs-jules[bot]
c45b75a967 feat: Add nutritional data partial to crops and harvests
This commit introduces a new partial to display nutritional data from the Australian Food Composition Database.

Key changes:
- Adds a database index to the `public_food_key` on the `crops` table.
- Establishes a `has_one` relationship between `Crop` and `AustralianFoodClassificationData`.
- Creates a `_nutritional_data.html.haml` partial to display a summary of key nutritional information.
- Renders the partial on the `show` pages for both crops and harvests.
2025-12-01 12:53:03 +00:00
google-labs-jules[bot]
72e7b7323f feat(rake): Prioritize scientific_names.wikidata_id in task
Improves the `wikidata:import_alternate_names` Rake task to first use the `wikidata_id` from the `scientific_names` table.

- Checks for a `wikidata_id` on a crop's `scientific_names`.
- Falls back to the existing `en_wikipedia_url` if no `wikidata_id` is found.
- Adds logging to indicate the source of the Wikidata ID.
- Improves error handling.
2025-12-01 12:52:49 +00:00
google-labs-jules[bot]
87f79fb071 feat(rake): Prioritize scientific names in Wikidata task
Improves the `wikidata:import_alternate_names` Rake task to first look up a crop's Wikidata ID using its scientific names.

- Iterates through a crop's scientific names to find a Wikidata ID.
- Falls back to the existing `en_wikipedia_url` if no ID is found via scientific names.
- Adds more detailed logging to the task.
- Improves error handling by checking for non-existent Wikipedia pages and using `.dig` for safer hash access.
2025-12-01 12:44:46 +00:00
Daniel O'Connor
c94cf21f72 Merge pull request #4359 from Growstuff/add-public-food-key-to-data-improvement
Add missing public food key id to data improvement page
2025-12-01 21:45:48 +10:30
google-labs-jules[bot]
31c72799ea feat: Add missing public food key id to data improvement page
This change adds a new tab to the data improvement page to show crops that are missing a public food key id.

I was unable to run tests or perform frontend verification due to a known issue with the Ruby environment.
2025-12-01 11:04:01 +00:00
Daniel O'Connor
9ae47afe04 Reduce to member login_name 2025-12-01 10:02:23 +00:00
Daniel O'Connor
e7d8ec6fd0 Fix styling 2025-12-01 09:29:42 +00:00
google-labs-jules[bot]
620337fbac Merge pull request #4353 from Growstuff/feat/import-australian-food-data
Add Rake Task to Import Australian Food Data
2025-12-01 19:43:14 +10:30
Daniel O'Connor
4de062838b Merge pull request #4354 from Growstuff/fix-crops-show-spec
Fix crops/show view spec
2025-12-01 19:42:56 +10:30
Daniel O'Connor
2aaca7b713 Bump rubocop-rails from 2.34.1 to 2.34.2 (#4355)
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.34.1 to 2.34.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.34.1...v2.34.2)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-01 19:42:04 +10:30
google-labs-jules[bot]
323c7dc3ee Optimize Data Improvement Page (#4356)
* feat: Add data improvement page to crops controller

This commit introduces a new data improvement page to the crops controller. The page displays tabbed lists of crops with missing data, allowing users to easily identify areas for data quality improvement.

The following data quality categories are included:
- Crops without photos
- Crops without descriptions
- Crops without a youtube video
- Crops without alternate names
- Crops without a scientific name with a wikidata id
- Crops without row spacing
- Crops without sun requirements
- Crops without height

All lists are sorted by planting count in descending order.

* refactor: Optimize data improvement page to load tab data on demand

This commit refactors the data improvement page to load data for each tab on demand, rather than loading all queries at once. This improves the performance of the page by only executing the query for the currently active tab.

The controller action now uses a `case` statement based on a `tab` URL parameter to execute the appropriate query. The view has been updated to pass this parameter when a tab is clicked.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-12-01 19:41:28 +10:30
Daniel O'Connor
d1509a303e Merge branch 'dev' into fix-crops-show-spec 2025-12-01 19:02:11 +10:30
dependabot[bot]
05e4ae7fbf Bump rubocop-rails from 2.34.1 to 2.34.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.34.1 to 2.34.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.34.1...v2.34.2)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 07:54:43 +00:00
google-labs-jules[bot]
30e7c5d01c Merge pull request #4352 from Growstuff/add-public-food-key
feat: Add Public Food Key to Crop model
2025-12-01 18:02:33 +10:30
Daniel O'Connor
ff6a6e2e11 Remove defunct gitter 2025-12-01 18:00:44 +10:30
google-labs-jules[bot]
6f0d0afdb8 Fix(specs): Initialize @version_members in crops/show view spec
The `crops/show` view spec was failing with a `NoMethodError` because
the `@version_members` instance variable was `nil`. This variable is used
in the `_history` partial, which is rendered by the `show` view.

This commit fixes the spec by initializing `@version_members` to an
empty hash in the `before` block of the spec. This ensures that the
view can render without errors during the test run.
2025-12-01 02:34:46 +00:00
Daniel O'Connor
c31d9cd09c Check presence of version members before accessing 2025-12-01 13:03:25 +10:30
Daniel O'Connor
3ba3c0077f Merge branch 'mainline' into dev 2025-11-30 15:05:43 +10:30
google-labs-jules[bot]
460daf36f9 Add revert functionality to admin crops page (#4346)
* feat(admin): add revert functionality to crops page

This change adds a "Revert" button to the admin crops page, allowing crop wranglers to revert changes to a previous version.

It introduces a new `Admin::VersionsController` with a `revert` action that uses `paper_trail`'s `reify` method to restore a previous version of a `Crop` object.

The view is updated to include a "Revert" button, which is guarded by a `can?(:wrangle, Crop)` check to ensure only authorized users can see it.

The controller also includes an authorization check to prevent unauthorized users from accessing the revert action directly.

A feature spec is added to test the new functionality, including the authorization logic.

* Consistent UX

* Specs

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-11-30 15:05:13 +10:30
google-labs-jules[bot]
13a8276313 Add version tracking to crops model (#4343)
* feat: Add version tracking to Crop model

This commit introduces version tracking for the Crop model using the PaperTrail gem.

Key changes include:
- Integrating `has_paper_trail` into the `Crop` model.
- Adding a "History" section to the crop show page to display a timeline of changes for that specific crop.
- Creating a new admin page for users with the "crop_wrangler" role to view a log of all recent crop edits, creations, and deletions.
- Fixing several N+1 query performance issues by eager-loading associated `Member` records in both the `CropsController` and the new `Admin::CropsController`.
- Refactoring view logic into a shared partial to reduce code duplication.

* Add papertrail

* Admin UI

* Add papertrail DB

* Add papertrail DB

* Rearrange

* Fix permissions

* Fix permissions

* Fix UI

* Fix UI

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-11-30 14:47:46 +10:30
Daniel O'Connor
756c79b1e0 Merge pull request #4344 from Growstuff/feature/add-schema-org-to-crops-page
Fix rendering
2025-11-30 14:15:18 +10:30
Daniel O'Connor
d2ac7bad15 Fix rendering 2025-11-30 03:44:52 +00:00
Daniel O'Connor
315af0aa7e Merge pull request #4342 from Growstuff/feature/add-schema-org-to-crops-page
Styling
2025-11-30 14:11:41 +10:30
Daniel O'Connor
b53bda136f Render less on some pages 2025-11-30 03:41:15 +00:00
Daniel O'Connor
7ef0ed6131 Document future 2025-11-30 03:38:55 +00:00
Daniel O'Connor
6ce3d1c069 Render images 2025-11-30 03:38:29 +00:00
Daniel O'Connor
d659df1814 Styling 2025-11-30 03:11:32 +00:00
Daniel O'Connor
0709baa4f8 Merge pull request #4340 from Growstuff/feature/add-schema-org-to-crops-page
Add schema.org markup to crop pages
2025-11-30 13:40:11 +10:30
Daniel O'Connor
d72a3989b5 Specific form links 2025-11-30 03:09:55 +00:00
Daniel O'Connor
bf9f67667d Merge branch 'dev' of https://github.com/Growstuff/growstuff into feature/add-schema-org-to-crops-page 2025-11-30 03:08:09 +00:00
Daniel O'Connor
58bad7eeb0 Add more schema.org 2025-11-30 03:02:10 +00:00
Daniel O'Connor
38aa245290 Move to crops helper 2025-11-30 02:59:04 +00:00
Daniel O'Connor
d570b27a7b Update _schema_org.html.haml 2025-11-30 13:26:37 +10:30
Daniel O'Connor
7d43d4d9e2 Merge pull request #4341 from Growstuff/feature/add-wikidata-id
Allow Wikidata ID to be set when editing a scientific name
2025-11-30 13:25:03 +10:30
Daniel O'Connor
e8dbcb0916 Delete db/migrate/20251129185029_add_wikidata_id_to_scientific_names.rb 2025-11-30 13:24:42 +10:30
google-labs-jules[bot]
d31a6ec221 feat: Add Wikidata ID to scientific names
This commit introduces the ability to store and display the Wikidata ID for scientific names.

Changes include:
- A database migration to add the `wikidata_id` column to the `scientific_names` table.
- An update to the `scientific_names_controller` to permit the `wikidata_id` parameter.
- An update to the scientific name form to include a field for the Wikidata ID.
- An update to the crop show page to display a link to the Wikidata page for a scientific name.
2025-11-30 02:53:19 +00:00
Daniel O'Connor
a000ea835d Merge pull request #4339 from Growstuff/feature/add-contribution-links
Add Contribution Links and Conditional Edit Form
2025-11-30 13:17:09 +10:30
google-labs-jules[bot]
b204030f70 feat: Add schema.org markup to crop pages
Adds schema.org markup to the crop pages using the BioChemEntity type. The taxonomicRange attribute is used to list the scientific names of the crop, which will improve SEO.
2025-11-30 02:45:46 +00:00
google-labs-jules[bot]
63477ee59d feat: Add contribution links and conditional edit form
This commit introduces a series of changes to encourage user contributions for missing crop data.

On the crop show page, it adds links for logged-in users to:
- Add a description if one is not present.
- Add a YouTube video if one is not present.
- Add more attributes in the predictions section if any are missing.

On the crop edit page, the form now conditionally displays fields. For standard users, it only shows fields for attributes that are currently empty. For privileged users (wranglers), it displays all fields, allowing them to edit existing data.
2025-11-30 02:38:05 +00:00
Daniel O'Connor
b27e263fdf Merge pull request #4338 from Growstuff/CloCkWeRX-patch-2
Update crops_helper.rb
2025-11-29 19:54:05 +10:30
Daniel O'Connor
e3a2bdd6aa Update crops_helper.rb 2025-11-29 19:53:49 +10:30
Daniel O'Connor
6ae241dc0d Merge pull request #4336 from Growstuff/dev
release 76
2025-11-29 19:40:38 +10:30
Daniel O'Connor
313e240eb9 Merge pull request #4337 from Growstuff/recursive-fallback
More recursive companions
2025-11-29 19:39:31 +10:30
Daniel O'Connor
14aa673440 Merge branch 'mainline' into dev 2025-11-29 19:31:17 +10:30
Daniel O'Connor
cef23b8212 More recursive companions 2025-11-29 08:55:29 +00:00
Daniel O'Connor
3b45dca6e2 Merge pull request #4335 from Growstuff/recursive-fallback
Recursive parent lookup
2025-11-29 19:17:12 +10:30
Daniel O'Connor
9060c45aed Recursive parent lookup 2025-11-29 08:36:43 +00:00
Daniel O'Connor
d4401b402a Merge pull request #4334 from Growstuff/dev
release 75
2025-11-29 18:21:22 +10:30
Daniel O'Connor
372a5edc29 Merge branch 'mainline' into dev 2025-11-29 18:21:07 +10:30
Daniel O'Connor
1f0777fda0 Merge pull request #4333 from Growstuff/parent-fallback
Crops > Show detail from parent
2025-11-29 17:03:57 +10:30
Daniel O'Connor
6503e2554c Better fallback 2025-11-29 06:15:18 +00:00
Daniel O'Connor
4fd544c0b8 Show parent crop 2025-11-29 05:53:58 +00:00
Daniel O'Connor
f7e1aafc25 Fallback to parent for photos, youtube 2025-11-29 05:52:27 +00:00
Daniel O'Connor
208720c46c Show parent crop details if known 2025-11-29 05:49:28 +00:00
Daniel O'Connor
370c8683fd On show, fall back to parent crop if no detail known 2025-11-29 05:46:23 +00:00
Daniel O'Connor
e5aa2aaa1f Release 74 (#4284)
* Bump icalendar from 2.11.2 to 2.12.0

Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.11.2 to 2.12.0.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.11.2...v2.12.0)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop from 1.81.0 to 1.81.1

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.0 to 1.81.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.0...v1.81.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump haml-rails from 2.1.0 to 3.0.0

Bumps [haml-rails](https://github.com/haml/haml-rails) from 2.1.0 to 3.0.0.
- [Commits](https://github.com/haml/haml-rails/compare/v2.1.0...v3.0.0)

---
updated-dependencies:
- dependency-name: haml-rails
  dependency-version: 3.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump faraday from 2.13.4 to 2.14.0

Bumps [faraday](https://github.com/lostisland/faraday) from 2.13.4 to 2.14.0.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.13.4...v2.14.0)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop-rails from 2.33.3 to 2.33.4

Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.3 to 2.33.4.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.3...v2.33.4)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.33.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Merge pull request #4277 from Growstuff/add-activity-update-coverage

Add test coverage for updating an activity via the API

* Bump rack from 2.2.18 to 2.2.19

Bumps [rack](https://github.com/rack/rack) from 2.2.18 to 2.2.19.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.18...v2.2.19)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.19
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump active_record_union from 1.3.0 to 1.4.0

Bumps [active_record_union](https://github.com/brianhempel/active_record_union) from 1.3.0 to 1.4.0.
- [Commits](https://github.com/brianhempel/active_record_union/commits)

---
updated-dependencies:
- dependency-name: active_record_union
  dependency-version: 1.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump selenium-webdriver from 4.35.0 to 4.36.0

Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.35.0 to 4.36.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.35.0...selenium-4.36.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.36.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rack from 2.2.19 to 2.2.20

Bumps [rack](https://github.com/rack/rack) from 2.2.19 to 2.2.20.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.19...v2.2.20)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump icalendar from 2.12.0 to 2.12.1

Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.12.0 to 2.12.1.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.12.0...v2.12.1)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-version: 2.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump puma from 7.0.4 to 7.1.0

Bumps [puma](https://github.com/puma/puma) from 7.0.4 to 7.1.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/main/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.4...v7.1.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump chartkick from 5.2.0 to 5.2.1

Bumps [chartkick](https://github.com/ankane/chartkick) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: chartkick
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop from 1.81.1 to 1.81.6

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.1 to 1.81.6.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.1...v1.81.6)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump jquery-rails from 4.6.0 to 4.6.1

Bumps [jquery-rails](https://github.com/rails/jquery-rails) from 4.6.0 to 4.6.1.
- [Changelog](https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/jquery-rails/compare/v4.6.0...v4.6.1)

---
updated-dependencies:
- dependency-name: jquery-rails
  dependency-version: 4.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump actions/upload-artifact from 4 to 5

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump haml from 6.3.0 to 7.0.0

Bumps [haml](https://haml.info) from 6.3.0 to 7.0.0.

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump selenium-webdriver from 4.36.0 to 4.38.0

Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.36.0 to 4.38.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.36.0...selenium-4.38.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump haml_lint from 0.66.0 to 0.67.0

Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.66.0 to 0.67.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.66.0...v0.67.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.67.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump haml from 7.0.0 to 7.0.1

Bumps [haml](https://haml.info) from 7.0.0 to 7.0.1.

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rails from 7.2.2.2 to 7.2.3

Bumps [rails](https://github.com/rails/rails) from 7.2.2.2 to 7.2.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.2.2.2...v7.2.3)

---
updated-dependencies:
- dependency-name: rails
  dependency-version: 7.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump actions/setup-node from 5 to 6

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump responders from 3.1.1 to 3.2.0

Bumps [responders](https://github.com/heartcombo/responders) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/heartcombo/responders/releases)
- [Changelog](https://github.com/heartcombo/responders/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/responders/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: responders
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump bullet from 8.0.8 to 8.1.0

Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.0.8 to 8.1.0.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/8.0.8...8.1.0)

---
updated-dependencies:
- dependency-name: bullet
  dependency-version: 8.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump query_diet from 0.7.2 to 0.7.3

Bumps [query_diet](https://github.com/makandra/query_diet) from 0.7.2 to 0.7.3.
- [Changelog](https://github.com/makandra/query_diet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/makandra/query_diet/compare/v0.7.2...v0.7.3)

---
updated-dependencies:
- dependency-name: query_diet
  dependency-version: 0.7.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump oj from 3.16.11 to 3.16.12

Bumps [oj](https://github.com/ohler55/oj) from 3.16.11 to 3.16.12.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.11...v3.16.12)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump scout_apm from 5.7.1 to 5.8.0

Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 5.7.1 to 5.8.0.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v5.7.1...v5.8.0)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump axe-core-capybara from 4.10.3 to 4.11.0

Bumps [axe-core-capybara](https://github.com/dequelabs/axe-core-gems) from 4.10.3 to 4.11.0.
- [Release notes](https://github.com/dequelabs/axe-core-gems/releases)
- [Changelog](https://github.com/dequelabs/axe-core-gems/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core-gems/compare/v4.10.3...v4.11.0)

---
updated-dependencies:
- dependency-name: axe-core-capybara
  dependency-version: 4.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rake from 13.3.0 to 13.3.1

Bumps [rake](https://github.com/ruby/rake) from 13.3.0 to 13.3.1.
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](https://github.com/ruby/rake/compare/v13.3.0...v13.3.1)

---
updated-dependencies:
- dependency-name: rake
  dependency-version: 13.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop from 1.81.6 to 1.81.7

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.6 to 1.81.7.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.6...v1.81.7)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rswag-specs from 2.16.0 to 2.17.0

Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: rswag-specs
  dependency-version: 2.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rswag-ui from 2.16.0 to 2.17.0

Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: rswag-ui
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rswag-api from 2.16.0 to 2.17.0

Bumps [rswag-api](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: rswag-api
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop-factory_bot from 2.27.1 to 2.28.0

Bumps [rubocop-factory_bot](https://github.com/rubocop/rubocop-factory_bot) from 2.27.1 to 2.28.0.
- [Release notes](https://github.com/rubocop/rubocop-factory_bot/releases)
- [Changelog](https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-factory_bot/compare/v2.27.1...v2.28.0)

---
updated-dependencies:
- dependency-name: rubocop-factory_bot
  dependency-version: 2.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump i18n-tasks from 1.0.15 to 1.1.0

Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.15 to 1.1.0.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.15...v1.1.0)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop-rspec_rails from 2.31.0 to 2.32.0

Bumps [rubocop-rspec_rails](https://github.com/rubocop/rubocop-rspec_rails) from 2.31.0 to 2.32.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec_rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec_rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec_rails/compare/v2.31.0...v2.32.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec_rails
  dependency-version: 2.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump js-yaml from 3.14.1 to 3.14.2

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump haml from 7.0.1 to 7.0.2

Bumps [haml](https://github.com/haml/haml) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/haml/haml/releases)
- [Changelog](https://github.com/haml/haml/blob/main/CHANGELOG.md)
- [Commits](https://github.com/haml/haml/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump actions/checkout from 5 to 6

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop-rspec from 3.7.0 to 3.8.0

Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.7.0...v3.8.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-version: 3.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop-rails from 2.33.4 to 2.34.1

Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.4 to 2.34.1.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.4...v2.34.1)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: Add YouTube video to crop page

This commit introduces the following changes:

- Adds an `en_youtube_url` attribute to the `Crop` model to store a URL for an English language YouTube video.
- If a `en_youtube_url` is present for a crop, the video is embedded on the crop's show page.
- A link is added to the "Learn more" section of the crop's show page to search YouTube for "growing [crop name]".
- A helper method is added to extract the video ID from various YouTube URL formats.
- A validation is added to the `Crop` model to ensure that the `en_youtube_url` is a valid YouTube URL.

* feat: Add YouTube video to crop page

This commit introduces the following changes:

- Adds an `en_youtube_url` attribute to the `Crop` model to store a URL for an English language YouTube video.
- The `en_youtube_url` is now an editable field in the crop form.
- If a `en_youtube_url` is present for a crop, the video is embedded on the crop's show page.
- A link is added to the "Learn more" section of the crop's show page to search YouTube for "growing [crop name]".
- A helper method is added to extract the video ID from various YouTube URL formats.
- A validation is added to the `Crop` model to ensure that the `en_youtube_url` is a valid YouTube URL.

* Bump i18n-tasks from 1.1.0 to 1.1.2

Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.1.0...v1.1.2)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Rearrange

* feat: Migrate crop description to a dedicated column

This change migrates the crop description from the `openfarm_data` JSONB field to a new, dedicated `description` text column in the `crops` table.

A data migration is included to move the existing description data to the new column. The `OpenFarmData` concern is updated to remove the now-redundant `description` method.

* Merge pull request #4332 from Growstuff/crops-controller

Add coverage for crops

* I have added the `before_destroy` callback to the `Crop` model to destroy all `CropCompanion` records where the crop is `crop_b`. (#4266)

I have added a new test to `spec/models/crop_spec.rb` to verify that deleting a crop also destroys the associated `CropCompanion` records.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-29 15:36:34 +10:30
Daniel O'Connor
ba9117db4d I have added the before_destroy callback to the Crop model to destroy all CropCompanion records where the crop is crop_b. (#4266)
I have added a new test to `spec/models/crop_spec.rb` to verify that deleting a crop also destroys the associated `CropCompanion` records.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-29 15:32:47 +10:30
Daniel O'Connor
474f09e110 Merge pull request #4332 from Growstuff/crops-controller
Add coverage for crops
2025-11-29 15:32:08 +10:30
Daniel O'Connor
0a89ac7e28 Merge pull request #4331 from Growstuff/feature/migrate-crop-description
feat: Migrate crop description to a dedicated column
2025-11-29 14:49:24 +10:30
Daniel O'Connor
8485bec90d Merge pull request #4329 from Growstuff/add-youtube-video-to-crop
Add YouTube Video to Crop Page
2025-11-29 14:46:22 +10:30
Daniel O'Connor
1427446500 Merge pull request #4326 from Growstuff/dependabot/bundler/i18n-tasks-1.1.2
Bump i18n-tasks from 1.1.0 to 1.1.2
2025-11-29 14:41:19 +10:30
google-labs-jules[bot]
8f6738eefa feat: Migrate crop description to a dedicated column
This change migrates the crop description from the `openfarm_data` JSONB field to a new, dedicated `description` text column in the `crops` table.

A data migration is included to move the existing description data to the new column. The `OpenFarmData` concern is updated to remove the now-redundant `description` method.
2025-11-29 04:07:25 +00:00
Daniel O'Connor
be73a479ad Merge branch 'dev' into add-youtube-video-to-crop 2025-11-29 14:26:28 +10:30
Daniel O'Connor
e0aaa9e44f Rearrange 2025-11-29 14:26:15 +10:30
dependabot[bot]
d823bbb743 Bump i18n-tasks from 1.1.0 to 1.1.2
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.1.0...v1.1.2)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-29 03:56:08 +00:00
google-labs-jules[bot]
73c7158454 feat: Add YouTube video to crop page
This commit introduces the following changes:

- Adds an `en_youtube_url` attribute to the `Crop` model to store a URL for an English language YouTube video.
- The `en_youtube_url` is now an editable field in the crop form.
- If a `en_youtube_url` is present for a crop, the video is embedded on the crop's show page.
- A link is added to the "Learn more" section of the crop's show page to search YouTube for "growing [crop name]".
- A helper method is added to extract the video ID from various YouTube URL formats.
- A validation is added to the `Crop` model to ensure that the `en_youtube_url` is a valid YouTube URL.
2025-11-29 03:45:23 +00:00
Daniel O'Connor
253fe0b903 Merge pull request #4324 from Growstuff/dependabot/bundler/rubocop-rails-2.34.1
Bump rubocop-rails from 2.33.4 to 2.34.1
2025-11-29 14:14:10 +10:30
Daniel O'Connor
08e47b89f1 Merge pull request #4319 from Growstuff/dependabot/bundler/rubocop-rspec-3.8.0
Bump rubocop-rspec from 3.7.0 to 3.8.0
2025-11-29 14:13:10 +10:30
google-labs-jules[bot]
684768ba5c feat: Add YouTube video to crop page
This commit introduces the following changes:

- Adds an `en_youtube_url` attribute to the `Crop` model to store a URL for an English language YouTube video.
- If a `en_youtube_url` is present for a crop, the video is embedded on the crop's show page.
- A link is added to the "Learn more" section of the crop's show page to search YouTube for "growing [crop name]".
- A helper method is added to extract the video ID from various YouTube URL formats.
- A validation is added to the `Crop` model to ensure that the `en_youtube_url` is a valid YouTube URL.
2025-11-29 03:40:59 +00:00
dependabot[bot]
ebdba592b3 Bump rubocop-rails from 2.33.4 to 2.34.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.4 to 2.34.1.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.4...v2.34.1)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.34.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-29 03:29:54 +00:00
dependabot[bot]
183d910e7e Bump rubocop-rspec from 3.7.0 to 3.8.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.7.0...v3.8.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-version: 3.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-29 03:29:37 +00:00
Daniel O'Connor
d9ba4fabe7 Merge pull request #4316 from Growstuff/dependabot/bundler/haml-7.0.2
Bump haml from 7.0.1 to 7.0.2
2025-11-29 13:56:12 +10:30
Daniel O'Connor
c4216cb337 Merge pull request #4323 from Growstuff/dependabot/github_actions/actions/checkout-6
Bump actions/checkout from 5 to 6
2025-11-29 13:55:59 +10:30
dependabot[bot]
1a65457c78 Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 07:01:55 +00:00
Daniel O'Connor
ee848ea4c9 Merge pull request #4322 from Growstuff/dependabot/npm_and_yarn/js-yaml-3.14.2
Bump js-yaml from 3.14.1 to 3.14.2
2025-11-20 19:39:37 +10:30
dependabot[bot]
866a428dd5 Bump haml from 7.0.1 to 7.0.2
Bumps [haml](https://github.com/haml/haml) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/haml/haml/releases)
- [Changelog](https://github.com/haml/haml/blob/main/CHANGELOG.md)
- [Commits](https://github.com/haml/haml/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 08:39:55 +00:00
dependabot[bot]
086e440fe5 Bump js-yaml from 3.14.1 to 3.14.2
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 08:39:44 +00:00
Daniel O'Connor
bca0c06d7f Merge pull request #4318 from Growstuff/dependabot/bundler/rubocop-rspec_rails-2.32.0
Bump rubocop-rspec_rails from 2.31.0 to 2.32.0
2025-11-20 19:08:47 +10:30
dependabot[bot]
5cdf8a1316 Bump rubocop-rspec_rails from 2.31.0 to 2.32.0
Bumps [rubocop-rspec_rails](https://github.com/rubocop/rubocop-rspec_rails) from 2.31.0 to 2.32.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec_rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec_rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec_rails/compare/v2.31.0...v2.32.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec_rails
  dependency-version: 2.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 14:30:21 +00:00
Daniel O'Connor
0fc486685a Merge pull request #4317 from Growstuff/dependabot/bundler/rubocop-factory_bot-2.28.0
Bump rubocop-factory_bot from 2.27.1 to 2.28.0
2025-11-18 00:55:47 +10:30
Daniel O'Connor
707920e8e1 Merge branch 'dev' into dependabot/bundler/rubocop-factory_bot-2.28.0 2025-11-18 00:55:35 +10:30
Daniel O'Connor
cbae940741 Merge pull request #4320 from Growstuff/dependabot/bundler/i18n-tasks-1.1.0
Bump i18n-tasks from 1.0.15 to 1.1.0
2025-11-17 21:39:31 +10:30
dependabot[bot]
606d811b73 Bump i18n-tasks from 1.0.15 to 1.1.0
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.15 to 1.1.0.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.15...v1.1.0)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 07:01:24 +00:00
dependabot[bot]
d59a80d706 Bump rubocop-factory_bot from 2.27.1 to 2.28.0
Bumps [rubocop-factory_bot](https://github.com/rubocop/rubocop-factory_bot) from 2.27.1 to 2.28.0.
- [Release notes](https://github.com/rubocop/rubocop-factory_bot/releases)
- [Changelog](https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-factory_bot/compare/v2.27.1...v2.28.0)

---
updated-dependencies:
- dependency-name: rubocop-factory_bot
  dependency-version: 2.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-13 07:01:09 +00:00
Daniel O'Connor
bf39e0dbd9 Merge pull request #4314 from Growstuff/dependabot/bundler/rswag-api-2.17.0
Bump rswag-api from 2.16.0 to 2.17.0
2025-11-07 12:02:34 +10:30
dependabot[bot]
d8502b7d99 Bump rswag-api from 2.16.0 to 2.17.0
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: rswag-api
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-07 01:00:53 +00:00
Daniel O'Connor
d3903dc2b1 Merge pull request #4313 from Growstuff/dependabot/bundler/rswag-specs-2.17.0
Bump rswag-specs from 2.16.0 to 2.17.0
2025-11-07 11:30:19 +10:30
Daniel O'Connor
374f09c805 Merge pull request #4315 from Growstuff/dependabot/bundler/rswag-ui-2.17.0
Bump rswag-ui from 2.16.0 to 2.17.0
2025-11-07 11:29:47 +10:30
dependabot[bot]
0cc44bf1a8 Bump rswag-ui from 2.16.0 to 2.17.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: rswag-ui
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 07:04:00 +00:00
dependabot[bot]
f7222c80a7 Bump rswag-specs from 2.16.0 to 2.17.0
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: rswag-specs
  dependency-version: 2.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 07:01:42 +00:00
Daniel O'Connor
e56f444dc6 Merge pull request #4312 from Growstuff/dependabot/bundler/rubocop-1.81.7
Bump rubocop from 1.81.6 to 1.81.7
2025-11-03 23:05:57 +10:30
dependabot[bot]
832460d95c Bump rubocop from 1.81.6 to 1.81.7
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.6 to 1.81.7.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.6...v1.81.7)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 07:03:28 +00:00
Daniel O'Connor
c01e88eeda Merge pull request #4306 from Growstuff/dependabot/bundler/rake-13.3.1
Bump rake from 13.3.0 to 13.3.1
2025-11-01 19:35:53 +10:30
dependabot[bot]
7312317ab7 Bump rake from 13.3.0 to 13.3.1
Bumps [rake](https://github.com/ruby/rake) from 13.3.0 to 13.3.1.
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](https://github.com/ruby/rake/compare/v13.3.0...v13.3.1)

---
updated-dependencies:
- dependency-name: rake
  dependency-version: 13.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 07:17:08 +00:00
Daniel O'Connor
3eaef40d92 Merge pull request #4299 from Growstuff/dependabot/bundler/axe-core-capybara-4.11.0
Bump axe-core-capybara from 4.10.3 to 4.11.0
2025-11-01 17:45:55 +10:30
dependabot[bot]
4123ea5929 Bump axe-core-capybara from 4.10.3 to 4.11.0
Bumps [axe-core-capybara](https://github.com/dequelabs/axe-core-gems) from 4.10.3 to 4.11.0.
- [Release notes](https://github.com/dequelabs/axe-core-gems/releases)
- [Changelog](https://github.com/dequelabs/axe-core-gems/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core-gems/compare/v4.10.3...v4.11.0)

---
updated-dependencies:
- dependency-name: axe-core-capybara
  dependency-version: 4.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 06:54:28 +00:00
Daniel O'Connor
7b6351ccdb Merge pull request #4308 from Growstuff/dependabot/bundler/oj-3.16.12
Bump oj from 3.16.11 to 3.16.12
2025-11-01 17:20:09 +10:30
Daniel O'Connor
931f351f2f Merge pull request #4310 from Growstuff/dependabot/bundler/scout_apm-5.8.0
Bump scout_apm from 5.7.1 to 5.8.0
2025-11-01 17:20:00 +10:30
dependabot[bot]
62decd2054 Bump scout_apm from 5.7.1 to 5.8.0
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 5.7.1 to 5.8.0.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v5.7.1...v5.8.0)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 06:38:02 +00:00
dependabot[bot]
ad8d479a5d Bump oj from 3.16.11 to 3.16.12
Bumps [oj](https://github.com/ohler55/oj) from 3.16.11 to 3.16.12.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.11...v3.16.12)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 06:37:56 +00:00
dependabot[bot]
0460a16841 Merge pull request #4304 from Growstuff/dependabot/bundler/query_diet-0.7.3 2025-11-01 06:25:09 +00:00
dependabot[bot]
a55a066fbe Bump query_diet from 0.7.2 to 0.7.3
Bumps [query_diet](https://github.com/makandra/query_diet) from 0.7.2 to 0.7.3.
- [Changelog](https://github.com/makandra/query_diet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/makandra/query_diet/compare/v0.7.2...v0.7.3)

---
updated-dependencies:
- dependency-name: query_diet
  dependency-version: 0.7.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 06:06:27 +00:00
Daniel O'Connor
8c7a073f10 Merge pull request #4300 from Growstuff/dependabot/bundler/bullet-8.1.0
Bump bullet from 8.0.8 to 8.1.0
2025-11-01 16:30:32 +10:30
Daniel O'Connor
d2aa471afd Merge pull request #4289 from Growstuff/dependabot/bundler/responders-3.2.0
Bump responders from 3.1.1 to 3.2.0
2025-11-01 16:18:17 +10:30
Daniel O'Connor
81f670cafc Merge pull request #4290 from Growstuff/dependabot/github_actions/actions/setup-node-6
Bump actions/setup-node from 5 to 6
2025-11-01 16:12:41 +10:30
dependabot[bot]
4cd0b66ccc Bump bullet from 8.0.8 to 8.1.0
Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.0.8 to 8.1.0.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/8.0.8...8.1.0)

---
updated-dependencies:
- dependency-name: bullet
  dependency-version: 8.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 05:31:08 +00:00
dependabot[bot]
80337489e6 Bump responders from 3.1.1 to 3.2.0
Bumps [responders](https://github.com/heartcombo/responders) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/heartcombo/responders/releases)
- [Changelog](https://github.com/heartcombo/responders/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/responders/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: responders
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 05:30:23 +00:00
Daniel O'Connor
2c0e451dbb Merge pull request #4307 from Growstuff/dependabot/bundler/rails-7.2.3
Bump rails from 7.2.2.2 to 7.2.3
2025-11-01 15:50:56 +10:30
dependabot[bot]
7e35be1592 Merge pull request #4309 from Growstuff/dependabot/bundler/haml-7.0.1 2025-11-01 05:18:53 +00:00
dependabot[bot]
1fca1a234b Bump actions/setup-node from 5 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 04:53:30 +00:00
dependabot[bot]
a559093324 Bump rails from 7.2.2.2 to 7.2.3
Bumps [rails](https://github.com/rails/rails) from 7.2.2.2 to 7.2.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.2.2.2...v7.2.3)

---
updated-dependencies:
- dependency-name: rails
  dependency-version: 7.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 04:52:02 +00:00
dependabot[bot]
a667183b1d Bump haml from 7.0.0 to 7.0.1
Bumps [haml](https://haml.info) from 7.0.0 to 7.0.1.

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 04:23:18 +00:00
Daniel O'Connor
1b3f1220e3 Merge pull request #4301 from Growstuff/dependabot/github_actions/actions/upload-artifact-5
Bump actions/upload-artifact from 4 to 5
2025-11-01 14:52:43 +10:30
Daniel O'Connor
578648b86f Merge pull request #4311 from Growstuff/dependabot/bundler/haml_lint-0.67.0
Bump haml_lint from 0.66.0 to 0.67.0
2025-11-01 14:52:31 +10:30
Daniel O'Connor
c0d918ac8f Merge branch 'dev' into dependabot/bundler/haml_lint-0.67.0 2025-11-01 14:52:25 +10:30
Daniel O'Connor
91e305a40a Merge pull request #4302 from Growstuff/dependabot/bundler/selenium-webdriver-4.38.0
Bump selenium-webdriver from 4.36.0 to 4.38.0
2025-11-01 14:49:31 +10:30
dependabot[bot]
3cd8e39a58 Bump haml_lint from 0.66.0 to 0.67.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.66.0 to 0.67.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.66.0...v0.67.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.67.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 07:04:59 +00:00
dependabot[bot]
30ba5b2068 Bump selenium-webdriver from 4.36.0 to 4.38.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.36.0 to 4.38.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.36.0...selenium-4.38.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 07:17:33 +00:00
Daniel O'Connor
f0ef5671fa Merge pull request #4305 from Growstuff/dependabot/bundler/haml-7.0.0
Bump haml from 6.3.0 to 7.0.0
2025-10-28 17:46:25 +10:30
dependabot[bot]
22c3947b57 Bump haml from 6.3.0 to 7.0.0
Bumps [haml](https://haml.info) from 6.3.0 to 7.0.0.

---
updated-dependencies:
- dependency-name: haml
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 07:03:43 +00:00
dependabot[bot]
3fd3ea1e3f Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 07:17:42 +00:00
Daniel O'Connor
171afc5a05 Merge pull request #4298 from Growstuff/dependabot/bundler/jquery-rails-4.6.1
Bump jquery-rails from 4.6.0 to 4.6.1
2025-10-22 20:49:52 +10:30
Daniel O'Connor
24400c4bf8 Merge pull request #4296 from Growstuff/dependabot/bundler/rubocop-1.81.6
Bump rubocop from 1.81.1 to 1.81.6
2025-10-22 20:47:51 +10:30
dependabot[bot]
b6c6ee5195 Bump jquery-rails from 4.6.0 to 4.6.1
Bumps [jquery-rails](https://github.com/rails/jquery-rails) from 4.6.0 to 4.6.1.
- [Changelog](https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/jquery-rails/compare/v4.6.0...v4.6.1)

---
updated-dependencies:
- dependency-name: jquery-rails
  dependency-version: 4.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 07:01:50 +00:00
dependabot[bot]
9d55aeecf1 Bump rubocop from 1.81.1 to 1.81.6
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.1 to 1.81.6.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.1...v1.81.6)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 07:01:09 +00:00
Daniel O'Connor
fcec1cf8bb Merge pull request #4291 from Growstuff/dependabot/bundler/chartkick-5.2.1
Bump chartkick from 5.2.0 to 5.2.1
2025-10-21 20:30:26 +10:30
dependabot[bot]
6bfda9b8cf Bump chartkick from 5.2.0 to 5.2.1
Bumps [chartkick](https://github.com/ankane/chartkick) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: chartkick
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 09:22:05 +00:00
Daniel O'Connor
4576a689f1 Merge pull request #4293 from Growstuff/dependabot/bundler/puma-7.1.0
Bump puma from 7.0.4 to 7.1.0
2025-10-21 19:50:52 +10:30
dependabot[bot]
e9306c0652 Bump puma from 7.0.4 to 7.1.0
Bumps [puma](https://github.com/puma/puma) from 7.0.4 to 7.1.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/main/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.4...v7.1.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 08:32:42 +00:00
Daniel O'Connor
f7da8773cc Merge pull request #4292 from Growstuff/dependabot/bundler/icalendar-2.12.1
Bump icalendar from 2.12.0 to 2.12.1
2025-10-21 18:50:13 +10:30
dependabot[bot]
d1295dcace Bump icalendar from 2.12.0 to 2.12.1
Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.12.0 to 2.12.1.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.12.0...v2.12.1)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-version: 2.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 07:11:46 +00:00
Daniel O'Connor
394fbbae55 Merge pull request #4288 from Growstuff/dependabot/bundler/rack-2.2.20
Bump rack from 2.2.19 to 2.2.20
2025-10-11 19:53:20 +10:30
dependabot[bot]
dbcafae9c2 Bump rack from 2.2.19 to 2.2.20
Bumps [rack](https://github.com/rack/rack) from 2.2.19 to 2.2.20.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.19...v2.2.20)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 19:08:11 +00:00
Daniel O'Connor
a48a082d98 Merge pull request #4286 from Growstuff/dependabot/bundler/selenium-webdriver-4.36.0
Bump selenium-webdriver from 4.35.0 to 4.36.0
2025-10-08 21:12:34 +10:30
Daniel O'Connor
6dca8a8103 Bump active_record_union from 1.3.0 to 1.4.0 (#4285)
Bumps [active_record_union](https://github.com/brianhempel/active_record_union) from 1.3.0 to 1.4.0.
- [Commits](https://github.com/brianhempel/active_record_union/commits)

---
updated-dependencies:
- dependency-name: active_record_union
  dependency-version: 1.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-08 21:12:06 +10:30
dependabot[bot]
12887fb17a Bump selenium-webdriver from 4.35.0 to 4.36.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.35.0 to 4.36.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.35.0...selenium-4.36.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.36.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 10:21:09 +00:00
dependabot[bot]
1a005062c1 Bump active_record_union from 1.3.0 to 1.4.0
Bumps [active_record_union](https://github.com/brianhempel/active_record_union) from 1.3.0 to 1.4.0.
- [Commits](https://github.com/brianhempel/active_record_union/commits)

---
updated-dependencies:
- dependency-name: active_record_union
  dependency-version: 1.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 10:21:07 +00:00
dependabot[bot]
6f01c0cf53 Merge pull request #4287 from Growstuff/dependabot/bundler/rack-2.2.19 2025-10-08 10:19:50 +00:00
dependabot[bot]
44e9928805 Bump rack from 2.2.18 to 2.2.19
Bumps [rack](https://github.com/rack/rack) from 2.2.18 to 2.2.19.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.18...v2.2.19)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.19
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 19:15:23 +00:00
google-labs-jules[bot]
63d65c4e6b Merge pull request #4277 from Growstuff/add-activity-update-coverage
Add test coverage for updating an activity via the API
2025-09-30 20:29:11 +09:30
Daniel O'Connor
852ac600f4 Merge pull request #4278 from Growstuff/dependabot/bundler/rubocop-rails-2.33.4
Bump rubocop-rails from 2.33.3 to 2.33.4
2025-09-30 19:46:11 +09:30
dependabot[bot]
e182beb12a Bump rubocop-rails from 2.33.3 to 2.33.4
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.3 to 2.33.4.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.3...v2.33.4)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.33.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 23:35:18 +00:00
dependabot[bot]
ae33785fc2 Merge pull request #4280 from Growstuff/dependabot/bundler/faraday-2.14.0 2025-09-29 23:34:07 +00:00
dependabot[bot]
169d452c1f Bump faraday from 2.13.4 to 2.14.0
Bumps [faraday](https://github.com/lostisland/faraday) from 2.13.4 to 2.14.0.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.13.4...v2.14.0)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 23:27:28 +00:00
Daniel O'Connor
7d5fb63f88 Merge pull request #4281 from Growstuff/dependabot/bundler/haml-rails-3.0.0
Bump haml-rails from 2.1.0 to 3.0.0
2025-09-30 08:55:18 +09:30
dependabot[bot]
f1508cb960 Bump haml-rails from 2.1.0 to 3.0.0
Bumps [haml-rails](https://github.com/haml/haml-rails) from 2.1.0 to 3.0.0.
- [Commits](https://github.com/haml/haml-rails/compare/v2.1.0...v3.0.0)

---
updated-dependencies:
- dependency-name: haml-rails
  dependency-version: 3.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 23:12:21 +00:00
dependabot[bot]
a5a201a2e6 Merge pull request #4279 from Growstuff/dependabot/bundler/rubocop-1.81.1 2025-09-29 23:10:56 +00:00
dependabot[bot]
d3fdd65dd3 Bump rubocop from 1.81.0 to 1.81.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.0 to 1.81.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.81.0...v1.81.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 12:00:18 +00:00
dependabot[bot]
e9a187b3df Merge pull request #4282 from Growstuff/dependabot/bundler/icalendar-2.12.0 2025-09-29 10:54:38 +00:00
dependabot[bot]
7b7bf9f4e9 Bump icalendar from 2.11.2 to 2.12.0
Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.11.2 to 2.12.0.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.11.2...v2.12.0)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 08:35:09 +00:00
Daniel O'Connor
4e91037f50 Release 73 (#4275)
* Bump puma from 7.0.3 to 7.0.4

Bumps [puma](https://github.com/puma/puma) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.3...v7.0.4)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump geocoder from 1.8.5 to 1.8.6

Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.8.5 to 1.8.6.
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.8.5...v1.8.6)

---
updated-dependencies:
- dependency-name: geocoder
  dependency-version: 1.8.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rubocop from 1.80.2 to 1.81.0

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.80.2 to 1.81.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.80.2...v1.81.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rack from 2.2.17 to 2.2.18

Bumps [rack](https://github.com/rack/rack) from 2.2.17 to 2.2.18.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.17...v2.2.18)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.18
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Extend planting API to render garden id in relationships

* Update planting_resource.rb

* Update photo_resource.rb

* Update seed_resource.rb

* Update harvest_resource.rb

* Update garden_resource.rb

* Update crop_resource.rb

* Update activity_resource.rb

* Create robots.txt based on wikipedia

* Merge pull request #4274 from Growstuff/CloCkWeRX-patch-3

API > Render activities links under member

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-09-29 01:12:18 +09:30
Daniel O'Connor
d9851231f2 Merge pull request #4274 from Growstuff/CloCkWeRX-patch-3
API > Render activities links under member
2025-09-29 01:11:24 +09:30
Daniel O'Connor
f82eabec42 Merge pull request #4273 from Growstuff/CloCkWeRX-patch-2
Create robots.txt based on wikipedia
2025-09-29 01:03:42 +09:30
Daniel O'Connor
83bf752a02 Merge pull request #4272 from Growstuff/feature/JULES-38-planting-api-garden-id
Adjust all API resources to include basic data for has one relationships
2025-09-29 00:55:18 +09:30
dependabot[bot]
6ffdd283e4 Merge pull request #4270 from Growstuff/dependabot/bundler/rack-2.2.18 2025-09-28 15:19:22 +00:00
Daniel O'Connor
d8e138ae2d Create robots.txt based on wikipedia 2025-09-29 00:27:57 +09:30
Daniel O'Connor
81b80d9bb7 Update activity_resource.rb 2025-09-29 00:12:51 +09:30
Daniel O'Connor
f080a8a566 Update crop_resource.rb 2025-09-29 00:12:39 +09:30
Daniel O'Connor
5a436f9d7f Update garden_resource.rb 2025-09-29 00:12:32 +09:30
Daniel O'Connor
a4fd1c4a8e Update harvest_resource.rb 2025-09-29 00:12:27 +09:30
Daniel O'Connor
7277cb3523 Update seed_resource.rb 2025-09-29 00:12:07 +09:30
Daniel O'Connor
522d10e053 Update photo_resource.rb 2025-09-29 00:11:41 +09:30
Daniel O'Connor
f3a9b26c8e Update planting_resource.rb 2025-09-29 00:10:05 +09:30
google-labs-jules[bot]
d8f5580ef9 Extend planting API to render garden id in relationships 2025-09-28 14:39:33 +00:00
dependabot[bot]
d9e58f6bf0 Bump rack from 2.2.17 to 2.2.18
Bumps [rack](https://github.com/rack/rack) from 2.2.17 to 2.2.18.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.17...v2.2.18)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.18
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 09:46:59 +00:00
Daniel O'Connor
60ec4e8d18 Merge pull request #4271 from Growstuff/dependabot/bundler/rubocop-1.81.0
Bump rubocop from 1.80.2 to 1.81.0
2025-09-26 19:15:45 +09:30
dependabot[bot]
ede7e6e7f7 Bump rubocop from 1.80.2 to 1.81.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.80.2 to 1.81.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.80.2...v1.81.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.81.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 07:01:42 +00:00
dependabot[bot]
9c62f955e2 Merge pull request #4267 from Growstuff/dependabot/bundler/geocoder-1.8.6 2025-09-24 09:47:54 +00:00
dependabot[bot]
6b313c190f Bump geocoder from 1.8.5 to 1.8.6
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.8.5 to 1.8.6.
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.8.5...v1.8.6)

---
updated-dependencies:
- dependency-name: geocoder
  dependency-version: 1.8.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 09:15:25 +00:00
Daniel O'Connor
c575f9d03c Merge pull request #4269 from Growstuff/dependabot/bundler/puma-7.0.4
Bump puma from 7.0.3 to 7.0.4
2025-09-24 18:44:13 +09:30
dependabot[bot]
95a4b0c66c Bump puma from 7.0.3 to 7.0.4
Bumps [puma](https://github.com/puma/puma) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.3...v7.0.4)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 07:01:40 +00:00
Daniel O'Connor
af74a2907f Sept 21 release (#4258)
* Format

* Bump puma from 7.0.2 to 7.0.3

Bumps [puma](https://github.com/puma/puma) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.2...v7.0.3)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump active_utils from 3.5.0 to 3.6.0

Bumps [active_utils](https://github.com/shopify/active_utils) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/shopify/active_utils/releases)
- [Changelog](https://github.com/Shopify/active_utils/blob/main/CHANGELOG.md)
- [Commits](https://github.com/shopify/active_utils/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: active_utils
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump rexml from 3.4.1 to 3.4.2

Bumps [rexml](https://github.com/ruby/rexml) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump recaptcha from 5.20.1 to 5.21.1

Bumps [recaptcha](https://github.com/ambethia/recaptcha) from 5.20.1 to 5.21.1.
- [Changelog](https://github.com/ambethia/recaptcha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ambethia/recaptcha/compare/v5.20.1...v5.21.1)

---
updated-dependencies:
- dependency-name: recaptcha
  dependency-version: 5.21.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Merge pull request #4222 from Growstuff/feature/add-activity-prompts

feat: Add prompts for new activities

* Add ability to copy/duplicate an activity

* Rubocop

* Rubocop fixes

* Rubocop

* Rubocop

* Rubocop

* Rubocop

* Rubocop

* Add ability to create companion plantings

This change adds the ability for crop wranglers to create and manage companion plantings for crops.

- Adds a `source_url` to the `CropCompanion` model to store an optional reference URL.
- Restricts the management of companion plantings to users with the `crop_wrangler` role.
- Creates a new admin interface for managing companion plantings for a specific crop.
- Updates the crop show page to display companions from both the crop and its parent crop.

* Merge pull request #4262 from Growstuff/feature/github-releases-widget

feat: Add cached GitHub releases widget to homepage

* Add recurring activities feature without database persistence (#4261)

* This change introduces a new feature that allows users to create recurring activities.

A user can now specify that an activity should be repeated "X" times, every "Y" weeks. When an activity is created with these options, the application will create the initial activity and then "X" additional copies, with each copy's due date offset by "Y" weeks from the previous one.

The repeat information is not stored in the database. It is only used at the time of creation to generate the recurring activities.

The following changes were made:
- Updated the new activity form to include fields for "repeat times" and "repeat weeks".
- Modified the `ActivitiesController#create` action to handle the creation of recurring activities.
- Added feature tests to ensure the new functionality works as expected.

* Remove not very useful spec

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>

* Adjust copy of activities and prompts (#4260)

* Adjust copy

* Adjust copy

* Move repeat prompt

* Improve prompts

* Clean up schema

* Fix spec

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-09-21 16:30:55 +09:30
Daniel O'Connor
488e402a3a Adjust copy of activities and prompts (#4260)
* Adjust copy

* Adjust copy

* Move repeat prompt

* Improve prompts

* Clean up schema

* Fix spec
2025-09-21 14:58:13 +09:30
google-labs-jules[bot]
e99c90adc4 Add recurring activities feature without database persistence (#4261)
* This change introduces a new feature that allows users to create recurring activities.

A user can now specify that an activity should be repeated "X" times, every "Y" weeks. When an activity is created with these options, the application will create the initial activity and then "X" additional copies, with each copy's due date offset by "Y" weeks from the previous one.

The repeat information is not stored in the database. It is only used at the time of creation to generate the recurring activities.

The following changes were made:
- Updated the new activity form to include fields for "repeat times" and "repeat weeks".
- Modified the `ActivitiesController#create` action to handle the creation of recurring activities.
- Added feature tests to ensure the new functionality works as expected.

* Remove not very useful spec

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-09-21 13:53:45 +09:30
google-labs-jules[bot]
41412b8443 Merge pull request #4262 from Growstuff/feature/github-releases-widget
feat: Add cached GitHub releases widget to homepage
2025-09-21 13:37:57 +09:30
Daniel O'Connor
b08069df46 Merge pull request #4259 from Growstuff/feature/companion-plantings
Add ability to create companion plantings
2025-09-21 10:37:52 +09:30
google-labs-jules[bot]
449ab1f6c0 Add ability to create companion plantings
This change adds the ability for crop wranglers to create and manage companion plantings for crops.

- Adds a `source_url` to the `CropCompanion` model to store an optional reference URL.
- Restricts the management of companion plantings to users with the `crop_wrangler` role.
- Creates a new admin interface for managing companion plantings for a specific crop.
- Updates the crop show page to display companions from both the crop and its parent crop.
2025-09-21 00:49:11 +00:00
Daniel O'Connor
0e52b8c00b Merge pull request #4256 from Growstuff/more-rubocop
More rubocop
2025-09-20 20:16:09 +09:30
Daniel O'Connor
bd4dd3cc45 Rubocop 2025-09-20 10:18:24 +00:00
Daniel O'Connor
a098328e4e Rubocop 2025-09-20 10:16:16 +00:00
Daniel O'Connor
04680b196a Rubocop 2025-09-20 10:15:41 +00:00
Daniel O'Connor
d542575874 Rubocop 2025-09-20 10:15:28 +00:00
Daniel O'Connor
5418cad976 Rubocop 2025-09-20 10:15:14 +00:00
Daniel O'Connor
547e4f843b Merge pull request #4255 from Growstuff/rubocop-fixes
Rubocop fixes
2025-09-20 19:44:42 +09:30
Daniel O'Connor
ce946c3a83 Rubocop fixes 2025-09-20 09:45:56 +00:00
Daniel O'Connor
54acc369ab Rubocop 2025-09-20 09:43:22 +00:00
Daniel O'Connor
6df1d9d247 Merge pull request #4254 from Growstuff/feature/copy-activity
Add ability to copy/duplicate an activity
2025-09-20 19:06:43 +09:30
Daniel O'Connor
154d6e9022 Merge branch 'dev' into feature/copy-activity 2025-09-20 18:48:23 +09:30
Daniel O'Connor
dadaddccfb Merge pull request #4250 from Growstuff/dependabot/bundler/active_utils-3.6.0
Bump active_utils from 3.5.0 to 3.6.0
2025-09-20 18:44:51 +09:30
Daniel O'Connor
85f508b3a7 Merge pull request #4251 from Growstuff/dependabot/bundler/rexml-3.4.2
Bump rexml from 3.4.1 to 3.4.2
2025-09-20 18:44:39 +09:30
Daniel O'Connor
2e517519a1 Merge pull request #4252 from Growstuff/dependabot/bundler/recaptcha-5.21.1
Bump recaptcha from 5.20.1 to 5.21.1
2025-09-20 18:44:25 +09:30
google-labs-jules[bot]
5db6a86607 Add ability to copy/duplicate an activity 2025-09-20 08:54:12 +00:00
Daniel O'Connor
850687e80f Bump puma from 7.0.2 to 7.0.3 (#4249)
Bumps [puma](https://github.com/puma/puma) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.2...v7.0.3)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-09-20 18:17:31 +09:30
Daniel O'Connor
1531c6e69b Merge branch 'dev' into dependabot/bundler/puma-7.0.3 2025-09-20 18:17:23 +09:30
Daniel O'Connor
ce7ce70d5f Merge pull request #4222 from Growstuff/feature/add-activity-prompts
feat: Add prompts for new activities
2025-09-20 17:49:47 +09:30
dependabot[bot]
600e61a282 Bump recaptcha from 5.20.1 to 5.21.1
Bumps [recaptcha](https://github.com/ambethia/recaptcha) from 5.20.1 to 5.21.1.
- [Changelog](https://github.com/ambethia/recaptcha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ambethia/recaptcha/compare/v5.20.1...v5.21.1)

---
updated-dependencies:
- dependency-name: recaptcha
  dependency-version: 5.21.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-18 07:01:16 +00:00
dependabot[bot]
aa7641ad91 Bump rexml from 3.4.1 to 3.4.2
Bumps [rexml](https://github.com/ruby/rexml) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 19:11:30 +00:00
dependabot[bot]
64acd4c00c Bump active_utils from 3.5.0 to 3.6.0
Bumps [active_utils](https://github.com/shopify/active_utils) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/shopify/active_utils/releases)
- [Changelog](https://github.com/Shopify/active_utils/blob/main/CHANGELOG.md)
- [Commits](https://github.com/shopify/active_utils/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: active_utils
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-16 07:01:15 +00:00
dependabot[bot]
d95ffdbef6 Bump puma from 7.0.2 to 7.0.3
Bumps [puma](https://github.com/puma/puma) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.2...v7.0.3)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 07:38:14 +00:00
Daniel O'Connor
6d076983dd Merge pull request #4245 from Growstuff/swagger-format
Format
2025-09-12 17:41:23 +09:30
Daniel O'Connor
4dfe325077 Merge branch 'dev' into swagger-format 2025-09-12 08:12:01 +09:30
Daniel O'Connor
a76ef6a117 Format 2025-09-10 13:56:29 +00:00
Daniel O'Connor
3804ae3333 Merge pull request #4243 from Growstuff/dev
Release71
2025-09-10 20:46:27 +09:30
Daniel O'Connor
99478e3920 Rubocop (#4242) 2025-09-10 20:46:12 +09:30
Daniel O'Connor
a2f05097af Merge branch 'mainline' into dev 2025-09-10 20:02:31 +09:30
Daniel O'Connor
e5bf9d98e6 Rubocop (#4241) 2025-09-10 19:56:12 +09:30
Daniel O'Connor
7988080054 Update .rubocop.yml 2025-09-10 19:52:44 +09:30
google-labs-jules[bot]
02db5b8130 Add API token generation, authentication, and CRUD for a number of the API resources (#4237)
* feat: Add API token generation and authentication

This commit introduces API token generation and authentication for write operations.

- Adds a section to the user's profile edit page to generate and display an API token.
- Reuses the `authentications` table to store the API token, avoiding the need for a database migration.
- Implements token-based authentication for the API using the `Authorization: Token token=...` header.
- Enables write operations for all API resources and ensures they are protected by the new authentication mechanism.
- Adds feature and request specs to test the new functionality.

* feat: Add API token generation and authentication

This commit introduces API token generation and authentication for write operations.

- Adds a section to the user's profile edit page to generate and display an API token.
- Reuses the `authentications` table to store the API token, avoiding the need for a database migration.
- Implements token-based authentication for the API using the `Authorization: Token token=...` header.
- Enables write operations for all API resources and ensures they are protected by the new authentication mechanism.
- Adds feature and request specs to test the new functionality.

* Mark as editable

* Refactor

* WIP - Authentication

* Implement more test coverage

* Split 401 and 403

* Before Create hooks

* Update harvest specs, defaulting to the first plant part - this may not be right

* Update coverage

* Update coverage

* Rubocop

* Rubocop

* Rubocop

* Fix coverage

* For now, mark photos immutable again

* Fix specs

* Fix specs

* Rubocop

* Fix specs

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-09-10 19:50:06 +09:30
Daniel O'Connor
cf8380029a Rubocop 2025-09-10 10:19:08 +00:00
Daniel O'Connor
eefda21d1a Merge pull request #4226 from Growstuff/dev
Release 70
2025-09-09 22:23:27 +09:30
Daniel O'Connor
4c0a63bd28 Merge pull request #4235 from Growstuff/activity_name
Fix UX
2025-09-09 22:20:06 +09:30
Daniel O'Connor
7f19891428 Merge branch 'dev' into activity_name 2025-09-09 22:19:57 +09:30
Daniel O'Connor
e322871740 Fix UX 2025-09-09 12:49:17 +00:00
Daniel O'Connor
35f18556fd Merge pull request #4234 from Growstuff/activity_name
Delegate
2025-09-09 22:16:41 +09:30
Daniel O'Connor
85034298ec Merge branch 'dev' of https://github.com/Growstuff/growstuff into activity_name 2025-09-09 12:45:14 +00:00
Daniel O'Connor
b2e959aded Delegate 2025-09-09 12:44:40 +00:00
Daniel O'Connor
a4e2bf5d54 Activity name (#4233)
* Add aliases

* Add aliases
2025-09-09 22:11:18 +09:30
Daniel O'Connor
9cd00b44bb Merge branch 'dev' into activity_name 2025-09-09 22:11:06 +09:30
Daniel O'Connor
2f0b8e9d76 Add aliases 2025-09-09 12:40:06 +00:00
Daniel O'Connor
bb4e2dd788 Add aliases (#4232) 2025-09-09 22:07:24 +09:30
Daniel O'Connor
fb78bcb0b0 Add aliases 2025-09-09 12:36:22 +00:00
google-labs-jules[bot]
e5c71f1dc4 Merge pull request #4230 from Growstuff/feature/add-more-filters
feat: Add more filters to API resources
2025-09-09 21:34:49 +09:30
dependabot[bot]
2d62891ef0 Merge pull request #4227 from Growstuff/dependabot/bundler/factory_bot_rails-6.5.1 2025-09-09 09:04:42 +00:00
dependabot[bot]
cf840582d5 Bump factory_bot_rails from 6.5.0 to 6.5.1
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.5.0 to 6.5.1.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.5.0...v6.5.1)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-version: 6.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 08:56:00 +00:00
Daniel O'Connor
389d904d7c Merge pull request #4231 from Growstuff/dependabot/bundler/puma-7.0.2
Bump puma from 7.0.0 to 7.0.2
2025-09-09 18:24:37 +09:30
dependabot[bot]
5bfeb0ce03 Bump puma from 7.0.0 to 7.0.2
Bumps [puma](https://github.com/puma/puma) from 7.0.0 to 7.0.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v7.0.0...v7.0.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 07:01:07 +00:00
Daniel O'Connor
11b1c84985 Update garden_resource to filter by owner (#4229) 2025-09-09 08:24:15 +09:30
Daniel O'Connor
a21a9e7a09 Update garden_resource to filter by owner 2025-09-08 17:38:03 +09:30
google-labs-jules[bot]
bc11a1b8db Merge pull request #4209 from Growstuff/extend-crop-model
Extend Crop Model and Migrate Data from OpenFarm
2025-09-07 20:03:18 +09:30
Daniel O'Connor
12f6b76dca Merge pull request #4223 from Growstuff/show-history
Render history of activities on gardens, plantings
2025-09-07 19:40:18 +09:30
Daniel O'Connor
dfc75d8916 Merge pull request #4224 from Growstuff/deep-link
Harvests > Unrated Planting > Deep link to content when rating
2025-09-07 18:12:07 +09:30
Daniel O'Connor
798eb1132f Rubocop 2025-09-07 08:10:41 +00:00
Daniel O'Connor
42036a3d3f Fix logic 2025-09-07 08:07:21 +00:00
Daniel O'Connor
47da5f18c9 Merge branch 'dev' into deep-link 2025-09-07 17:35:57 +09:30
Daniel O'Connor
d22555ee42 Deep link to content when rating 2025-09-07 08:04:14 +00:00
Daniel O'Connor
d0f4911bf6 Merge pull request #4221 from Growstuff/CloCkWeRX-patch-3
Update _modal.html.haml to sort consistently
2025-09-07 17:30:17 +09:30
Daniel O'Connor
2bc164bd2e Render history 2025-09-07 07:59:51 +00:00
Daniel O'Connor
6f9fbfa3cd Merge pull request #4220 from Growstuff/CloCkWeRX-patch-2
Fix garden order on planting new
2025-09-07 17:19:05 +09:30
Daniel O'Connor
47d1877568 Merge pull request #4205 from Growstuff/dependabot/github_actions/actions/setup-node-5
Bump actions/setup-node from 4 to 5
2025-09-07 17:18:50 +09:30
Daniel O'Connor
b0555ef89e Update _modal.html.haml to sort consistently 2025-09-07 17:12:14 +09:30
Daniel O'Connor
a5f9edea87 Merge pull request #4217 from Growstuff/skip-to-content
By default, skip to content when linking to garden(s)
2025-09-07 17:09:48 +09:30
Daniel O'Connor
3917f263b8 Fix garden order on planting new 2025-09-07 17:09:27 +09:30
Daniel O'Connor
cfc486ce86 Merge pull request #4219 from Growstuff/dev
release 69.1
2025-09-07 15:07:58 +09:30
Daniel O'Connor
f55f88c4af Merge pull request #4218 from Growstuff/fix-activities
Activities > Due Date > Only render if available
2025-09-07 15:06:20 +09:30
Daniel O'Connor
3725957065 Only render if available 2025-09-07 05:34:49 +00:00
Daniel O'Connor
a900c2eb2f Merge pull request #4185 from Growstuff/dev
Release 69
2025-09-07 14:55:40 +09:30
Daniel O'Connor
8fbc02caf3 Timeline 2025-09-07 05:20:35 +00:00
dependabot[bot]
b2d8530923 Bump actions/setup-node from 4 to 5
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-07 05:19:53 +00:00
Daniel O'Connor
186f07109c Add skip link 2025-09-07 05:17:14 +00:00
Daniel O'Connor
b3c749566b More named anchors 2025-09-07 05:14:18 +00:00
Daniel O'Connor
1eb84b9765 By default, skip to content when linking to garden(s) 2025-09-07 05:11:30 +00:00
Daniel O'Connor
9b1699b061 Merge pull request #4215 from Growstuff/activities-detail
Surface more Activities detail
2025-09-07 14:39:13 +09:30
Daniel O'Connor
06c907742d Merge pull request #4216 from Growstuff/CloCkWeRX-patch-2
Update ci-features-posts.yml
2025-09-07 14:38:54 +09:30
Daniel O'Connor
d8b84e611b Update ci-features-posts.yml 2025-09-07 14:37:18 +09:30
Daniel O'Connor
c0ab0b085e Merge pull request #4214 from Growstuff/fix-cards
Fix styling of cards to space evenly
2025-09-07 14:34:14 +09:30
Daniel O'Connor
99d50a7d4b Merge pull request #4212 from Growstuff/fix-ordering
Change garden sort order to be by name and planting by most to least recent when creating an activity
2025-09-07 14:33:46 +09:30
Daniel O'Connor
84da4c0f4f Fix styling of cards to space evenly 2025-09-07 04:24:22 +00:00
Daniel O'Connor
f650d1b8fa Change garden sort order to be by name and planting by most to lease recent when creating an activity 2025-09-07 03:54:20 +00:00
dependabot[bot]
91ef85da0b Merge pull request #4203 from Growstuff/dependabot/bundler/rubocop-1.80.2 2025-09-05 19:09:32 +00:00
dependabot[bot]
30f799c4b9 Bump rubocop from 1.80.1 to 1.80.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.80.1 to 1.80.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.80.1...v1.80.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.80.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 08:10:40 +00:00
dependabot[bot]
9283e64366 Merge pull request #4204 from Growstuff/dependabot/bundler/puma-7.0.0 2025-09-05 08:09:30 +00:00
dependabot[bot]
b0b759ef60 Bump puma from 6.6.1 to 7.0.0
Bumps [puma](https://github.com/puma/puma) from 6.6.1 to 7.0.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.6.1...v7.0.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 07:59:48 +00:00
Daniel O'Connor
83cf4117fb Merge pull request #4201 from Growstuff/feature/preserve-screenshots-as-artifacts
CI: Preserve screenshots as build artifacts in all feature workflows
2025-09-05 17:29:15 +09:30
Daniel O'Connor
521e649cac Merge pull request #4202 from Growstuff/dependabot/bundler/pg-1.6.2
Bump pg from 1.6.1 to 1.6.2
2025-09-04 20:46:29 +09:30
dependabot[bot]
1dc587d4b5 Bump pg from 1.6.1 to 1.6.2
Bumps [pg](https://github.com/ged/ruby-pg) from 1.6.1 to 1.6.2.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.6.1...v1.6.2)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 1.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 00:26:26 +00:00
Daniel O'Connor
77a6e96ece Merge branch 'dev' into feature/preserve-screenshots-as-artifacts 2025-09-04 08:43:44 +09:30
dependabot[bot]
2e89dc0c4f Merge pull request #4200 from Growstuff/dependabot/bundler/rubocop-rspec-3.7.0 2025-09-03 09:49:39 +00:00
dependabot[bot]
dc1b46c7be Bump rubocop-rspec from 3.6.0 to 3.7.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-version: 3.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-03 05:55:09 +00:00
google-labs-jules[bot]
d61227bad0 CI: Preserve screenshots as build artifacts
Adjust the behaviour of capybara-screenshot / GitHub CI to preserve the screenshots as a build artifact.

This change adds a step to all `ci-features-*.yml` workflows to upload the
`tmp/screenshots` directory as a build artifact on failure. This will help with
debugging failing feature tests.
2025-09-02 23:30:25 +00:00
google-labs-jules[bot]
765fab1104 CI: Preserve screenshots as build artifacts
Adjust the behaviour of capybara-screenshot / GitHub CI to preserve the screenshots as a build artifact.

This change adds a step to the `ci-features.yml` workflow to upload the
`tmp/screenshots` directory as a build artifact on failure. This will help with
debugging failing feature tests.
2025-09-02 23:30:02 +00:00
Daniel O'Connor
8000a51e8b Remove JS testing from footer (#4192) 2025-09-02 07:42:09 +09:30
Daniel O'Connor
b3ba05d834 Fix crash on adding Flickr photo (#4198)
* Update photo.rb

* Update photo.rb

* Update app/models/photo.rb

* Update app/models/photo.rb
2025-09-02 02:17:28 +09:30
Daniel O'Connor
110b18cc9e Merge pull request #4197 from Growstuff/CloCkWeRX-patch-4
Update README.md
2025-09-02 00:37:09 +09:30
Daniel O'Connor
396af468fa Merge branch 'dev' into CloCkWeRX-patch-4 2025-09-02 00:36:56 +09:30
Daniel O'Connor
ac2d998711 Update README.md 2025-09-02 00:36:30 +09:30
Daniel O'Connor
4564d0afe0 Merge pull request #4196 from Growstuff/CloCkWeRX-patch-3
Update README.md
2025-09-02 00:34:07 +09:30
Daniel O'Connor
a325ada964 Merge pull request #4194 from Growstuff/CloCkWeRX-patch-2
Rename _facts.haml to _facts.html.haml
2025-09-02 00:33:35 +09:30
Daniel O'Connor
2b818e9f50 Update README.md 2025-09-02 00:33:12 +09:30
Daniel O'Connor
9b9de06140 Update README.md 2025-09-02 00:12:59 +09:30
Daniel O'Connor
2f290efc5b Rename _facts.haml to _facts.html.haml 2025-09-02 00:03:04 +09:30
Daniel O'Connor
23ef0f9cac Merge pull request #4193 from Growstuff/CloCkWeRX-patch-2
Update _facts.haml
2025-09-02 00:02:31 +09:30
Daniel O'Connor
7106b141d9 Update _facts.haml 2025-09-02 00:02:17 +09:30
Daniel O'Connor
ada567dcab Remove JS testing from footer 2025-09-01 14:28:24 +00:00
Daniel O'Connor
d620dc3bfc Merge pull request #4190 from Growstuff/less-js
Specs: Sign up, sign in don't need JS
2025-09-01 23:57:29 +09:30
Daniel O'Connor
c189e3b01a Merge pull request #4062 from Growstuff/feature/planting-rating
Add overall_rating to Plantings
2025-09-01 23:56:13 +09:30
Daniel O'Connor
70e6c44d82 Sign up, sign in don't need JS 2025-09-01 13:20:04 +00:00
Daniel O'Connor
b69d1bd14b Merge pull request #4189 from Growstuff/remove-openfarm-service
Remove openfarm service
2025-09-01 22:34:52 +09:30
Daniel O'Connor
468e34a551 Remove openfarm service 2025-09-01 12:56:22 +00:00
Daniel O'Connor
8385beb406 Merge pull request #4188 from Growstuff/remove-dead-gems
Remove haml-lint-extractor
2025-09-01 21:55:26 +09:30
google-labs-jules[bot]
0f4803392d Add seed source to Seed model (#4186)
* Add seed source to Seed model

* Update _form.html.haml

* Add to schema

* Default option

* Default option

* Fix test

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-09-01 21:47:31 +09:30
Daniel O'Connor
d185ce495f Remove haml-lint-extractor 2025-09-01 12:13:08 +00:00
Daniel O'Connor
90bd70603b Add a lot of indexes (#4187) 2025-09-01 21:06:58 +09:30
Daniel O'Connor
a4db05c0f6 Add a lot of indexes 2025-09-01 11:25:02 +00:00
google-labs-jules[bot]
0079513b35 Merge pull request #4183 from Growstuff/feature/timeline-likes
Feature: Display likes on timeline
2025-09-01 19:51:24 +09:30
Daniel O'Connor
508ee5260d Merge pull request #4180 from Growstuff/fix/profile-bio-link
Fix: Only show 'add a bio' link on own profile
2025-09-01 15:39:52 +09:30
google-labs-jules[bot]
ee2fffd25b Fix: Only show 'add a bio' link on own profile
The 'add a bio' link on the member profile page was previously shown
based on the `can? :edit, @member` ability check. This caused an issue
for admins, who could see the link on other users' profiles, but the
link would incorrectly lead to their own settings page.

This change modifies the condition to be `member_signed_in? && current_member == @member`.
This ensures the link is only displayed when a logged-in user is
viewing their own profile, which is the correct and intended behavior.
2025-08-31 22:48:41 +00:00
Daniel O'Connor
c92b912b28 Fix link 2025-08-31 15:46:18 +09:30
dependabot[bot]
f665fba91a Merge pull request #4077 from Growstuff/dependabot/bundler/terser-1.2.6 2025-08-31 06:02:22 +00:00
Daniel O'Connor
3578fbdf64 Merge branch 'dev' into dependabot/bundler/terser-1.2.6 2025-08-31 15:24:25 +09:30
Daniel O'Connor
29543d1d37 Release 68 (#4170)
* Improve menu again

* Fix crop button annoyance

* feat: Add PWA installation instructions to homepage

This commit adds instructions for mobile users on how to install the Growstuff website as a Progressive Web App (PWA).

The changes include:
- A new section on the homepage with instructions for both iOS and Android devices. This section is only visible to logged-out users.
- New translations for the instructions in the `en.yml` locale file.
- Basic styling for the new section.
- Updated feature tests to verify the new section's visibility.

* Restyle slightly

* Styling

* Github lure

* Make links bold, not all of the stats text

* Adjust specs

* Fix width of ready to harvest

* Update spec/features/home/home_spec.rb

* Fix display

* Fix text display wonkyness

* Merge pull request #4173 from Growstuff/translate-confirm

Garden Delete - Extract strings and fix missing translation bug

* Seeds for trade - avoid showing expired seeds on homepage. (#4176)

* Improve date visibility

* Ensure when seeding seeds, it's false

* Typo

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-08-31 15:23:16 +09:30
Daniel O'Connor
0289786891 Seeds for trade - avoid showing expired seeds on homepage. (#4176)
* Improve date visibility

* Ensure when seeding seeds, it's false

* Typo
2025-08-31 14:39:42 +09:30
Daniel O'Connor
7dc66cb199 Merge pull request #4173 from Growstuff/translate-confirm
Garden Delete - Extract strings and fix missing translation bug
2025-08-31 14:39:32 +09:30
Daniel O'Connor
417602cb85 Merge pull request #4175 from Growstuff/btn-group-vertical
Crops > Card > Apply Btn group vertical
2025-08-31 14:20:10 +09:30
Daniel O'Connor
7a2760b086 Fix text display wonkyness 2025-08-31 04:21:01 +00:00
Daniel O'Connor
9e0e21b565 Fix display 2025-08-31 04:19:07 +00:00
Daniel O'Connor
a481cb7c06 Merge pull request #4171 from Growstuff/feature/pwa-install-instructions
Add PWA installation instructions to homepage
2025-08-31 13:17:22 +09:30
Daniel O'Connor
a177a53d57 Merge pull request #4172 from Growstuff/fix-width
Fix width of ready to harvest
2025-08-31 13:17:09 +09:30
Daniel O'Connor
abbe9ee7ca Update spec/features/home/home_spec.rb 2025-08-31 13:01:51 +09:30
Daniel O'Connor
48d2f0a224 Fix width of ready to harvest 2025-08-31 03:30:24 +00:00
Daniel O'Connor
074644d5c8 Adjust specs 2025-08-31 03:27:04 +00:00
Daniel O'Connor
2e2e47d405 Make links bold, not all of the stats text 2025-08-31 03:25:56 +00:00
Daniel O'Connor
0544abcd8f Github lure 2025-08-31 03:16:28 +00:00
Daniel O'Connor
73fb43fc4f Styling 2025-08-31 03:00:07 +00:00
Daniel O'Connor
532afafa0e Restyle slightly 2025-08-31 02:55:02 +00:00
google-labs-jules[bot]
378bd0d8f1 feat: Add PWA installation instructions to homepage
This commit adds instructions for mobile users on how to install the Growstuff website as a Progressive Web App (PWA).

The changes include:
- A new section on the homepage with instructions for both iOS and Android devices. This section is only visible to logged-out users.
- New translations for the instructions in the `en.yml` locale file.
- Basic styling for the new section.
- Updated feature tests to verify the new section's visibility.
2025-08-31 02:25:55 +00:00
Daniel O'Connor
bb943fe0c6 Merge pull request #4168 from Growstuff/menu
Fix Menu (a bit), Fix mobile UX for Crops
2025-08-30 02:17:15 +09:30
Daniel O'Connor
28742d4936 Fix crop button annoyance 2025-08-29 16:33:42 +00:00
Daniel O'Connor
d7e28e79fe Improve menu again 2025-08-29 16:22:55 +00:00
Daniel O'Connor
dfb791bf55 Merge pull request #4167 from Growstuff/dev
Release67, take 3
2025-08-30 01:16:01 +09:30
Daniel O'Connor
322bca9281 Merge pull request #4166 from Growstuff/age_in_days
Deal with age_in_days.nil?
2025-08-30 01:15:25 +09:30
Daniel O'Connor
7c081541eb Deal with age_in_days.nil? 2025-08-29 23:46:27 +09:30
Daniel O'Connor
484797421e Merge pull request #4165 from Growstuff/dev
Release 67, attempt 2
2025-08-29 23:32:29 +09:30
Daniel O'Connor
475514a8f0 Merge pull request #4164 from Growstuff/bg-dark
Partially improve menu on mobile
2025-08-29 23:21:35 +09:30
Daniel O'Connor
bb3fd3bcb7 Merge pull request #4155 from Growstuff/remove-openfarm.cc
Remove openfarm.cc links
2025-08-29 23:21:20 +09:30
Daniel O'Connor
5c86622823 Partially improve menu on mobile 2025-08-29 12:51:32 +00:00
Daniel O'Connor
fefd387481 Merge pull request #4162 from Growstuff/fix-failed
Fix current plantings not to show failed
2025-08-29 21:38:20 +09:30
Daniel O'Connor
93de9b35bc Fix current plantings not to show failed 2025-08-29 11:51:46 +00:00
Daniel O'Connor
3d62cfcf81 Update 20240810160507_add_language_to_alternate_names.rb
Fix migration
2025-08-29 20:12:59 +09:30
Daniel O'Connor
a366d68c22 Merge pull request #4160 from Growstuff/dev
Release67 - September 2025?
2025-08-29 20:03:05 +09:30
Daniel O'Connor
f5a03b8991 Merge pull request #4161 from Growstuff/dependabot/bundler/rubocop-1.80.1
Bump rubocop from 1.80.0 to 1.80.1
2025-08-29 19:57:29 +09:30
Daniel O'Connor
8044640023 Merge branch 'dev' into remove-openfarm.cc 2025-08-29 19:56:09 +09:30
Daniel O'Connor
d1d718df9e Add One click ask AI prompts for companion planting and growing guides (#4159)
* One click ask AI prompts

* One click ask AI prompts

* Update app/views/crops/show.html.haml
2025-08-29 19:54:38 +09:30
dependabot[bot]
da4bb17df8 Bump rubocop from 1.80.0 to 1.80.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.80.0 to 1.80.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.80.0...v1.80.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.80.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 08:59:30 +00:00
dependabot[bot]
0320cbe5ad Bump chartkick from 5.1.5 to 5.2.0 (#4072)
Bumps [chartkick](https://github.com/ankane/chartkick) from 5.1.5 to 5.2.0.
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v5.1.5...v5.2.0)

---
updated-dependencies:
- dependency-name: chartkick
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-08-28 00:16:34 +09:30
google-labs-jules[bot]
4d3c4ca10d Merge pull request #4154 from Growstuff/finish-expired-seeds-task
Add maintenance task to finish expired seeds
2025-08-28 00:16:16 +09:30
Daniel O'Connor
ab29de3d04 Remove dead test 2025-08-27 14:45:57 +00:00
Daniel O'Connor
749134a7de Remove Openfarm data fetching (#4157) 2025-08-28 00:15:03 +09:30
Daniel O'Connor
1657a527e9 Remove Openfarm data fetching 2025-08-27 14:20:22 +00:00
Daniel O'Connor
9ae90c1b7e Merge branch 'dev' into remove-openfarm.cc 2025-08-27 23:43:29 +09:30
google-labs-jules[bot]
ba6ec689c5 Merge pull request #4150 from Growstuff/feature/failed-plantings
Add failed status to plantings
2025-08-27 23:42:53 +09:30
Daniel O'Connor
e7090631ab Remove partial 2025-08-27 14:12:13 +00:00
Daniel O'Connor
fadf5154e4 Remove openfarm links (defunct) 2025-08-27 14:11:01 +00:00
Daniel O'Connor
13ed098172 Remove openfarm links (defunct) 2025-08-27 14:09:55 +00:00
Daniel O'Connor
df2853edd3 Merge pull request #4153 from Growstuff/age_in_days
Fix age in days, percentage grown calculations for future dates
2025-08-27 23:31:48 +09:30
Daniel O'Connor
948bb78656 Fix percentage grown 2025-08-27 13:44:44 +00:00
Daniel O'Connor
9c8ae50188 Fix https://github.com/Growstuff/growstuff/issues/3844 by avoiding future finished dates being considered past dates 2025-08-27 13:36:12 +00:00
dependabot[bot]
0ee6260272 Merge pull request #4152 from Growstuff/dependabot/bundler/scout_apm-5.7.1 2025-08-26 23:30:40 +00:00
dependabot[bot]
bf528220ab Bump scout_apm from 5.7.0 to 5.7.1
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 5.7.0 to 5.7.1.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v5.7.0...v5.7.1)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 5.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-26 23:22:37 +00:00
dependabot[bot]
fd89cc6bce Merge pull request #4151 from Growstuff/dependabot/bundler/rubocop-1.80.0 2025-08-26 23:21:29 +00:00
dependabot[bot]
08a3890ba2 Bump rubocop from 1.79.2 to 1.80.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.79.2 to 1.80.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.79.2...v1.80.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.80.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-25 14:33:48 +00:00
Daniel O'Connor
956c73cd1e This rake task iterates through all photos and removes any that have a 404 status on their fullsize_url. This will help to keep the database clean of broken photo references. (#4149)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-08-25 10:26:57 +09:30
google-labs-jules[bot]
8e74d1796a This rake task iterates through all photos and removes any that have a 404 status on their fullsize_url. This will help to keep the database clean of broken photo references. 2025-08-24 23:17:26 +00:00
google-labs-jules[bot]
a98990ccd2 Add transplant feature for plantings (#4133)
* Add ability to transplant a planting

* Fix view tests

* Transplantable gardens

* Add spec

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-08-24 22:31:14 +09:30
google-labs-jules[bot]
ac1463e2cf Add international alternate names for crops (#4132)
* I will add the international alternate names for the crops.

* Mark required

* Update factory

* Add placeholder

* Fix seeds

* Add language, though hardcoded to EN in most places

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-08-24 21:44:41 +09:30
google-labs-jules[bot]
8564ec7a7c Add comments to photos (#4130)
* Add comments to photos

Extend the photo show page to support comments by logged in users.

- Make the Comment model polymorphic.
- Update the Photo and Post models to have comments.
- Update the comments controller to handle the polymorphic association.
- Update the photo show page to display comments and a comment form.
- Create a reusable comments partial.

* Add migration

* Fix tests

* Fix tests

* Slightly fix tests

* Fix variables

* Add field

* Refactor slightly

* Refactor slightly

* Refactor slightly

* Refactor

* Photos respond to this as well

* Refactor to polymorphic_url

* Rename

* Wrong relationship

* Refactor and fix tests

* Fix relationships

* Fix rendering

* Fix tests

* Fix model tests

* Fix test

* Fix test

* Fix test

* Fix test

* Fix controller spec

* Fix view tests

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-08-24 21:10:16 +09:30
Daniel O'Connor
79a54351e3 Delete spec/tasks/openfarm_rake_spec.rb 2025-08-24 21:02:13 +09:30
dependabot[bot]
48aa2aafd3 Merge pull request #4066 from Growstuff/dependabot/bundler/oj-3.16.11 2025-08-24 08:15:56 +00:00
Daniel O'Connor
3b648925dd Merge branch 'dev' into dependabot/bundler/oj-3.16.11 2025-08-24 17:36:31 +09:30
Daniel O'Connor
d04ffbeddd Merge pull request #4146 from Growstuff/remove-twitter-auth
Remove twitter authentication
2025-08-24 17:35:56 +09:30
Daniel O'Connor
e1367613e6 Merge branch 'dev' into remove-twitter-auth 2025-08-24 17:08:19 +09:30
Daniel O'Connor
70f78f1175 Merge pull request #4148 from Growstuff/CloCkWeRX-patch-2
Delete lib/tasks/openfarm.rake
2025-08-24 17:07:19 +09:30
Daniel O'Connor
6131fdf141 Delete lib/tasks/openfarm.rake 2025-08-24 17:07:02 +09:30
Daniel O'Connor
e7dba3f0e9 Merge pull request #4147 from Growstuff/dev
August 24 Release (Release 66)
2025-08-24 17:02:03 +09:30
Daniel O'Connor
44101e07fb Merge branch 'mainline' into dev 2025-08-24 16:40:08 +09:30
Daniel O'Connor
b4c1104af0 Merge branch 'dev' into remove-twitter-auth 2025-08-24 16:36:42 +09:30
Daniel O'Connor
3d4ba954e7 Remove defunct detail 2025-08-24 07:05:28 +00:00
Daniel O'Connor
b8f7f95f32 Merge pull request #4144 from Growstuff/grid-layout
Improve profile page display slightly
2025-08-24 16:33:33 +09:30
google-labs-jules[bot]
0b639d5940 Remove twitter authentication
This change removes the twitter authentication feature from the application.

It removes the `omniauth-twitter` gem and all related code from controllers, views, and tests. It also removes the twitter icon and environment variable settings.
2025-08-24 07:03:20 +00:00
Daniel O'Connor
f216ddc368 Merge pull request #4145 from Growstuff/CloCkWeRX-patch-2
Update CONTRIBUTORS.md
2025-08-24 16:32:55 +09:30
Daniel O'Connor
967c0f4638 Update CONTRIBUTORS.md 2025-08-24 16:32:40 +09:30
Daniel O'Connor
cac0e3cb12 Update CONTRIBUTORS.md 2025-08-24 16:32:03 +09:30
Daniel O'Connor
65406b9e56 Update CONTRIBUTORS.md 2025-08-24 16:31:24 +09:30
Daniel O'Connor
224109aaf8 Merge pull request #4143 from Growstuff/feature/amend-delete-pictures-task
Amend delete_pictures rake task to remove legacy S3 photos
2025-08-24 16:30:23 +09:30
Daniel O'Connor
bec1ec1879 Merge pull request #4136 from Growstuff/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-08-24 16:29:06 +09:30
Daniel O'Connor
e88e54b0c1 Image redundant now 2025-08-24 06:52:37 +00:00
google-labs-jules[bot]
76a6c1d849 Merge pull request #4131 from Growstuff/feature/add-social-media-links
feat: Add social media links to user profiles
2025-08-24 16:21:05 +09:30
Daniel O'Connor
b7f4de782d Styling 2025-08-24 06:50:53 +00:00
Daniel O'Connor
112a626941 Adjust Bio layout 2025-08-24 06:48:40 +00:00
google-labs-jules[bot]
b72aeab136 Amend delete_pictures rake task to remove legacy S3 photos
The `delete_pictures` rake task in `openfarm.rake` is amended to
also remove Photos where the `fullsize_url` starts with
`https://s3.amazonaws.com/openfarm-project/`.

This change helps in cleaning up legacy photos that are no longer
needed. The task description has also been updated to reflect this
change.
2025-08-24 06:21:19 +00:00
dependabot[bot]
a7d100fe7e Merge pull request #4137 from Growstuff/dependabot/bundler/selenium-webdriver-4.35.0 2025-08-14 14:15:43 +00:00
dependabot[bot]
810a9e39e3 Bump selenium-webdriver from 4.34.0 to 4.35.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.34.0 to 4.35.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.34.0...selenium-4.35.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.35.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 14:09:03 +00:00
dependabot[bot]
b320435ddf Merge pull request #4141 from Growstuff/dependabot/bundler/rubocop-rails-2.33.3 2025-08-14 14:07:43 +00:00
dependabot[bot]
2f7ce2721f Bump rubocop-rails from 2.32.0 to 2.33.3
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.32.0 to 2.33.3.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.32.0...v2.33.3)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-version: 2.33.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 13:53:23 +00:00
dependabot[bot]
c9e19203a9 Merge pull request #4142 from Growstuff/dependabot/bundler/rails-7.2.2.2 2025-08-14 13:52:01 +00:00
dependabot[bot]
005efab3be Bump rails from 7.2.2.1 to 7.2.2.2
Bumps [rails](https://github.com/rails/rails) from 7.2.2.1 to 7.2.2.2.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.2.2.1...v7.2.2.2)

---
updated-dependencies:
- dependency-name: rails
  dependency-version: 7.2.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 07:08:38 +00:00
dependabot[bot]
46599937d9 Merge pull request #4138 from Growstuff/dependabot/bundler/rspec-rails-8.0.2 2025-08-13 09:47:01 +00:00
dependabot[bot]
496a6ac2b6 Bump rspec-rails from 8.0.1 to 8.0.2
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 8.0.1 to 8.0.2.
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v8.0.1...v8.0.2)

---
updated-dependencies:
- dependency-name: rspec-rails
  dependency-version: 8.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 07:17:23 +00:00
dependabot[bot]
9efb1f8486 Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 15:37:57 +00:00
Daniel O'Connor
59bd6f3450 Merge pull request #4065 from Growstuff/dependabot/bundler/rake-13.3.0
Bump rake from 13.2.1 to 13.3.0
2025-08-10 22:47:04 +09:30
dependabot[bot]
3e9bf73297 Merge pull request #4067 from Growstuff/dependabot/bundler/bullet-8.0.8 2025-08-10 08:50:09 +00:00
Daniel O'Connor
dcff643637 Merge branch 'dev' into dependabot/bundler/bullet-8.0.8 2025-08-10 17:53:48 +09:30
dependabot[bot]
a83966aa92 Merge pull request #4108 from Growstuff/dependabot/bundler/scout_apm-5.7.0 2025-08-10 07:40:46 +00:00
dependabot[bot]
1c47e421b9 Bump scout_apm from 5.6.4 to 5.7.0
Bumps [scout_apm](https://github.com/scoutapp/scout_apm_ruby) from 5.6.4 to 5.7.0.
- [Changelog](https://github.com/scoutapp/scout_apm_ruby/blob/master/CHANGELOG.markdown)
- [Commits](https://github.com/scoutapp/scout_apm_ruby/compare/v5.6.4...v5.7.0)

---
updated-dependencies:
- dependency-name: scout_apm
  dependency-version: 5.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 07:19:44 +00:00
Daniel O'Connor
6289ab0951 Bump faker from 3.5.1 to 3.5.2 (#4082)
Bumps [faker](https://github.com/faker-ruby/faker) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.5.1...v3.5.2)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.5.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-10 16:48:30 +09:30
dependabot[bot]
d127647eeb Merge pull request #4105 from Growstuff/dependabot/bundler/puma-6.6.1 2025-08-10 07:05:39 +00:00
dependabot[bot]
9eda4bb2f2 Bump puma from 6.6.0 to 6.6.1
Bumps [puma](https://github.com/puma/puma) from 6.6.0 to 6.6.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.6.0...v6.6.1)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 6.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 06:44:35 +00:00
dependabot[bot]
f1d524130b Merge pull request #4110 from Growstuff/dependabot/bundler/rspec-activemodel-mocks-1.3.0 2025-08-10 06:43:20 +00:00
dependabot[bot]
e4de08f47f Bump rspec-activemodel-mocks from 1.2.1 to 1.3.0
Bumps [rspec-activemodel-mocks](https://github.com/rspec/rspec-activemodel-mocks) from 1.2.1 to 1.3.0.
- [Changelog](https://github.com/rspec/rspec-activemodel-mocks/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rspec/rspec-activemodel-mocks/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: rspec-activemodel-mocks
  dependency-version: 1.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 06:29:48 +00:00
Daniel O'Connor
0b4820e5df Add rspec-retry (#4129)
* Add rspec-retry

* Add config

* Swap to rspec-rebound, which is a fork

* Swap to rspec-rebound, which is a fork
2025-08-10 15:55:52 +09:30
dependabot[bot]
d264905aa9 Bump faraday from 2.13.2 to 2.13.4 (#4101)
Bumps [faraday](https://github.com/lostisland/faraday) from 2.13.2 to 2.13.4.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.13.2...v2.13.4)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-10 15:54:37 +09:30
Daniel O'Connor
25d2c5f854 Merge branch 'dev' into dependabot/bundler/bullet-8.0.8 2025-08-10 15:46:09 +09:30
google-labs-jules[bot]
d383c8e2e4 Add filtering for tradeable seeds (#4111)
* feat: Add filtering for tradeable seeds

This change introduces a new feature to filter seeds based on their tradeability.

- Adds a link on the homepage to view all tradeable seeds.
- Modifies the seeds controller to support filtering by `tradeable_to`, allowing multiple values to be selected.
- Adds links to the seeds index page to filter by the various `tradeable_to` values.

* Update index.html.haml

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
2025-08-10 15:44:01 +09:30
dependabot[bot]
ed89163311 Bump faker from 3.5.1 to 3.5.2
Bumps [faker](https://github.com/faker-ruby/faker) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.5.1...v3.5.2)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 3.5.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 05:43:20 +00:00
dependabot[bot]
26de3e7c5e Bump oj from 3.16.10 to 3.16.11
Bumps [oj](https://github.com/ohler55/oj) from 3.16.10 to 3.16.11.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.10...v3.16.11)

---
updated-dependencies:
- dependency-name: oj
  dependency-version: 3.16.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 05:37:12 +00:00
Daniel O'Connor
6ae2de7e47 Merge pull request #4086 from Growstuff/mailboxer-translations
Mailboxer translations
2025-08-10 14:57:39 +09:30
Daniel O'Connor
da74c19c2a Merge pull request #4094 from Growstuff/dependabot/bundler/recaptcha-5.20.1
Bump recaptcha from 5.19.0 to 5.20.1
2025-08-10 14:57:23 +09:30
dependabot[bot]
6d44a2a780 Bump terser from 1.2.5 to 1.2.6
Bumps [terser](https://github.com/ahorek/terser-ruby) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/ahorek/terser-ruby/releases)
- [Changelog](https://github.com/ahorek/terser-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ahorek/terser-ruby/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 1.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 04:49:25 +00:00
Daniel O'Connor
d767a011a4 Merge pull request #4126 from Growstuff/split-up-ci
Split up ci
2025-08-10 13:53:47 +09:30
Daniel O'Connor
bbe6a3fd36 Merge pull request #4123 from Growstuff/view-transitions
Opt into view transitions
2025-08-10 13:52:34 +09:30
dependabot[bot]
3eb2fe7637 Bump recaptcha from 5.19.0 to 5.20.1
Bumps [recaptcha](https://github.com/ambethia/recaptcha) from 5.19.0 to 5.20.1.
- [Changelog](https://github.com/ambethia/recaptcha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ambethia/recaptcha/compare/v5.19.0...v5.20.1)

---
updated-dependencies:
- dependency-name: recaptcha
  dependency-version: 5.20.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 04:16:17 +00:00
dependabot[bot]
7f0af10637 Merge pull request #4109 from Growstuff/dependabot/bundler/rubocop-1.79.2 2025-08-10 04:15:01 +00:00
dependabot[bot]
75d93bb3c3 Bump rake from 13.2.1 to 13.3.0
Bumps [rake](https://github.com/ruby/rake) from 13.2.1 to 13.3.0.
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](https://github.com/ruby/rake/compare/v13.2.1...v13.3.0)

---
updated-dependencies:
- dependency-name: rake
  dependency-version: 13.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 04:04:03 +00:00
Daniel O'Connor
c49f2bab19 Merge branch 'dev' into view-transitions 2025-08-10 13:24:41 +09:30
dependabot[bot]
ed71023306 Bump rubocop from 1.79.1 to 1.79.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.79.1 to 1.79.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.79.1...v1.79.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.79.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-10 03:47:36 +00:00
Daniel O'Connor
59d95dfd77 Split up 2025-08-10 03:22:32 +00:00
Daniel O'Connor
e999c5870f Merge branch 'dev' into split-up-ci 2025-08-10 12:51:39 +09:30
Daniel O'Connor
072ec1dd82 Merge pull request #4125 from Growstuff/set-window-size
Specs: Target a desktop, fixing tests in codespaces at least.
2025-08-10 12:51:06 +09:30
Daniel O'Connor
8ecae23d61 Split up posts 2025-08-10 03:20:57 +00:00
Daniel O'Connor
d20ceb54b5 Avoid double running plantings features 2025-08-10 03:19:24 +00:00
Daniel O'Connor
7e3be99aac Comment out and explain why 2025-08-10 03:12:58 +00:00
Daniel O'Connor
d99d4a1bbe Disable dev shm usage on some environments 2025-08-10 03:08:57 +00:00
Daniel O'Connor
ea530754aa Disable dev shm usage on some environments 2025-08-10 03:06:38 +00:00
Daniel O'Connor
4bd322d8ca Target a desktop 2025-08-10 02:55:34 +00:00
Daniel O'Connor
5fc41ca50f Opt into view transitions 2025-08-10 02:47:44 +00:00
Daniel O'Connor
5da8f815d3 Fix stupid mistake 2025-08-10 02:27:36 +00:00
Daniel O'Connor
d71370c0bc Merge pull request #4122 from Growstuff/dev
Release 65.2
2025-08-10 11:54:12 +09:30
Daniel O'Connor
d0d31edd5e Merge pull request #4121 from Growstuff/delete-openfarm-pictures-rake-task
Swap to iteration for now, so callbacks are happy
2025-08-10 11:52:14 +09:30
Daniel O'Connor
67a2005f1e Swap to iteration for now, so callbacks are happy 2025-08-10 02:21:39 +00:00
Daniel O'Connor
c58ca74b53 Merge pull request #4120 from Growstuff/dev
Release 65.1
2025-08-10 11:39:11 +09:30
Daniel O'Connor
b528b40052 Merge pull request #4119 from Growstuff/delete-openfarm-pictures-rake-task
Swap to iteration for now, so callbacks are happy
2025-08-10 11:36:10 +09:30
Daniel O'Connor
3b17265a92 Swap to iteration for now, so callbacks are happy 2025-08-10 02:05:29 +00:00
Daniel O'Connor
0d22706d42 Merge pull request #4118 from Growstuff/dev
August 2025 Release
2025-08-10 11:17:05 +09:30
Daniel O'Connor
f8c93f16db Merge pull request #4113 from Growstuff/delete-openfarm-pictures-rake-task
Add rake task to delete pictures with source OpenFarm
2025-08-10 11:16:05 +09:30
Daniel O'Connor
8006d26c6e Fix source 2025-08-10 01:45:29 +00:00
Daniel O'Connor
2766082696 Merge branch 'dev' of https://github.com/Growstuff/growstuff into delete-openfarm-pictures-rake-task 2025-08-10 01:43:11 +00:00
Daniel O'Connor
d887d5c788 Merge pull request #4116 from Growstuff/dev-fixed
Add crowdin tools
2025-08-10 11:09:32 +09:30
Daniel O'Connor
0634719afc Add crowdin tools 2025-08-10 01:38:53 +00:00
Daniel O'Connor
a13cf93aeb Merge pull request #4115 from Growstuff/3.3.8
Bump to Ruby 3.3.8
2025-08-10 11:07:34 +09:30
Daniel O'Connor
04376f15a2 Merge pull request #4114 from Growstuff/add-crowdin-support
Add CrowdIn translations support
2025-08-10 10:59:16 +09:30
Daniel O'Connor
82d3f84e0c Ruby 3.3.8 2025-08-10 01:09:08 +00:00
Daniel O'Connor
af6cee2f16 Merge branch 'dev' into dependabot/bundler/bullet-8.0.8 2025-08-10 10:36:54 +09:30
google-labs-jules[bot]
4f705ff37b Add CrowdIn translations support
This change adds support for CrowdIn to manage translations.

- Adds the `crowdin-cli` gem to the `Gemfile`.
- Adds a `crowdin.yml` configuration file to the project root.
2025-08-10 01:02:39 +00:00
google-labs-jules[bot]
4829d5513c This commit adds a rake task to delete all pictures that have 'OpenFarm' as their source. This is useful for cleaning up data imported from OpenFarm. 2025-08-10 00:58:03 +00:00
Daniel O'Connor
d1419aaca4 Merge pull request #4104 from Growstuff/dependabot/bundler/rubocop-1.79.1
Bump rubocop from 1.78.0 to 1.79.1
2025-08-05 18:29:49 +09:30
dependabot[bot]
2458afc451 Bump rubocop from 1.78.0 to 1.79.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.78.0 to 1.79.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.78.0...v1.79.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.79.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 23:21:45 +00:00
Daniel O'Connor
278be7067f Merge pull request #4107 from Growstuff/dependabot/bundler/haml_lint-0.66.0
Bump haml_lint from 0.62.0 to 0.66.0
2025-08-05 08:50:22 +09:30
dependabot[bot]
bc71c4a706 Bump haml_lint from 0.62.0 to 0.66.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.62.0 to 0.66.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.62.0...v0.66.0)

---
updated-dependencies:
- dependency-name: haml_lint
  dependency-version: 0.66.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 23:06:28 +00:00
Daniel O'Connor
b1a42a2ed6 Merge pull request #4106 from Growstuff/dependabot/bundler/pg-1.6.1
Bump pg from 1.5.9 to 1.6.1
2025-08-05 08:35:03 +09:30
dependabot[bot]
fe22c92a63 Bump pg from 1.5.9 to 1.6.1
Bumps [pg](https://github.com/ged/ruby-pg) from 1.5.9 to 1.6.1.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.5.9...v1.6.1)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 09:49:20 +00:00
Daniel O'Connor
f00b31cf46 Merge pull request #4093 from Growstuff/dependabot/bundler/nokogiri-1.18.9
Bump nokogiri from 1.18.8 to 1.18.9
2025-07-25 20:32:04 +09:30
dependabot[bot]
7cfee1d89c Bump nokogiri from 1.18.8 to 1.18.9
---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 03:24:14 +00:00
Daniel O'Connor
6c89cef5bc Merge pull request #4078 from Growstuff/dependabot/bundler/icalendar-2.11.2
Bump icalendar from 2.11.0 to 2.11.2
2025-07-17 08:56:42 +09:30
dependabot[bot]
5d79aa3e60 Bump icalendar from 2.11.0 to 2.11.2
Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.11.0 to 2.11.2.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.11.0...v2.11.2)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-version: 2.11.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 23:17:21 +00:00
Daniel O'Connor
29c8d87703 Merge pull request #4071 from Growstuff/dependabot/bundler/factory_bot_rails-6.5.0
Bump factory_bot_rails from 6.4.4 to 6.5.0
2025-07-17 08:46:41 +09:30
Daniel O'Connor
83ef779c11 Merge pull request #4076 from Growstuff/dependabot/bundler/rspec-rails-8.0.1
Bump rspec-rails from 8.0.0 to 8.0.1
2025-07-17 08:46:20 +09:30
Daniel O'Connor
4ada3e1585 Merge pull request #4080 from Growstuff/dependabot/bundler/selenium-webdriver-4.34.0
Bump selenium-webdriver from 4.32.0 to 4.34.0
2025-07-17 08:46:00 +09:30
Daniel O'Connor
88f5622d0c Merge branch 'dev' into dependabot/bundler/bullet-8.0.8 2025-07-15 09:11:20 +09:30
dependabot[bot]
fa6752c668 Bump selenium-webdriver from 4.32.0 to 4.34.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.32.0 to 4.34.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.34.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.34.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-13 10:53:23 +00:00
dependabot[bot]
f9186c1a8a Bump rspec-rails from 8.0.0 to 8.0.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 8.0.0 to 8.0.1.
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v8.0.0...v8.0.1)

---
updated-dependencies:
- dependency-name: rspec-rails
  dependency-version: 8.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-13 10:53:10 +00:00
dependabot[bot]
82dcd1d86c Bump factory_bot_rails from 6.4.4 to 6.5.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.4 to 6.5.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.4.4...v6.5.0)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-version: 6.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-13 10:52:57 +00:00
Daniel O'Connor
b2146e791f Merge pull request #4083 from Growstuff/dependabot/bundler/faraday-2.13.2
Bump faraday from 2.13.1 to 2.13.2
2025-07-13 20:01:54 +09:30
dependabot[bot]
a9c33a30d2 Bump faraday from 2.13.1 to 2.13.2
Bumps [faraday](https://github.com/lostisland/faraday) from 2.13.1 to 2.13.2.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.13.1...v2.13.2)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.13.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-13 10:30:42 +00:00
Daniel O'Connor
497cb6627d Merge pull request #4085 from Growstuff/dependabot/bundler/rubocop-1.78.0
Bump rubocop from 1.76.0 to 1.78.0
2025-07-13 19:59:21 +09:30
dependabot[bot]
a8a96ae125 Bump rubocop from 1.76.0 to 1.78.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.76.0 to 1.78.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.76.0...v1.78.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.78.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-13 07:37:05 +00:00
Daniel O'Connor
4dcafdb117 Merge pull request #4092 from Growstuff/fix-ci3
Drop simplecov for now
2025-07-13 16:44:29 +09:30
Daniel O'Connor
bd132c32fa Drop simplecov for now 2025-07-13 07:04:02 +00:00
Daniel O'Connor
2b5ed05628 Merge pull request #4087 from Growstuff/remove-codeclimate
Yeet codeclimate into the sun
2025-07-13 15:56:00 +09:30
Daniel O'Connor
df9f8445ad Yeet codeclimate into the sun 2025-07-13 06:22:31 +00:00
dependabot[bot]
534d493693 Bump bullet from 8.0.7 to 8.0.8
Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.0.7 to 8.0.8.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/8.0.7...8.0.8)

---
updated-dependencies:
- dependency-name: bullet
  dependency-version: 8.0.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 09:27:09 +00:00
dependabot[bot]
3bfa1af67b Merge pull request #4060 from Growstuff/dependabot/bundler/jquery-ui-rails-8.0.0 2025-06-09 09:26:01 +00:00
dependabot[bot]
e5e0aacfeb Bump jquery-ui-rails from 413265e to 8.0.0
Bumps [jquery-ui-rails](https://github.com/jquery-ui-rails/jquery-ui-rails) from `413265e` to 8.0.0. This release includes the previously tagged commit.
- [Release notes](https://github.com/jquery-ui-rails/jquery-ui-rails/releases)
- [Commits](413265e81f...v8.0.0)

---
updated-dependencies:
- dependency-name: jquery-ui-rails
  dependency-version: 8.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 09:03:05 +00:00
dependabot[bot]
962cf0bca7 Merge pull request #4068 from Growstuff/dependabot/bundler/rubocop-1.76.0 2025-06-09 09:01:37 +00:00
dependabot[bot]
419ee298ff Bump rubocop from 1.75.5 to 1.76.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.75.5 to 1.76.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.75.5...v1.76.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.76.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 07:03:20 +00:00
Daniel O'Connor
1462279b60 Merge pull request #4011 from Growstuff/dev
March 2025-ish release
2025-03-29 16:43:24 +10:30
458 changed files with 14514 additions and 6501 deletions

View File

@@ -1,47 +0,0 @@
plugins:
brakeman:
enabled: false # codeclimate's brakeman is stuck in rails 5 rules
bundler-audit:
enabled: true
coffeelint:
enabled: true
duplication:
enabled: true
config:
languages:
- ruby
- javascript
editorconfig:
enabled: true
eslint:
enabled: true
fixme:
enabled: true
haml-lint:
enabled: true
nodesecurity:
enabled: true
rubocop:
enabled: true
channel: "rubocop-1-11"
scss-lint:
enabled: true
shellcheck:
enabled: true
ratings:
paths:
- "**.rb"
- "**.ru"
- "**.js"
- "**.coffee"
- "**.scss"
- "**.haml"
- Gemfile.lock
exclude_paths:
- config/
- db/
- spec/
- public/
- app/assets/stylesheets/bootstrap-accessibility.css
- app/assets/javascripts/bootstrap*
- app/assets/stylesheets/leaflet_overrides.scss

View File

@@ -1,4 +1,4 @@
FROM mcr.microsoft.com/devcontainers/ruby:1-3.3-bullseye
FROM mcr.microsoft.com/devcontainers/ruby:3.4-trixie
# Install Rails
RUN gem install rails:7.0.8

View File

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

30
.dockerignore Normal file
View File

@@ -0,0 +1,30 @@
.git
.github
.devcontainer
log/*
tmp/*
!tmp/keep
node_modules
public/assets
.env
.ruby-gemset
.editorconfig
.esignore
.eslintrc.json
.haml-lint.yml
.overcommit.yml
.rspec
.rubocop.yml
.rubocop_todo.yml
.scss-lint.yml
.travis.yml
.yamllint
CODE_OF_CONDUCT.md
CONTRIBUTING.md
CONTRIBUTORS.md
LICENSE.txt
README.md
TECH.md
docker-compose.yml
Dockerfile
.dockerignore

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -100,3 +100,10 @@ jobs:
- name: Run rspec (admin/)
run: bundle exec rspec spec/features/admin/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -100,3 +100,10 @@ jobs:
- name: Run rspec (comments/)
run: bundle exec rspec spec/features/comments/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -101,3 +101,9 @@ jobs:
- name: Run rspec (conversations/)
run: bundle exec rspec spec/features/conversations/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -100,3 +100,10 @@ jobs:
- name: Run rspec (crops/)
run: bundle exec rspec spec/features/crops/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -100,3 +100,10 @@ jobs:
- name: Run rspec (gardens/)
run: bundle exec rspec spec/features/gardens/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -99,4 +99,11 @@ jobs:
run: bundle exec rails search:reindex
- name: Run rspec (harvests/)
run: bundle exec rspec spec/features/harvests/ -fd -t ~@flaky
run: bundle exec rspec spec/features/harvests/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -99,4 +99,11 @@ jobs:
run: bundle exec rails search:reindex
- name: Run rspec (home/)
run: bundle exec rspec spec/features/home/ -fd -t ~@flaky
run: bundle exec rspec spec/features/home/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -99,4 +99,11 @@ jobs:
run: bundle exec rails search:reindex
- name: Run rspec (members/)
run: bundle exec rspec spec/features/members/ -fd -t ~@flaky
run: bundle exec rspec spec/features/members/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

109
.github/workflows/ci-features-places.yml vendored Normal file
View File

@@ -0,0 +1,109 @@
name: CI Features - Admin
on: [pull_request]
jobs:
rspec:
runs-on: ubuntu-latest
services:
db:
image: postgres
env:
##
# The Postgres service fails its docker health check unless you
# specify these environment variables
#
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: growstuff_test
ports: ['5432:5432']
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
APP_DOMAIN_NAME: localhost:3000
APP_PROTOCOL: http
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
DATABASE_URL: postgres://postgres:postgres@localhost:5432/growstuff_test
DEVISE_SECRET_KEY: secret
ELASTIC_SEARCH_VERSION: "7.5.1-amd64"
GROWSTUFF_EMAIL: "noreply@test.growstuff.org"
GROWSTUFF_FLICKR_KEY: secretkey"
GROWSTUFF_FLICKR_SECRET: secretsecret
GROWSTUFF_SITE_NAME: "Growstuff (travis)"
RAILS_ENV: test
RAILS_SECRET_TOKEN: supersecret
steps:
- name: Checkout this repo
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
sudo swapoff -a
sudo sysctl -w vm.swappiness=1
sudo sysctl -w fs.file-max=262144
sudo sysctl -w vm.max_map_count=262144
- name: Start Elasticsearch
uses: elastic/elastic-github-actions/elasticsearch@master
with:
stack-version: 7.5.1
##
# Cache Yarn modules
#
# See https://github.com/actions/cache/blob/master/examples.md#node---yarn for details
#
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install required OS packages
run: |
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install required JS packages
run: yarn install
- name: install chrome
run: sudo apt-get install google-chrome-stable
- name: Prepare database for testing
run: bundle exec rails db:prepare
- name: precompile assets
run: bundle exec rails assets:precompile
- name: index into elastic search
run: bundle exec rails search:reindex
- name: Run rspec (places/)
run: bundle exec rspec spec/features/places/ -fd
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -100,3 +100,10 @@ jobs:
- name: Run rspec (plantings/)
run: bundle exec rspec spec/features/plantings/ -fd
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

109
.github/workflows/ci-features-posts.yml vendored Normal file
View File

@@ -0,0 +1,109 @@
name: CI Features - Posts
on: [pull_request]
jobs:
rspec:
runs-on: ubuntu-latest
services:
db:
image: postgres
env:
##
# The Postgres service fails its docker health check unless you
# specify these environment variables
#
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: growstuff_test
ports: ['5432:5432']
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
APP_DOMAIN_NAME: localhost:3000
APP_PROTOCOL: http
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
DATABASE_URL: postgres://postgres:postgres@localhost:5432/growstuff_test
DEVISE_SECRET_KEY: secret
ELASTIC_SEARCH_VERSION: "7.5.1-amd64"
GROWSTUFF_EMAIL: "noreply@test.growstuff.org"
GROWSTUFF_FLICKR_KEY: secretkey"
GROWSTUFF_FLICKR_SECRET: secretsecret
GROWSTUFF_SITE_NAME: "Growstuff (travis)"
RAILS_ENV: test
RAILS_SECRET_TOKEN: supersecret
steps:
- name: Checkout this repo
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
sudo swapoff -a
sudo sysctl -w vm.swappiness=1
sudo sysctl -w fs.file-max=262144
sudo sysctl -w vm.max_map_count=262144
- name: Start Elasticsearch
uses: elastic/elastic-github-actions/elasticsearch@master
with:
stack-version: 7.5.1
##
# Cache Yarn modules
#
# See https://github.com/actions/cache/blob/master/examples.md#node---yarn for details
#
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install required OS packages
run: |
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install required JS packages
run: yarn install
- name: install chrome
run: sudo apt-get install google-chrome-stable
- name: Prepare database for testing
run: bundle exec rails db:prepare
- name: precompile assets
run: bundle exec rails assets:precompile
- name: index into elastic search
run: bundle exec rails search:reindex
- name: Run rspec (posts/)
run: bundle exec rspec spec/features/posts/ -fd
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -100,3 +100,10 @@ jobs:
- name: Run rspec (seeds/)
run: bundle exec rspec spec/features/seeds/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -99,4 +99,11 @@ jobs:
run: bundle exec rails search:reindex
- name: Run rspec (timeline/)
run: bundle exec rspec spec/features/timeline/ -fd -t ~@flaky
run: bundle exec rspec spec/features/timeline/ -fd -t ~@flaky
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -38,7 +38,7 @@ jobs:
steps:
- name: Checkout this repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -61,7 +61,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -74,9 +74,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -107,19 +107,12 @@ jobs:
- name: Run rspec (photos/)
run: bundle exec rspec spec/features/photos/ -fd
- name: Run rspec (places/)
run: bundle exec rspec spec/features/places/ -fd
- name: Run rspec (plantings/)
run: bundle exec rspec spec/features/plantings/ -fd
- name: Run rspec (posts/)
run: bundle exec rspec spec/features/posts/ -fd
- name: Run rspec (rss/)
run: bundle exec rspec spec/features/rss/ -fd
- name: Report to code climate
run: |
gem install codeclimate-test-reporter
codeclimate-test-reporter
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v7
with:
name: screenshots
path: tmp/screenshots

View File

@@ -6,7 +6,7 @@ jobs:
contributors:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- 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@v4
uses: actions/checkout@v6
- name: Configure sysctl limits
run: |
@@ -76,7 +76,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v4
uses: actions/cache@v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -89,9 +89,9 @@ jobs:
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '12'
node-version: '24'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
@@ -127,9 +127,4 @@ jobs:
run: bundle exec rspec spec/routing/ -fd --fail-fast
- name: Run rspec (request)
run: bundle exec rspec spec/requests/ -fd --fail-fast
- name: Report to code climate
run: |
gem install codeclimate-test-reporter
codeclimate-test-reporter
run: bundle exec rspec spec/requests/ -fd --fail-fast

43
.github/workflows/docker-build-push.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Docker Build and Push
on:
push:
branches:
- mainline
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -1,5 +1,5 @@
inherit_from: .rubocop_todo.yml
require:
plugins:
- rubocop-factory_bot
- rubocop-capybara
- rubocop-rails
@@ -24,6 +24,7 @@ Naming/FileName:
RSpec/DescribeClass:
Exclude:
- 'spec/tasks/import_spec.rb'
- 'spec/views/**/*.rb'
- 'spec/features/**/*.rb'
@@ -71,4 +72,7 @@ Layout/LineLength:
Rails/SkipsModelValidations:
Exclude:
- 'db/migrate/20190317023129_finished_boolean.rb'
- 'db/migrate/20251128200506_add_description_to_crops.rb'
- 'db/migrate/20240810160538_set_default_language_for_existing_alternate_names.rb'
- 'db/migrate/20240101010102_populate_crop_fields_from_openfarm_data.rb'
- 'db/seeds.rb'

View File

@@ -1,33 +1,22 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2024-07-13 05:47:38 UTC using RuboCop version 1.65.0.
# on 2026-04-25 16:44:38 UTC using RuboCop version 1.86.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 231
# Configuration parameters: EnforcedStyle.
# SupportedStyles: link_or_button, strict
Capybara/ClickLinkOrButtonStyle:
Enabled: false
# Offense count: 39
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: DefaultSelector.
Capybara/RSpec/HaveSelector:
# Offense count: 19
Capybara/NegationMatcherAfterVisit:
Exclude:
- 'spec/features/conversations/index_spec.rb'
- 'spec/features/footer_spec.rb'
- 'spec/features/gardens/adding_gardens_spec.rb'
- 'spec/features/harvests/harvesting_a_crop_spec.rb'
- 'spec/features/members/list_spec.rb'
- 'spec/features/admin/reverting_crops_spec.rb'
- 'spec/features/crops/crop_detail_page_spec.rb'
- 'spec/features/crops/crop_wranglers_spec.rb'
- 'spec/features/gardens/gardens_spec.rb'
- 'spec/features/members/deletion_spec.rb'
- 'spec/features/members/following_spec.rb'
- 'spec/features/members/profile_spec.rb'
- 'spec/features/plantings/planting_a_crop_spec.rb'
- 'spec/features/seeds/adding_seeds_spec.rb'
- 'spec/features/shared_examples/crop_suggest.rb'
- 'spec/helpers/application_helper_spec.rb'
- 'spec/support/feature_helpers.rb'
- 'spec/views/posts/show.html.haml_spec.rb'
# Offense count: 14
Capybara/SpecificMatcher:
@@ -43,21 +32,22 @@ Capybara/VisibilityMatcher:
Exclude:
- 'spec/features/shared_examples/crop_suggest.rb'
# Offense count: 6
# Offense count: 8
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle, NonImplicitAssociationMethodNames.
# SupportedStyles: explicit, implicit
FactoryBot/AssociationStyle:
Exclude:
- 'spec/factories/alternate_names.rb'
- 'spec/factories/comments.rb'
- 'spec/factories/crop.rb'
- 'spec/factories/like.rb'
- 'spec/factories/notifications.rb'
- 'spec/factories/scientific_name.rb'
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect, Include, EnforcedStyle, ExplicitOnly.
# Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
# Configuration parameters: EnforcedStyle, ExplicitOnly.
# SupportedStyles: create_list, n_times
FactoryBot/CreateList:
Exclude:
@@ -66,31 +56,50 @@ FactoryBot/CreateList:
- 'spec/views/posts/index.html.haml_spec.rb'
# Offense count: 4
# Configuration parameters: Include, MaxAmount.
# Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
# Configuration parameters: MaxAmount.
FactoryBot/ExcessiveCreateList:
Exclude:
- 'spec/controllers/posts_controller_spec.rb'
- 'spec/features/crops/show_spec.rb'
- 'spec/features/percy/percy_spec.rb'
# Offense count: 1127
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
# Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
FactoryBot/SyntaxMethods:
Enabled: false
# Offense count: 2
# Offense count: 312
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
# SupportedHashRocketStyles: key, separator, table
# SupportedColonStyles: key, separator, table
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
Layout/HashAlignment:
Exclude:
- 'app/helpers/application_helper.rb'
- 'app/helpers/crops_helper.rb'
- 'app/models/concerns/search_harvests.rb'
- 'app/models/concerns/search_plantings.rb'
- 'app/models/crop.rb'
- 'config/sitemap.rb'
- 'lib/tasks/import.rake'
- 'spec/requests/api/v1/activities_request_spec.rb'
- 'spec/requests/api/v1/members_request_spec.rb'
# Offense count: 5
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
# URISchemes: http, https
Layout/LineLength:
Exclude:
- 'app/helpers/crops_helper.rb'
- 'Gemfile'
- 'app/controllers/admin/versions_controller.rb'
- 'app/models/concerns/predict_planting.rb'
- 'app/models/crop.rb'
- 'db/seeds.rb'
# Offense count: 3
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Lint/AmbiguousOperatorPrecedence:
Exclude:
- 'app/controllers/activities_controller.rb'
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: RequireParenthesesForMethodChains.
Lint/AmbiguousRange:
@@ -98,25 +107,33 @@ Lint/AmbiguousRange:
- 'app/models/concerns/search_activities.rb'
- 'app/models/concerns/search_harvests.rb'
- 'app/models/concerns/search_plantings.rb'
- 'db/seeds.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowSafeAssignment.
Lint/AssignmentInCondition:
Exclude:
- 'app/helpers/crops_helper.rb'
# Offense count: 1
# Configuration parameters: AllowedMethods.
# AllowedMethods: enums
Lint/ConstantDefinitionInBlock:
Exclude:
- 'lib/tasks/import.rake'
# Offense count: 2
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches.
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
Lint/DuplicateBranch:
Exclude:
- 'app/models/harvest.rb'
- 'lib/actions/oauth_signup_action.rb'
# Offense count: 8
# Configuration parameters: AllowComments, AllowEmptyLambdas.
Lint/EmptyBlock:
# Offense count: 1
Lint/DuplicateMethods:
Exclude:
- 'db/migrate/20171022032108_all_the_predictions.rb'
- 'spec/controllers/home_controller_spec.rb'
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/controllers/plant_parts_controller_spec.rb'
- 'spec/factories/crop_companions.rb'
- 'spec/features/crops/crop_detail_page_spec.rb'
- 'spec/requests/authentications_spec.rb'
- 'app/models/planting.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
@@ -136,57 +153,80 @@ Lint/SuppressedException:
Exclude:
- 'lib/tasks/testing.rake'
# Offense count: 7
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect.
Lint/UselessAssignment:
# Offense count: 1
Lint/UselessConstantScoping:
Exclude:
- 'config.rb'
- 'config/compass.rb'
- 'app/controllers/members_controller.rb'
# Offense count: 52
# Offense count: 61
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 151
Max: 295
# Offense count: 14
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
# AllowedMethods: refine
Metrics/BlockLength:
Max: 115
Max: 294
# Offense count: 7
# Offense count: 10
# Configuration parameters: CountComments, CountAsOne.
Metrics/ClassLength:
Max: 188
Max: 298
# Offense count: 6
# Offense count: 1
# Configuration parameters: LengthThreshold.
Metrics/CollectionLiteralLength:
Exclude:
- 'lib/tasks/import.rake'
# Offense count: 10
# Configuration parameters: AllowedMethods, AllowedPatterns.
Metrics/CyclomaticComplexity:
Max: 32
# Offense count: 71
# Offense count: 82
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
Metrics/MethodLength:
Max: 127
Max: 296
# Offense count: 2
# Configuration parameters: CountComments, CountAsOne.
Metrics/ModuleLength:
Max: 125
Max: 144
# Offense count: 5
# Offense count: 8
# Configuration parameters: AllowedMethods, AllowedPatterns.
Metrics/PerceivedComplexity:
Max: 32
# Offense count: 2
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
# AllowedMethods: call
# WaywardPredicates: infinite?, nonzero?
Naming/PredicateMethod:
Exclude:
- 'app/models/concerns/finishable.rb'
- 'app/models/seed.rb'
# Offense count: 3
RSpec/AnyInstance:
Exclude:
- 'spec/controllers/harvests_controller_spec.rb'
- 'spec/controllers/photos_controller_spec.rb'
# Offense count: 292
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
RSpec/BeEq:
Exclude:
- 'spec/requests/api/v1/activities_request_spec.rb'
# Offense count: 1
RSpec/BeforeAfterAll:
Exclude:
- 'spec/tasks/import_spec.rb'
# Offense count: 298
# Configuration parameters: Prefixes, AllowedPatterns.
# Prefixes: when, with, without
RSpec/ContextWording:
@@ -202,48 +242,12 @@ RSpec/DescribedClass:
- 'spec/models/member_spec.rb'
- 'spec/services/timeline_service_spec.rb'
# Offense count: 13
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect.
RSpec/EmptyExampleGroup:
Exclude:
- 'spec/controllers/authentications_controller_spec.rb'
- 'spec/controllers/forums_controller_spec.rb'
- 'spec/controllers/home_controller_spec.rb'
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/controllers/plant_parts_controller_spec.rb'
- 'spec/controllers/seeds_controller_spec.rb'
- 'spec/features/crops/crop_detail_page_spec.rb'
- 'spec/features/plantings/planting_a_crop_spec.rb'
- 'spec/requests/authentications_spec.rb'
- 'spec/views/home/index_spec.rb'
- 'spec/views/photos/edit.html.haml_spec.rb'
- 'spec/views/posts/_single.html.haml_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowConsecutiveOneLiners.
RSpec/EmptyLineAfterExample:
Exclude:
- 'spec/models/ability_spec.rb'
# Offense count: 140
# Offense count: 146
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 25
Max: 27
# Offense count: 32
RSpec/ExpectInHook:
Exclude:
- 'spec/controllers/garden_types_controller_spec.rb'
- 'spec/controllers/gardens_controller_spec.rb'
- 'spec/features/admin/forums_spec.rb'
- 'spec/features/admin/plant_parts_spec.rb'
- 'spec/features/admin/roles_spec.rb'
- 'spec/features/crops/crop_photos_spec.rb'
- 'spec/features/members/list_spec.rb'
- 'spec/features/plantings/planting_a_crop_spec.rb'
- 'spec/features/shared_examples/append_date.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
@@ -255,11 +259,30 @@ RSpec/HookArgument:
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AutoCorrect.
RSpec/HooksBeforeExamples:
Exclude:
- 'spec/features/crops/creating_a_crop_spec.rb'
# Offense count: 53
# This cop supports unsafe autocorrection (--autocorrect-all).
RSpec/IncludeExamples:
Exclude:
- 'spec/features/conversations/index_spec.rb'
- 'spec/features/crops/alternate_name_spec.rb'
- 'spec/features/crops/browse_crops_spec.rb'
- 'spec/features/crops/creating_a_crop_spec.rb'
- 'spec/features/crops/crop_photos_spec.rb'
- 'spec/features/crops/delete_crop_spec.rb'
- 'spec/features/gardens/actions_spec.rb'
- 'spec/features/gardens/adding_gardens_spec.rb'
- 'spec/features/gardens/index_spec.rb'
- 'spec/features/likeable_spec.rb'
- 'spec/features/signout_spec.rb'
- 'spec/models/crop_spec.rb'
- 'spec/support/feature_helpers.rb'
- 'spec/views/photos/show.html.haml_spec.rb'
- 'spec/views/seeds/index.rss.haml_spec.rb'
# Offense count: 37
# Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
RSpec/IndexedLet:
@@ -272,16 +295,15 @@ RSpec/IndexedLet:
- 'spec/features/percy/percy_spec.rb'
- 'spec/features/planting_reminder_spec.rb'
- 'spec/features/timeline/index_spec.rb'
- 'spec/models/crop_spec.rb'
- 'spec/models/member_spec.rb'
- 'spec/views/forums/index.html.haml_spec.rb'
# Offense count: 720
# Offense count: 719
# Configuration parameters: AssignmentOnly.
RSpec/InstanceVariable:
Enabled: false
# Offense count: 40
# Offense count: 41
RSpec/LetSetup:
Enabled: false
@@ -307,37 +329,38 @@ RSpec/MultipleDescribes:
Exclude:
- 'spec/features/crops/crop_wranglers_spec.rb'
# Offense count: 152
# Offense count: 191
RSpec/MultipleExpectations:
Max: 19
# Offense count: 138
# Offense count: 166
# Configuration parameters: AllowSubject.
RSpec/MultipleMemoizedHelpers:
Max: 14
Max: 16
# Offense count: 133
# Offense count: 183
# Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
# SupportedStyles: always, named_only
RSpec/NamedSubject:
Enabled: false
# Offense count: 111
# Offense count: 109
# Configuration parameters: AllowedGroups.
RSpec/NestedGroups:
Max: 6
# Offense count: 403
# Offense count: 407
# Configuration parameters: AllowedPatterns.
# AllowedPatterns: ^expect_, ^assert_
RSpec/NoExpectationExample:
Enabled: false
# Offense count: 3
# Offense count: 4
RSpec/PendingWithoutReason:
Exclude:
- 'spec/features/seeds/misc_seeds_spec.rb'
- 'spec/features/unsubscribing_spec.rb'
- 'spec/requests/api/v1/gardens_request_spec.rb'
# Offense count: 2
RSpec/RepeatedDescription:
@@ -358,15 +381,14 @@ RSpec/RepeatedExampleGroupBody:
# Offense count: 6
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AutoCorrect.
RSpec/ScatteredSetup:
Exclude:
- 'spec/features/percy/percy_spec.rb'
- 'spec/features/plantings/prediction_spec.rb'
# Offense count: 1
# Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata.
# Include: **/*_spec.rb
# Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
# SupportedInflectors: default, active_support
RSpec/SpecFilePathFormat:
Exclude:
- 'spec/controllers/member_controller_spec.rb'
@@ -380,8 +402,6 @@ RSpec/StubbedMock:
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: constant, string
RSpec/VerifiedDoubleReference:
Exclude:
- 'spec/models/member_spec.rb'
@@ -394,47 +414,38 @@ RSpec/VerifiedDoubles:
- 'spec/controllers/gardens_controller_spec.rb'
- 'spec/views/devise/shared/_links_spec.rb'
# Offense count: 7
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ResponseMethods.
# ResponseMethods: response, last_response
RSpecRails/HaveHttpStatus:
Exclude:
- 'spec/controllers/api/v1/plantings_controller_spec.rb'
- 'spec/controllers/harvests_controller_spec.rb'
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/requests/harvests_spec.rb'
# Offense count: 16
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Inferences.
RSpecRails/InferredSpecType:
Enabled: false
# Offense count: 28
# Configuration parameters: Database, Include.
# Offense count: 30
# Configuration parameters: Database.
# SupportedDatabases: mysql, postgresql
# Include: db/**/*.rb
Rails/BulkChangeTable:
Enabled: false
# Offense count: 4
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/CreateTableWithTimestamps:
Exclude:
- 'db/migrate/20150201052245_create_cms.rb'
- 'db/migrate/20171022032108_all_the_predictions.rb'
# Offense count: 1
# Offense count: 8
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle, AllowToTime.
# SupportedStyles: strict, flexible
Rails/Date:
Exclude:
- 'app/controllers/activities_controller.rb'
- 'app/mailers/notifier_mailer.rb'
- 'app/models/concerns/search_seeds.rb'
- 'spec/features/activities/creating_a_recurring_activity_spec.rb'
# Offense count: 11
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: slashes, arguments
Rails/FilePath:
Exclude:
- 'lib/tasks/import.rake'
# Offense count: 12
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods, AllowedPatterns.
# AllowedMethods: order, limit, select, lock
@@ -445,38 +456,35 @@ Rails/FindEach:
- 'db/migrate/20171129041341_create_photographings.rb'
- 'db/migrate/20190130090437_add_crop_to_photographings.rb'
- 'db/migrate/20191119030244_cms_tags.rb'
- 'lib/tasks/wikidata.rake'
# Offense count: 2
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasAndBelongsToMany:
Exclude:
- 'app/models/member.rb'
- 'app/models/role.rb'
# Offense count: 5
# Configuration parameters: Include.
# Include: app/models/**/*.rb
# Offense count: 6
Rails/HasManyOrHasOneDependent:
Exclude:
- 'app/models/crop.rb'
- 'app/models/member.rb'
# Offense count: 1
# Configuration parameters: Include.
# Include: spec/**/*.rb, test/**/*.rb
Rails/I18nLocaleAssignment:
Exclude:
- 'spec/features/locale_spec.rb'
# Offense count: 33
Rails/I18nLocaleTexts:
Enabled: false
# Offense count: 1
# Configuration parameters: IgnoreScopes.
Rails/InverseOf:
Exclude:
- 'app/models/member.rb'
# Offense count: 3
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
# Offense count: 4
Rails/LexicallyScopedActionFilter:
Exclude:
- 'app/controllers/api/v1/base_controller.rb'
- 'app/controllers/data_controller.rb'
- 'app/controllers/registrations_controller.rb'
@@ -492,17 +500,23 @@ Rails/PluralizationGrammar:
Exclude:
- 'spec/requests/plantings_spec.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
Rails/Presence:
Exclude:
- 'app/controllers/photos_controller.rb'
- 'app/controllers/plantings_controller.rb'
- 'app/models/concerns/open_farm_data.rb'
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
# Include: **/Rakefile, **/*.rake
Rails/RakeEnvironment:
Exclude:
- 'lib/tasks/hooks.rake'
- 'lib/tasks/i18n.rake'
- 'lib/tasks/testing.rake'
# Offense count: 9
# Offense count: 8
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedReceivers.
# AllowedReceivers: ActionMailer::Preview, ActiveSupport::TimeZone
@@ -513,9 +527,8 @@ Rails/RedundantActiveRecordAllMethod:
- 'app/controllers/forums_controller.rb'
- 'app/controllers/plant_parts_controller.rb'
- 'app/controllers/scientific_names_controller.rb'
- 'app/services/openfarm_service.rb'
- 'spec/features/members/deletion_spec.rb'
- 'spec/features/percy/percy_spec.rb'
- 'spec/models/harvest_spec.rb'
# Offense count: 5
# This cop supports unsafe autocorrection (--autocorrect-all).
@@ -526,14 +539,13 @@ Rails/RedundantPresenceValidationOnBelongsTo:
- 'app/models/planting.rb'
- 'app/models/scientific_name.rb'
# Offense count: 15
# Offense count: 16
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
# Include: spec/controllers/**/*.rb, spec/requests/**/*.rb, test/controllers/**/*.rb, test/integration/**/*.rb
Rails/ResponseParsedBody:
Exclude:
- 'spec/controllers/api/v1/plantings_controller_spec.rb'
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/requests/api/v1/activities_request_spec.rb'
- 'spec/requests/api/v1/crop_request_spec.rb'
- 'spec/requests/api/v1/gardens_request_spec.rb'
- 'spec/requests/api/v1/harvests_request_spec.rb'
@@ -543,29 +555,35 @@ Rails/ResponseParsedBody:
- 'spec/requests/api/v1/seeds_request_spec.rb'
# Offense count: 9
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/ReversibleMigration:
Exclude:
- 'db/migrate/20130326092227_change_planted_at_to_date.rb'
- 'db/migrate/20191119020643_upgrade_cms.rb'
# Offense count: 2
# Offense count: 6
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/RootPathnameMethods:
Exclude:
- 'app/controllers/crops_controller.rb'
- 'app/helpers/icons_helper.rb'
- 'config/application.rb'
- 'lib/tasks/import.rake'
- 'spec/rails_helper.rb'
# Offense count: 21
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/ThreeStateBooleanColumn:
Enabled: false
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: strict, flexible
Rails/TimeZone:
Exclude:
- 'app/controllers/activities_controller.rb'
- 'spec/features/harvests/harvesting_a_crop_spec.rb'
# Offense count: 6
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UniqueValidationWithoutIndex:
Exclude:
- 'app/models/follow.rb'
@@ -583,24 +601,28 @@ Rails/WhereEquals:
- 'app/models/harvest.rb'
- 'app/models/planting.rb'
# Offense count: 2
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/WhereRange:
Exclude:
- 'app/models/concerns/predict_planting.rb'
- 'app/models/garden.rb'
- 'app/models/seed.rb'
# Offense count: 1
Rake/MethodDefinitionInTask:
Exclude:
- 'lib/tasks/growstuff.rake'
# Offense count: 3
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# Configuration parameters: EnforcedStyle, EnforcedStyleForClasses, EnforcedStyleForModules.
# SupportedStyles: nested, compact
# SupportedStylesForClasses: ~, nested, compact
# SupportedStylesForModules: ~, nested, compact
Style/ClassAndModuleChildren:
Exclude:
- 'app/controllers/admin/crops_controller.rb'
- 'lib/actions/oauth_signup_action.rb'
- 'lib/haml/filters/escaped_markdown.rb'
- 'lib/haml/filters/growstuff_markdown.rb'
@@ -615,30 +637,52 @@ Style/CommentedKeyword:
- 'spec/models/planting_spec.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedVars, DefaultToNil.
Style/FetchEnvVar:
Exclude:
- 'config/sitemap.rb'
# Offense count: 2
Style/FileOpen:
Exclude:
- 'app/helpers/application_helper.rb'
- 'db/seeds.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: left_coerce, right_coerce, single_coerce, fdiv
Style/FloatDivision:
Exclude:
- 'app/models/concerns/predict_planting.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
Exclude:
- 'config/initializers/new_framework_defaults_6_0.rb'
- 'db/migrate/20200801084007_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.active_storage.rb'
- 'spec/lib/haml/filters/growstuff_markdown_spec.rb'
# Offense count: 3
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/GlobalStdStream:
Exclude:
- 'config/environments/production.rb'
- 'lib/tasks/gbif.rake'
- 'lib/tasks/openfarm.rake'
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/IdenticalConditionalBranches:
Exclude:
- 'lib/actions/oauth_signup_action.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods.
# AllowedMethods: nonzero?
Style/IfWithBooleanLiteralBranches:
Style/MapIntoArray:
Exclude:
- 'app/controllers/gardens_controller.rb'
- 'app/helpers/crops_helper.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
@@ -660,12 +704,13 @@ Style/MutableConstant:
Exclude:
- 'app/models/activity.rb'
# Offense count: 5
# Offense count: 6
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
# SupportedStyles: predicate, comparison
Style/NumericPredicate:
Exclude:
- 'app/controllers/activities_controller.rb'
- 'app/helpers/crops_helper.rb'
- 'app/helpers/harvests_helper.rb'
- 'app/helpers/plantings_helper.rb'
@@ -676,11 +721,12 @@ Style/OpenStructUse:
Exclude:
- 'spec/helpers/event_helper_spec.rb'
# Offense count: 2
# Offense count: 3
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:
Exclude:
- 'app/helpers/application_helper.rb'
- 'app/models/concerns/member_newsletter.rb'
# Offense count: 1
@@ -697,20 +743,34 @@ Style/RedundantFetchBlock:
Exclude:
- 'config/puma.rb'
# Offense count: 2
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/RedundantInterpolation:
Exclude:
- 'app/helpers/buttons_helper.rb'
# Offense count: 4
# Configuration parameters: Max.
Style/SafeNavigationChainLength:
Exclude:
- 'app/models/ability.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowModifier.
Style/SoleNestedConditional:
Exclude:
- 'app/controllers/activities_controller.rb'
- 'app/controllers/application_controller.rb'
- 'app/controllers/messages_controller.rb'
# Offense count: 24
# Offense count: 27
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Mode.
Style/StringConcatenation:
Exclude:
- 'app/controllers/messages_controller.rb'
- 'app/controllers/registrations_controller.rb'
- 'app/helpers/buttons_helper.rb'
- 'config/initializers/rswag_api.rb'
- 'spec/helpers/gardens_helper_spec.rb'

View File

@@ -1 +1 @@
3.3.7
3.4.8

View File

@@ -248,6 +248,3 @@ linters:
ZeroUnit:
enabled: true
Compass::*:
enabled: false

View File

@@ -1,31 +0,0 @@
sudo: required
language: ruby
dist: bionic
branches:
only:
- mainline
- dev
cache:
bundler: true
yarn: true
directories:
- tmp/cache/assets/test/sprockets
env:
global:
- secure: "Z5TpM2jEX4UCvNePnk/LwltQX48U2u9BRc+Iypr1x9QW2o228QJhPIOH39a8RMUrepGnkQIq9q3ZRUn98RfrJz1yThtlNFL3NmzdQ57gKgjGwfpa0e4Dwj/ZJqV2D84tDGjvdVYLP7zzaYZxQcwk/cgNpzKf/jq97HLNP7CYuf4="
before_deploy:
- bundle exec script/heroku_maintenance.rb on
deploy:
provider: heroku
api_key:
secure: "WrQxf0fEKkCdXrjcejurobOnNNz3he4dDwjBbToXbQTQNDObPp7NetJrLsfM8FiUFEeOuvhIHHiDQtMvY720zGGAGxDptvgFS+0QHCUqoTRZA/yFfUmHlG2jROXTzk5uVK0AE4k6Ion5kX8+mM0EnMT/7u+MTFiukrJctSiEXfg="
on:
repo: Growstuff/growstuff
app:
dev: growstuff-staging
mainline: growstuff-prod
run:
- "script/deploy-tasks.sh"
- restart
after_deploy:
- bundle exec script/heroku_maintenance.rb off

View File

@@ -12,6 +12,7 @@ submit the change with your pull request.
- Miles Gould / [pozorvlak](https://github.com/pozorvlak)
- Mackenzie Morgan / [maco](https://github.com/maco)
- Brenda Wallace / [br3nda](https://github.com/br3nda)
- Daniel O'Connor / [CloCkWeRX](https://github.com/CloCkWeRX)
## Contributors
@@ -68,7 +69,6 @@ submit the change with your pull request.
- Jym Paul Carandang / [jacarandang](https://github.com/jacarandang)
- Anthony Atkinson / [sha1sum](https://github.com/sha1sum)
- Terence Conquest / [twconquest](https://github.com/twconquest)
- Daniel O'Connor / [CloCkWeRX](https://github.com/CloCkWeRX)
- DV Dasari / [dv2](https://github.com/dv2)
- Eric Tillberg / [Thrillberg](https://github.com/Thrillberg)
- Lucas Nogueira / [lucasnogueira](https://github.com/lucasnogueira)
@@ -95,10 +95,11 @@ submit the change with your pull request.
- Ítalo Pires / [italopires](https://github.com/italopires)
- Bennett Zink / [bennett-zink](https://github.com/bennett-zink)
- Dominick Thornton / [domthor](https://github.com/domthor)
## Bots
### Security and Dependency Updates
- `codefactor-io[bot]`
- DeppBot / [deppbot](https://github.com/deppbot)
- `dependabot[bot]` [dependabot](https://github.com/dependabot-bot) / [dependabot-preview](https://github.com/apps/dependabot-preview)
- [google-labs-jules[bot]](https://github.com/apps/google-labs-jules)

52
Dockerfile Normal file
View File

@@ -0,0 +1,52 @@
FROM ruby:3.4.8-trixie
# Install system dependencies
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
git \
curl \
gnupg2 \
shared-mime-info \
libvips \
&& curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
&& apt-get install -y --no-install-recommends nodejs \
&& npm install -g yarn \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Set production environment
ENV RAILS_ENV=production \
BUNDLE_WITHOUT="development test" \
RAILS_SERVE_STATIC_FILES=true \
RAILS_LOG_TO_STDOUT=true
WORKDIR /app
# Install gems
COPY Gemfile Gemfile.lock ./
RUN bundle config set --local deployment 'true' && \
bundle config set --local without 'development test' && \
bundle install --jobs 4 --retry 3
# Install JavaScript dependencies
COPY package.json yarn.lock ./
RUN yarn install --check-files
# Copy the application code
COPY . .
# Precompile assets
# Secret key base is needed for asset compilation but doesn't need to be the real one
RUN RAILS_ENV=production SECRET_KEY_BASE_DUMMY=1 bundle exec rake assets:precompile
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Start the main process.
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]

22
Gemfile
View File

@@ -91,10 +91,9 @@ gem 'bootstrap-datepicker-rails'
# DRY-er easier bootstrap 4 forms
gem "bootstrap_form", ">= 4.5.0"
# For connecting to other services (eg Twitter)
# For connecting to other services (eg Flickr)
gem 'omniauth', '~> 1.3'
gem 'omniauth-flickr', '>= 0.0.15'
gem 'omniauth-twitter'
# Pretty charts
gem "chartkick"
@@ -137,6 +136,11 @@ gem "gbifrb"
gem "msgpack"
# Pinned due to RAILS_ENV=production bundle exec rake assets:precompile failing with ArgumentError: wrong number of arguments (given 1, expected 0) (ArgumentError)
# /tmp/build_8301a541/vendor/bundle/ruby/3.3.0/gems/connection_pool-3.0.2/lib/connection_pool.rb:48:in `initialize'
# /tmp/build_8301a541/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.3/lib/active_support/cache/mem_cache_store.rb:63:in `new'
gem "connection_pool", "< 3"
group :production do
gem 'bonsai-elasticsearch-rails' # Integration with Bonsa-Elasticsearch on heroku
gem 'dalli'
@@ -175,10 +179,10 @@ group :development, :test do
gem 'rubocop-rspec_rails'
gem 'webrat' # provides HTML matchers for view tests
gem 'crowdin-cli' # for translations
gem 'dotenv-rails'
# cli utils
gem 'haml-i18n-extractor', require: false
gem 'haml_lint', '>= 0.25.1', require: false # Checks haml files for goodness
gem 'i18n-tasks', require: false # adds tests for finding missing and unused translations
gem 'rspectre', require: false # finds unused code in specs
@@ -188,15 +192,17 @@ end
group :test do
gem 'axe-core-capybara'
gem 'axe-core-rspec'
gem 'codeclimate-test-reporter', require: false
gem "percy-capybara", "~> 5.0.0"
gem 'rails-controller-testing'
gem "rspec-rebound"
gem 'selenium-webdriver'
gem 'timecop'
gem 'vcr'
end
group :travis do
gem 'platform-api'
end
gem "i18n_data", "~> 1.1"
gem "percy-capybara", "~> 5.0.0"
gem "paper_trail", "~> 17.0"
gem 'aws-sdk-s3', '~> 1', '>= 1.114.0'
gem 'sitemap_generator'

View File

@@ -33,76 +33,78 @@ GEM
GEM
remote: https://rubygems.org/
specs:
actioncable (7.2.2.1)
actionpack (= 7.2.2.1)
activesupport (= 7.2.2.1)
actioncable (7.2.3.1)
actionpack (= 7.2.3.1)
activesupport (= 7.2.3.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.2.2.1)
actionpack (= 7.2.2.1)
activejob (= 7.2.2.1)
activerecord (= 7.2.2.1)
activestorage (= 7.2.2.1)
activesupport (= 7.2.2.1)
actionmailbox (7.2.3.1)
actionpack (= 7.2.3.1)
activejob (= 7.2.3.1)
activerecord (= 7.2.3.1)
activestorage (= 7.2.3.1)
activesupport (= 7.2.3.1)
mail (>= 2.8.0)
actionmailer (7.2.2.1)
actionpack (= 7.2.2.1)
actionview (= 7.2.2.1)
activejob (= 7.2.2.1)
activesupport (= 7.2.2.1)
actionmailer (7.2.3.1)
actionpack (= 7.2.3.1)
actionview (= 7.2.3.1)
activejob (= 7.2.3.1)
activesupport (= 7.2.3.1)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (7.2.2.1)
actionview (= 7.2.2.1)
activesupport (= 7.2.2.1)
actionpack (7.2.3.1)
actionview (= 7.2.3.1)
activesupport (= 7.2.3.1)
cgi
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4, < 3.2)
rack (>= 2.2.4, < 3.3)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (7.2.2.1)
actionpack (= 7.2.2.1)
activerecord (= 7.2.2.1)
activestorage (= 7.2.2.1)
activesupport (= 7.2.2.1)
actiontext (7.2.3.1)
actionpack (= 7.2.3.1)
activerecord (= 7.2.3.1)
activestorage (= 7.2.3.1)
activesupport (= 7.2.3.1)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.2.2.1)
activesupport (= 7.2.2.1)
actionview (7.2.3.1)
activesupport (= 7.2.3.1)
builder (~> 3.1)
cgi
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
active_link_to (1.0.5)
actionpack
addressable
active_median (0.6.0)
activesupport (>= 7.1)
active_record_union (1.3.0)
activerecord (>= 4.0)
active_utils (3.5.0)
active_median (1.0.0)
activesupport (>= 7.2)
active_record_union (1.4.0)
activerecord (>= 6.0)
active_utils (3.6.0)
activesupport (>= 4.2)
i18n
activejob (7.2.2.1)
activesupport (= 7.2.2.1)
activejob (7.2.3.1)
activesupport (= 7.2.3.1)
globalid (>= 0.3.6)
activemodel (7.2.2.1)
activesupport (= 7.2.2.1)
activerecord (7.2.2.1)
activemodel (= 7.2.2.1)
activesupport (= 7.2.2.1)
activemodel (7.2.3.1)
activesupport (= 7.2.3.1)
activerecord (7.2.3.1)
activemodel (= 7.2.3.1)
activesupport (= 7.2.3.1)
timeout (>= 0.4.0)
activestorage (7.2.2.1)
actionpack (= 7.2.2.1)
activejob (= 7.2.2.1)
activerecord (= 7.2.2.1)
activesupport (= 7.2.2.1)
activestorage (7.2.3.1)
actionpack (= 7.2.3.1)
activejob (= 7.2.3.1)
activerecord (= 7.2.3.1)
activesupport (= 7.2.3.1)
marcel (~> 1.0)
activesupport (7.2.2.1)
activesupport (7.2.3.1)
base64
benchmark (>= 0.3)
bigdecimal
@@ -111,23 +113,42 @@ GEM
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
minitest (>= 5.1, < 6)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
addressable (2.9.0)
public_suffix (>= 2.0.2, < 8.0)
ast (2.4.3)
autoprefixer-rails (10.4.16.0)
execjs (~> 2)
axe-core-api (4.10.3)
aws-eventstream (1.4.0)
aws-partitions (1.1240.0)
aws-sdk-core (3.245.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
bigdecimal
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.123.0)
aws-sdk-core (~> 3, >= 3.244.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.220.0)
aws-sdk-core (~> 3, >= 3.244.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.12.1)
aws-eventstream (~> 1, >= 1.0.2)
axe-core-api (4.11.2)
dumb_delegator
ostruct
virtus
axe-core-capybara (4.10.3)
axe-core-api (= 4.10.3)
axe-core-capybara (4.11.2)
axe-core-api (= 4.11.2)
dumb_delegator
axe-core-rspec (4.10.3)
axe-core-api (= 4.10.3)
axe-core-rspec (4.11.2)
axe-core-api (= 4.11.2)
dumb_delegator
ostruct
virtus
@@ -135,14 +156,14 @@ GEM
descendants_tracker (~> 0.0.4)
ice_nine (~> 0.11.0)
thread_safe (~> 0.3, >= 0.3.1)
base64 (0.2.0)
bcrypt (3.1.20)
benchmark (0.4.0)
base64 (0.3.0)
bcrypt (3.1.22)
benchmark (0.5.0)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
rouge (>= 1.0.0)
bigdecimal (3.1.9)
bigdecimal (4.1.2)
bluecloth (2.2.0)
bonsai-elasticsearch-rails (7.0.1)
elasticsearch-model (< 8)
@@ -156,10 +177,11 @@ GEM
actionpack (>= 6.1)
activemodel (>= 6.1)
builder (3.3.0)
bullet (8.0.7)
bullet (8.1.1)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (12.0.0)
byebug (13.0.0)
reline (>= 0.6.0)
cancancan (3.6.1)
capybara (3.40.0)
addressable
@@ -173,7 +195,7 @@ GEM
capybara-email (3.0.2)
capybara (>= 2.4, < 4.0)
mail
capybara-screenshot (1.0.26)
capybara-screenshot (1.0.27)
capybara (>= 1.0, < 4)
launchy
carrierwave (3.0.7)
@@ -183,10 +205,10 @@ GEM
image_processing (~> 1.1)
marcel (~> 1.0.0)
ssrf_filter (~> 1.0)
chartkick (5.1.5)
childprocess (5.0.0)
codeclimate-test-reporter (1.0.9)
simplecov (<= 0.13)
cgi (0.5.1)
chartkick (5.2.1)
childprocess (5.1.0)
logger (~> 1.5)
coderay (1.1.3)
coercible (1.0.0)
descendants_tracker (~> 0.0.1)
@@ -199,38 +221,47 @@ GEM
coffee-script-source (1.12.2)
comfy_bootstrap_form (4.0.9)
rails (>= 5.0.0)
concurrent-ruby (1.3.5)
connection_pool (2.5.3)
concurrent-ruby (1.3.6)
connection_pool (2.5.5)
crass (1.0.6)
csv (3.3.1)
crowdin-api (1.12.0)
open-uri (>= 0.1.0, < 0.2.0)
rest-client (>= 2.0.0, < 2.2.0)
crowdin-cli (0.2.2)
crowdin-api (>= 0.2.0)
gli (>= 2.7.0)
i18n (>= 0.6.4)
rubyzip (>= 1.0.0)
csv (3.3.5)
csv_shaper (1.4.0)
activesupport (>= 3.0.0)
csv
dalli (3.2.8)
dalli (5.0.2)
logger
database_cleaner (2.1.0)
database_cleaner-active_record (>= 2, < 3)
database_cleaner-active_record (2.2.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.4.1)
date (3.5.1)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
devise (4.9.4)
devise (5.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
railties (>= 7.0)
responders
warden (~> 1.2.3)
diff-lcs (1.6.1)
diff-lcs (1.6.2)
discard (1.4.0)
activerecord (>= 4.2, < 9.0)
docile (1.1.5)
dotenv (3.1.8)
dotenv-rails (3.1.8)
dotenv (= 3.1.8)
domain_name (0.6.20240107)
dotenv (3.2.0)
dotenv-rails (3.2.0)
dotenv (= 3.2.0)
railties (>= 6.1)
drb (2.2.1)
drb (2.2.3)
dumb_delegator (1.1.0)
elasticsearch (7.0.0)
elasticsearch-api (= 7.0.0)
@@ -245,91 +276,86 @@ GEM
elasticsearch-transport (7.0.0)
faraday
multi_json
erb (6.0.2)
erubi (1.13.1)
erubis (2.7.0)
excon (1.2.5)
logger
execjs (2.10.0)
factory_bot (6.5.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.4.4)
factory_bot (6.5.5)
activesupport (>= 6.1.0)
factory_bot_rails (6.5.1)
factory_bot (~> 6.5)
railties (>= 5.0.0)
faker (3.5.1)
railties (>= 6.1.0)
faker (3.8.0)
i18n (>= 1.8.11, < 2)
faraday (2.13.1)
faraday (2.14.1)
faraday-net_http (>= 2.0, < 3.5)
json
logger
faraday-net_http (3.4.0)
net-http (>= 0.5.0)
ffi (1.16.3)
faraday-net_http (3.4.2)
net-http (~> 0.5)
ffi (1.17.3)
ffi (1.17.3-x86_64-linux-gnu)
flickraw (0.9.10)
font-awesome-sass (5.15.1)
sassc (>= 1.11)
friendly_id (5.5.1)
friendly_id (5.6.0)
activerecord (>= 4.0.0)
gbifrb (0.2.0)
geocoder (1.8.5)
geocoder (1.8.6)
base64 (>= 0.1.0)
csv (>= 3.0.0)
gibbon (1.2.1)
httparty
multi_json (>= 1.9.0)
globalid (1.2.1)
gli (2.22.2)
ostruct
globalid (1.3.0)
activesupport (>= 6.1)
gravatar-ultimate (2.0.0)
activesupport (>= 2.3.14)
rack
haml (6.3.0)
haml (7.2.0)
temple (>= 0.8.2)
thor
tilt
haml-i18n-extractor (0.5.9)
activesupport
haml
highline
tilt
trollop (= 1.16.2)
haml-rails (2.1.0)
haml-rails (3.0.0)
actionpack (>= 5.1)
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.62.0)
haml_lint (0.73.0)
haml (>= 5.0)
parallel (~> 1.10)
parallel (>= 1.10)
rainbow
rubocop (>= 1.0)
sysexits (~> 1.1)
hashie (5.0.0)
heroics (0.1.3)
base64
erubis (~> 2.0)
excon
moneta
multi_json (>= 1.9.2)
webrick
hashie (5.1.0)
logger
highline (3.1.2)
reline
httparty (0.22.0)
http-accept (1.7.0)
http-cookie (1.0.8)
domain_name (~> 0.5)
httparty (0.24.0)
csv
mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2)
i18n (1.14.7)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
i18n-tasks (1.0.15)
i18n-tasks (1.1.2)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
erubi
highline (>= 2.0.0)
highline (>= 3.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)
icalendar (2.11.0)
i18n_data (1.1.0)
simple_po_parser (~> 1.1)
icalendar (2.12.2)
base64
ice_cube (~> 0.16)
logger
@@ -339,18 +365,21 @@ GEM
image_processing (1.12.2)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
io-console (0.8.0)
irb (1.15.2)
io-console (0.8.2)
irb (1.17.0)
pp (>= 0.6.0)
prism (>= 1.3.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jquery-rails (4.6.0)
jmespath (1.6.2)
jquery-rails (4.6.1)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (2.12.0)
json-schema (5.1.0)
json (2.19.3)
json-schema (6.2.0)
addressable (~> 2.8)
bigdecimal (>= 3.1, < 5)
jsonapi-resources (0.10.7)
activerecord (>= 4.1)
concurrent-ruby
@@ -360,23 +389,26 @@ GEM
kramdown (2.4.0)
rexml
language_server-protocol (3.17.0.5)
launchy (3.0.1)
launchy (3.1.1)
addressable (~> 2.8)
childprocess (~> 5.0)
logger (~> 1.6)
leaflet-rails (1.9.5)
actionpack (>= 4.2.0)
railties (>= 4.2.0)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
lint_roller (1.1.0)
listen (3.9.0)
listen (3.10.0)
logger
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.7.0)
loofah (2.24.1)
loofah (2.25.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
mail (2.9.0)
logger
mini_mime (>= 0.1.1)
net-imap
net-pop
@@ -390,40 +422,44 @@ GEM
sass (>= 3.5.2)
material_icons (4.0.0)
railties (>= 3.2)
matrix (0.4.2)
matrix (0.4.3)
memcachier (0.0.2)
method_source (1.1.0)
mime-types (3.7.0)
logger
mime-types-data (~> 3.2025, >= 3.2025.0507)
mime-types-data (3.2025.0805)
mimemagic (0.4.3)
nokogiri (~> 1)
rake
mini_magick (4.12.0)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
minitest (5.25.5)
moneta (1.0.0)
minitest (5.27.0)
msgpack (1.8.0)
multi_json (1.15.0)
multi_xml (0.7.1)
bigdecimal (~> 3.1)
net-http (0.6.0)
uri
net-imap (0.4.20)
multi_json (1.19.1)
multi_xml (0.8.1)
bigdecimal (>= 3.1, < 5)
net-http (0.9.1)
uri (>= 0.11.1)
net-imap (0.5.12)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.5.0)
net-smtp (0.5.1)
net-protocol
nio4r (2.7.4)
nokogiri (1.18.8)
netrc (0.11.0)
nio4r (2.7.5)
nokogiri (1.19.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.18.8-x86_64-linux-gnu)
nokogiri (1.19.2-x86_64-linux-gnu)
racc (~> 1.4)
oauth (0.5.6)
oj (3.16.10)
oj (3.17.0)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
omniauth (1.9.2)
@@ -435,39 +471,38 @@ GEM
omniauth-oauth (1.1.0)
oauth
omniauth (~> 1.0)
omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1)
rack
open-uri (0.1.0)
orm_adapter (0.5.0)
ostruct (0.6.1)
parallel (1.27.0)
parser (3.3.8.0)
ostruct (0.6.3)
paper_trail (17.0.0)
activerecord (>= 7.1)
request_store (~> 1.4)
parallel (2.0.1)
parser (3.3.11.1)
ast (~> 2.4.1)
racc
percy-capybara (5.0.0)
capybara (>= 3)
pg (1.5.9)
platform-api (3.8.0)
heroics (~> 0.1.1)
moneta (~> 1.0.0)
rate_throttle_client (~> 0.1.0)
pg (1.6.3)
pg (1.6.3-x86_64-linux)
popper_js (2.11.8)
pp (0.6.2)
pp (0.6.3)
prettyprint
prettyprint (0.2.0)
prism (1.4.0)
pry (0.15.2)
prism (1.9.0)
pry (0.16.0)
coderay (~> 1.1)
method_source (~> 1.0)
psych (5.2.6)
reline (>= 0.6.0)
psych (5.3.1)
date
stringio
public_suffix (6.0.1)
puma (6.6.0)
public_suffix (7.0.5)
puma (8.0.0)
nio4r (~> 2.0)
query_diet (0.7.2)
query_diet (0.7.3)
racc (1.8.1)
rack (2.2.15)
rack (2.2.23)
rack-cors (2.0.2)
rack (>= 2.0.0)
rack-protection (3.2.0)
@@ -480,30 +515,30 @@ GEM
rackup (1.0.1)
rack (< 3)
webrick
rails (7.2.2.1)
actioncable (= 7.2.2.1)
actionmailbox (= 7.2.2.1)
actionmailer (= 7.2.2.1)
actionpack (= 7.2.2.1)
actiontext (= 7.2.2.1)
actionview (= 7.2.2.1)
activejob (= 7.2.2.1)
activemodel (= 7.2.2.1)
activerecord (= 7.2.2.1)
activestorage (= 7.2.2.1)
activesupport (= 7.2.2.1)
rails (7.2.3.1)
actioncable (= 7.2.3.1)
actionmailbox (= 7.2.3.1)
actionmailer (= 7.2.3.1)
actionpack (= 7.2.3.1)
actiontext (= 7.2.3.1)
actionview (= 7.2.3.1)
activejob (= 7.2.3.1)
activemodel (= 7.2.3.1)
activerecord (= 7.2.3.1)
activestorage (= 7.2.3.1)
activesupport (= 7.2.3.1)
bundler (>= 1.15.0)
railties (= 7.2.2.1)
railties (= 7.2.3.1)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.2.0)
rails-dom-testing (2.3.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
rails-html-sanitizer (1.7.0)
loofah (~> 2.25)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails-i18n (7.0.10)
i18n (>= 0.7, < 2)
@@ -513,95 +548,107 @@ GEM
rails_stdout_logging
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
railties (7.2.2.1)
actionpack (= 7.2.2.1)
activesupport (= 7.2.2.1)
railties (7.2.3.1)
actionpack (= 7.2.3.1)
activesupport (= 7.2.3.1)
cgi
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.2.1)
rate_throttle_client (0.1.2)
rake (13.4.2)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
rb-inotify (0.11.1)
ffi (~> 1.0)
rdoc (6.13.1)
rdoc (7.2.0)
erb
psych (>= 4.0.0)
recaptcha (5.19.0)
redis-client (0.23.2)
tsort
recaptcha (5.21.2)
redis-client (0.26.2)
connection_pool
regexp_parser (2.10.0)
reline (0.6.1)
regexp_parser (2.12.0)
reline (0.6.3)
io-console (~> 0.5)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.4.1)
request_store (1.7.0)
rack (>= 1.4)
responders (3.2.0)
actionpack (>= 7.0)
railties (>= 7.0)
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)
rouge (4.1.2)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-activemodel-mocks (1.2.1)
rspec-activemodel-mocks (1.3.0)
activemodel (>= 3.0)
activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0)
rspec-core (3.13.3)
rspec-core (3.13.6)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.4)
rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.4)
rspec-mocks (3.13.8)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (8.0.0)
rspec-rails (8.0.4)
actionpack (>= 7.2)
activesupport (>= 7.2)
railties (>= 7.2)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-support (3.13.3)
rspec-core (>= 3.13.0, < 5.0.0)
rspec-expectations (>= 3.13.0, < 5.0.0)
rspec-mocks (>= 3.13.0, < 5.0.0)
rspec-support (>= 3.13.0, < 5.0.0)
rspec-rebound (0.2.1)
rspec-core (~> 3.3)
rspec-support (3.13.7)
rspectre (0.2.0)
parser (>= 3.3.7.1)
prism (~> 1.3)
rspec (~> 3.10)
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)
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)
rspec-core (>= 2.14)
rswag-ui (2.16.0)
actionpack (>= 5.2, < 8.1)
railties (>= 5.2, < 8.1)
rubocop (1.75.5)
rswag-ui (2.17.0)
actionpack (>= 5.2, < 8.2)
railties (>= 5.2, < 8.2)
rubocop (1.86.1)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
parallel (~> 1.10)
parallel (>= 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.44.0, < 2.0)
rubocop-ast (>= 1.49.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.44.1)
rubocop-ast (1.49.1)
parser (>= 3.3.7.2)
prism (~> 1.4)
prism (~> 1.7)
rubocop-capybara (2.22.1)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-factory_bot (2.27.1)
rubocop-factory_bot (2.28.0)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rails (2.32.0)
rubocop-rails (2.34.3)
activesupport (>= 4.2.0)
lint_roller (~> 1.1)
rack (>= 1.1)
@@ -610,10 +657,10 @@ GEM
rubocop-rake (0.7.1)
lint_roller (~> 1.1)
rubocop (>= 1.72.1)
rubocop-rspec (3.6.0)
rubocop-rspec (3.9.0)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rspec_rails (2.31.0)
rubocop (~> 1.81)
rubocop-rspec_rails (2.32.0)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rspec (~> 3.5)
@@ -621,7 +668,7 @@ GEM
ruby-units (4.1.0)
ruby-vips (2.2.1)
ffi (~> 1.12)
rubyzip (2.4.1)
rubyzip (3.2.2)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
@@ -635,29 +682,27 @@ GEM
sprockets (> 3.0)
sprockets-rails
tilt
scout_apm (5.6.4)
scout_apm (6.2.0)
parser
searchkick (5.3.1)
activemodel (>= 6.1)
hashie
securerandom (0.4.1)
selenium-webdriver (4.32.0)
selenium-webdriver (4.43.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
rubyzip (>= 1.2.2, < 4.0)
websocket (~> 1.0)
sidekiq (7.3.9)
sidekiq (7.3.10)
base64
connection_pool (>= 2.3.0)
connection_pool (>= 2.3.0, < 3)
logger
rack (>= 2.2.4)
redis-client (>= 0.22.2)
simplecov (0.13.0)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
rack (>= 2.2.4, < 3.3)
redis-client (>= 0.23.0, < 1)
simple_po_parser (1.1.6)
sitemap_generator (6.3.0)
builder (~> 3.0)
sprockets (3.7.5)
base64
concurrent-ruby (~> 1.0)
@@ -667,35 +712,34 @@ GEM
activesupport (>= 5.2)
sprockets (>= 3.0.0)
ssrf_filter (1.1.2)
stringio (3.1.7)
stringio (3.2.0)
sysexits (1.2.0)
temple (0.10.3)
temple (0.10.4)
terminal-table (4.0.0)
unicode-display_width (>= 1.1.1, < 4)
terser (1.2.5)
terser (1.2.7)
execjs (>= 0.3.0, < 3)
thor (1.3.2)
thor (1.5.0)
thread_safe (0.3.6)
tilt (2.6.0)
timecop (0.9.10)
timeout (0.4.3)
trollop (1.16.2)
tilt (2.7.0)
timecop (0.9.11)
timeout (0.5.0)
tsort (0.2.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
unicode-display_width (3.2.0)
unicode-emoji (~> 4.1)
unicode-emoji (4.2.0)
unicorn (6.1.0)
kgio (~> 2.6)
raindrops (~> 0.7)
uniform_notifier (1.17.0)
uri (1.0.3)
uniform_notifier (1.18.0)
uri (1.1.1)
useragent (0.16.11)
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
vcr (6.3.1)
base64
vcr (6.4.0)
virtus (2.0.0)
axiom-types (~> 0.1)
coercible (~> 1.0)
@@ -706,19 +750,21 @@ GEM
nokogiri (>= 1.2.0)
rack (>= 1.0)
rack-test (>= 0.5.3)
webrick (1.9.1)
webrick (1.9.2)
websocket (1.2.11)
websocket-driver (0.7.6)
websocket-driver (0.8.0)
base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
will_paginate (4.0.1)
will_paginate-bootstrap-style (0.3.0)
will_paginate (~> 4.0, >= 4.0.0)
xmlrpc (0.3.3)
xmlrpc (0.3.4)
rexml
webrick
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.7.2)
zeitwerk (2.7.5)
PLATFORMS
ruby
@@ -728,6 +774,7 @@ DEPENDENCIES
active_median
active_record_union
active_utils
aws-sdk-s3 (~> 1, >= 1.114.0)
axe-core-capybara
axe-core-rspec
better_errors
@@ -744,9 +791,10 @@ DEPENDENCIES
capybara-email
capybara-screenshot
chartkick
codeclimate-test-reporter
coffee-rails
comfortable_mexican_sofa!
connection_pool (< 3)
crowdin-cli
csv_shaper
dalli
database_cleaner
@@ -765,11 +813,11 @@ DEPENDENCIES
gibbon (~> 1.2.0)
gravatar-ultimate
haml
haml-i18n-extractor
haml-rails
haml_lint (>= 0.25.1)
hashie (>= 3.5.3)
i18n-tasks
i18n_data (~> 1.1)
icalendar
jquery-rails
jquery-ui-rails!
@@ -787,10 +835,9 @@ DEPENDENCIES
oj
omniauth (~> 1.3)
omniauth-flickr (>= 0.0.15)
omniauth-twitter
paper_trail (~> 17.0)
percy-capybara (~> 5.0.0)
pg
platform-api
pry
puma
query_diet
@@ -805,6 +852,7 @@ DEPENDENCIES
responders
rspec-activemodel-mocks
rspec-rails
rspec-rebound
rspectre
rswag-api
rswag-specs
@@ -822,6 +870,7 @@ DEPENDENCIES
searchkick
selenium-webdriver
sidekiq
sitemap_generator
sprockets (< 4)
terser
timecop
@@ -834,7 +883,7 @@ DEPENDENCIES
xmlrpc
RUBY VERSION
ruby 3.3.7p123
ruby 3.4.8p72
BUNDLED WITH
2.4.22

View File

@@ -1,7 +1,6 @@
# 🌱 Growstuff
![Build status](https://github.com/Growstuff/growstuff/workflows/CI/badge.svg)
[![Code Climate](https://codeclimate.com/github/Growstuff/growstuff/badges/gpa.svg)](https://codeclimate.com/github/Growstuff/growstuff)
Welcome to the Growstuff project.
@@ -18,13 +17,14 @@ encourage participation from people of all backgrounds and skill levels.
## Want to contribute?
Don't ask to ask, the best way to get started is to fork the project, start a codespace and get hacking.
Dive on in and submit your PRs.
Dive on in and submit your PRs!
Vibe Coding is more than okay, just make sure you indicate if you have done so and ensure there are tests.
## Important links
* [Issues](https://github.com/orgs/Growstuff/projects/1) (features we're
working on, known bugs, etc)
* [![Gitter](https://badges.gitter.im/Growstuff/growstuff.svg)](https://gitter.im/Growstuff/growstuff?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
* [Wiki](https://github.com/Growstuff/growstuff/wiki) (general documentation, etc.)
## For coders
@@ -36,6 +36,10 @@ frontend features. We welcome contributions -- see
* To set up your development environment, see [Getting started](https://github.com/Growstuff/growstuff/wiki/New-contributor-guide).
* You may also be interested in our [API](https://github.com/Growstuff/growstuff/wiki/API).
### For Home Automation enthusiasts
https://github.com/Growstuff/homeassistant-growstuff/
## For designers, writers, researchers, data wranglers, and other contributors
There are heaps of ways to get involved and contribute no matter what
@@ -63,5 +67,3 @@ For more information about this project, contact [info@growstuff.org](mailto:inf
Security Issues: If you find an authorization bypass or data breach, please contact our maintainers directly at [maintainers@growstuff.org](mailto:maintainers@growstuff.org).
You can also contact us on [Twitter](http://twitter.com/growstufforg/) or
[Facebook](https://www.facebook.com/pages/Growstuff/1531133417099494) or [Github](https://github.com/Growstuff/growstuff/issues)..

View File

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 266 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,7 +1,13 @@
.crop-icon {
height: 1em;
}
.card-footer {
.btn-group-vertical {
.btn {
text-wrap: initial
}
}
}
.crop-thumbnail {
.text {
bottom: 0;

View File

@@ -1,6 +1,8 @@
// stats shown on homepage. eg. "999 members..."
.stats {
font-weight: bold;
a {
font-weight: bold;
}
}
.crops,
@@ -14,3 +16,27 @@
.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

@@ -33,13 +33,6 @@
}
}
.location-not-set {
background-image: image-url("location-not-set.en.png");
background-position: center;
background-repeat: no-repeat;
height: 250px;
width: 100%;
}
.card {
.badge-location {
background-color: darken($blue, 10%);

View File

@@ -30,3 +30,7 @@
@import "predictions";
@import "homepage";
@import "maps";
@view-transition {
navigation: auto;
}

View File

@@ -10,9 +10,33 @@
width: 100%;
}
.navbar .nav > li {
#navbarSupportedContent {
ul {
flex-direction: column-reverse;
flex-wrap: nowrap;
li.nav-item {
display: block;
a {
display: grid;
grid-template-columns: 2em 1fr 2em;
}
a.dropdown-toggle::after {
width: 100%;
text-align: right;
}
}
}
}
.crop-actions {
flex-direction: column;
width: 100%;
a {
margin: auto;
display: block;
}
}
.navbar .navbar-form {
padding-left: 0;

View File

@@ -10,6 +10,7 @@ body {
.navbar {
flex-wrap: nowrap;
align-items: flex-start
}
.navbar-brand {
.site-name {
@@ -131,6 +132,8 @@ section {
border-radius: 5%;
margin: 0.5em 0.5em 0.5em 0;
width: 200px;
align-items: stretch;
justify-content: space-between;
.img-card {
border-top-left-radius: 5%;
@@ -367,9 +370,6 @@ ul.thumbnail-buttons {
h1 {
font-size: 400%;
}
.stats a {
color: $black;
}
// signup widget on homepage
.signup {

View File

@@ -24,14 +24,29 @@ 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
def new
@activity = Activity.new(
owner: current_member,
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,
@@ -58,7 +73,21 @@ class ActivitiesController < DataController
def create
@activity = Activity.new(activity_params)
@activity.owner = current_member
@activity.save
@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
respond_with @activity
end
@@ -77,7 +106,8 @@ class ActivitiesController < DataController
def activity_params
params.require(:activity).permit(
:name, :description, :category, :finished,
:garden_id, :planting_id, :due_date
:garden_id, :planting_id, :due_date,
:repeat_times, :repeat_weeks
)
end

View File

@@ -0,0 +1,40 @@
# 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: t('crop_companions.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: t('crop_companions.deleted')
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

@@ -0,0 +1,19 @@
# frozen_string_literal: true
class Admin::CropsController < ApplicationController
before_action :authenticate_member!
before_action :authorize_admin!
def index
@versions = PaperTrail::Version.where(item_type: 'Crop').order(created_at: :desc).limit(100)
member_ids = @versions.map(&:whodunnit).compact.map(&:to_i)
@members = Member.where(id: member_ids).index_by(&:id)
@crop_wranglers = Role.crop_wranglers
end
private
def authorize_admin!
authorize! :wrangle, Crop
end
end

View File

@@ -8,9 +8,9 @@ module Admin
responders :flash
def index
@members = Member.all
@members = @members.where("login_name ILIKE ?", "%#{search_term}%") unless search_term.nil?
@members = @members.order(:login_name).paginate(page: params[:page])
@members = Member.order(:login_name)
@members = @members.where("login_name ILIKE ?", "%#{search_term}%") if search_term.present?
@members = @members.paginate(page: params[:page])
end
def edit

View File

@@ -0,0 +1,24 @@
# frozen_string_literal: true
module Admin
class VersionsController < ApplicationController
before_action :authenticate_member!
before_action :authorize_admin!
def revert
@version = PaperTrail::Version.find(params[:id])
@object = @version.reify
if @object.save
redirect_to admin_crops_path, notice: t('messages.revert_success', date: @version.created_at.strftime('%B %d, %Y'))
else
redirect_to admin_crops_path, alert: t('messages.revert_error', date: @version.created_at.strftime('%B %d, %Y'), errors: @object.errors.full_messages.to_sentence)
end
end
private
def authorize_admin!
authorize! :wrangle, Crop
end
end
end

View File

@@ -30,7 +30,7 @@ class AlternateNamesController < ApplicationController
@alternate_name = AlternateName.new(alternate_name_params)
if @alternate_name.save
redirect_to @alternate_name.crop, notice: 'Alternate name was successfully created.'
redirect_to @alternate_name.crop, notice: t('alternate_names.created')
else
render action: "new"
end
@@ -40,7 +40,7 @@ class AlternateNamesController < ApplicationController
# PUT /alternate_names/1.json
def update
if @alternate_name.update(alternate_name_params)
redirect_to @alternate_name.crop, notice: 'Alternate name was successfully updated.'
redirect_to @alternate_name.crop, notice: t('alternate_names.updated')
else
render action: "edit"
end
@@ -51,12 +51,12 @@ class AlternateNamesController < ApplicationController
def destroy
@crop = @alternate_name.crop
@alternate_name.destroy
redirect_to @crop, notice: 'Alternate name was successfully deleted.'
redirect_to @crop, notice: t('alternate_names.deleted')
end
private
def alternate_name_params
params.require(:alternate_name).permit(:crop_id, :name, :creator_id)
params.require(:alternate_name).permit(:crop_id, :name, :creator_id, :language)
end
end

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: true
module Api
module V1
class ActivitiesController < BaseController
end
end
end

View File

@@ -4,6 +4,40 @@ module Api
module V1
class BaseController < JSONAPI::ResourceController
abstract
protect_from_forgery with: :null_session
before_action :authenticate_member_from_token!
before_action :enforce_member_for_write_operations!, only: %i(create update destroy)
rescue_from CanCan::AccessDenied do
head :forbidden
end
def context
{
current_user: current_user,
current_ability: current_ability,
controller: self,
action: params[:action]
}
end
private
attr_reader :current_user
def enforce_member_for_write_operations!
head :unauthorized unless current_user
end
def authenticate_member_from_token!
authenticate_with_http_token do |token, _options|
auth = Authentication.find_by(token: token, provider: 'api')
if auth.present?
@current_user = auth.member
return true
end
end
end
end
end
end

View File

@@ -78,6 +78,7 @@ class ApplicationController < ActionController::Base
:tos_agreement,
# profile stuff
:bio, :location, :latitude, :longitude,
:website_url, :instagram_handle, :facebook_handle, :bluesky_handle, :other_url,
# email settings
:show_email, :newsletter, :send_notification_email, :send_planting_reminder,
# update password

View File

@@ -24,9 +24,9 @@ class AuthenticationsController < ApplicationController
name:
)
flash[:notice] = "Authentication successful."
flash[:notice] = t('messages.auth_success')
else
flash[:notice] = "Authentication failed."
flash[:notice] = t('messages.auth_failed')
end
redirect_to request.env['omniauth.origin'] || edit_member_registration_path
end

View File

@@ -0,0 +1,32 @@
# frozen_string_literal: true
class BlocksController < ApplicationController
load_and_authorize_resource
skip_load_resource only: :create
def create
@block = current_member.blocks.build(blocked: Member.find(params[:blocked]))
if @block.save
flash[:notice] = "Blocked #{@block.blocked.login_name}"
else
flash[:error] = "Already blocking or error while blocking."
end
redirect_back_or_to(root_path)
end
def destroy
@block = current_member.blocks.find(params[:id])
@unblocked = @block.blocked
@block.destroy
flash[:notice] = "Unblocked #{@unblocked.login_name}"
redirect_to @unblocked
end
private
def block_params
params.permit(:id, :blocked)
end
end

View File

@@ -13,43 +13,55 @@ class CommentsController < ApplicationController
end
def new
@commentable = find_commentable
@comment = Comment.new
@post = Post.find_by(id: params[:post_id])
if @post
@comments = @post.comments
if @commentable
@comments = @commentable.comments
respond_with(@comments)
else
redirect_to(request.referer || root_url,
alert: "Can't post a comment on a non-existent post")
alert: "Can't post a comment on a non-existent commentable")
end
end
def edit
@comments = @comment.post.comments
# TODO: Why does this need a collection of comments?
@comments = @comment.commentable.comments
@commentable = @comment.commentable
end
def create
@comment = Comment.new(comment_params)
@commentable = @comment.commentable
@comment.author = current_member
@comment.save
respond_with @comment, location: @comment.post
respond_with @comment, location: @commentable
end
def update
@comment.update(body: comment_params['body'])
respond_with @comment, location: @comment.post
respond_with @comment, location: @comment.commentable
end
def destroy
@post = @comment.post
@commentable = @comment.commentable
@comment.destroy
respond_with(@post)
respond_with(@commentable)
end
private
def find_commentable
return unless params[:comment]
if params[:comment][:commentable_type] == 'Photo'
Photo.find(params[:comment][:commentable_id])
elsif params[:comment][:commentable_type] == 'Post'
Post.find(params[:comment][:commentable_id])
end
end
def comment_params
params.require(:comment).permit(:body, :post_id)
params.require(:comment).permit(:body, :commentable_id, :commentable_type)
end
end

View File

@@ -39,12 +39,6 @@ class CropsController < ApplicationController
respond_with @crops
end
def openfarm
@crop = Crop.find(params[:crop_slug])
@crop.update_openfarm_data!
respond_with @crop, location: @crop
end
def gbif
@crop = Crop.find(params[:crop_slug])
@crop.update_gbif_data!
@@ -79,6 +73,8 @@ class CropsController < ApplicationController
format.html do
@posts = @crop.posts.order(created_at: :desc).paginate(page: params[:page])
@companions = @crop.companions.approved
member_ids = @crop.versions.map(&:whodunnit).compact.map(&:to_i)
@version_members = Member.where(id: member_ids).index_by(&:id)
end
format.svg do
icon_data = @crop.svg_icon.presence || File.read(Rails.root.join("app/assets/images/icons/sprout.svg"))
@@ -137,7 +133,6 @@ class CropsController < ApplicationController
if @crop.approval_status_changed?(from: "pending", to: "approved")
notifier.deliver_now!
@crop.update_openfarm_data!
@crop.update_gbif_data!
end
else
@@ -154,6 +149,34 @@ class CropsController < ApplicationController
respond_with @crop
end
def data_improvement
@active_tab = params[:tab] || 'photos'
@crops = case @active_tab
when 'photos'
Crop.approved.where(photo_associations_count: 0).order(plantings_count: :desc)
when 'descriptions'
Crop.approved.where(description: [nil, '']).order(plantings_count: :desc)
when 'youtube'
Crop.approved.where(en_youtube_url: [nil, '']).order(plantings_count: :desc)
when 'alternate_names'
Crop.approved.where.missing(:alternate_names).order(plantings_count: :desc)
when 'wikidata'
crops_with_wikidata = Crop.joins(:scientific_names).where.not(scientific_names: { wikidata_id: nil }).distinct
Crop.approved.where.not(id: crops_with_wikidata).order(plantings_count: :desc)
when 'row_spacing'
Crop.approved.where(row_spacing: nil).order(plantings_count: :desc)
when 'sun_requirements'
Crop.approved.where(sun_requirements: [nil, '']).order(plantings_count: :desc)
when 'height'
Crop.approved.where(height: nil).order(plantings_count: :desc)
when 'public_food_key'
Crop.approved.where(public_food_key: [nil, '']).order(plantings_count: :desc)
else
Crop.none
end
end
private
def notifier
@@ -166,7 +189,7 @@ class CropsController < ApplicationController
end
def save_crop_names
AlternateName.create!(names_params(:alt_name).map { |n| { name: n, creator_id: current_member.id, crop_id: @crop.id } })
AlternateName.create!(names_params(:alt_name).map { |n| { name: n, creator_id: current_member.id, crop_id: @crop.id, language: "EN" } })
ScientificName.create!(names_params(:sci_name).map { |n| { name: n, creator_id: current_member.id, crop_id: @crop.id } })
end
@@ -181,26 +204,28 @@ class CropsController < ApplicationController
def recreate_names(param_name, name_type)
return if params[param_name].blank?
destroy_names(name_type)
params[param_name].each_value do |value|
create_name!(name_type, value) unless value.empty?
end
end
def destroy_names(name_type)
@crop.send("#{name_type}_names").each(&:destroy)
end
params[param_name].each_value do |value|
next if value.empty?
def create_name!(name_type, value)
@crop.send("#{name_type}_names").create!(name: value, creator_id: current_member.id)
if name_type == 'alternate'
@crop.send("#{name_type}_names").create!(name: value, creator_id: current_member.id, language: "EN")
else
@crop.send("#{name_type}_names").create!(name: value, creator_id: current_member.id)
end
end
end
def crop_params
params.require(:crop).permit(
:name, :en_wikipedia_url,
:name, :en_wikipedia_url, :en_youtube_url,
:parent_id, :perennial,
:request_notes, :reason_for_rejection,
:rejection_notes,
:description,
:public_food_key,
:row_spacing, :spread, :height,
:sowing_method, :sun_requirements, :growing_degree_days,
scientific_names_attributes: %i(scientific_name _destroy id)
)
end
@@ -216,12 +241,12 @@ class CropsController < ApplicationController
def crop_json_fields
{
include: {
plantings: {
plantings: {
include: {
owner: { only: %i(id login_name location latitude longitude) }
}
},
scientific_names: { only: [:name] }, alternate_names: { only: [:name] }
scientific_names: { only: [:name] }, alternate_names: { only: %i(name language) }
}
}
end

View File

@@ -13,11 +13,11 @@ class FollowsController < ApplicationController
@follow = current_member.follows.build(followed: Member.find(params[:followed]))
if @follow.save
flash[:notice] = "Followed #{@follow.followed.login_name}"
flash[:notice] = t('messages.followed', name: @follow.followed.login_name)
else
flash[:error] = "Already following or error while following."
flash[:error] = t('messages.follow_error')
end
redirect_back fallback_location: root_path
redirect_back_or_to(root_path)
end
def destroy
@@ -25,7 +25,7 @@ class FollowsController < ApplicationController
@unfollowed = @follow.followed
@follow.destroy
flash[:notice] = "Unfollowed #{@unfollowed.login_name}"
flash[:notice] = t('messages.unfollowed', name: @unfollowed.login_name)
redirect_to @unfollowed
end

View File

@@ -32,14 +32,14 @@ class ForumsController < ApplicationController
# POST /forums.json
def create
@forum = Forum.new(forum_params)
flash[:notice] = 'Forum was successfully created.' if @forum.save
flash[:notice] = t('forums.created') if @forum.save
respond_with(@forum)
end
# PUT /forums/1
# PUT /forums/1.json
def update
flash[:notice] = 'Forum was successfully updated.' if @forum.update(forum_params)
flash[:notice] = t('forums.updated') if @forum.update(forum_params)
respond_with(@forum)
end
@@ -47,7 +47,7 @@ class ForumsController < ApplicationController
# DELETE /forums/1.json
def destroy
@forum.destroy
flash[:notice] = 'Forum was successfully deleted'
flash[:notice] = t('forums.deleted')
redirect_to forums_url
end

View File

@@ -4,7 +4,7 @@ class GardensController < DataController
def index
@owner = Member.find_by(slug: params[:member_slug])
@show_all = params[:all] == '1'
@show_jump_to = params[:member_slug].present? ? true : false
@show_jump_to = params[:member_slug].present? || false
@gardens = @gardens.includes(:owner)
@gardens = @gardens.active unless @show_all
@@ -18,8 +18,9 @@ class GardensController < DataController
end
def show
@current_plantings = @garden.plantings.current.includes(:crop, :owner).order(planted_at: :desc)
@current_plantings = @garden.plantings.current.where.not(failed: true).includes(:crop, :owner).order(planted_at: :desc)
@current_activities = @garden.activities.current.includes(:owner).order(created_at: :desc)
@finished_activities = @garden.activities.finished.includes(:owner).order(created_at: :desc)
@finished_plantings = @garden.plantings.finished.includes(:crop)
@suggested_companions = Crop.approved.where(
id: CropCompanion.where(crop_a_id: @current_plantings.select(:crop_id)).select(:crop_b_id)
@@ -38,7 +39,10 @@ class GardensController < DataController
def create
@garden.owner_id = current_member.id
flash[:notice] = I18n.t('gardens.created') if @garden.save
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
respond_with(@garden)
end

View File

@@ -10,4 +10,6 @@ class HomeController < ApplicationController
# the relevant class methods directly in the view, so that fragment
# caching will be effective.
end
def community_gardens; end
end

View File

@@ -14,7 +14,7 @@ class LikesController < ApplicationController
@like.likeable.reindex(refresh: true)
success(@like, liked_by_member: true, status_code: :created)
else
failed(@like, message: 'Unable to like')
failed(@like, message: t('messages.unable_to_like'))
end
end
@@ -29,7 +29,7 @@ class LikesController < ApplicationController
@like.likeable.reindex(refresh: true)
success(@like, liked_by_member: false, status_code: :ok)
else
failed(@like, message: 'Unable to unlike')
failed(@like, message: t('messages.unable_to_unlike'))
end
end

View File

@@ -16,7 +16,6 @@ class MembersController < ApplicationController
def show
@member = Member.confirmed.kept.find_by!(slug: params[:slug])
@twitter_auth = @member.auth('twitter')
@flickr_auth = @member.auth('flickr')
@posts = @member.posts

View File

@@ -27,10 +27,21 @@ class MessagesController < ApplicationController
def create
if params[:conversation_id].present?
@conversation = Mailboxer::Conversation.find(params[:conversation_id])
# Check if any of the recipients have blocked the sender
if @conversation.recipients.any? { |recipient| recipient.already_blocking?(current_member) }
flash[:error] = "You cannot reply to this conversation because one of the recipients has blocked you."
redirect_to conversation_path(@conversation)
return
end
current_member.reply_to_conversation(@conversation, params[:body])
redirect_to conversation_path(@conversation)
else
recipient = Member.find(params[:recipient_id])
if recipient.already_blocking?(current_member)
flash[:error] = "You cannot send a message to a member who has blocked you."
redirect_back_or_to(root_path)
return
end
body = params[:body]
subject = params[:subject]
@conversation = current_member.send_message(recipient, body, subject)

View File

@@ -10,7 +10,7 @@ require './lib/actions/oauth_signup_action'
#
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def failure
flash[:alert] = "Authentication failed."
flash[:alert] = t('messages.auth_failed')
redirect_to request.env['omniauth.origin'] || "/"
end
@@ -28,7 +28,7 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
@authentication = action.establish_authentication(auth, member)
if action.member_created?
raise "Invalid provider" unless %w(twitter flickr).index(auth['provider'].to_s)
raise "Invalid provider" unless %w(flickr).index(auth['provider'].to_s)
session["devise.#{auth['provider']}_data"] = request.env["omniauth.auth"]
sign_in member

View File

@@ -21,6 +21,7 @@ class PhotosController < ApplicationController
def show
@crops = Crop.distinct.joins(:photo_associations).where(photo_associations: { photo: @photo })
@comment = Comment.new(commentable: @photo)
respond_with(@photo)
end

View File

@@ -33,7 +33,7 @@ class PlacesController < ApplicationController
def search
if params[:new_place].empty?
redirect_to places_path, alert: 'Please enter a valid location'
redirect_to places_path, alert: t('messages.invalid_location')
else
redirect_to place_path(params[:new_place])
end

View File

@@ -37,6 +37,7 @@ class PlantingsController < DataController
@photos = @planting.photos.includes(:owner).order(date_taken: :desc)
@harvests = Harvest.search(where: { planting_id: @planting.id })
@current_activities = @planting.activities.current.includes(:owner).order(created_at: :desc)
@finished_activities = @planting.activities.finished.includes(:owner).order(created_at: :desc)
@matching_seeds = matching_seeds
@crop = @planting.crop
@@ -45,6 +46,12 @@ 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
@@ -91,6 +98,32 @@ class PlantingsController < DataController
respond_with @planting, location: @planting.garden
end
def transplant
# The `load_and_authorize_resource` in DataController will handle finding the
# planting and authorizing the action.
# We still need to authorize the new garden
new_garden = Garden.find(params[:garden_id])
authorize! :update, new_garden
# Mark original planting as finished
@planting.update(finished: true, finished_at: Time.zone.now)
# Create a new planting
new_planting = @planting.dup
new_planting.garden = new_garden
new_planting.slug = nil # let friendly_id generate a new slug
new_planting.finished = false
new_planting.finished_at = nil
if new_planting.save
redirect_to edit_planting_path(new_planting), notice: t('messages.transplant_success')
else
# if the save fails, we should probably roll back the finishing of the original planting
@planting.update(finished: false, finished_at: nil)
redirect_to @planting, alert: t('messages.transplant_error', errors: new_planting.errors.full_messages.to_sentence)
end
end
private
def update_crop_medians
@@ -107,7 +140,7 @@ class PlantingsController < DataController
:crop_id, :description, :garden_id, :planted_at,
:parent_seed_id,
:quantity, :sunniness, :planted_from, :finished,
:finished_at
:finished_at, :failed, :overall_rating
)
end

View File

@@ -29,17 +29,17 @@ class PostsController < ApplicationController
def create
params[:post][:author_id] = current_member.id
@post = Post.new(post_params)
flash[:notice] = 'Post was successfully created.' if @post.save
flash[:notice] = t('posts.created') if @post.save
respond_with(@post)
end
def update
flash[:notice] = 'Post was successfully updated.' if @post.update(post_params)
flash[:notice] = t('posts.updated') if @post.update(post_params)
respond_with(@post)
end
def destroy
flash[:notice] = 'Post was deleted.' if @post.destroy
flash[:notice] = t('posts.deleted') if @post.destroy
respond_with(@post)
end

View File

@@ -6,8 +6,7 @@ class RegistrationsController < Devise::RegistrationsController
prepend_before_action :check_captcha, only: [:create] # Change this to be any actions you want to protect with recaptcha.
def edit
@twitter_auth = current_member.auth('twitter')
@flickr_auth = current_member.auth('flickr')
@flickr_auth = current_member.auth('flickr')
render "edit"
end
@@ -39,6 +38,12 @@ class RegistrationsController < Devise::RegistrationsController
end
end
def regenerate_api_token
current_member.regenerate_api_token
set_flash_message :notice, :api_token_regenerated
redirect_to edit_member_registration_path + '#apps'
end
def destroy
if @member.valid_password?(params.require(:member)[:current_password])
@member.discard

View File

@@ -54,7 +54,7 @@ class ScientificNamesController < ApplicationController
def destroy
@crop = @scientific_name.crop
@scientific_name.destroy
flash[:notice] = 'Scientific name was successfully deleted.'
flash[:notice] = t('scientific_names.deleted')
respond_with(@crop)
end
@@ -74,7 +74,7 @@ class ScientificNamesController < ApplicationController
end
def scientific_name_params
params.require(:scientific_name).permit(:crop_id, :name, :gbif_key)
params.require(:scientific_name).permit(:crop_id, :name, :gbif_key, :wikidata_id)
end
def gbif_service

View File

@@ -19,6 +19,8 @@ class SeedsController < DataController
where['parent_planting'] = @planting.id
end
where['tradeable_to'] = params[:tradeable_to] if params[:tradeable_to].present?
@show_all = (params[:all] == '1')
where['finished'] = false unless @show_all
@@ -41,6 +43,7 @@ class SeedsController < DataController
def new
@seed = Seed.new
@seed.source = 'my own seed saving'
if params[:planting_slug]
@planting = Planting.find_by(slug: params[:planting_slug])
@@ -54,9 +57,11 @@ class SeedsController < DataController
def create
@seed = Seed.new(seed_params)
@seed.source ||= 'my own seed saving'
@seed.finished ||= false
@seed.owner = current_member
@seed.crop = @seed.parent_planting.crop if @seed.parent_planting
flash[:notice] = "Successfully added #{@seed.crop} seed to your stash." if @seed.save
flash[:notice] = t('seeds.added_to_stash', crop: @seed.crop) if @seed.save
if params[:return] == 'planting'
respond_with(@seed, location: @seed.parent_planting)
else
@@ -65,7 +70,7 @@ class SeedsController < DataController
end
def update
flash[:notice] = 'Seed was successfully updated.' if @seed.update(seed_params)
flash[:notice] = t('seeds.updated') if @seed.update(seed_params)
respond_with(@seed)
end
@@ -81,7 +86,7 @@ class SeedsController < DataController
:crop_id, :description, :quantity, :plant_before,
:parent_planting_id, :saved_at,
:days_until_maturity_min, :days_until_maturity_max,
:organic, :gmo,
:organic, :gmo, :source,
:heirloom, :tradable_to, :slug,
:finished, :finished_at
)

View File

@@ -5,7 +5,7 @@ class SessionsController < Devise::SessionsController
def create
super do |_resource|
flash[:alert] = "There are crops waiting to be wrangled." if Crop.pending_approval.present? && current_member.role?(:crop_wrangler)
flash[:alert] = t('messages.crops_waiting') if Crop.pending_approval.present? && current_member.role?(:crop_wrangler)
end
end
end

View File

@@ -1,5 +1,6 @@
# frozen_string_literal: true
require 'nokogiri'
module ApplicationHelper
def parse_date(str)
str ||= '' # Date.parse barfs on nil
@@ -21,6 +22,32 @@ module ApplicationHelper
classes
end
# Similar to Rails' time_ago_in_words, but gives a more standard
# output like "in 3 days" or "5 months ago".
# Also handles the case where from_time is a Date and to_time is a Date
# (in which case it just says "today" if they're the same date).
#
# NOTE: This is similar to distance_of_time_in_words but different enough
# that I think it's worth having a separate helper for it.
#
# from_time - the starting time (Time or Date)
# to_time - the ending time (Time or Date). Default: now (Time.zone.now)
# include_seconds - whether to include seconds in the calculation
#
# Returns a string like "in 3 days" or "5 months ago"
def standard_time_distance(from_time, to_time = 0, include_seconds = false)
return 'today' if from_time.is_a?(Date) && (from_time == to_time)
return 'now' if from_time == to_time
return "#{distance_of_time_in_words(from_time, to_time, include_seconds:)} ago" if from_time < to_time
"in #{distance_of_time_in_words(from_time, to_time, include_seconds:)}"
end
def count_github_contibutors
File.open(Rails.root.join('CONTRIBUTORS.md')).readlines.grep(/^-/).size
end
# Produces a cache key for uniquely identifying cached fragments.
def cache_key_for(klass, identifier = "all")
count = klass.count
@@ -50,7 +77,6 @@ module ApplicationHelper
uri.query = "&width=#{size}&height=#{size}" if uri.host == 'graph.facebook.com'
# TODO: Assess twitter - https://dev.twitter.com/overview/general/user-profile-images-and-banners
# TODO: Assess flickr - https://www.flickr.com/services/api/misc.buddyicons.html
return uri.to_s
@@ -94,4 +120,22 @@ 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]}" #{options[:required] ? 'required="required"' : ''}
<input id="#{source}" class="auto-suggest #{options[:class]}" #{'required="required"' if options[:required]}
type="text" value="#{default}" data-source-url="#{source_path}",
placeholder="e.g. lettuce">
<noscript class="text-warning">

View File

@@ -2,6 +2,7 @@
module ButtonsHelper
include IconsHelper
def garden_plant_something_button(garden, classes: "btn btn-default")
return unless can? :edit, garden
@@ -52,7 +53,7 @@ module ButtonsHelper
link_to t('buttons.mark_as_inactive'),
garden_path(garden, garden: { active: 0 }),
method: :put, class: classes,
data: { confirm: 'All plantings associated with this garden will be marked as finished. Are you sure?' }
data: { confirm: I18n.t('gardens.confirm_deactivate') }
end
def create_button(model_to_create, path, icon, label)
@@ -84,7 +85,20 @@ module ButtonsHelper
end
def activity_edit_button(activity, classes: "btn btn-raised btn-info")
edit_button(edit_activity_path(activity), classes:)
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
end
def activity_finish_button(activity, classes: 'btn btn-default btn-secondary')
@@ -97,7 +111,7 @@ module ButtonsHelper
end
def planting_finish_button(planting, classes: 'btn btn-default btn-secondary')
return unless can?(:edit, planting) || planting.finished
return unless can?(:edit, planting) || planting.finished || planting.failed
link_to planting_path(slug: planting.slug, planting: { finished: 1 }),
method: :put, class: "#{classes} append-date" do
@@ -105,6 +119,15 @@ module ButtonsHelper
end
end
def planting_failed_button(planting, classes: 'btn btn-default btn-secondary')
return unless can?(:edit, planting) || planting.finished || planting.failed
link_to planting_path(slug: planting.slug, planting: { failed: 1 }),
method: :put, class: "#{classes}" do
finished_icon + ' ' + t('buttons.mark_as_failed')
end
end
def seed_finish_button(seed, classes: 'btn btn-default')
return unless can?(:create, Planting) && seed.active
@@ -122,7 +145,7 @@ module ButtonsHelper
end
def planting_save_seeds_button(planting, classes: 'btn btn-default')
return unless can?(:edit, planting)
return unless can?(:edit, planting) && !planting.failed?
link_to new_planting_seed_path(planting_slug: planting.slug), class: classes do
seed_icon + ' ' + t('buttons.save_seeds')

View File

@@ -1,6 +1,19 @@
# frozen_string_literal: true
module CropsHelper
def crop_or_parent(crop, attribute)
default = crop.send(attribute)
return default if default.present?
parent = crop
while parent = parent.parent
return parent.send(attribute) if parent&.send(attribute).present?
end
# For scopes, arrays, etc return the empty value
default
end
def display_seed_availability(member, crop)
seeds = member.seeds.where(crop:)
total_quantity = seeds.where.not(quantity: nil).sum(:quantity)
@@ -17,4 +30,63 @@ 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
def crop_jsonld_data(crop, full_attributes: true)
same_as_urls = [crop.en_wikipedia_url]
crop.scientific_names.each do |scientific_name|
same_as_urls << "https://www.wikidata.org/wiki/#{scientific_name.wikidata_id}" if scientific_name.wikidata_id.present?
end
subject_of_entities = []
if full_attributes
if crop.en_youtube_url.present?
subject_of_entities << {
'@type': "VideoObject",
url: crop.en_youtube_url
}
end
crop.posts.each do |post|
subject_of_entities << {
'@type': "SocialMediaPosting",
url: post_url(post),
author: {
'@type': 'Person',
name: post.author.login_name
},
datePublished: post.created_at
}
end
images = []
crop.photos.each do |photo|
images << photo.fullsize_url
end
end
# TODO: Review plantings, seeds, harvests as a subtype of social media post or event that ended? Or creative work?
# has_many :plantings, dependent: :destroy
# has_many :seeds, dependent: :destroy
# has_many :harvests, dependent: :destroy
{
'@context': "https://schema.org",
'@type': "BioChemEntity",
name: crop.name,
taxonomicRange: crop.scientific_names.map(&:name),
description: crop.description,
sameAs: same_as_urls,
alternateName: crop.alternate_names.map(&:name),
subjectOf: subject_of_entities,
image: images
}.compact
end
end

View File

@@ -7,6 +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"
end
def resolve_model(event)

View File

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

View File

@@ -43,6 +43,14 @@ module PlantingsHelper
(planting.first_harvest_predicted_at - Time.zone.today).to_i
end
# Returns a list of gardens the planting can be transplanted to
# based on the planting's owner.
def transplantable_gardens_by_owner(planting)
garden_ids = planting.owner.gardens.select(:id).to_a + GardenCollaborator.where(member_id: planting.owner.id).select(:garden_id).to_a
Garden.active.where.not(id: planting.garden_id).where(id: garden_ids)
end
def days_from_now_to_last_harvest(planting)
return unless planting.planted_at.present? && planting.last_harvest_predicted_at.present?

View File

@@ -76,6 +76,7 @@ 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
@@ -111,6 +112,10 @@ class Ability
can :update, Planting do |planting|
planting.garden.garden_collaborators.where(member_id: member.id).any?
end
can :transplant, Planting, garden: { owner_id: member.id }
can :transplant, Planting do |planting|
planting.garden.garden_collaborators.where(member_id: member.id).any?
end
can :destroy, Planting do |planting|
planting.garden.garden_collaborators.where(member_id: member.id).any?
end
@@ -159,6 +164,12 @@ class Ability
can :destroy, Follow
cannot :destroy, Follow, followed_id: member.id # can't unfollow yourself
# blocking/unblocking permissions
can :create, Block
cannot :create, Block, blocked_id: member.id # can't block yourself
can :destroy, Block, blocker_id: member.id # can only unblock your own blocks
cannot :create, GardenType
cannot :update, GardenType
cannot :destroy, GardenType

View File

@@ -30,4 +30,20 @@ class Activity < ApplicationRecord
def to_s
name
end
def garden_name
garden&.name
end
def garden_slug
garden&.slug
end
def planting_name
planting&.crop&.name
end
def planting_slug
planting&.crop&.slug
end
end

View File

@@ -5,6 +5,7 @@ class AlternateName < ApplicationRecord
belongs_to :creator, class_name: 'Member', inverse_of: :created_alternate_names
validates :name, presence: true
validates :crop, presence: true
validates :language, presence: true
after_commit :reindex

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: true
class AustralianFoodClassificationData < ApplicationRecord
belongs_to :crop,
foreign_key: :public_food_key,
primary_key: :public_food_key,
inverse_of: :australian_food_classification_data
end

18
app/models/block.rb Normal file
View File

@@ -0,0 +1,18 @@
# frozen_string_literal: true
class Block < ApplicationRecord
belongs_to :blocker, class_name: "Member"
belongs_to :blocked, class_name: "Member"
validates :blocker_id, uniqueness: { scope: :blocked_id }
after_create :destroy_follow_relationship
private
def destroy_follow_relationship
# Destroy the follow relationship in both directions
Follow.where(follower: blocker, followed: blocked).destroy_all
Follow.where(follower: blocked, followed: blocker).destroy_all
end
end

View File

@@ -2,26 +2,38 @@
class Comment < ApplicationRecord
belongs_to :author, class_name: 'Member', inverse_of: :comments
belongs_to :post, counter_cache: true
belongs_to :commentable, polymorphic: true, counter_cache: true
# validates :body, presence: true
validate :author_is_not_blocked
scope :post_order, -> { order(created_at: :asc) } # for display on post page
after_create do
recipient = post.author.id
recipient = commentable.author.id
sender = author.id
# don't send notifications to yourself
if recipient != sender
Notification.create(
recipient_id: recipient,
sender_id: sender,
subject: "#{author} commented on #{post.subject}",
subject: "#{author} commented on #{commentable.subject}",
body:,
post_id: post.id
notifiable: commentable
)
end
end
def to_s
"#{author.login_name} commented on #{post.subject}"
"#{author.login_name} commented on #{commentable.subject}"
end
private
def author_is_not_blocked
return unless author
return unless commentable.author.already_blocking?(author)
errors.add(:base, "You cannot comment on a post of a member who has blocked you.")
end
end

View File

@@ -8,7 +8,12 @@ module Finishable
scope :current, -> { where.not(finished: true) }
def active
!finished
# Plantings can fail. At the moment, activities and seeds cannot.
if respond_to?(:failed)
!finished && !failed
else
!finished
end
end
end
end

View File

@@ -4,22 +4,10 @@ module OpenFarmData
extend ActiveSupport::Concern
included do
def update_openfarm_data!
OpenfarmService.new.update_crop(self)
end
def of_photo
fetch_attr('main_image_path')
end
def height
fetch_attr('height')
end
def spread
fetch_attr('spread')
end
def svg_icon
icon = fetch_attr('svg_icon')
return icon if icon.present?
@@ -31,42 +19,18 @@ module OpenFarmData
fetch_attr('tags_array')
end
def description
fetch_attr('description')
end
def row_spacing
fetch_attr('row_spacing')
end
def common_names
fetch_attr('common_names')
end
def guides_count
fetch_attr('guides_count')
end
def binomial_name
fetch_attr('binomial_name')
end
def sowing_method
fetch_attr('sowing_method')
end
def main_image_path
fetch_attr('main_image_path')
end
def sun_requirements
fetch_attr('sun_requirements')
end
def growing_degree_days
fetch_attr('growing_degree_days')
end
def processing_pictures
fetch_attr('processing_pictures')
end
@@ -75,6 +39,6 @@ module OpenFarmData
def fetch_attr(key)
return if openfarm_data.blank?
openfarm_data.fetch('attributes', {}).fetch(key, nil)
openfarm_data.dig('attributes', key)
end
end

View File

@@ -38,7 +38,7 @@ module PredictHarvest
# status
def harvest_time?
return false if crop.perennial || finished
return false if crop.perennial || finished || failed
# We have harvests but haven't finished
harvests.size.positive? ||

View File

@@ -8,12 +8,12 @@ module PredictPlanting
before_save :calculate_lifespan
def calculate_lifespan
self.lifespan = (planted_at.present? && finished_at.present? ? finished_at - planted_at : nil)
self.lifespan = (planted_at.present? && finished_at.present? && !failed? ? finished_at - planted_at : nil)
end
# dates
def finish_predicted_at
if planted_at.blank?
if planted_at.blank? || failed?
nil
elsif crop.median_lifespan.present?
planted_at + crop.median_lifespan.days
@@ -34,15 +34,18 @@ module PredictPlanting
end
def actual_lifespan
return unless planted_at.present? && finished_at.present?
return unless planted_at.present? && finished_at.present? && !failed?
(finished_at - planted_at).to_i
end
def age_in_days
return if planted_at.blank?
return if failed?
known_last_day ||= finished_at || Time.zone.today
known_last_day = Time.zone.today if known_last_day > Time.zone.today
(known_last_day - planted_at).to_i
end
@@ -50,9 +53,9 @@ module PredictPlanting
Rails.cache.fetch("#{cache_key_with_version}/percentage_grown", expires_in: 8.hours) do
if finished?
100
elsif !planted?
elsif !planted? || failed?
0
elsif crop.perennial || finish_predicted_at.nil?
elsif crop.perennial || (finish_predicted_at.nil? && finished_at.nil?) # This covers future dated finished_at that hasn't occurrred yet.
nil
else
calculate_percentage_grown
@@ -71,7 +74,7 @@ module PredictPlanting
end
def late?
crop.annual? && !finished &&
crop.annual? && !finished && !failed &&
planted_at.present? &&
finish_predicted_at.present? &&
finish_predicted_at <= Time.zone.today
@@ -91,9 +94,9 @@ module PredictPlanting
private
def calculate_percentage_grown
return 0 if age_in_days < 0
return 0 if age_in_days.to_i < 0
percent = (age_in_days / expected_lifespan.to_f) * 100
percent = (age_in_days.to_f / expected_lifespan.to_f) * 100
(percent > 100 ? 100 : percent)
end
end

View File

@@ -9,7 +9,9 @@ module SearchActivities
mappings: {
properties: {
active: { type: :boolean },
created_at: { type: :integer }
created_at: { type: :integer },
updated_at: { type: :integer },
due_date: { type: :date }
}
}
@@ -23,8 +25,10 @@ module SearchActivities
category:,
garden_id:,
garden_name: garden&.name,
garden_slug: garden&.garden_slug,
planting_id:,
planting_name: planting&.crop&.name,
planting_slug: planting&.slug,
description:,
# owner

View File

@@ -53,7 +53,9 @@ module SearchHarvests
owners = []
1..limit.times do
where = {
photos_count: { gt: 0 },
# Disabled for now so that more relevant harvests are
# surfaced; even if we're falling back to crop photos.
# photos_count: { gt: 0 },
owner_id: { not: owners }
}
one_record = search('*',

View File

@@ -66,7 +66,9 @@ module SearchPlantings
owners = []
1..limit.times do
where = {
photos_count: { gt: 0 },
# Disabled for now so that more relevant plantings are
# surfaced; even if we're falling back to crop photos.
# photos_count: { gt: 0 },
owner_id: { not: owners }
}
one_record = search('*',

View File

@@ -59,7 +59,8 @@ module SearchSeeds
search('*', limit:,
where: {
finished: false,
tradable: true
tradable: true,
_or: [{ plant_before: nil }, { plant_before: { lt: Date.today } }]
},
boost_by: [:created_at],
load: false)

View File

@@ -1,6 +1,7 @@
# frozen_string_literal: true
class Crop < ApplicationRecord
has_paper_trail
extend FriendlyId
include PhotoCapable
include OpenFarmData
@@ -27,6 +28,10 @@ class Crop < ApplicationRecord
has_many :companions, through: :crop_companions, source: :crop_b, class_name: 'Crop'
has_many :crop_posts, dependent: :delete_all
has_many :posts, through: :crop_posts, dependent: :delete_all
has_one :australian_food_classification_data,
foreign_key: :public_food_key,
primary_key: :public_food_key,
inverse_of: :crop
accepts_nested_attributes_for :scientific_names, allow_destroy: true, reject_if: :all_blank
@@ -52,9 +57,15 @@ class Crop < ApplicationRecord
validates :en_wikipedia_url,
format: {
with: %r{\Ahttps?://en\.wikipedia\.org/wiki/[[:alnum:]%_.()-]+\z},
message: 'is not a valid English Wikipedia URL'
message: :not_a_valid_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: :not_a_valid_youtube_url
},
allow_blank: true
validates :name, uniqueness: { scope: :approval_status }, if: :pending?
def to_s
@@ -90,7 +101,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
@@ -153,8 +164,20 @@ class Crop < ApplicationRecord
where(["lower(crops.name) = :value", { value: name.downcase }])
end
def all_companions
return companions unless parent
(companions + parent.all_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)
@@ -167,12 +190,12 @@ class Crop < ApplicationRecord
return if rejected?
return unless reason_for_rejection.present? || rejection_notes.present?
errors.add(:approval_status, "must be rejected if a reason for rejection is present")
errors.add(:approval_status, :rejection_reason_required)
end
def must_have_meaningful_reason_for_rejection
return unless reason_for_rejection == "other" && rejection_notes.blank?
errors.add(:rejection_notes, "must be added if the reason for rejection is \"other\"")
errors.add(:rejection_notes, :rejection_notes_required)
end
end

View File

@@ -59,7 +59,7 @@ class CsvImporter
alternate_names.split(/,\s*/).each do |name|
altname = AlternateName.find_by(name:, crop: @crop)
altname ||= AlternateName.create! name:, crop: @crop, creator: cropbot
altname ||= AlternateName.create! name:, crop: @crop, language: "EN", creator: cropbot
@crop.alternate_names << altname
end
end

View File

@@ -4,13 +4,25 @@ class Follow < ApplicationRecord
belongs_to :follower, class_name: "Member", inverse_of: :follows
belongs_to :followed, class_name: "Member", inverse_of: :inverse_follows
validates :follower_id, uniqueness: { scope: :followed_id }
validate :follower_is_not_blocked
after_create do
Notification.create(
recipient_id: followed_id,
sender_id: follower_id,
subject: "#{follower.login_name} is now following you",
body: "#{follower.login_name} just followed you on #{ENV.fetch('GROWSTUFF_SITE_NAME', nil)}. "
body: "#{follower.login_name} just followed you on #{ENV.fetch('GROWSTUFF_SITE_NAME', nil)}. ",
notifiable: self
)
end
private
def follower_is_not_blocked
return unless follower
return unless followed.already_blocking?(follower)
errors.add(:base, "You cannot follow a member who has blocked you.")
end
end

View File

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

View File

@@ -5,6 +5,7 @@ class Garden < ApplicationRecord
include Geocodable
include PhotoCapable
include Ownable
friendly_id :garden_slug, use: %i(slugged finders)
has_many :plantings, dependent: :destroy
@@ -31,7 +32,7 @@ class Garden < ApplicationRecord
validates :name, uniqueness: { scope: :owner_id }
validates :name,
format: { without: /\n/, message: "must contain no newlines" },
format: { without: /\n/, message: :no_newlines },
allow_blank: false, presence: true,
length: { maximum: 255 }
@@ -44,6 +45,7 @@ class Garden < ApplicationRecord
.where.not(gardens: { latitude: nil })
.where.not(gardens: { longitude: nil })
}
AREA_UNITS_VALUES = {
"square metres" => "square metre",
"square feet" => "square foot",
@@ -51,7 +53,7 @@ class Garden < ApplicationRecord
"acres" => "acre"
}.freeze
validates :area_unit, inclusion: { in: AREA_UNITS_VALUES.values,
message: "%<value>s is not a valid area unit" },
message: :not_a_valid_area_unit },
allow_blank: true
def cleanup_area

View File

@@ -11,7 +11,7 @@ class GardenCollaborator < ApplicationRecord
return unless member
return unless garden
errors.add(:member_id, "cannot be the garden owner") if garden.owner == member
errors.add(:member_id, :cannot_be_garden_owner) if garden.owner == member
end
def member_slug

View File

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

View File

@@ -58,18 +58,18 @@ class Harvest < ApplicationRecord
##
## Validations
validates :crop, approved: true
validates :crop, presence: { message: "must be present and exist in our database" }
validates :plant_part, presence: { message: "must be present and exist in our database" }
validates :crop, presence: { message: :crop_not_found }
validates :plant_part, presence: { message: :crop_not_found }
validates :harvested_at, presence: true
validates :quantity, allow_nil: true, numericality: {
only_integer: false, greater_than_or_equal_to: 0
}
validates :unit, allow_blank: true, inclusion: {
in: UNITS_VALUES.values, message: "%<value>s is not a valid unit"
in: UNITS_VALUES.values, message: :not_a_valid_unit
}
validates :weight_quantity, allow_nil: true, numericality: { only_integer: false }
validates :weight_unit, allow_blank: true, inclusion: {
in: WEIGHT_UNITS_VALUES.values, message: "%<value>s is not a valid unit"
in: WEIGHT_UNITS_VALUES.values, message: :not_a_valid_unit
}
validate :crop_must_match_planting
validate :owner_must_match_planting
@@ -147,7 +147,7 @@ class Harvest < ApplicationRecord
def crop_must_match_planting
return if planting.blank? # only check if we are linked to a planting
errors.add(:planting, "must be the same crop") unless crop == planting.crop
errors.add(:planting, :same_crop_required) unless crop == planting.crop
end
def owner_must_match_planting
@@ -155,14 +155,13 @@ class Harvest < ApplicationRecord
return if owner == planting.owner || planting.garden.garden_collaborators.where(member_id: owner).any?
errors.add(:owner,
"of harvest must be the same as planting, or a collaborator on that garden")
errors.add(:owner, :same_owner_required)
end
def harvest_must_be_after_planting
# only check if we are linked to a planting
return unless harvested_at.present? && planting.present? && planting.planted_at.present?
errors.add(:planting, "cannot be harvested before planting") unless harvested_at > planting.planted_at
errors.add(:planting, :harvest_after_planted) unless harvested_at > planting.planted_at
end
end

View File

@@ -5,4 +5,24 @@ class Like < ApplicationRecord
belongs_to :likeable, polymorphic: true, counter_cache: true, touch: true
validates :member, :likeable, presence: true
validates :member, uniqueness: { scope: :likeable }
validate :member_is_not_blocked
def likeable_author
if likeable.respond_to?(:author)
likeable.author
elsif likeable.respond_to?(:owner)
likeable.owner
end
end
private
def member_is_not_blocked
return unless member
author = likeable_author
return unless author&.already_blocking?(member)
errors.add(:base, "You cannot like content of a member who has blocked you.")
end
end

View File

@@ -2,12 +2,14 @@
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)
#
@@ -24,6 +26,20 @@ class Member < ApplicationRecord
has_many :notifications, foreign_key: 'recipient_id', inverse_of: :recipient
has_many :sent_notifications, foreign_key: 'sender_id', inverse_of: :sender, class_name: "Notification"
has_many :authentications, dependent: :destroy
has_one :api_token, -> { where(provider: 'api') }, class_name: 'Authentication', dependent: :destroy
def api_token?
api_token.present?
end
def regenerate_api_token
api_token.destroy if api_token?
create_api_token(
provider: 'api',
uid: id,
token: SecureRandom.hex(16)
)
end
has_many :photos, inverse_of: :owner
has_many :likes, dependent: :destroy
@@ -36,6 +52,15 @@ class Member < ApplicationRecord
has_many :followed, through: :follows
has_many :followers, through: :inverse_follows, source: :follower
#
# Blocking other members
has_many :blocks, class_name: "Block", foreign_key: "blocker_id", dependent: :destroy,
inverse_of: :blocker
has_many :inverse_blocks, class_name: "Block", foreign_key: "blocked_id",
dependent: :destroy, inverse_of: :blocked
has_many :blocked_members, through: :blocks, source: :blocked
has_many :blockers, through: :inverse_blocks, source: :blocker
#
# Global data records this member created
has_many :requested_crops, class_name: 'Crop', foreign_key: 'requester_id', dependent: :nullify,
@@ -80,17 +105,21 @@ class Member < ApplicationRecord
validates :tos_agreement, acceptance: { allow_nil: true, accept: true }
validates :login_name,
length: {
minimum: 2, maximum: 25, message: "should be between 2 and 25 characters long"
minimum: 2, maximum: 25, message: :login_name_length
},
exclusion: {
in: %w(growstuff admin moderator staff nearby), message: "name is reserved"
in: %w(growstuff admin moderator staff nearby), message: :login_name_reserved
},
format: {
with: /\A\w+\z/, message: "may only include letters, numbers, or underscores"
with: /\A\w+\z/, message: :login_name_format
},
uniqueness: {
case_sensitive: false
}
validates :website_url, format: { with: %r{\Ahttps?://}, message: :url_format }, allow_blank: true
validates :other_url, format: { with: %r{\Ahttps?://}, message: :url_format }, allow_blank: true
validates :instagram_handle, :facebook_handle, :bluesky_handle,
format: { without: %r{\Ahttps?://|/}, message: :handle_format }, allow_blank: true
#
# Triggers
@@ -144,12 +173,12 @@ class Member < ApplicationRecord
end
def self.nearest_to(place)
nearby_members = []
if place
latitude, longitude = Geocoder.coordinates(place, params: { limit: 1 })
nearby_members = Member.located.sort_by { |x| x.distance_from([latitude, longitude]) } if latitude && longitude
end
nearby_members
return [] if place.blank?
latitude, longitude = Geocoder.coordinates(place, params: { limit: 1 })
return [] unless latitude && longitude
Member.located.near([latitude, longitude], 1000)
end
def already_following?(member)
@@ -159,4 +188,33 @@ class Member < ApplicationRecord
def get_follow(member)
follows.find_by(followed_id: member.id) if already_following?(member)
end
def already_blocking?(member)
blocks.exists?(blocked_id: member.id)
end
def get_block(member)
blocks.find_by(blocked_id: member.id) if already_blocking?(member)
end
def has_activity?
(gardens.exists? && gardens.count > 1) ||
plantings.exists? ||
harvests.exists? ||
seeds.exists? ||
photos.exists? ||
forums.exists? ||
activities.exists? ||
posts.exists? ||
comments.exists? ||
requested_crops.exists? ||
created_crops.exists? ||
likes.exists? ||
created_alternate_names.exists? ||
created_scientific_names.exists? ||
follows.exists? ||
inverse_follows.exists? ||
blocks.exists? ||
inverse_blocks.exists?
end
end

View File

@@ -3,7 +3,7 @@
class Notification < ApplicationRecord
belongs_to :sender, class_name: 'Member', inverse_of: :sent_notifications
belongs_to :recipient, class_name: 'Member', inverse_of: :notifications
belongs_to :post, optional: true
belongs_to :notifiable, polymorphic: true
validates :subject, length: { maximum: 255 }

Some files were not shown because too many files have changed in this diff Show More