3.8 KiB
3.8 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 04-chart-polish-and-bug-fixes | 01 | tdd | 1 |
|
true |
|
|
Purpose: FIX-01 — English-locale users currently see German number formatting everywhere
Output: Updated format.ts with locale parameter, comprehensive unit tests
<execution_context> @/home/jean-luc-makiola/.claude/get-shit-done/workflows/execute-plan.md @/home/jean-luc-makiola/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/phases/04-chart-polish-and-bug-fixes/04-RESEARCH.md @frontend/src/lib/format.ts Locale-aware formatCurrency frontend/src/lib/format.ts, frontend/src/lib/format.test.ts - formatCurrency(1234.56, 'EUR', 'en') returns a string containing "1,234.56" (English grouping) - formatCurrency(1234.56, 'EUR', 'de') returns a string containing "1.234,56" (German grouping) - formatCurrency(1234.56, 'USD', 'en') returns a string containing "$" and "1,234.56" - formatCurrency(1234.56, 'EUR') with NO locale arg uses 'en' default — does NOT produce German formatting - formatCurrency(0, 'EUR', 'en') returns a string containing "0.00" - formatCurrency(-500, 'EUR', 'en') returns a string containing "-" and "500.00" - formatCurrency(1234.56, 'EUR', '') falls back gracefully (does not throw RangeError) Update `frontend/src/lib/format.ts`:```ts
export function formatCurrency(
amount: number,
currency: string = 'EUR',
locale: string = 'en'
): string {
return new Intl.NumberFormat(locale || 'en', {
style: 'currency',
currency,
}).format(amount)
}
```
Key points:
- Third parameter `locale` defaults to `'en'` (replacing hardcoded `'de-DE'`)
- Defensive `locale || 'en'` guards against empty string (which throws RangeError)
- All existing call sites pass only 2 args — they will now get English formatting instead of German
- This is intentional and correct per FIX-01
cd frontend && bun vitest run src/lib/format.test.ts
<success_criteria>
- format.test.ts has at least 6 test cases covering locale variations, defaults, and edge cases
- All tests pass green
- formatCurrency signature has 3 parameters: amount, currency, locale
- No hardcoded 'de-DE' remains in format.ts </success_criteria>