feat: project detail UX improvements
- Tag picker: replace raw text input with EntityPicker modal showing registry tags (auto-detected by image hostname) and local images. Fix URL encoding bug where encodeURIComponent encoded slashes in image paths, causing 502 on registry tag API. - Stage editing: inline edit form for name, tag pattern, max instances, CPU/memory limits, auto-deploy and proxy toggles. - Stage delete: use ConfirmDialog modal instead of window.confirm(). Immediately remove stage from local state after deletion. - Project-level env: add/edit/delete project env vars (stored in project.env JSON field). Move stage selector inline with Stage Overrides heading so it's clear project env is independent. - Access list UX: rename "None (public)" to "Global default", clarify help text. - Add missing i18n keys for all new UI (en + ru).
This commit is contained in:
@@ -33,7 +33,14 @@
|
||||
"loadFailed": "Не удалось загрузить панель",
|
||||
"staleContainers": "Устаревшие контейнеры",
|
||||
"unusedImagesWarning": "Неиспользуемые Docker-образы занимают дисковое пространство",
|
||||
"unusedImages": "неиспользуемых образов"
|
||||
"unusedImages": "неиспользуемых образов",
|
||||
"staticSites": "Статические сайты",
|
||||
"totalSites": "Всего сайтов",
|
||||
"deployedSites": "развёрнуто",
|
||||
"failedSites": "с ошибкой",
|
||||
"noSites": "Статических сайтов пока нет.",
|
||||
"addFirstSite": "Разверните первый сайт",
|
||||
"viewAllSites": "Все сайты"
|
||||
},
|
||||
"projects": {
|
||||
"title": "Проекты",
|
||||
@@ -80,6 +87,11 @@
|
||||
"loadingTags": "Загрузка тегов...",
|
||||
"chooseTag": "Выберите тег...",
|
||||
"enterTag": "Введите тег образа (напр., dev-abc123)",
|
||||
"registryTag": "Реестр",
|
||||
"localTag": "Локальный",
|
||||
"alsoLocal": "Также доступен локально",
|
||||
"searchTags": "Поиск тегов...",
|
||||
"deployTag": "Тег",
|
||||
"deploy": "Развернуть",
|
||||
"deploying": "Развёртывание...",
|
||||
"recentDeploys": "Последние деплои",
|
||||
@@ -107,7 +119,7 @@
|
||||
"autoDeployLabel": "Авто-деплой",
|
||||
"enableProxy": "Включить прокси",
|
||||
"accessListId": "ID списка доступа NPM",
|
||||
"accessListIdHelp": "Переопределение для проекта. 0 = использовать глобальное из настроек NPM.",
|
||||
"accessListIdHelp": "Переопределить глобальный список доступа для этого проекта. Очистите, чтобы наследовать из настроек NPM.",
|
||||
"localImages": "Локальные Docker-образы",
|
||||
"imageTag": "Тег",
|
||||
"imageId": "ID образа",
|
||||
@@ -124,6 +136,8 @@
|
||||
"deleteStage": "Удалить стадию",
|
||||
"deleteStageConfirm": "Удалить стадию \"{name}\"?",
|
||||
"stageCreated": "Стадия \"{name}\" создана",
|
||||
"stageUpdated": "Стадия обновлена",
|
||||
"stageUpdateFailed": "Не удалось обновить стадию",
|
||||
"stageDeleted": "Стадия \"{name}\" удалена",
|
||||
"projectUpdated": "Проект обновлён",
|
||||
"updateFailed": "Не удалось обновить проект",
|
||||
@@ -135,6 +149,7 @@
|
||||
"description": "Управление переопределениями переменных окружения на уровне стадий. Значения стадий переопределяют значения проекта.",
|
||||
"stage": "Стадия",
|
||||
"projectDefaults": "Значения проекта по умолчанию",
|
||||
"noProjectEnv": "Переменные окружения на уровне проекта ещё не определены.",
|
||||
"stageOverrides": "Переопределения стадии",
|
||||
"key": "Ключ",
|
||||
"value": "Значение",
|
||||
@@ -160,7 +175,9 @@
|
||||
"updateFailed": "Не удалось обновить переменную",
|
||||
"deleteFailed": "Не удалось удалить переменную",
|
||||
"loadEnvFailed": "Не удалось загрузить переменные",
|
||||
"leaveEmptyToKeep": "Оставьте пустым, чтобы сохранить текущее"
|
||||
"leaveEmptyToKeep": "Оставьте пустым, чтобы сохранить текущее",
|
||||
"deleteTitle": "Удалить переменную окружения",
|
||||
"deleteMessage": "Вы уверены, что хотите удалить эту переменную окружения? Это действие нельзя отменить."
|
||||
},
|
||||
"volumeEditor": {
|
||||
"title": "Тома",
|
||||
@@ -405,7 +422,7 @@
|
||||
"remoteModeWarning": "Требуется IP сервера в общих настройках. Порты автоматически привязываются к случайным портам хоста.",
|
||||
"accessList": "Список доступа по умолчанию",
|
||||
"accessListHelp": "Список доступа NPM для HTTP-аутентификации на прокси-хостах. Можно переопределить для каждого проекта.",
|
||||
"noAccessList": "Нет (публичный)",
|
||||
"noAccessList": "Глобальные настройки",
|
||||
"selectAccessList": "Выберите список доступа",
|
||||
"noAccessLists": "Списки доступа в NPM не найдены",
|
||||
"accessListLoadFailed": "Не удалось загрузить списки доступа"
|
||||
@@ -560,6 +577,8 @@
|
||||
"openSite": "Открыть сайт",
|
||||
"confirmDelete": "Удалить сайт",
|
||||
"confirmDeleteMsg": "Это удалит сайт и его контейнер",
|
||||
"confirmDeleteSecret": "Удалить секрет",
|
||||
"confirmDeleteSecretMsg": "Вы уверены, что хотите удалить секрет",
|
||||
"siteInfo": "Информация о сайте",
|
||||
"folder": "Папка",
|
||||
"syncTrigger": "Триггер синхр.",
|
||||
@@ -609,13 +628,26 @@
|
||||
"provider": "Git-провайдер",
|
||||
"detectedProvider": "Автоопределён",
|
||||
"browseRepos": "Обзор репозиториев",
|
||||
"selectRepo": "Выберите репозиторий"
|
||||
"selectRepo": "Выберите репозиторий",
|
||||
"storage": "Хранилище данных",
|
||||
"enableStorage": "Включить хранилище данных",
|
||||
"storageHelp": "Подключает Docker-том в /app/data, чтобы Deno-бэкенд мог читать и записывать файлы, сохраняющиеся между деплоями.",
|
||||
"storageLimitMB": "Лимит хранилища (МБ)",
|
||||
"storageLimitHelp": "Максимальный размер хранилища в мегабайтах. 0 = без ограничений.",
|
||||
"storageVolume": "Том",
|
||||
"dataPath": "Путь к данным",
|
||||
"storageMountPath": "Путь монтирования",
|
||||
"storageLimit": "Лимит",
|
||||
"storageUsed": "Использовано",
|
||||
"storageOfLimit": "от лимита использовано",
|
||||
"unlimited": "Без ограничений"
|
||||
},
|
||||
"common": {
|
||||
"cancel": "Отмена",
|
||||
"confirm": "Подтвердить",
|
||||
"delete": "Удалить",
|
||||
"edit": "Изменить",
|
||||
"change": "Изменить",
|
||||
"save": "Сохранить",
|
||||
"retry": "Повторить",
|
||||
"loading": "Загрузка...",
|
||||
|
||||
Reference in New Issue
Block a user