diff --git a/app/views/transactions/categorizes/_entry_row.html.erb b/app/views/transactions/categorizes/_entry_row.html.erb
index daba95b7f..16180bdc3 100644
--- a/app/views/transactions/categorizes/_entry_row.html.erb
+++ b/app/views/transactions/categorizes/_entry_row.html.erb
@@ -6,7 +6,7 @@
aria-label="<%= t("transactions.categorizes.entry_row.include_checkbox", name: entry.name) %>"
data-action="change->categorize#uncheckRule">
<%= entry.name %>
- <%= l(entry.date, format: :short) %>
+ <%= format_date(entry.date) %>
">
<%= format_money(entry.amount_money.abs) %>
diff --git a/test/controllers/transactions/categorizes_controller_test.rb b/test/controllers/transactions/categorizes_controller_test.rb
index a3628543e..1e74d8bbb 100644
--- a/test/controllers/transactions/categorizes_controller_test.rb
+++ b/test/controllers/transactions/categorizes_controller_test.rb
@@ -26,6 +26,19 @@ class Transactions::CategorizesControllerTest < ActionDispatch::IntegrationTest
assert_response :success
end
+ test "show renders full dates so multi-year lists are unambiguous" do
+ create_transaction(account: @account, name: "Starbucks", date: Date.new(2024, 7, 8))
+
+ get transactions_categorize_url
+
+ assert_response :success
+ # format_date uses the family's date_format preference, every variant of
+ # which includes the year; the previous :short format ("%b %d") did not,
+ # making rows ambiguous when the uncategorized list spans years.
+ expected = Date.new(2024, 7, 8).strftime(@family.date_format)
+ assert_match expected, response.body
+ end
+
test "show renders the first group at position 0" do
2.times { create_transaction(account: @account, name: "Netflix") }
3.times { create_transaction(account: @account, name: "Starbucks") }