rules/i18n.md
src/i18n/locales/en/chat.json (see src/i18n/types.ts). Adding a nested namespace object whose name collides with an existing flat key (e.g. adding a "searchChats": {...} object when a flat "searchChats" string already exists) silently changes t("searchChats") to return an object, breaking unrelated components with error TS2322: Type 'unknown' is not assignable to type 'string'. Grep the en locale for the name before adding a namespace.en, es, ko, pt-BR, zh-CN each have the same JSON files under src/i18n/locales/<locale>/.DyadGit.tsx pattern (useTranslation("chat") + t("...") keys); older cards like DyadGrep.tsx predate i18n and are not the reference.