@agent-native/core 0.75.5 → 0.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +7 -0
- package/corpus/core/docs/AGENTS.md +1 -0
- package/corpus/core/docs/content/client.md +15 -0
- package/corpus/core/docs/content/internationalization.md +145 -0
- package/corpus/core/docs/content/locales/ar-SA/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/de-DE/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/es-ES/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/fr-FR/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/hi-IN/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/ja-JP/internationalization.md +114 -0
- package/corpus/core/docs/content/locales/ko-KR/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/pt-BR/internationalization.md +102 -0
- package/corpus/core/docs/content/locales/zh-CN/internationalization.md +102 -0
- package/corpus/core/docs/content/skills-guide.md +19 -18
- package/corpus/core/package.json +7 -1
- package/corpus/core/src/client/CommandMenu.tsx +16 -0
- package/corpus/core/src/client/app-providers.tsx +26 -1
- package/corpus/core/src/client/i18n.tsx +605 -0
- package/corpus/core/src/client/index.ts +28 -0
- package/corpus/core/src/index.browser.ts +25 -0
- package/corpus/core/src/localization/actions/get-localization-preference.ts +23 -0
- package/corpus/core/src/localization/actions/set-localization-preference.ts +30 -0
- package/corpus/core/src/localization/index.ts +2 -0
- package/corpus/core/src/localization/server.ts +131 -0
- package/corpus/core/src/localization/shared.ts +163 -0
- package/corpus/core/src/server/action-discovery.ts +8 -0
- package/corpus/core/src/server/index.ts +8 -0
- package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/core/src/templates/default/.agents/skills/internationalization/SKILL.md +77 -0
- package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/core/src/templates/default/AGENTS.md +16 -15
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +29 -0
- package/corpus/core/src/templates/default/app/i18n/index.ts +13 -0
- package/corpus/core/src/templates/default/app/root.tsx +20 -1
- package/corpus/core/src/templates/default/app/routes/_index.tsx +24 -9
- package/corpus/core/src/templates/default/app/routes/settings.tsx +67 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/internationalization/SKILL.md +77 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/core/src/vite/action-types-plugin.ts +10 -0
- package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/analytics/app/components/layout/Header.tsx +18 -15
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +7 -5
- package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +9 -3
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +5 -3
- package/corpus/templates/analytics/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/analytics/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/analytics/app/i18n/en-US.ts +3 -0
- package/corpus/templates/analytics/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/analytics/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/analytics/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/analytics/app/i18n/index.ts +31 -0
- package/corpus/templates/analytics/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/analytics/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/analytics/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/analytics/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/analytics/app/i18n-data.ts +433 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +50 -16
- package/corpus/templates/analytics/app/root.tsx +14 -1
- package/corpus/templates/analytics/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/assets/app/components/layout/Header.tsx +17 -8
- package/corpus/templates/assets/app/components/layout/Layout.tsx +10 -6
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +40 -23
- package/corpus/templates/assets/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/assets/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/assets/app/i18n/en-US.ts +3 -0
- package/corpus/templates/assets/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/assets/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/assets/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/assets/app/i18n/index.ts +31 -0
- package/corpus/templates/assets/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/assets/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/assets/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/assets/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/assets/app/i18n-data.ts +668 -0
- package/corpus/templates/assets/app/root.tsx +40 -15
- package/corpus/templates/assets/app/routes/_index.tsx +9 -10
- package/corpus/templates/assets/app/routes/settings.tsx +37 -6
- package/corpus/templates/assets/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/assets/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +12 -8
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +23 -12
- package/corpus/templates/brain/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/brain/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/brain/app/i18n/en-US.ts +3 -0
- package/corpus/templates/brain/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/brain/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/brain/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/brain/app/i18n/index.ts +31 -0
- package/corpus/templates/brain/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/brain/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/brain/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/brain/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/brain/app/i18n-data.ts +624 -0
- package/corpus/templates/brain/app/root.tsx +27 -12
- package/corpus/templates/brain/app/routes/settings.tsx +45 -8
- package/corpus/templates/brain/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/brain/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +2 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +16 -9
- package/corpus/templates/calendar/app/i18n/ar-SA.ts +57 -0
- package/corpus/templates/calendar/app/i18n/de-DE.ts +58 -0
- package/corpus/templates/calendar/app/i18n/en-US.ts +57 -0
- package/corpus/templates/calendar/app/i18n/es-ES.ts +58 -0
- package/corpus/templates/calendar/app/i18n/fr-FR.ts +58 -0
- package/corpus/templates/calendar/app/i18n/hi-IN.ts +57 -0
- package/corpus/templates/calendar/app/i18n/index.ts +31 -0
- package/corpus/templates/calendar/app/i18n/ja-JP.ts +58 -0
- package/corpus/templates/calendar/app/i18n/ko-KR.ts +57 -0
- package/corpus/templates/calendar/app/i18n/pt-BR.ts +57 -0
- package/corpus/templates/calendar/app/i18n/zh-CN.ts +57 -0
- package/corpus/templates/calendar/app/i18n-data.ts +516 -0
- package/corpus/templates/calendar/app/pages/CalendarView.tsx +2 -0
- package/corpus/templates/calendar/app/pages/Settings.tsx +63 -28
- package/corpus/templates/calendar/app/root.tsx +78 -7
- package/corpus/templates/calendar/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/calendar/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/chat/app/components/layout/Header.tsx +17 -11
- package/corpus/templates/chat/app/components/layout/Layout.tsx +12 -8
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +47 -18
- package/corpus/templates/chat/app/i18n/ar-SA.ts +62 -0
- package/corpus/templates/chat/app/i18n/de-DE.ts +63 -0
- package/corpus/templates/chat/app/i18n/en-US.ts +63 -0
- package/corpus/templates/chat/app/i18n/es-ES.ts +63 -0
- package/corpus/templates/chat/app/i18n/fr-FR.ts +63 -0
- package/corpus/templates/chat/app/i18n/hi-IN.ts +63 -0
- package/corpus/templates/chat/app/i18n/index.ts +31 -0
- package/corpus/templates/chat/app/i18n/ja-JP.ts +63 -0
- package/corpus/templates/chat/app/i18n/ko-KR.ts +63 -0
- package/corpus/templates/chat/app/i18n/pt-BR.ts +63 -0
- package/corpus/templates/chat/app/i18n/zh-CN.ts +61 -0
- package/corpus/templates/chat/app/i18n-data.ts +475 -0
- package/corpus/templates/chat/app/root.tsx +18 -5
- package/corpus/templates/chat/app/routes/_index.tsx +9 -8
- package/corpus/templates/chat/app/routes/settings.tsx +86 -0
- package/corpus/templates/chat/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/chat/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/clips/app/components/layout/Header.tsx +23 -17
- package/corpus/templates/clips/app/components/library/empty-state.tsx +10 -34
- package/corpus/templates/clips/app/components/library/library-layout.tsx +45 -34
- package/corpus/templates/clips/app/i18n/ar-SA.ts +182 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +184 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +179 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +183 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +184 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +180 -0
- package/corpus/templates/clips/app/i18n/index.ts +41 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +180 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +178 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +183 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +173 -0
- package/corpus/templates/clips/app/root.tsx +104 -10
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +154 -95
- package/corpus/templates/clips/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-24-clips-now-includes-a-language-picker-and-simplified-chinese-ui.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/content/app/components/EmptyState.tsx +7 -5
- package/corpus/templates/content/app/components/ThemeToggle.tsx +4 -2
- package/corpus/templates/content/app/components/layout/Header.tsx +2 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +8 -7
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +41 -1
- package/corpus/templates/content/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/content/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/content/app/i18n/en-US.ts +3 -0
- package/corpus/templates/content/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/content/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/content/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/content/app/i18n/index.ts +31 -0
- package/corpus/templates/content/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/content/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/content/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/content/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/content/app/i18n-data.ts +490 -0
- package/corpus/templates/content/app/root.tsx +110 -23
- package/corpus/templates/content/app/routes/_app.settings.tsx +84 -0
- package/corpus/templates/content/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/content/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/design/app/components/layout/Header.tsx +16 -8
- package/corpus/templates/design/app/components/layout/Layout.tsx +8 -6
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +25 -9
- package/corpus/templates/design/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/design/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/design/app/i18n/en-US.ts +3 -0
- package/corpus/templates/design/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/design/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/design/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/design/app/i18n/index.ts +31 -0
- package/corpus/templates/design/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/design/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/design/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/design/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +350 -0
- package/corpus/templates/design/app/root.tsx +40 -15
- package/corpus/templates/design/app/routes/settings.tsx +43 -0
- package/corpus/templates/design/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/design/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/dispatch/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/en-US.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/index.ts +31 -0
- package/corpus/templates/dispatch/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/dispatch/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +267 -0
- package/corpus/templates/dispatch/app/root.tsx +18 -4
- package/corpus/templates/dispatch/app/routes/settings.tsx +86 -0
- package/corpus/templates/dispatch/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/forms/app/components/layout/Header.tsx +16 -9
- package/corpus/templates/forms/app/components/layout/Layout.tsx +6 -4
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +34 -17
- package/corpus/templates/forms/app/i18n/ar-SA.ts +58 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +59 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +59 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +59 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +59 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +59 -0
- package/corpus/templates/forms/app/i18n/index.ts +31 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +59 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +59 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +59 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +56 -0
- package/corpus/templates/forms/app/root.tsx +65 -16
- package/corpus/templates/forms/app/routes/_app.settings.tsx +85 -0
- package/corpus/templates/forms/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/forms/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +29 -17
- package/corpus/templates/macros/app/components/layout/Header.tsx +16 -10
- package/corpus/templates/macros/app/i18n/ar-SA.ts +54 -0
- package/corpus/templates/macros/app/i18n/de-DE.ts +55 -0
- package/corpus/templates/macros/app/i18n/en-US.ts +55 -0
- package/corpus/templates/macros/app/i18n/es-ES.ts +55 -0
- package/corpus/templates/macros/app/i18n/fr-FR.ts +55 -0
- package/corpus/templates/macros/app/i18n/hi-IN.ts +55 -0
- package/corpus/templates/macros/app/i18n/index.ts +31 -0
- package/corpus/templates/macros/app/i18n/ja-JP.ts +55 -0
- package/corpus/templates/macros/app/i18n/ko-KR.ts +55 -0
- package/corpus/templates/macros/app/i18n/pt-BR.ts +55 -0
- package/corpus/templates/macros/app/i18n/zh-CN.ts +53 -0
- package/corpus/templates/macros/app/root.tsx +65 -15
- package/corpus/templates/macros/app/routes/settings.tsx +85 -0
- package/corpus/templates/macros/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/macros/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +9 -4
- package/corpus/templates/mail/app/i18n/ar-SA.ts +33 -0
- package/corpus/templates/mail/app/i18n/de-DE.ts +33 -0
- package/corpus/templates/mail/app/i18n/en-US.ts +32 -0
- package/corpus/templates/mail/app/i18n/es-ES.ts +33 -0
- package/corpus/templates/mail/app/i18n/fr-FR.ts +33 -0
- package/corpus/templates/mail/app/i18n/hi-IN.ts +32 -0
- package/corpus/templates/mail/app/i18n/index.ts +31 -0
- package/corpus/templates/mail/app/i18n/ja-JP.ts +32 -0
- package/corpus/templates/mail/app/i18n/ko-KR.ts +33 -0
- package/corpus/templates/mail/app/i18n/pt-BR.ts +34 -0
- package/corpus/templates/mail/app/i18n/zh-CN.ts +32 -0
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +67 -13
- package/corpus/templates/mail/app/root.tsx +20 -0
- package/corpus/templates/mail/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/mail/changelog/2026-06-24-settings-now-link-directly-to-agent-settings-for-model-api-k.md +6 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/plan/app/components/layout/Header.tsx +19 -12
- package/corpus/templates/plan/app/components/layout/Layout.tsx +11 -7
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +41 -28
- package/corpus/templates/plan/app/i18n/ar-SA.ts +77 -0
- package/corpus/templates/plan/app/i18n/de-DE.ts +78 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +78 -0
- package/corpus/templates/plan/app/i18n/es-ES.ts +78 -0
- package/corpus/templates/plan/app/i18n/fr-FR.ts +78 -0
- package/corpus/templates/plan/app/i18n/hi-IN.ts +78 -0
- package/corpus/templates/plan/app/i18n/index.ts +31 -0
- package/corpus/templates/plan/app/i18n/ja-JP.ts +79 -0
- package/corpus/templates/plan/app/i18n/ko-KR.ts +77 -0
- package/corpus/templates/plan/app/i18n/pt-BR.ts +78 -0
- package/corpus/templates/plan/app/i18n/zh-CN.ts +74 -0
- package/corpus/templates/plan/app/root.tsx +45 -8
- package/corpus/templates/plan/app/routes/settings.tsx +86 -0
- package/corpus/templates/plan/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/slides/app/components/layout/Header.tsx +23 -11
- package/corpus/templates/slides/app/components/layout/Layout.tsx +7 -6
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +23 -11
- package/corpus/templates/slides/app/i18n/ar-SA.ts +54 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +56 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +55 -0
- package/corpus/templates/slides/app/i18n/es-ES.ts +55 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +55 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +55 -0
- package/corpus/templates/slides/app/i18n/index.ts +31 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +55 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +55 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +55 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +53 -0
- package/corpus/templates/slides/app/root.tsx +50 -8
- package/corpus/templates/slides/app/routes/settings.tsx +85 -0
- package/corpus/templates/slides/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/slides/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/videos/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/corpus/templates/videos/app/components/NewCompositionPopover.tsx +14 -9
- package/corpus/templates/videos/app/components/Sidebar.tsx +16 -9
- package/corpus/templates/videos/app/components/StudioHeader.tsx +12 -8
- package/corpus/templates/videos/app/components/layout/Header.tsx +21 -15
- package/corpus/templates/videos/app/components/layout/Layout.tsx +10 -7
- package/corpus/templates/videos/app/components/layout/NavSidebar.tsx +21 -6
- package/corpus/templates/videos/app/i18n/ar-SA.ts +73 -0
- package/corpus/templates/videos/app/i18n/de-DE.ts +75 -0
- package/corpus/templates/videos/app/i18n/en-US.ts +74 -0
- package/corpus/templates/videos/app/i18n/es-ES.ts +75 -0
- package/corpus/templates/videos/app/i18n/fr-FR.ts +75 -0
- package/corpus/templates/videos/app/i18n/hi-IN.ts +74 -0
- package/corpus/templates/videos/app/i18n/index.ts +31 -0
- package/corpus/templates/videos/app/i18n/ja-JP.ts +74 -0
- package/corpus/templates/videos/app/i18n/ko-KR.ts +74 -0
- package/corpus/templates/videos/app/i18n/pt-BR.ts +75 -0
- package/corpus/templates/videos/app/i18n/zh-CN.ts +72 -0
- package/corpus/templates/videos/app/pages/Index.tsx +11 -9
- package/corpus/templates/videos/app/root.tsx +45 -7
- package/corpus/templates/videos/app/routes/settings.tsx +85 -0
- package/corpus/templates/videos/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/videos/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/dist/client/CommandMenu.d.ts +3 -0
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +9 -0
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/app-providers.d.ts +8 -1
- package/dist/client/app-providers.d.ts.map +1 -1
- package/dist/client/app-providers.js +7 -5
- package/dist/client/app-providers.js.map +1 -1
- package/dist/client/i18n.d.ts +54 -0
- package/dist/client/i18n.d.ts.map +1 -0
- package/dist/client/i18n.js +354 -0
- package/dist/client/i18n.js.map +1 -0
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/localization/actions/get-localization-preference.d.ts +4 -0
- package/dist/localization/actions/get-localization-preference.d.ts.map +1 -0
- package/dist/localization/actions/get-localization-preference.js +16 -0
- package/dist/localization/actions/get-localization-preference.js.map +1 -0
- package/dist/localization/actions/set-localization-preference.d.ts +6 -0
- package/dist/localization/actions/set-localization-preference.d.ts.map +1 -0
- package/dist/localization/actions/set-localization-preference.js +24 -0
- package/dist/localization/actions/set-localization-preference.js.map +1 -0
- package/dist/localization/index.d.ts +3 -0
- package/dist/localization/index.d.ts.map +1 -0
- package/dist/localization/index.js +3 -0
- package/dist/localization/index.js.map +1 -0
- package/dist/localization/server.d.ts +25 -0
- package/dist/localization/server.d.ts.map +1 -0
- package/dist/localization/server.js +69 -0
- package/dist/localization/server.js.map +1 -0
- package/dist/localization/shared.d.ts +25 -0
- package/dist/localization/shared.d.ts.map +1 -0
- package/dist/localization/shared.js +134 -0
- package/dist/localization/shared.js.map +1 -0
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +8 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/dist/templates/default/.agents/skills/internationalization/SKILL.md +77 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/dist/templates/default/AGENTS.md +16 -15
- package/dist/templates/default/app/i18n/en-US.ts +29 -0
- package/dist/templates/default/app/i18n/index.ts +13 -0
- package/dist/templates/default/app/root.tsx +20 -1
- package/dist/templates/default/app/routes/_index.tsx +24 -9
- package/dist/templates/default/app/routes/settings.tsx +67 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/internationalization/SKILL.md +77 -0
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +8 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/AGENTS.md +1 -0
- package/docs/content/client.md +15 -0
- package/docs/content/internationalization.md +145 -0
- package/docs/content/locales/ar-SA/internationalization.md +102 -0
- package/docs/content/locales/de-DE/internationalization.md +102 -0
- package/docs/content/locales/es-ES/internationalization.md +102 -0
- package/docs/content/locales/fr-FR/internationalization.md +102 -0
- package/docs/content/locales/hi-IN/internationalization.md +102 -0
- package/docs/content/locales/ja-JP/internationalization.md +114 -0
- package/docs/content/locales/ko-KR/internationalization.md +102 -0
- package/docs/content/locales/pt-BR/internationalization.md +102 -0
- package/docs/content/locales/zh-CN/internationalization.md +102 -0
- package/docs/content/skills-guide.md +19 -18
- package/package.json +7 -1
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/src/templates/default/.agents/skills/internationalization/SKILL.md +77 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +6 -0
- package/src/templates/default/AGENTS.md +16 -15
- package/src/templates/default/app/i18n/en-US.ts +29 -0
- package/src/templates/default/app/i18n/index.ts +13 -0
- package/src/templates/default/app/root.tsx +20 -1
- package/src/templates/default/app/routes/_index.tsx +24 -9
- package/src/templates/default/app/routes/settings.tsx +67 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/internationalization/SKILL.md +77 -0
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +6 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
root: {
|
|
3
|
+
commandActions: "कार्रवाइयां",
|
|
4
|
+
askPlan: "Plan से पूछें",
|
|
5
|
+
openPlans: "योजनाएं खोलें",
|
|
6
|
+
openRecaps: "रीकैप खोलें",
|
|
7
|
+
commandAppearance: "दिखावट",
|
|
8
|
+
toggleTheme: "थीम बदलें",
|
|
9
|
+
},
|
|
10
|
+
header: {
|
|
11
|
+
plan: "Plan",
|
|
12
|
+
settings: "सेटिंग्स",
|
|
13
|
+
team: "टीम",
|
|
14
|
+
extensions: "एक्सटेंशन",
|
|
15
|
+
},
|
|
16
|
+
navigation: {
|
|
17
|
+
settings: "सेटिंग्स",
|
|
18
|
+
ask: "पूछें",
|
|
19
|
+
plan: "योजना",
|
|
20
|
+
},
|
|
21
|
+
settings: {
|
|
22
|
+
title: "सेटिंग्स",
|
|
23
|
+
description: "इस ऐप के लिए भाषा और कार्यस्थान प्राथमिकताएं।",
|
|
24
|
+
languageTitle: "भाषा",
|
|
25
|
+
languageDescription:
|
|
26
|
+
"इंटरफ़ेस भाषा चुनें। यह पसंद आपके खाते में सहेजी जाती है।",
|
|
27
|
+
languageLabel: "इंटरफ़ेस भाषा",
|
|
28
|
+
workspaceTitle: "कार्यस्थान",
|
|
29
|
+
workspaceDescription:
|
|
30
|
+
"टीम सदस्यों, संगठन पहुंच और साझा कार्यस्थान प्राथमिकताओं को प्रबंधित करें।",
|
|
31
|
+
openTeamSettings: "टीम सेटिंग्स खोलें",
|
|
32
|
+
openResourceSettings: "संसाधन सेटिंग्स खोलें",
|
|
33
|
+
agentTitle: "एजेंट सेटिंग्स",
|
|
34
|
+
agentDescription:
|
|
35
|
+
"मॉडल, API कुंजियों, ऑटोमेशन, आवाज़ और अन्य एजेंट नियंत्रणों के लिए साइडबार सेटिंग्स खोलें।",
|
|
36
|
+
openAgentSettings: "एजेंट सेटिंग्स खोलें",
|
|
37
|
+
},
|
|
38
|
+
agent: {
|
|
39
|
+
emptyState:
|
|
40
|
+
"Plan एजेंट से मर्ज किए गए PR रीकैप खोजने, इस दस्तावेज़ की जांच करने, डायग्राम जोड़ने या कोड सवालों का विज़ुअल प्लान के रूप में जवाब देने को कहें।",
|
|
41
|
+
suggestionShipped: "पिछले सप्ताह क्या शिप हुआ?",
|
|
42
|
+
suggestionUi: "यह UI कैसा दिखता है?",
|
|
43
|
+
suggestionApi: "इस API की संरचना क्या है?",
|
|
44
|
+
},
|
|
45
|
+
sidebar: {
|
|
46
|
+
openNavigation: "नेविगेशन खोलें",
|
|
47
|
+
navigation: "नेविगेशन",
|
|
48
|
+
navigationDescription: "ऐप नेविगेशन लिंक",
|
|
49
|
+
chats: "चैट",
|
|
50
|
+
newPlanChat: "नई Plan चैट",
|
|
51
|
+
newChat: "नई चैट",
|
|
52
|
+
renameChat: "चैट का नाम बदलें",
|
|
53
|
+
unpinChat: "चैट अनपिन करें",
|
|
54
|
+
pinChat: "चैट पिन करें",
|
|
55
|
+
archiveChat: "चैट आर्काइव करें",
|
|
56
|
+
planSection: "योजना",
|
|
57
|
+
newPlan: "नई योजना",
|
|
58
|
+
signInCreatePlan: "योजना बनाने के लिए साइन इन करें",
|
|
59
|
+
signInToCreate: "बनाने के लिए साइन इन करें",
|
|
60
|
+
signInKeepPlans: "योजनाएं बनाने और रखने के लिए साइन इन करें।",
|
|
61
|
+
noPlans: "अभी कोई योजना नहीं है।",
|
|
62
|
+
recapBadge: "रीकैप",
|
|
63
|
+
viewAllPlans: "सभी योजनाएं देखें...",
|
|
64
|
+
brandingSentLocal: "ब्रांडिंग अनुरोध स्थानीय कोड एजेंट को भेजा गया",
|
|
65
|
+
brandingSent: "ब्रांडिंग अनुरोध कोड एजेंट को भेजा गया",
|
|
66
|
+
customizePlanBranding: "Plan ब्रांडिंग कस्टमाइज़ करें",
|
|
67
|
+
customizeBranding: "ब्रांडिंग कस्टमाइज़ करें",
|
|
68
|
+
customizeBrandingDescription:
|
|
69
|
+
"Plan में लागू करने के लिए ब्रांड बदलावों का वर्णन करें।",
|
|
70
|
+
customizeBrandingPlaceholder:
|
|
71
|
+
"हमारा लोगो उपयोग करें, ऐप का नाम बदलें, रंग अपडेट करें...",
|
|
72
|
+
expandSidebar: "साइडबार फैलाएं",
|
|
73
|
+
collapseSidebar: "साइडबार समेटें",
|
|
74
|
+
signIn: "साइन इन करें",
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default messages;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import enUS from "./en-US";
|
|
2
|
+
import type { AgentNativeI18nCatalog } from "@agent-native/core/client";
|
|
3
|
+
|
|
4
|
+
export const i18nCatalog = {
|
|
5
|
+
sourceLocale: "en-US",
|
|
6
|
+
messages: enUS,
|
|
7
|
+
loadMessages: async (locale) => {
|
|
8
|
+
switch (locale) {
|
|
9
|
+
case "zh-CN":
|
|
10
|
+
return (await import("./zh-CN")).default;
|
|
11
|
+
case "es-ES":
|
|
12
|
+
return (await import("./es-ES")).default;
|
|
13
|
+
case "fr-FR":
|
|
14
|
+
return (await import("./fr-FR")).default;
|
|
15
|
+
case "de-DE":
|
|
16
|
+
return (await import("./de-DE")).default;
|
|
17
|
+
case "ja-JP":
|
|
18
|
+
return (await import("./ja-JP")).default;
|
|
19
|
+
case "ko-KR":
|
|
20
|
+
return (await import("./ko-KR")).default;
|
|
21
|
+
case "pt-BR":
|
|
22
|
+
return (await import("./pt-BR")).default;
|
|
23
|
+
case "hi-IN":
|
|
24
|
+
return (await import("./hi-IN")).default;
|
|
25
|
+
case "ar-SA":
|
|
26
|
+
return (await import("./ar-SA")).default;
|
|
27
|
+
default:
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
} satisfies AgentNativeI18nCatalog;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
root: {
|
|
3
|
+
commandActions: "アクション",
|
|
4
|
+
askPlan: "Plan に質問",
|
|
5
|
+
openPlans: "計画を開く",
|
|
6
|
+
openRecaps: "要約を開く",
|
|
7
|
+
commandAppearance: "外観",
|
|
8
|
+
toggleTheme: "テーマを切り替え",
|
|
9
|
+
},
|
|
10
|
+
header: {
|
|
11
|
+
plan: "Plan",
|
|
12
|
+
settings: "設定",
|
|
13
|
+
team: "チーム",
|
|
14
|
+
extensions: "拡張機能",
|
|
15
|
+
},
|
|
16
|
+
navigation: {
|
|
17
|
+
settings: "設定",
|
|
18
|
+
ask: "質問",
|
|
19
|
+
plan: "計画",
|
|
20
|
+
},
|
|
21
|
+
settings: {
|
|
22
|
+
title: "設定",
|
|
23
|
+
description: "このアプリの言語とワークスペース設定。",
|
|
24
|
+
languageTitle: "言語",
|
|
25
|
+
languageDescription:
|
|
26
|
+
"インターフェース言語を選択します。この設定はアカウントに保存されます。",
|
|
27
|
+
languageLabel: "インターフェース言語",
|
|
28
|
+
workspaceTitle: "ワークスペース",
|
|
29
|
+
workspaceDescription:
|
|
30
|
+
"チームメンバー、組織アクセス、共有ワークスペース設定を管理します。",
|
|
31
|
+
openTeamSettings: "チーム設定を開く",
|
|
32
|
+
openResourceSettings: "リソース設定を開く",
|
|
33
|
+
agentTitle: "エージェント設定",
|
|
34
|
+
agentDescription:
|
|
35
|
+
"右サイドバーのエージェント設定を開き、モデル、API キー、自動化、音声などを管理します。",
|
|
36
|
+
openAgentSettings: "エージェント設定を開く",
|
|
37
|
+
},
|
|
38
|
+
agent: {
|
|
39
|
+
emptyState:
|
|
40
|
+
"Plan エージェントに、マージ済み PR の要約検索、このドキュメントの確認、図の追加、コード質問へのビジュアルプランでの回答を依頼できます。",
|
|
41
|
+
suggestionShipped: "先週リリースされた内容は?",
|
|
42
|
+
suggestionUi: "この UI はどのように見えますか?",
|
|
43
|
+
suggestionApi: "この API の形は?",
|
|
44
|
+
},
|
|
45
|
+
sidebar: {
|
|
46
|
+
openNavigation: "ナビゲーションを開く",
|
|
47
|
+
navigation: "ナビゲーション",
|
|
48
|
+
navigationDescription: "アプリのナビゲーションリンク",
|
|
49
|
+
chats: "チャット",
|
|
50
|
+
newPlanChat: "新しい Plan チャット",
|
|
51
|
+
newChat: "新しいチャット",
|
|
52
|
+
renameChat: "チャット名を変更",
|
|
53
|
+
unpinChat: "チャットの固定を解除",
|
|
54
|
+
pinChat: "チャットを固定",
|
|
55
|
+
archiveChat: "チャットをアーカイブ",
|
|
56
|
+
planSection: "計画",
|
|
57
|
+
newPlan: "新しい計画",
|
|
58
|
+
signInCreatePlan: "計画を作成するにはサインイン",
|
|
59
|
+
signInToCreate: "作成するにはサインイン",
|
|
60
|
+
signInKeepPlans: "サインインすると計画を作成して保存できます。",
|
|
61
|
+
noPlans: "まだ計画はありません。",
|
|
62
|
+
recapBadge: "要約",
|
|
63
|
+
viewAllPlans: "すべての計画を表示...",
|
|
64
|
+
brandingSentLocal:
|
|
65
|
+
"ブランド変更リクエストをローカルコードエージェントに送信しました",
|
|
66
|
+
brandingSent: "ブランド変更リクエストをコードエージェントに送信しました",
|
|
67
|
+
customizePlanBranding: "Plan のブランドをカスタマイズ",
|
|
68
|
+
customizeBranding: "ブランドをカスタマイズ",
|
|
69
|
+
customizeBrandingDescription:
|
|
70
|
+
"Plan 全体に反映するブランド変更を説明します。",
|
|
71
|
+
customizeBrandingPlaceholder:
|
|
72
|
+
"ロゴを使う、アプリ名を変える、色を更新する...",
|
|
73
|
+
expandSidebar: "サイドバーを展開",
|
|
74
|
+
collapseSidebar: "サイドバーを折りたたむ",
|
|
75
|
+
signIn: "サインイン",
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export default messages;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
root: {
|
|
3
|
+
commandActions: "작업",
|
|
4
|
+
askPlan: "Plan에 질문",
|
|
5
|
+
openPlans: "계획 열기",
|
|
6
|
+
openRecaps: "요약 열기",
|
|
7
|
+
commandAppearance: "모양",
|
|
8
|
+
toggleTheme: "테마 전환",
|
|
9
|
+
},
|
|
10
|
+
header: {
|
|
11
|
+
plan: "Plan",
|
|
12
|
+
settings: "설정",
|
|
13
|
+
team: "팀",
|
|
14
|
+
extensions: "확장",
|
|
15
|
+
},
|
|
16
|
+
navigation: {
|
|
17
|
+
settings: "설정",
|
|
18
|
+
ask: "질문",
|
|
19
|
+
plan: "계획",
|
|
20
|
+
},
|
|
21
|
+
settings: {
|
|
22
|
+
title: "설정",
|
|
23
|
+
description: "이 앱의 언어 및 워크스페이스 환경설정입니다.",
|
|
24
|
+
languageTitle: "언어",
|
|
25
|
+
languageDescription:
|
|
26
|
+
"인터페이스 언어를 선택하세요. 이 기본 설정은 계정에 저장됩니다.",
|
|
27
|
+
languageLabel: "인터페이스 언어",
|
|
28
|
+
workspaceTitle: "워크스페이스",
|
|
29
|
+
workspaceDescription:
|
|
30
|
+
"팀원, 조직 접근 권한, 공유 워크스페이스 환경설정을 관리합니다.",
|
|
31
|
+
openTeamSettings: "팀 설정 열기",
|
|
32
|
+
openResourceSettings: "리소스 설정 열기",
|
|
33
|
+
agentTitle: "에이전트 설정",
|
|
34
|
+
agentDescription:
|
|
35
|
+
"오른쪽 사이드바의 에이전트 설정을 열어 모델, API 키, 자동화, 음성 및 기타 제어를 관리합니다.",
|
|
36
|
+
openAgentSettings: "에이전트 설정 열기",
|
|
37
|
+
},
|
|
38
|
+
agent: {
|
|
39
|
+
emptyState:
|
|
40
|
+
"Plan 에이전트에게 병합된 PR 요약 검색, 문서 검토, 다이어그램 추가, 코드 질문에 대한 시각적 계획 답변을 요청하세요.",
|
|
41
|
+
suggestionShipped: "지난주에 무엇이 출시되었나요?",
|
|
42
|
+
suggestionUi: "이 UI는 어떻게 보이나요?",
|
|
43
|
+
suggestionApi: "이 API의 구조는 무엇인가요?",
|
|
44
|
+
},
|
|
45
|
+
sidebar: {
|
|
46
|
+
openNavigation: "탐색 열기",
|
|
47
|
+
navigation: "탐색",
|
|
48
|
+
navigationDescription: "앱 탐색 링크",
|
|
49
|
+
chats: "채팅",
|
|
50
|
+
newPlanChat: "새 Plan 채팅",
|
|
51
|
+
newChat: "새 채팅",
|
|
52
|
+
renameChat: "채팅 이름 변경",
|
|
53
|
+
unpinChat: "채팅 고정 해제",
|
|
54
|
+
pinChat: "채팅 고정",
|
|
55
|
+
archiveChat: "채팅 보관",
|
|
56
|
+
planSection: "계획",
|
|
57
|
+
newPlan: "새 계획",
|
|
58
|
+
signInCreatePlan: "계획을 만들려면 로그인",
|
|
59
|
+
signInToCreate: "만들려면 로그인",
|
|
60
|
+
signInKeepPlans: "로그인하면 계획을 만들고 보관할 수 있습니다.",
|
|
61
|
+
noPlans: "아직 계획이 없습니다.",
|
|
62
|
+
recapBadge: "요약",
|
|
63
|
+
viewAllPlans: "모든 계획 보기...",
|
|
64
|
+
brandingSentLocal: "브랜딩 요청을 로컬 코드 에이전트에 보냈습니다",
|
|
65
|
+
brandingSent: "브랜딩 요청을 코드 에이전트에 보냈습니다",
|
|
66
|
+
customizePlanBranding: "Plan 브랜딩 사용자 지정",
|
|
67
|
+
customizeBranding: "브랜딩 사용자 지정",
|
|
68
|
+
customizeBrandingDescription:
|
|
69
|
+
"Plan 전체에 적용할 브랜드 변경을 설명하세요.",
|
|
70
|
+
customizeBrandingPlaceholder: "로고 사용, 앱 이름 변경, 색상 업데이트...",
|
|
71
|
+
expandSidebar: "사이드바 펼치기",
|
|
72
|
+
collapseSidebar: "사이드바 접기",
|
|
73
|
+
signIn: "로그인",
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export default messages;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
root: {
|
|
3
|
+
commandActions: "Ações",
|
|
4
|
+
askPlan: "Perguntar ao Plan",
|
|
5
|
+
openPlans: "Abrir planos",
|
|
6
|
+
openRecaps: "Abrir recaps",
|
|
7
|
+
commandAppearance: "Aparência",
|
|
8
|
+
toggleTheme: "Alternar tema",
|
|
9
|
+
},
|
|
10
|
+
header: {
|
|
11
|
+
plan: "Plan",
|
|
12
|
+
settings: "Configurações",
|
|
13
|
+
team: "Equipe",
|
|
14
|
+
extensions: "Extensões",
|
|
15
|
+
},
|
|
16
|
+
navigation: {
|
|
17
|
+
settings: "Configurações",
|
|
18
|
+
ask: "Perguntar",
|
|
19
|
+
plan: "Plan",
|
|
20
|
+
},
|
|
21
|
+
settings: {
|
|
22
|
+
title: "Configurações",
|
|
23
|
+
description: "Preferências de idioma e espaço de trabalho deste app.",
|
|
24
|
+
languageTitle: "Idioma",
|
|
25
|
+
languageDescription:
|
|
26
|
+
"Escolha o idioma da interface. Essa preferência é salva na sua conta.",
|
|
27
|
+
languageLabel: "Idioma da interface",
|
|
28
|
+
workspaceTitle: "Espaço de trabalho",
|
|
29
|
+
workspaceDescription:
|
|
30
|
+
"Gerencie membros da equipe, acesso da organização e preferências compartilhadas.",
|
|
31
|
+
openTeamSettings: "Abrir configurações da equipe",
|
|
32
|
+
openResourceSettings: "Abrir configurações de recursos",
|
|
33
|
+
agentTitle: "Configurações do agente",
|
|
34
|
+
agentDescription:
|
|
35
|
+
"Abra as configurações do agente na barra lateral para modelos, chaves de API, automações, voz e outros controles.",
|
|
36
|
+
openAgentSettings: "Abrir configurações do agente",
|
|
37
|
+
},
|
|
38
|
+
agent: {
|
|
39
|
+
emptyState:
|
|
40
|
+
"Peça ao agente do Plan para buscar recaps de PRs mesclados, inspecionar este documento, adicionar diagramas ou responder perguntas de código como planos visuais.",
|
|
41
|
+
suggestionShipped: "O que foi lançado na última semana?",
|
|
42
|
+
suggestionUi: "Como esta interface aparece?",
|
|
43
|
+
suggestionApi: "Qual é a estrutura desta API?",
|
|
44
|
+
},
|
|
45
|
+
sidebar: {
|
|
46
|
+
openNavigation: "Abrir navegação",
|
|
47
|
+
navigation: "Navegação",
|
|
48
|
+
navigationDescription: "Links de navegação do app",
|
|
49
|
+
chats: "Chats",
|
|
50
|
+
newPlanChat: "Novo chat do Plan",
|
|
51
|
+
newChat: "Novo chat",
|
|
52
|
+
renameChat: "Renomear chat",
|
|
53
|
+
unpinChat: "Desafixar chat",
|
|
54
|
+
pinChat: "Fixar chat",
|
|
55
|
+
archiveChat: "Arquivar chat",
|
|
56
|
+
planSection: "Plan",
|
|
57
|
+
newPlan: "Novo plano",
|
|
58
|
+
signInCreatePlan: "Entre para criar um plano",
|
|
59
|
+
signInToCreate: "Entre para criar",
|
|
60
|
+
signInKeepPlans: "Entre para criar e manter planos.",
|
|
61
|
+
noPlans: "Ainda não há planos.",
|
|
62
|
+
recapBadge: "Recap",
|
|
63
|
+
viewAllPlans: "Ver todos os planos...",
|
|
64
|
+
brandingSentLocal: "Solicitação de marca enviada ao agente de código local",
|
|
65
|
+
brandingSent: "Solicitação de marca enviada ao agente de código",
|
|
66
|
+
customizePlanBranding: "Personalizar a marca do Plan",
|
|
67
|
+
customizeBranding: "Personalizar marca",
|
|
68
|
+
customizeBrandingDescription:
|
|
69
|
+
"Descreva as mudanças de marca para aplicar no Plan.",
|
|
70
|
+
customizeBrandingPlaceholder:
|
|
71
|
+
"Use nosso logo, altere o nome do app, atualize as cores...",
|
|
72
|
+
expandSidebar: "Expandir barra lateral",
|
|
73
|
+
collapseSidebar: "Recolher barra lateral",
|
|
74
|
+
signIn: "Entrar",
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default messages;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
root: {
|
|
3
|
+
commandActions: "操作",
|
|
4
|
+
askPlan: "询问 Plan",
|
|
5
|
+
openPlans: "打开计划",
|
|
6
|
+
openRecaps: "打开回顾",
|
|
7
|
+
commandAppearance: "外观",
|
|
8
|
+
toggleTheme: "切换主题",
|
|
9
|
+
},
|
|
10
|
+
header: {
|
|
11
|
+
plan: "Plan",
|
|
12
|
+
settings: "设置",
|
|
13
|
+
team: "团队",
|
|
14
|
+
extensions: "扩展",
|
|
15
|
+
},
|
|
16
|
+
navigation: {
|
|
17
|
+
settings: "设置",
|
|
18
|
+
ask: "询问",
|
|
19
|
+
plan: "计划",
|
|
20
|
+
},
|
|
21
|
+
settings: {
|
|
22
|
+
title: "设置",
|
|
23
|
+
description: "此应用的语言和工作区偏好设置。",
|
|
24
|
+
languageTitle: "语言",
|
|
25
|
+
languageDescription: "选择界面语言。此偏好会保存到你的账户。",
|
|
26
|
+
languageLabel: "界面语言",
|
|
27
|
+
workspaceTitle: "工作区",
|
|
28
|
+
workspaceDescription: "管理团队成员、组织访问权限和共享工作区偏好。",
|
|
29
|
+
openTeamSettings: "打开团队设置",
|
|
30
|
+
openResourceSettings: "打开资源设置",
|
|
31
|
+
agentTitle: "代理设置",
|
|
32
|
+
agentDescription:
|
|
33
|
+
"打开代理侧边栏设置,管理模型、API 密钥、自动化、语音和其他代理控制项。",
|
|
34
|
+
openAgentSettings: "打开代理设置",
|
|
35
|
+
},
|
|
36
|
+
agent: {
|
|
37
|
+
emptyState:
|
|
38
|
+
"让 Plan 代理搜索已合并的 PR 回顾、检查此文档、添加图表,或以可视化计划回答代码问题。",
|
|
39
|
+
suggestionShipped: "上周发布了什么?",
|
|
40
|
+
suggestionUi: "这个界面现在是什么样?",
|
|
41
|
+
suggestionApi: "这个 API 的结构是什么?",
|
|
42
|
+
},
|
|
43
|
+
sidebar: {
|
|
44
|
+
openNavigation: "打开导航",
|
|
45
|
+
navigation: "导航",
|
|
46
|
+
navigationDescription: "应用导航链接",
|
|
47
|
+
chats: "聊天",
|
|
48
|
+
newPlanChat: "新建 Plan 聊天",
|
|
49
|
+
newChat: "新建聊天",
|
|
50
|
+
renameChat: "重命名聊天",
|
|
51
|
+
unpinChat: "取消置顶聊天",
|
|
52
|
+
pinChat: "置顶聊天",
|
|
53
|
+
archiveChat: "归档聊天",
|
|
54
|
+
planSection: "计划",
|
|
55
|
+
newPlan: "新建计划",
|
|
56
|
+
signInCreatePlan: "登录以创建计划",
|
|
57
|
+
signInToCreate: "登录以创建",
|
|
58
|
+
signInKeepPlans: "登录即可创建并保留计划。",
|
|
59
|
+
noPlans: "还没有计划。",
|
|
60
|
+
recapBadge: "回顾",
|
|
61
|
+
viewAllPlans: "查看所有计划...",
|
|
62
|
+
brandingSentLocal: "已将品牌请求发送给本地代码代理",
|
|
63
|
+
brandingSent: "已将品牌请求发送给代码代理",
|
|
64
|
+
customizePlanBranding: "自定义 Plan 品牌",
|
|
65
|
+
customizeBranding: "自定义品牌",
|
|
66
|
+
customizeBrandingDescription: "描述要在 Plan 中应用的品牌更改。",
|
|
67
|
+
customizeBrandingPlaceholder: "使用我们的徽标、更改应用名称、更新颜色...",
|
|
68
|
+
expandSidebar: "展开侧边栏",
|
|
69
|
+
collapseSidebar: "折叠侧边栏",
|
|
70
|
+
signIn: "登录",
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export default messages;
|
|
@@ -15,10 +15,12 @@ import {
|
|
|
15
15
|
CommandMenu,
|
|
16
16
|
appPath,
|
|
17
17
|
createAgentNativeQueryClient,
|
|
18
|
+
getLocaleInitScript,
|
|
18
19
|
getThemeInitScript,
|
|
19
20
|
markAgentChatHomeHandoff,
|
|
20
21
|
navigateWithAgentChatViewTransition,
|
|
21
22
|
useCommandMenuShortcut,
|
|
23
|
+
useT,
|
|
22
24
|
} from "@agent-native/core/client";
|
|
23
25
|
import { IconSun, IconMoon } from "@tabler/icons-react";
|
|
24
26
|
import { useTheme } from "next-themes";
|
|
@@ -33,6 +35,7 @@ import "@/lib/register-chat-renderers";
|
|
|
33
35
|
import type { LinksFunction } from "react-router";
|
|
34
36
|
import stylesheet from "./global.css?url";
|
|
35
37
|
import { configureTracking } from "@agent-native/core/client";
|
|
38
|
+
import { i18nCatalog } from "./i18n";
|
|
36
39
|
configureTracking({
|
|
37
40
|
getDefaultProps: (_name, properties) => ({
|
|
38
41
|
...properties,
|
|
@@ -44,11 +47,35 @@ export const links: LinksFunction = () => [
|
|
|
44
47
|
{ rel: "stylesheet", href: stylesheet },
|
|
45
48
|
];
|
|
46
49
|
|
|
47
|
-
const
|
|
50
|
+
const THEME_INIT_SCRIPT_SELECTOR = "script[data-agent-native-theme-init]";
|
|
51
|
+
const LOCALE_INIT_SCRIPT_SELECTOR = "script[data-agent-native-locale-init]";
|
|
52
|
+
|
|
53
|
+
function getHydrationStableThemeInitScript() {
|
|
54
|
+
if (typeof document !== "undefined") {
|
|
55
|
+
const existing = document.querySelector<HTMLScriptElement>(
|
|
56
|
+
THEME_INIT_SCRIPT_SELECTOR,
|
|
57
|
+
);
|
|
58
|
+
if (existing?.innerHTML) return existing.innerHTML;
|
|
59
|
+
}
|
|
60
|
+
return getThemeInitScript();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function getHydrationStableLocaleInitScript() {
|
|
64
|
+
if (typeof document !== "undefined") {
|
|
65
|
+
const existing = document.querySelector<HTMLScriptElement>(
|
|
66
|
+
LOCALE_INIT_SCRIPT_SELECTOR,
|
|
67
|
+
);
|
|
68
|
+
if (existing?.innerHTML) return existing.innerHTML;
|
|
69
|
+
}
|
|
70
|
+
return getLocaleInitScript();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const THEME_INIT_SCRIPT = getHydrationStableThemeInitScript();
|
|
74
|
+
const LOCALE_INIT_SCRIPT = getHydrationStableLocaleInitScript();
|
|
48
75
|
|
|
49
76
|
export function Layout({ children }: { children: React.ReactNode }) {
|
|
50
77
|
return (
|
|
51
|
-
<html lang="en" suppressHydrationWarning>
|
|
78
|
+
<html lang="en-US" dir="ltr" data-locale="en-US" suppressHydrationWarning>
|
|
52
79
|
<head>
|
|
53
80
|
<meta charSet="utf-8" />
|
|
54
81
|
<meta
|
|
@@ -56,9 +83,15 @@ export function Layout({ children }: { children: React.ReactNode }) {
|
|
|
56
83
|
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
|
|
57
84
|
/>
|
|
58
85
|
<script
|
|
86
|
+
data-agent-native-theme-init
|
|
59
87
|
suppressHydrationWarning
|
|
60
88
|
dangerouslySetInnerHTML={{ __html: THEME_INIT_SCRIPT }}
|
|
61
89
|
/>
|
|
90
|
+
<script
|
|
91
|
+
data-agent-native-locale-init
|
|
92
|
+
suppressHydrationWarning
|
|
93
|
+
dangerouslySetInnerHTML={{ __html: LOCALE_INIT_SCRIPT }}
|
|
94
|
+
/>
|
|
62
95
|
<link rel="manifest" href={appPath("/manifest.json")} />
|
|
63
96
|
<meta name="theme-color" content="#71717A" />
|
|
64
97
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
@@ -96,6 +129,7 @@ function AppContent() {
|
|
|
96
129
|
const navigate = useNavigate();
|
|
97
130
|
const { resolvedTheme, setTheme } = useTheme();
|
|
98
131
|
const isDark = resolvedTheme === "dark";
|
|
132
|
+
const t = useT();
|
|
99
133
|
useCommandMenuShortcut(useCallback(() => setCmdkOpen(true), []));
|
|
100
134
|
const go = useCallback(
|
|
101
135
|
(path: string) => {
|
|
@@ -113,22 +147,24 @@ function AppContent() {
|
|
|
113
147
|
changelog={changelog}
|
|
114
148
|
changelogKey="plan"
|
|
115
149
|
>
|
|
116
|
-
<CommandMenu.Group heading="
|
|
117
|
-
<CommandMenu.Item onSelect={() => go("/")}>
|
|
150
|
+
<CommandMenu.Group heading={t("root.commandActions")}>
|
|
151
|
+
<CommandMenu.Item onSelect={() => go("/")}>
|
|
152
|
+
{t("root.askPlan")}
|
|
153
|
+
</CommandMenu.Item>
|
|
118
154
|
<CommandMenu.Item onSelect={() => go("/plans")}>
|
|
119
|
-
|
|
155
|
+
{t("root.openPlans")}
|
|
120
156
|
</CommandMenu.Item>
|
|
121
157
|
<CommandMenu.Item onSelect={() => go("/recaps")}>
|
|
122
|
-
|
|
158
|
+
{t("root.openRecaps")}
|
|
123
159
|
</CommandMenu.Item>
|
|
124
160
|
</CommandMenu.Group>
|
|
125
|
-
<CommandMenu.Group heading="
|
|
161
|
+
<CommandMenu.Group heading={t("root.commandAppearance")}>
|
|
126
162
|
<CommandMenu.Item
|
|
127
163
|
onSelect={() => setTheme(isDark ? "light" : "dark")}
|
|
128
164
|
keywords={["theme", "dark", "light", "mode"]}
|
|
129
165
|
>
|
|
130
166
|
{isDark ? <IconSun size={16} /> : <IconMoon size={16} />}
|
|
131
|
-
|
|
167
|
+
{t("root.toggleTheme")}
|
|
132
168
|
</CommandMenu.Item>
|
|
133
169
|
</CommandMenu.Group>
|
|
134
170
|
</CommandMenu>
|
|
@@ -148,6 +184,7 @@ export default function Root() {
|
|
|
148
184
|
<AppProviders
|
|
149
185
|
queryClient={queryClient}
|
|
150
186
|
toaster={<Toaster richColors position="bottom-left" />}
|
|
187
|
+
i18n={{ catalog: i18nCatalog }}
|
|
151
188
|
>
|
|
152
189
|
<DbSyncSetup />
|
|
153
190
|
<AppContent />
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Link } from "react-router";
|
|
2
|
+
import {
|
|
3
|
+
ChangelogSettingsCard,
|
|
4
|
+
LanguagePicker,
|
|
5
|
+
openAgentSettings,
|
|
6
|
+
useT,
|
|
7
|
+
} from "@agent-native/core/client";
|
|
8
|
+
import { useSetPageTitle } from "@/components/layout/HeaderActions";
|
|
9
|
+
import { Button } from "@/components/ui/button";
|
|
10
|
+
import {
|
|
11
|
+
Card,
|
|
12
|
+
CardContent,
|
|
13
|
+
CardDescription,
|
|
14
|
+
CardHeader,
|
|
15
|
+
CardTitle,
|
|
16
|
+
} from "@/components/ui/card";
|
|
17
|
+
import { Label } from "@/components/ui/label";
|
|
18
|
+
import { APP_TITLE } from "@/lib/app-config";
|
|
19
|
+
import changelog from "../../CHANGELOG.md?raw";
|
|
20
|
+
|
|
21
|
+
export function meta() {
|
|
22
|
+
return [{ title: `Settings - ${APP_TITLE}` }];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default function SettingsRoute() {
|
|
26
|
+
const t = useT();
|
|
27
|
+
useSetPageTitle(t("settings.title"));
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<main className="mx-auto w-full max-w-3xl space-y-6 px-4 py-6 sm:px-6 sm:py-10">
|
|
31
|
+
<div className="space-y-1">
|
|
32
|
+
<h1 className="text-2xl font-semibold tracking-tight">
|
|
33
|
+
{t("settings.title")}
|
|
34
|
+
</h1>
|
|
35
|
+
<p className="text-sm leading-6 text-muted-foreground">
|
|
36
|
+
{t("settings.description")}
|
|
37
|
+
</p>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<Card>
|
|
41
|
+
<CardHeader>
|
|
42
|
+
<CardTitle className="text-base">
|
|
43
|
+
{t("settings.languageTitle")}
|
|
44
|
+
</CardTitle>
|
|
45
|
+
<CardDescription>{t("settings.languageDescription")}</CardDescription>
|
|
46
|
+
</CardHeader>
|
|
47
|
+
<CardContent className="max-w-xs space-y-1.5">
|
|
48
|
+
<Label>{t("settings.languageLabel")}</Label>
|
|
49
|
+
<LanguagePicker label={t("settings.languageLabel")} />
|
|
50
|
+
</CardContent>
|
|
51
|
+
</Card>
|
|
52
|
+
|
|
53
|
+
<Card>
|
|
54
|
+
<CardHeader>
|
|
55
|
+
<CardTitle className="text-base">
|
|
56
|
+
{t("settings.workspaceTitle")}
|
|
57
|
+
</CardTitle>
|
|
58
|
+
<CardDescription>
|
|
59
|
+
{t("settings.workspaceDescription")}
|
|
60
|
+
</CardDescription>
|
|
61
|
+
</CardHeader>
|
|
62
|
+
<CardContent>
|
|
63
|
+
<Button variant="outline" asChild>
|
|
64
|
+
<Link to="/team">{t("settings.openTeamSettings")}</Link>
|
|
65
|
+
</Button>
|
|
66
|
+
</CardContent>
|
|
67
|
+
</Card>
|
|
68
|
+
|
|
69
|
+
<Card>
|
|
70
|
+
<CardHeader>
|
|
71
|
+
<CardTitle className="text-base">
|
|
72
|
+
{t("settings.agentTitle")}
|
|
73
|
+
</CardTitle>
|
|
74
|
+
<CardDescription>{t("settings.agentDescription")}</CardDescription>
|
|
75
|
+
</CardHeader>
|
|
76
|
+
<CardContent>
|
|
77
|
+
<Button variant="outline" onClick={() => openAgentSettings()}>
|
|
78
|
+
{t("settings.openAgentSettings")}
|
|
79
|
+
</Button>
|
|
80
|
+
</CardContent>
|
|
81
|
+
</Card>
|
|
82
|
+
|
|
83
|
+
<ChangelogSettingsCard markdown={changelog} />
|
|
84
|
+
</main>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
@@ -66,6 +66,11 @@ el.dataset.selectedId = selectedItem?.id || "";
|
|
|
66
66
|
|
|
67
67
|
**Use configuration-driven rendering** — Extract visual decisions (colors, layouts, sizes) into JSON config files in `data/`. The agent can modify the config (Tier 1) instead of the component source (Tier 2).
|
|
68
68
|
|
|
69
|
+
**Keep localized copy in catalogs** — When editing visible UI copy, labels,
|
|
70
|
+
toasts, empty states, prompts, or formatting, read `internationalization` and
|
|
71
|
+
update `app/i18n/en-US.ts` plus existing locale catalogs instead of leaving new
|
|
72
|
+
inline strings in components.
|
|
73
|
+
|
|
69
74
|
## Don't
|
|
70
75
|
|
|
71
76
|
- Don't modify `.env` files or files containing secrets
|
|
@@ -80,3 +85,4 @@ el.dataset.selectedId = selectedItem?.id || "";
|
|
|
80
85
|
- **actions** — The agent can create or modify actions to add new capabilities
|
|
81
86
|
- **delegate-to-agent** — Self-modification requests come through the agent chat
|
|
82
87
|
- **real-time-sync** — Database writes trigger change events to update the UI
|
|
88
|
+
- **internationalization** — UI copy, language catalogs, locale switching, and RTL-safe edits
|