Limit community to single-user workspace
Deploy / deploy (push) Successful in 2m33s
CI / Rust Checks (push) Successful in 5m35s
CI / UI Checks (push) Successful in 5s
CI / Deployment Manifests (push) Successful in 2s
CI / Frontend E2E (push) Successful in 4m19s

This commit is contained in:
github-ops
2026-06-19 17:41:50 +00:00
parent ba29ac7b94
commit 58cfd86d90
23 changed files with 134 additions and 1696 deletions
+10 -116
View File
@@ -360,7 +360,6 @@ var TRANSLATIONS = {
'settings.title': 'Settings',
'settings.nav.workspace': 'Workspace',
'settings.nav.profile': 'Profile',
'settings.nav.members': 'Members',
'settings.nav.security': 'Security',
'settings.nav.notif': 'Notifications',
'settings.nav.danger': 'Danger zone',
@@ -459,7 +458,7 @@ var TRANSLATIONS = {
// Workspace setup
'workspace_setup.title': 'Workspace settings',
'workspace_setup.page_subtitle': 'Configure your workspace identity and team members.',
'workspace_setup.page_subtitle': 'Configure the identity of your self-hosted workspace.',
'workspace_setup.back': 'Back',
'workspace_setup.identity.title': 'Workspace identity',
'workspace_setup.identity.avatar_hint': 'Avatar is derived from your workspace name.',
@@ -470,68 +469,26 @@ var TRANSLATIONS = {
'workspace_setup.slug_hint': 'Only lowercase letters, numbers, and hyphens. Used in MCP endpoint URLs.',
'workspace_setup.description': 'Description',
'workspace_setup.description_placeholder': 'What does this workspace do?',
'workspace_setup.members.title': 'Team members',
'workspace_setup.members.invite': 'Invite member',
'workspace_setup.members.email': 'Email address',
'workspace_setup.members.role': 'Role',
'workspace_setup.members.send_invite': 'Send invite',
'workspace_setup.members.cancel': 'Cancel',
'workspace_setup.members.invite_sent': '✓ Invite sent.',
'workspace_setup.members.you': '(you)',
'workspace_setup.members.today': 'Today',
'workspace_setup.members.days_ago.one': '{count} day ago',
'workspace_setup.members.days_ago.other': '{count} days ago',
'workspace_setup.members.week_ago': '1 week ago',
'workspace_setup.members.never': 'Never',
'workspace_setup.members.pending': 'Pending invites',
'workspace_setup.members.invited_pending': 'Invited {date} · pending',
'workspace_setup.members.revoke': 'Revoke invite',
'workspace_setup.members.remove': 'Remove member',
'workspace_setup.roles.title': 'Roles & permissions',
'workspace_setup.roles.owner_body': 'Full workspace control, billing access, can transfer or delete the workspace.',
'workspace_setup.roles.admin_body': 'Manage members and roles, create and edit all operations and agents, manage API keys.',
'workspace_setup.roles.developer_body': 'Create and edit operations and agents. Cannot manage members or workspace settings.',
'workspace_setup.roles.viewer_body': 'Read-only access to operations, agents, and logs.',
'workspace_setup.invite.title': 'Invite team members',
'workspace_setup.invite.add_person': '+ Add person',
'workspace_setup.invite.later': 'You can invite more people later from Workspace settings.',
'workspace_setup.actions.create': 'Create workspace',
'workspace_setup.actions.save': 'Save changes',
'workspace_setup.create.title': 'Create a new workspace',
'workspace_setup.create.subtitle': "A workspace is a shared environment for your team's MCP operations and agents. Each workspace gets its own MCP endpoint namespace.",
'workspace_setup.create.footer': "You'll be the Owner of this workspace. You can invite additional members after creation.",
'workspace_setup.create.subtitle': 'This Community installation uses one workspace for MCP operations and agents.',
'workspace_setup.create.footer': 'This Community installation uses one workspace.',
'workspace_setup.danger.title': 'Danger zone',
'workspace_setup.danger.export_title': 'Export all data',
'workspace_setup.danger.export_body': 'Download a JSON snapshot of workspace settings, memberships, invitations, operations, agents and agent access keys.',
'workspace_setup.danger.delete_title': 'Delete workspace',
'workspace_setup.danger.delete_body': 'Permanently deletes all operations, keys, logs and settings. This action cannot be undone. You will be logged out immediately.',
'workspace_setup.danger.export_body': 'Download a JSON snapshot of workspace settings, operations, agents, secrets, usage data and agent access keys.',
'workspace_setup.export': 'Export',
'workspace_setup.delete': 'Delete workspace',
'workspace_setup.role.owner': 'Owner',
'workspace_setup.role.admin': 'Admin',
'workspace_setup.role.operator': 'Developer',
'workspace_setup.role.viewer': 'Viewer',
'workspace_setup.member_count.one': '{count} member',
'workspace_setup.member_count.other': '{count} members',
'workspace_setup.saving_create': 'Creating…',
'workspace_setup.saving_update': 'Saving…',
'workspace_setup.saved': 'Saved ✓',
'workspace_setup.save_error': 'Failed to save workspace',
'workspace_setup.save_error_title': 'Save failed',
'workspace_setup.invite_error': 'Failed to send invite',
'workspace_setup.invite_error_title': 'Invite failed',
'workspace_setup.role_error': 'Failed to update role',
'workspace_setup.role_error_title': 'Role update failed',
'workspace_setup.remove_confirm': 'Remove {name} from this workspace?',
'workspace_setup.remove_error': 'Failed to remove member',
'workspace_setup.remove_error_title': 'Member removal failed',
'workspace_setup.revoke_error': 'Failed to revoke invite',
'workspace_setup.revoke_error_title': 'Invite revoke failed',
'workspace_setup.export_error': 'Failed to export workspace',
'workspace_setup.export_error_title': 'Export failed',
'workspace_setup.delete_confirm': 'Delete this workspace? This cannot be undone.',
'workspace_setup.delete_error': 'Failed to delete workspace',
'workspace_setup.delete_error_title': 'Delete failed',
'workspace.switch_error': 'Failed to switch workspace',
'workspace.switch_error_title': 'Workspace switch failed',
'workspace_setup.custom_protocol.rest': 'REST',
@@ -843,7 +800,7 @@ var TRANSLATIONS = {
'agents.subtitle.community': 'Dedicated MCP endpoints for AI agents. Community keeps machine access on static agent keys.',
'agents.new': 'New agent',
'agents.limit.title': 'Agent limit reached',
'agents.limit.message': 'This Community build allows up to {limit} AI agent. Upgrade the edition or remove an existing agent to add another one.',
'agents.limit.message': 'This edition allows up to {limit} AI agent. Remove an existing agent to add another one.',
'agents.stats.total': 'Total agents',
'agents.stats.total_sub': 'across this workspace',
'agents.stats.published': 'Published',
@@ -949,17 +906,9 @@ var TRANSLATIONS = {
'login.email': 'Email',
'login.password': 'Password',
'login.submit': 'Sign in',
'login.sso': 'Continue with Google',
'login.email_label': 'Email address',
'login.email_placeholder': 'you@acme.com',
'login.forgot': 'Forgot password?',
'login.divider': 'or continue with',
'login.sso_short': 'Google SSO',
'login.request_prefix': "Don't have an account?",
'login.request_link': 'Request access',
'login.planned_badge': 'Planned',
'login.password_only': 'Sign in with email and password.',
'login.coming_soon': 'Password reset and SSO will be added later.',
'login.error.required': 'Please enter your email and password.',
'login.error.invalid': 'Invalid email or password. Please try again.',
'login.error.generic': 'Unable to sign in right now. Please try again.',
@@ -1325,7 +1274,6 @@ var TRANSLATIONS = {
'settings.title': 'Настройки',
'settings.nav.workspace': 'Воркспейс',
'settings.nav.profile': 'Профиль',
'settings.nav.members': 'Участники',
'settings.nav.security': 'Безопасность',
'settings.nav.notif': 'Уведомления',
'settings.nav.danger': 'Опасная зона',
@@ -1424,7 +1372,7 @@ var TRANSLATIONS = {
// Workspace setup
'workspace_setup.title': 'Настройки воркспейса',
'workspace_setup.page_subtitle': 'Настройте идентичность воркспейса и состав команды.',
'workspace_setup.page_subtitle': 'Настройте идентичность вашего self-hosted воркспейса.',
'workspace_setup.back': 'Назад',
'workspace_setup.identity.title': 'Идентичность воркспейса',
'workspace_setup.identity.avatar_hint': 'Аватар формируется из имени воркспейса.',
@@ -1435,72 +1383,26 @@ var TRANSLATIONS = {
'workspace_setup.slug_hint': 'Только строчные буквы, цифры и дефисы. Используется в URL MCP endpoint-ов.',
'workspace_setup.description': 'Описание',
'workspace_setup.description_placeholder': 'Чем занимается этот воркспейс?',
'workspace_setup.members.title': 'Участники команды',
'workspace_setup.members.invite': 'Пригласить участника',
'workspace_setup.members.email': 'Email адрес',
'workspace_setup.members.role': 'Роль',
'workspace_setup.members.send_invite': 'Отправить приглашение',
'workspace_setup.members.cancel': 'Отмена',
'workspace_setup.members.invite_sent': '✓ Приглашение отправлено.',
'workspace_setup.members.you': '(вы)',
'workspace_setup.members.today': 'Сегодня',
'workspace_setup.members.days_ago.one': '{count} день назад',
'workspace_setup.members.days_ago.few': '{count} дня назад',
'workspace_setup.members.days_ago.many': '{count} дней назад',
'workspace_setup.members.days_ago.other': '{count} дня назад',
'workspace_setup.members.week_ago': '1 неделю назад',
'workspace_setup.members.never': 'Никогда',
'workspace_setup.members.pending': 'Ожидающие приглашения',
'workspace_setup.members.invited_pending': 'Приглашен {date} · ожидает принятия',
'workspace_setup.members.revoke': 'Отозвать приглашение',
'workspace_setup.members.remove': 'Удалить участника',
'workspace_setup.roles.title': 'Роли и права',
'workspace_setup.roles.owner_body': 'Полный контроль над воркспейсом, доступ к биллингу, возможность передать или удалить воркспейс.',
'workspace_setup.roles.admin_body': 'Управление участниками и ролями, создание и редактирование всех операций и агентов, управление API-ключами.',
'workspace_setup.roles.developer_body': 'Создание и редактирование операций и агентов. Нельзя управлять участниками или настройками воркспейса.',
'workspace_setup.roles.viewer_body': 'Доступ только на чтение к операциям, агентам и логам.',
'workspace_setup.invite.title': 'Пригласить участников команды',
'workspace_setup.invite.add_person': '+ Добавить человека',
'workspace_setup.invite.later': 'Позже можно пригласить людей из настроек воркспейса.',
'workspace_setup.actions.create': 'Создать воркспейс',
'workspace_setup.actions.save': 'Сохранить изменения',
'workspace_setup.create.title': 'Создать новый воркспейс',
'workspace_setup.create.subtitle': 'Воркспейс — это общее окружение для MCP-операций и агентов вашей команды. У каждого воркспейса свой namespace MCP endpoint-ов.',
'workspace_setup.create.footer': 'Вы станете владельцем этого воркспейса. После создания можно пригласить дополнительных участников.',
'workspace_setup.create.subtitle': 'В Community используется один воркспейс для MCP-операций и агентов.',
'workspace_setup.create.footer': 'В Community используется один воркспейс.',
'workspace_setup.danger.title': 'Опасная зона',
'workspace_setup.danger.export_title': 'Экспортировать все данные',
'workspace_setup.danger.export_body': 'Скачать JSON-снимок настроек воркспейса, участников, приглашений, операций, агентов и ключей доступа агентов.',
'workspace_setup.danger.delete_title': 'Удалить воркспейс',
'workspace_setup.danger.delete_body': 'Безвозвратно удаляет все операции, ключи, логи и настройки. Действие нельзя отменить. Вы будете немедленно разлогинены.',
'workspace_setup.danger.export_body': 'Скачать JSON-снимок настроек воркспейса, операций, агентов, секретов, данных использования и ключей доступа агентов.',
'workspace_setup.export': 'Экспорт',
'workspace_setup.delete': 'Удалить воркспейс',
'workspace_setup.role.owner': 'Владелец',
'workspace_setup.role.admin': 'Администратор',
'workspace_setup.role.operator': 'Разработчик',
'workspace_setup.role.viewer': 'Наблюдатель',
'workspace_setup.member_count.one': '{count} участник',
'workspace_setup.member_count.few': '{count} участника',
'workspace_setup.member_count.many': '{count} участников',
'workspace_setup.member_count.other': '{count} участника',
'workspace_setup.saving_create': 'Создание…',
'workspace_setup.saving_update': 'Сохранение…',
'workspace_setup.saved': 'Сохранено ✓',
'workspace_setup.save_error': 'Не удалось сохранить воркспейс',
'workspace_setup.save_error_title': 'Не удалось сохранить',
'workspace_setup.invite_error': 'Не удалось отправить приглашение',
'workspace_setup.invite_error_title': 'Не удалось пригласить',
'workspace_setup.role_error': 'Не удалось обновить роль',
'workspace_setup.role_error_title': 'Не удалось обновить роль',
'workspace_setup.remove_confirm': 'Удалить {name} из этого воркспейса?',
'workspace_setup.remove_error': 'Не удалось удалить участника',
'workspace_setup.remove_error_title': 'Не удалось удалить участника',
'workspace_setup.revoke_error': 'Не удалось отозвать приглашение',
'workspace_setup.revoke_error_title': 'Не удалось отозвать приглашение',
'workspace_setup.export_error': 'Не удалось экспортировать воркспейс',
'workspace_setup.export_error_title': 'Не удалось экспортировать',
'workspace_setup.delete_confirm': 'Удалить этот воркспейс? Действие нельзя отменить.',
'workspace_setup.delete_error': 'Не удалось удалить воркспейс',
'workspace_setup.delete_error_title': 'Не удалось удалить',
'workspace.switch_error': 'Не удалось переключить воркспейс',
'workspace.switch_error_title': 'Не удалось переключить воркспейс',
'workspace_setup.custom_protocol.rest': 'REST',
@@ -1816,7 +1718,7 @@ var TRANSLATIONS = {
'agents.subtitle.community': 'Отдельные MCP endpoint-ы для AI-агентов. В Community машинный доступ держится на статических ключах агента.',
'agents.new': 'Новый агент',
'agents.limit.title': 'Достигнут лимит агентов',
'agents.limit.message': 'В этой Community-сборке доступно не более {limit} AI-агента. Чтобы добавить еще одного, удалите существующего агента или перейдите на другую редакцию.',
'agents.limit.message': 'В этой редакции доступно не более {limit} AI-агента. Чтобы добавить еще одного, удалите существующего агента.',
'agents.stats.total': 'Всего агентов',
'agents.stats.total_sub': 'в этом воркспейсе',
'agents.stats.published': 'Опубликованы',
@@ -1922,17 +1824,9 @@ var TRANSLATIONS = {
'login.email': 'Email',
'login.password': 'Пароль',
'login.submit': 'Войти',
'login.sso': 'Войти через Google',
'login.email_label': 'Email адрес',
'login.email_placeholder': 'you@acme.com',
'login.forgot': 'Забыли пароль?',
'login.divider': 'или продолжить через',
'login.sso_short': 'Google SSO',
'login.request_prefix': 'Нет аккаунта?',
'login.request_link': 'Запросить доступ',
'login.planned_badge': 'Запланировано',
'login.password_only': 'Войдите с помощью email и пароля.',
'login.coming_soon': 'Сброс пароля и SSO появятся позже.',
'login.error.required': 'Введите email и пароль.',
'login.error.invalid': 'Неверный email или пароль. Попробуйте еще раз.',
'login.error.generic': 'Сейчас не удается войти. Попробуйте еще раз.',