Add profiles UI, dashboard improvements, and AmbiLED support

- Profile management tab with cards, condition editor, process browser
- Dashboard: add profiles section, compact layout, type subtitles
- AmbiLED serial device support (raw RGB + 0xFF show command)
- Unified serial device handling (isSerialDevice helper)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-18 15:12:45 +03:00
parent 29d9b95885
commit aa105f3958
5 changed files with 914 additions and 59 deletions

View File

@@ -464,5 +464,42 @@
"dashboard.errors": "Errors",
"dashboard.device": "Device",
"dashboard.stop_all": "Stop All",
"dashboard.failed": "Failed to load dashboard"
"dashboard.failed": "Failed to load dashboard",
"dashboard.section.profiles": "Profiles",
"dashboard.targets": "Targets",
"profiles.title": "\uD83D\uDCCB Profiles",
"profiles.empty": "No profiles configured. Create one to automate target activation.",
"profiles.add": "\uD83D\uDCCB Add Profile",
"profiles.edit": "Edit Profile",
"profiles.delete.confirm": "Delete profile \"{name}\"?",
"profiles.name": "Name:",
"profiles.name.hint": "A descriptive name for this profile",
"profiles.enabled": "Enabled:",
"profiles.enabled.hint": "Disabled profiles won't activate even when conditions are met",
"profiles.condition_logic": "Condition Logic:",
"profiles.condition_logic.hint": "How multiple conditions are combined: ANY (OR) or ALL (AND)",
"profiles.condition_logic.or": "Any condition (OR)",
"profiles.condition_logic.and": "All conditions (AND)",
"profiles.conditions": "Conditions:",
"profiles.conditions.hint": "Rules that determine when this profile activates",
"profiles.conditions.add": "Add Condition",
"profiles.conditions.empty": "No conditions \u2014 profile will never activate automatically",
"profiles.condition.application": "Application",
"profiles.condition.application.apps": "Applications:",
"profiles.condition.application.apps.hint": "Process names, one per line (e.g. firefox.exe)",
"profiles.condition.application.browse": "Browse",
"profiles.condition.application.search": "Filter processes...",
"profiles.condition.application.no_processes": "No processes found",
"profiles.condition.application.match_type": "Match Type:",
"profiles.condition.application.match_type.hint": "How to detect the application",
"profiles.condition.application.match_type.running": "Running",
"profiles.condition.application.match_type.topmost": "Topmost (foreground)",
"profiles.targets": "Targets:",
"profiles.targets.hint": "Targets to start when this profile activates",
"profiles.targets.empty": "No targets available",
"profiles.status.active": "Active",
"profiles.status.inactive": "Inactive",
"profiles.status.disabled": "Disabled",
"profiles.last_activated": "Last activated"
}

View File

@@ -464,5 +464,42 @@
"dashboard.errors": "Ошибки",
"dashboard.device": "Устройство",
"dashboard.stop_all": "Остановить все",
"dashboard.failed": "Не удалось загрузить обзор"
"dashboard.failed": "Не удалось загрузить обзор",
"dashboard.section.profiles": "Профили",
"dashboard.targets": "Цели",
"profiles.title": "\uD83D\uDCCB Профили",
"profiles.empty": "Профили не настроены. Создайте профиль для автоматизации целей.",
"profiles.add": "\uD83D\uDCCB Добавить профиль",
"profiles.edit": "Редактировать профиль",
"profiles.delete.confirm": "Удалить профиль \"{name}\"?",
"profiles.name": "Название:",
"profiles.name.hint": "Описательное имя для профиля",
"profiles.enabled": "Включён:",
"profiles.enabled.hint": "Отключённые профили не активируются даже при выполнении условий",
"profiles.condition_logic": "Логика условий:",
"profiles.condition_logic.hint": "Как объединяются несколько условий: ЛЮБОЕ (ИЛИ) или ВСЕ (И)",
"profiles.condition_logic.or": "Любое условие (ИЛИ)",
"profiles.condition_logic.and": "Все условия (И)",
"profiles.conditions": "Условия:",
"profiles.conditions.hint": "Правила, определяющие когда профиль активируется",
"profiles.conditions.add": "Добавить условие",
"profiles.conditions.empty": "Нет условий \u2014 профиль не активируется автоматически",
"profiles.condition.application": "Приложение",
"profiles.condition.application.apps": "Приложения:",
"profiles.condition.application.apps.hint": "Имена процессов, по одному на строку (например firefox.exe)",
"profiles.condition.application.browse": "Обзор",
"profiles.condition.application.search": "Фильтр процессов...",
"profiles.condition.application.no_processes": "Процессы не найдены",
"profiles.condition.application.match_type": "Тип соответствия:",
"profiles.condition.application.match_type.hint": "Как определять наличие приложения",
"profiles.condition.application.match_type.running": "Запущено",
"profiles.condition.application.match_type.topmost": "На переднем плане",
"profiles.targets": "Цели:",
"profiles.targets.hint": "Цели для запуска при активации профиля",
"profiles.targets.empty": "Нет доступных целей",
"profiles.status.active": "Активен",
"profiles.status.inactive": "Неактивен",
"profiles.status.disabled": "Отключён",
"profiles.last_activated": "Последняя активация"
}