fix(#2147): add profile_concept keys to all locale blocks and update existing test

This commit is contained in:
Rod Boev authored and nesquena-hermes committed 2026-07-14 03:33:00 +00:00
1 parent e9b17b1a52
commit 453b9696e3
2 files changed
+104 -7

No files matched your search

+92 -1
View File
@@ -1,4 +1,4 @@
// ── i18n: locale bundles and t() helper ────────────────────────────────────── // ── i18n: locale bundles and t() helper ──────────────────────────────────────
// To add a new language: add an entry to LOCALES below with all keys translated. // To add a new language: add an entry to LOCALES below with all keys translated.
// The language code must match a valid BCP 47 tag (used for speech recognition). // The language code must match a valid BCP 47 tag (used for speech recognition).
// Keys missing in a non-English locale fall back to English automatically. // Keys missing in a non-English locale fall back to English automatically.
@@ -3328,6 +3328,13 @@ const LOCALES = {
profile_switch_title: 'Passa a questo profilo', profile_switch_title: 'Passa a questo profilo',
profile_delete_title: 'Elimina questo profilo', profile_delete_title: 'Elimina questo profilo',
profile_default_label: '(predefinito)', profile_default_label: '(predefinito)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Nome profilo (minuscole, a-z 0-9 trattini)', profile_name_placeholder: 'Nome profilo (minuscole, a-z 0-9 trattini)',
profile_clone_label: 'Clona config dal profilo attivo', profile_clone_label: 'Clona config dal profilo attivo',
profile_model_label: 'Modello / provider', profile_model_label: 'Modello / provider',
@@ -5071,6 +5078,13 @@ const LOCALES = {
profile_switch_title: 'このプロファイルに切り替え', profile_switch_title: 'このプロファイルに切り替え',
profile_delete_title: 'このプロファイルを削除', profile_delete_title: 'このプロファイルを削除',
profile_default_label: '(デフォルト)', profile_default_label: '(デフォルト)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'プロファイル名 (小文字 a-z 0-9 ハイフン)', profile_name_placeholder: 'プロファイル名 (小文字 a-z 0-9 ハイフン)',
profile_clone_label: 'アクティブプロファイルから設定をコピー', profile_clone_label: 'アクティブプロファイルから設定をコピー',
profile_model_label: 'モデル / プロバイダー', profile_model_label: 'モデル / プロバイダー',
@@ -6423,6 +6437,13 @@ const LOCALES = {
profile_switch_title: 'Переключиться на этот профиль', profile_switch_title: 'Переключиться на этот профиль',
profile_delete_title: 'Удалить этот профиль', profile_delete_title: 'Удалить этот профиль',
profile_default_label: '(по умолчанию)', profile_default_label: '(по умолчанию)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Название профиля (строчные буквы, a-z, 0-9, дефисы)', profile_name_placeholder: 'Название профиля (строчные буквы, a-z, 0-9, дефисы)',
profile_clone_label: 'Скопировать конфигурацию из активного профиля', profile_clone_label: 'Скопировать конфигурацию из активного профиля',
profile_model_label: 'Модель / провайдер', profile_model_label: 'Модель / провайдер',
@@ -8142,6 +8163,13 @@ const LOCALES = {
profile_switch_title: 'Switch to this profile', profile_switch_title: 'Switch to this profile',
profile_delete_title: 'Eliminar este perfil', profile_delete_title: 'Eliminar este perfil',
profile_default_label: '(predeterminado)', profile_default_label: '(predeterminado)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Nombre del perfil (minúsculas, a-z, 0-9, guiones)', profile_name_placeholder: 'Nombre del perfil (minúsculas, a-z, 0-9, guiones)',
profile_clone_label: 'Clonar configuración del perfil activo', profile_clone_label: 'Clonar configuración del perfil activo',
profile_model_label: 'Modelo / proveedor', profile_model_label: 'Modelo / proveedor',
@@ -10149,6 +10177,13 @@ const LOCALES = {
profile_switch_title: 'Profil wechseln', profile_switch_title: 'Profil wechseln',
profile_delete_title: 'Profil löschen', profile_delete_title: 'Profil löschen',
profile_default_label: 'Standard', profile_default_label: 'Standard',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Profilname', profile_name_placeholder: 'Profilname',
profile_clone_label: 'Klonen', profile_clone_label: 'Klonen',
profile_model_label: 'Modell / Anbieter', profile_model_label: 'Modell / Anbieter',
@@ -11499,6 +11534,13 @@ const LOCALES = {
profile_switch_title: '切换到此配置档', profile_switch_title: '切换到此配置档',
profile_delete_title: '删除此配置档', profile_delete_title: '删除此配置档',
profile_default_label: '(默认)', profile_default_label: '(默认)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: '配置档名称(小写字母、a-z、0-9、连字符)', profile_name_placeholder: '配置档名称(小写字母、a-z、0-9、连字符)',
profile_clone_label: '复制当前配置档的配置', profile_clone_label: '复制当前配置档的配置',
profile_model_label: '模型 / 提供商', profile_model_label: '模型 / 提供商',
@@ -13562,6 +13604,13 @@ const LOCALES = {
profile_switch_title: '切換到此設定檔', profile_switch_title: '切換到此設定檔',
profile_delete_title: '刪除此設定檔', profile_delete_title: '刪除此設定檔',
profile_default_label: '(預設)', profile_default_label: '(預設)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: '設定檔名稱(小寫字母、數字、連字號)', profile_name_placeholder: '設定檔名稱(小寫字母、數字、連字號)',
profile_clone_label: '從啟用中的設定檔複製設定', profile_clone_label: '從啟用中的設定檔複製設定',
profile_model_label: '模型 / 供應商', profile_model_label: '模型 / 供應商',
@@ -16755,6 +16804,13 @@ const LOCALES = {
profile_switch_title: 'Switch to this profile', profile_switch_title: 'Switch to this profile',
profile_delete_title: 'Delete this profile', profile_delete_title: 'Delete this profile',
profile_default_label: '(default)', profile_default_label: '(default)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Profile name (lowercase, a-z 0-9 hyphens)', profile_name_placeholder: 'Profile name (lowercase, a-z 0-9 hyphens)',
profile_clone_label: 'Clone config from active profile', profile_clone_label: 'Clone config from active profile',
profile_model_label: 'Model / provider', profile_model_label: 'Model / provider',
@@ -18570,6 +18626,13 @@ const LOCALES = {
profile_switch_title: 'Basculer vers ce profil', profile_switch_title: 'Basculer vers ce profil',
profile_delete_title: 'Supprimer ce profil', profile_delete_title: 'Supprimer ce profil',
profile_default_label: '(par défaut)', profile_default_label: '(par défaut)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Nom du profil (minuscules, a-z 0-9 tirets)', profile_name_placeholder: 'Nom du profil (minuscules, a-z 0-9 tirets)',
profile_clone_label: 'Cloner la configuration du profil actif', profile_clone_label: 'Cloner la configuration du profil actif',
profile_model_label: 'Modèle / fournisseur', profile_model_label: 'Modèle / fournisseur',
@@ -19362,6 +19425,13 @@ const LOCALES = {
profile_clone_label: 'Klonovat konfiguraci z aktivního profilu', profile_clone_label: 'Klonovat konfiguraci z aktivního profilu',
profile_created: (name) => `Profil vytvořen: ${name}`, profile_created: (name) => `Profil vytvořen: ${name}`,
profile_default_label: '(výchozí)', profile_default_label: '(výchozí)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_delete_confirm_message: 'Všechny relace, konfigurace, dovednosti a paměť tohoto profilu budou trvale smazány. Toto nelze vrátit zpět.', profile_delete_confirm_message: 'Všechny relace, konfigurace, dovednosti a paměť tohoto profilu budou trvale smazány. Toto nelze vrátit zpět.',
profile_delete_confirm_title: (name) => `Smazat profil "${name}"?`, profile_delete_confirm_title: (name) => `Smazat profil "${name}"?`,
profile_delete_title: 'Smazat tento profil', profile_delete_title: 'Smazat tento profil',
@@ -21908,6 +21978,13 @@ const LOCALES = {
profile_switch_title: 'Bu profile geç', profile_switch_title: 'Bu profile geç',
profile_delete_title: 'Bu profili sil', profile_delete_title: 'Bu profili sil',
profile_default_label: '(varsayılan)', profile_default_label: '(varsayılan)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Profil adı (küçük harf, a-z 0-9 kısa çizgiler)', profile_name_placeholder: 'Profil adı (küçük harf, a-z 0-9 kısa çizgiler)',
profile_clone_label: 'Etkin profilden yapılandırmayı kopyala', profile_clone_label: 'Etkin profilden yapılandırmayı kopyala',
profile_model_label: 'Model / sağlayıcı', profile_model_label: 'Model / sağlayıcı',
@@ -23731,6 +23808,13 @@ const LOCALES = {
profile_switch_title: 'Przełącz na ten profil', profile_switch_title: 'Przełącz na ten profil',
profile_delete_title: 'Usuń ten profil', profile_delete_title: 'Usuń ten profil',
profile_default_label: '(domyślny)', profile_default_label: '(domyślny)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Nazwa profilu (małe litery, a-z 0-9, myślniki)', profile_name_placeholder: 'Nazwa profilu (małe litery, a-z 0-9, myślniki)',
profile_clone_label: 'Klonuj konfigurację z aktywnego profilu', profile_clone_label: 'Klonuj konfigurację z aktywnego profilu',
profile_model_label: 'Model / dostawca', profile_model_label: 'Model / dostawca',
@@ -25300,6 +25384,13 @@ const LOCALES = {
profile_switch_title: 'Chuyển sang hồ sơ này', profile_switch_title: 'Chuyển sang hồ sơ này',
profile_delete_title: 'Xóa profile này', profile_delete_title: 'Xóa profile này',
profile_default_label: '(mặc định)', profile_default_label: '(mặc định)',
profile_concept_title: 'Profiles vs workspaces',
profile_concept_subtitle: 'Use profiles for how the agent works; use workspaces for what files it works on.',
profile_concept_desc_profiles: 'Agent identity, memory, skills, model/provider config, and connected tools. Create profiles for roles like researcher, writer, marketer, or developer when those roles should carry different context or capabilities.',
profile_concept_desc_workspaces: 'Project or product folders on disk. Use one workspace per repo/product so chat, terminal, and file browsing point at the right files.',
profile_concept_desc_together: 'A profile can have a default workspace, but you can switch workspaces any time. Profiles answer "who is working?"; workspaces answer "where are they working?"',
profile_concept_example: 'Example: create a "researcher" profile with web-search skills enabled and a "my-app" workspace pointing at your project folder. The researcher profile remembers your research preferences; the workspace scopes file access to that project.',
profile_concept_workspace_binding: 'Each profile can bind its own default workspace, but switching workspaces mid-session does not switch profiles. Scheduled tasks run under the profile that created them.',
profile_name_placeholder: 'Tên profile (chữ thường, a-z 0-9 dấu gạch ngang)', profile_name_placeholder: 'Tên profile (chữ thường, a-z 0-9 dấu gạch ngang)',
profile_clone_label: 'Nhân bản cấu hình từ profile đang hoạt động', profile_clone_label: 'Nhân bản cấu hình từ profile đang hoạt động',
profile_model_label: 'Model / nhà cung cấp', profile_model_label: 'Model / nhà cung cấp',
+12 -6
View File
@@ -10,18 +10,24 @@ def read(rel: str) -> str:
def test_profiles_panel_surfaces_profiles_vs_workspaces_help_card(): def test_profiles_panel_surfaces_profiles_vs_workspaces_help_card():
src = read("static/panels.js") src = read("static/panels.js")
assert "Profiles vs workspaces" in src assert "t('profile_concept_title')" in src
assert "Use profiles for how the agent works; use workspaces for what files it works on." in src assert "t('profile_concept_subtitle')" in src
assert "_renderProfileConceptHelp" in src assert "_renderProfileConceptHelp" in src
assert "explainer.onclick = () => _renderProfileConceptHelp" in src assert "explainer.onclick = () => _renderProfileConceptHelp" in src
def test_profile_concept_help_distinguishes_how_from_where(): def test_profile_concept_help_distinguishes_how_from_where():
i18n = read("static/i18n.js")
assert "Agent identity, memory, skills, model/provider config, and connected tools" in i18n
assert "Create profiles for roles like researcher, writer, marketer, or developer" in i18n
assert "Project or product folders on disk" in i18n
assert 'Profiles answer' in i18n
assert 'who is working' in i18n
assert 'where are they working' in i18n
src = read("static/panels.js") src = read("static/panels.js")
assert "Agent identity, memory, skills, model/provider config, and connected tools" in src assert "t('profile_concept_desc_profiles')" in src
assert "Create profiles for roles like researcher, writer, marketer, or developer" in src assert "t('profile_concept_desc_workspaces')" in src
assert "Project or product folders on disk" in src assert "t('profile_concept_desc_together')" in src
assert "Profiles answer “who is working?”; workspaces answer “where are they working?”" in src
def test_empty_profiles_state_keeps_help_card_visible(): def test_empty_profiles_state_keeps_help_card_visible():