KamoCRM

Administrator bar panels rendered their key paths, not their copy

Fixkamo-internal
Shipped
9 ஆகஸ்ட், 2026 அன்று 9:11 PM UTC
Author
kamo
Commit
d2f55a7

TipPanel took the panel's DOM id in a prop called `id` and then built its message keys from that same `id`, so every panel asked for **************** and next-intl's fallback printed the path. The copy was in messages all along; nothing ever looked it up. The DOM id and the copy id are now separate props with names that cannot be confused for one another. check-i18n-keys could not catch this: for a template key it verifies only that the static prefix is a group, so a garbage dynamic segment passes. The table the bar renders from moves to its own module and a test walks it, resolving every key each entry will ask for with a translator that throws on a miss. It fails on this exact id, so a renamed entry, a new entry without copy, or another wrong variable stops here instead of on somebody's launchpad.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing