Users were confused by the "X foreign = 1 local" convention, which is the
inverse of how exchange rates are normally quoted (e.g. "1 USD = 35 THB").
Flip to the market-standard "1 foreign = X local" direction, updating the
rate label, the price calculation (per * rate instead of per / rate), and
the PDF note.
Note: existing localStorage data using the old convention will produce
incorrect prices until users re-enter their exchange rates.
https://claude.ai/code/session_0151QtsUhzXmgzEhSvXG2SDt
docs/user-guide.md — end-user guide covering the full invoice workflow
docs/admin-guide.md — config.yml reference for setting up the app
docs/dev-guide.md — codebase guide: architecture, state, functions,
localStorage, i18n, FX convention, PDF generation
CLAUDE.md — project briefing for Claude Code sessions