From cd4fbc011ca4df8ce6cdad41dee47105d4149580 Mon Sep 17 00:00:00 2001 From: Italo Matos Date: Sun, 14 Dec 2025 14:22:06 -0300 Subject: [PATCH 001/107] Refactor: Replace reverse_merge with with_defaults for improved readability Replace all occurrences of reverse_merge with with_defaults across the codebase. The with_defaults method provides clearer intent and better readability when setting default values for hash parameters. Changes: - app/helpers/columns_helper.rb: Update column_frame_tag method - app/models/user/email_address_changeable.rb: Update generate_email_address_change_token method - app/models/account.rb: Update create_with_owner method - app/controllers/concerns/filter_scoped.rb: Update filter_params method This refactoring maintains the same functionality while improving code clarity. --- app/controllers/concerns/filter_scoped.rb | 2 +- app/helpers/columns_helper.rb | 2 +- app/models/account.rb | 2 +- app/models/user/email_address_changeable.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/concerns/filter_scoped.rb b/app/controllers/concerns/filter_scoped.rb index a9341f604..5507c9b8d 100644 --- a/app/controllers/concerns/filter_scoped.rb +++ b/app/controllers/concerns/filter_scoped.rb @@ -16,7 +16,7 @@ module FilterScoped end def filter_params - params.reverse_merge(**Filter.default_values).permit(*Filter::PERMITTED_PARAMS) + params.with_defaults(**Filter.default_values).permit(*Filter::PERMITTED_PARAMS) end def set_user_filtering diff --git a/app/helpers/columns_helper.rb b/app/helpers/columns_helper.rb index 222d41357..f48b5d557 100644 --- a/app/helpers/columns_helper.rb +++ b/app/helpers/columns_helper.rb @@ -43,7 +43,7 @@ module ColumnsHelper end def column_frame_tag(id, src: nil, data: {}, **options, &block) - data = data.reverse_merge \ + data = data.with_defaults \ drag_and_drop_refresh: true, controller: "frame", action: "turbo:before-frame-render->frame#morphRender turbo:before-morph-element->frame#morphReload" diff --git a/app/models/account.rb b/app/models/account.rb index df0b845b0..f9b2589c0 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -19,7 +19,7 @@ class Account < ApplicationRecord def create_with_owner(account:, owner:) create!(**account).tap do |account| account.users.create!(role: :system, name: "System") - account.users.create!(**owner.reverse_merge(role: "owner", verified_at: Time.current)) + account.users.create!(**owner.with_defaults(role: :owner, verified_at: Time.current)) end end end diff --git a/app/models/user/email_address_changeable.rb b/app/models/user/email_address_changeable.rb index 2c8de7217..79479f788 100644 --- a/app/models/user/email_address_changeable.rb +++ b/app/models/user/email_address_changeable.rb @@ -39,7 +39,7 @@ module User::EmailAddressChangeable private def generate_email_address_change_token(from: identity.email_address, to:, **options) - options = options.reverse_merge( + options = options.with_defaults( for: EMAIL_CHANGE_TOKEN_PURPOSE, old_email_address: from, new_email_address: to, From f01a648441adb1f7c09a6f60ce5a9c2111d92a16 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 15 Dec 2025 15:59:25 +0800 Subject: [PATCH 002/107] =?UTF-8?q?=F0=9F=90=9B=20fix:=20resolve=20stale?= =?UTF-8?q?=20account=20names=20in=20jump=20menu=20and=20page=20titles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add account data to fresh_when etag arrays so Rails serves fresh responses after account changes. - Add @accounts to menus controller etag - Add Current.account to boards controller etag - Add ETag cache invalidation tests for both controllers --- app/controllers/boards_controller.rb | 2 +- app/controllers/my/menus_controller.rb | 3 +- app/views/my/menus/show.html.erb | 2 +- test/controllers/boards_controller_test.rb | 10 +++ test/controllers/my/menus_controller_test.rb | 81 ++++++++++++++++++++ 5 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 test/controllers/my/menus_controller_test.rb diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb index 6c8a17575..721e69b0d 100644 --- a/app/controllers/boards_controller.rb +++ b/app/controllers/boards_controller.rb @@ -83,7 +83,7 @@ class BoardsController < ApplicationController def show_columns cards = @board.cards.awaiting_triage.latest.with_golden_first.preloaded set_page_and_extract_portion_from cards - fresh_when etag: [ @board, @page.records, @user_filtering ] + fresh_when etag: [ @board, @page.records, @user_filtering, Current.account ] end def board_params diff --git a/app/controllers/my/menus_controller.rb b/app/controllers/my/menus_controller.rb index 7a5754593..32b3da004 100644 --- a/app/controllers/my/menus_controller.rb +++ b/app/controllers/my/menus_controller.rb @@ -4,7 +4,8 @@ class My::MenusController < ApplicationController @boards = Current.user.boards.ordered_by_recently_accessed @tags = Current.account.tags.all.alphabetically @users = Current.account.users.active.alphabetically + @accounts = Current.identity.accounts - fresh_when etag: [ @filters, @boards, @tags, @users ] + fresh_when etag: [ @filters, @boards, @tags, @users, @accounts ] end end diff --git a/app/views/my/menus/show.html.erb b/app/views/my/menus/show.html.erb index e6ee838e2..cb3e6310e 100644 --- a/app/views/my/menus/show.html.erb +++ b/app/views/my/menus/show.html.erb @@ -5,7 +5,7 @@ <%= render "my/menus/people", users: @users %> <%= render "my/menus/settings" %> <%= render "my/menus/shortcuts" %> - <%= render "my/menus/accounts", accounts: Current.identity.accounts %> + <%= render "my/menus/accounts", accounts: @accounts %> <% end %>