Administrator bar panels rendered their key paths, not their copy

Fixkamo-internal
Shipped
August 9, 2026 at 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?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing