Guillem Arias
79c81377ac
i18n + a11y(goals): extract picker strings + drop redundant status-pill aria-label
...
- Color picker had four hardcoded English strings ("Color", "Icon",
"Poor contrast, choose darker color or", "auto-adjust."). Move them
under `goals.color_picker.*` and call them through `t()`. CLAUDE.md
requires every user-facing string go through i18n.
- Status pill duplicated its visible label in `aria-label`, which makes
screen readers ignore the visible text. Drop the override so the
visible label is the accessible name.
2026-05-18 21:02:05 +02:00
Guillem Arias
9b61e4a41b
refactor: rename Savings Goals feature to Goals
...
User-facing rename + structural rename. Feature is now called just
"Goals" everywhere — page title, sidebar nav, modal headings, flash
messages, AI assistant tool. Code identifiers follow:
- Models: SavingsGoal → Goal, SavingsContribution → GoalContribution,
SavingsGoalAccount → GoalAccount.
- Tables: savings_goals → goals, savings_contributions → goal_contributions,
savings_goal_accounts → goal_accounts. FK columns savings_goal_id →
goal_id. New migration db/migrate/20260511100003_rename_savings_to_goals.rb
uses rename_table + rename_column; PG handles index renaming and FK
redirection automatically.
- Controllers: SavingsGoalsController → GoalsController,
SavingsContributionsController → GoalContributionsController.
- Routes: /savings_goals → /goals, nested /goals/:id/contributions
(resource name shifts; old route name aliases dropped).
- ViewComponent namespace: Savings::* → Goals::*. Component class
names drop their redundant "Goal" prefix where the namespace already
carries it: Savings::GoalCardComponent → Goals::CardComponent,
Savings::GoalAvatarComponent → Goals::AvatarComponent. Others keep
their names (Goals::ProgressRingComponent, Goals::StatusPillComponent,
Goals::AccountStackComponent, Goals::FundingAccountsBreakdownComponent).
- Stimulus controllers: savings_goal_* → goal_*, savings_goals_filter
→ goals_filter. Stimulus identifiers in data-controller / data-*
attributes follow.
- Locale keys: savings_goals: → goals: (top level), savings_contributions:
→ goal_contributions: (top level). All t() callers updated.
- AI assistant tool: Assistant::Function::CreateSavingsGoal →
Assistant::Function::CreateGoal, tool name "create_savings_goal" →
"create_goal", description / response text updated.
- Sidebar nav label "Savings" → "Goals". Goals/show + index page title
"Savings" → "Goals". Empty goals_section heading/subtitle dropped
(duplicated the page title post-rename).
Original migrations create_savings_goals / create_savings_goal_accounts /
create_savings_contributions remain untouched so historical replay
still works; the rename migration runs on top.
2026-05-11 20:08:32 +02:00