Rename profiles to automations across backend and frontend

Rename the "profiles" entity to "automations" throughout the entire
codebase for clarity. Updates Python models, storage, API routes/schemas,
engine, frontend JS modules, HTML templates, CSS classes, i18n keys
(en/ru/zh), dashboard, tutorials, and command palette.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 18:01:39 +03:00
parent da3e53e1f1
commit 21248e2dc9
39 changed files with 1180 additions and 1179 deletions

View File

@@ -220,10 +220,10 @@
"calibration.tip.skip_leds_start": "Skip LEDs at the start of the strip — skipped LEDs stay off",
"calibration.tip.skip_leds_end": "Skip LEDs at the end of the strip — skipped LEDs stay off",
"tour.welcome": "Welcome to LED Grab! This quick tour will show you around the interface. Use arrow keys or buttons to navigate.",
"tour.dashboard": "Dashboard — live overview of running targets, profiles, and device health at a glance.",
"tour.dashboard": "Dashboard — live overview of running targets, automations, and device health at a glance.",
"tour.targets": "Targets — add WLED devices, configure LED targets with capture settings and calibration.",
"tour.sources": "Sources — manage capture templates, picture sources, audio sources, and color strips.",
"tour.profiles": "Profiles — group targets and automate switching with time, audio, or value conditions.",
"tour.automations": "Automations — automate scene switching with time, audio, or value conditions.",
"tour.settings": "Settings — backup and restore configuration, manage auto-backups.",
"tour.api": "API Docs — interactive REST API documentation powered by Swagger.",
"tour.search": "Search — quickly find and navigate to any entity with Ctrl+K.",
@@ -234,7 +234,7 @@
"tour.dash.perf": "Performance — real-time FPS charts, latency metrics, and poll interval control.",
"tour.dash.running": "Running targets — live streaming metrics and quick stop control.",
"tour.dash.stopped": "Stopped targets — ready to start with one click.",
"tour.dash.profiles": "Profiles — active profile status and quick enable/disable toggle.",
"tour.dash.automations": "Automations — active automation status and quick enable/disable toggle.",
"tour.tgt.led_tab": "LED tab — standard LED strip targets with device and color strip configuration.",
"tour.tgt.devices": "Devices — your WLED controllers discovered on the network.",
"tour.tgt.css": "Color Strips — define how screen regions map to LED segments.",
@@ -245,10 +245,10 @@
"tour.src.static": "Static Image — test your setup with image files instead of live capture.",
"tour.src.processed": "Processed — apply post-processing effects like blur, brightness, or color correction.",
"tour.src.audio": "Audio — analyze microphone or system audio for reactive LED effects.",
"tour.src.value": "Value — numeric data sources used as conditions in profile automation.",
"tour.prof.list": "Profiles — automate target control based on time, audio, or value conditions.",
"tour.prof.add": "Click + to create a new profile with targets and activation conditions.",
"tour.prof.card": "Each card shows profile status, conditions, and quick controls to edit or toggle.",
"tour.src.value": "Value — numeric data sources used as conditions in automations.",
"tour.auto.list": "Automations — automate scene activation based on time, audio, or value conditions.",
"tour.auto.add": "Click + to create a new automation with conditions and a scene to activate.",
"tour.auto.card": "Each card shows automation status, conditions, and quick controls to edit or toggle.",
"calibration.tutorial.start": "Start tutorial",
"calibration.overlay_toggle": "Overlay",
"calibration.start_position": "Starting Position:",
@@ -531,7 +531,7 @@
"dashboard.device": "Device",
"dashboard.stop_all": "Stop All",
"dashboard.failed": "Failed to load dashboard",
"dashboard.section.profiles": "Profiles",
"dashboard.section.automations": "Automations",
"dashboard.section.scenes": "Scene Presets",
"dashboard.targets": "Targets",
"dashboard.section.performance": "System Performance",
@@ -541,83 +541,83 @@
"dashboard.perf.unavailable": "unavailable",
"dashboard.perf.color": "Chart color",
"dashboard.poll_interval": "Refresh interval",
"profiles.title": "Profiles",
"profiles.empty": "No profiles configured. Create one to automate target activation.",
"profiles.add": "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 — profile is always active when enabled",
"profiles.condition.always": "Always",
"profiles.condition.always.hint": "Profile activates immediately when enabled and stays active. Use this to auto-start targets on server startup.",
"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.condition.application.match_type.topmost_fullscreen": "Topmost + Fullscreen",
"profiles.condition.application.match_type.fullscreen": "Fullscreen",
"profiles.condition.time_of_day": "Time of Day",
"profiles.condition.time_of_day.start_time": "Start Time:",
"profiles.condition.time_of_day.end_time": "End Time:",
"profiles.condition.time_of_day.overnight_hint": "For overnight ranges (e.g. 22:0006:00), set start time after end time.",
"profiles.condition.system_idle": "System Idle",
"profiles.condition.system_idle.idle_minutes": "Idle Timeout (minutes):",
"profiles.condition.system_idle.mode": "Trigger Mode:",
"profiles.condition.system_idle.when_idle": "When idle",
"profiles.condition.system_idle.when_active": "When active",
"profiles.condition.display_state": "Display State",
"profiles.condition.display_state.state": "Monitor State:",
"profiles.condition.display_state.on": "On",
"profiles.condition.display_state.off": "Off (sleeping)",
"profiles.condition.mqtt": "MQTT",
"profiles.condition.mqtt.topic": "Topic:",
"profiles.condition.mqtt.payload": "Payload:",
"profiles.condition.mqtt.match_mode": "Match Mode:",
"profiles.condition.mqtt.match_mode.exact": "Exact",
"profiles.condition.mqtt.match_mode.contains": "Contains",
"profiles.condition.mqtt.match_mode.regex": "Regex",
"profiles.condition.mqtt.hint": "Activate when an MQTT topic receives a matching payload",
"profiles.scene": "Scene:",
"profiles.scene.hint": "Scene preset to activate when conditions are met",
"profiles.scene.search_placeholder": "Search scenes...",
"profiles.scene.none_selected": "No scene",
"profiles.scene.none_available": "No scenes available",
"profiles.deactivation_mode": "Deactivation:",
"profiles.deactivation_mode.hint": "What happens when conditions stop matching",
"profiles.deactivation_mode.none": "None — keep current state",
"profiles.deactivation_mode.revert": "Revert to previous state",
"profiles.deactivation_mode.fallback_scene": "Activate fallback scene",
"profiles.deactivation_scene": "Fallback Scene:",
"profiles.deactivation_scene.hint": "Scene to activate when this profile deactivates",
"profiles.status.active": "Active",
"profiles.status.inactive": "Inactive",
"profiles.status.disabled": "Disabled",
"profiles.action.disable": "Disable",
"profiles.last_activated": "Last activated",
"profiles.logic.and": " AND ",
"profiles.logic.or": " OR ",
"profiles.logic.all": "ALL",
"profiles.logic.any": "ANY",
"profiles.updated": "Profile updated",
"profiles.created": "Profile created",
"profiles.deleted": "Profile deleted",
"profiles.error.name_required": "Name is required",
"automations.title": "Automations",
"automations.empty": "No automations configured. Create one to automate scene activation.",
"automations.add": "Add Automation",
"automations.edit": "Edit Automation",
"automations.delete.confirm": "Delete automation \"{name}\"?",
"automations.name": "Name:",
"automations.name.hint": "A descriptive name for this automation",
"automations.enabled": "Enabled:",
"automations.enabled.hint": "Disabled automations won't activate even when conditions are met",
"automations.condition_logic": "Condition Logic:",
"automations.condition_logic.hint": "How multiple conditions are combined: ANY (OR) or ALL (AND)",
"automations.condition_logic.or": "Any condition (OR)",
"automations.condition_logic.and": "All conditions (AND)",
"automations.conditions": "Conditions:",
"automations.conditions.hint": "Rules that determine when this automation activates",
"automations.conditions.add": "Add Condition",
"automations.conditions.empty": "No conditions — automation is always active when enabled",
"automations.condition.always": "Always",
"automations.condition.always.hint": "Automation activates immediately when enabled and stays active. Use this to auto-start scenes on server startup.",
"automations.condition.application": "Application",
"automations.condition.application.apps": "Applications:",
"automations.condition.application.apps.hint": "Process names, one per line (e.g. firefox.exe)",
"automations.condition.application.browse": "Browse",
"automations.condition.application.search": "Filter processes...",
"automations.condition.application.no_processes": "No processes found",
"automations.condition.application.match_type": "Match Type:",
"automations.condition.application.match_type.hint": "How to detect the application",
"automations.condition.application.match_type.running": "Running",
"automations.condition.application.match_type.topmost": "Topmost (foreground)",
"automations.condition.application.match_type.topmost_fullscreen": "Topmost + Fullscreen",
"automations.condition.application.match_type.fullscreen": "Fullscreen",
"automations.condition.time_of_day": "Time of Day",
"automations.condition.time_of_day.start_time": "Start Time:",
"automations.condition.time_of_day.end_time": "End Time:",
"automations.condition.time_of_day.overnight_hint": "For overnight ranges (e.g. 22:0006:00), set start time after end time.",
"automations.condition.system_idle": "System Idle",
"automations.condition.system_idle.idle_minutes": "Idle Timeout (minutes):",
"automations.condition.system_idle.mode": "Trigger Mode:",
"automations.condition.system_idle.when_idle": "When idle",
"automations.condition.system_idle.when_active": "When active",
"automations.condition.display_state": "Display State",
"automations.condition.display_state.state": "Monitor State:",
"automations.condition.display_state.on": "On",
"automations.condition.display_state.off": "Off (sleeping)",
"automations.condition.mqtt": "MQTT",
"automations.condition.mqtt.topic": "Topic:",
"automations.condition.mqtt.payload": "Payload:",
"automations.condition.mqtt.match_mode": "Match Mode:",
"automations.condition.mqtt.match_mode.exact": "Exact",
"automations.condition.mqtt.match_mode.contains": "Contains",
"automations.condition.mqtt.match_mode.regex": "Regex",
"automations.condition.mqtt.hint": "Activate when an MQTT topic receives a matching payload",
"automations.scene": "Scene:",
"automations.scene.hint": "Scene preset to activate when conditions are met",
"automations.scene.search_placeholder": "Search scenes...",
"automations.scene.none_selected": "No scene",
"automations.scene.none_available": "No scenes available",
"automations.deactivation_mode": "Deactivation:",
"automations.deactivation_mode.hint": "What happens when conditions stop matching",
"automations.deactivation_mode.none": "None — keep current state",
"automations.deactivation_mode.revert": "Revert to previous state",
"automations.deactivation_mode.fallback_scene": "Activate fallback scene",
"automations.deactivation_scene": "Fallback Scene:",
"automations.deactivation_scene.hint": "Scene to activate when this automation deactivates",
"automations.status.active": "Active",
"automations.status.inactive": "Inactive",
"automations.status.disabled": "Disabled",
"automations.action.disable": "Disable",
"automations.last_activated": "Last activated",
"automations.logic.and": " AND ",
"automations.logic.or": " OR ",
"automations.logic.all": "ALL",
"automations.logic.any": "ANY",
"automations.updated": "Automation updated",
"automations.created": "Automation created",
"automations.deleted": "Automation deleted",
"automations.error.name_required": "Name is required",
"scenes.title": "Scenes",
"scenes.add": "Capture Scene",
"scenes.edit": "Edit Scene",
@@ -633,7 +633,7 @@
"scenes.delete": "Delete scene",
"scenes.targets_count": "targets",
"scenes.devices_count": "devices",
"scenes.profiles_count": "profiles",
"scenes.automations_count": "automations",
"scenes.captured": "Scene captured",
"scenes.updated": "Scene updated",
"scenes.activated": "Scene activated",
@@ -1016,7 +1016,7 @@
"search.group.targets": "LED Targets",
"search.group.kc_targets": "Key Colors Targets",
"search.group.css": "Color Strip Sources",
"search.group.profiles": "Profiles",
"search.group.automations": "Automations",
"search.group.streams": "Picture Streams",
"search.group.capture_templates": "Capture Templates",
"search.group.pp_templates": "Post-Processing Templates",
@@ -1025,7 +1025,7 @@
"search.group.value": "Value Sources",
"search.group.scenes": "Scene Presets",
"settings.backup.label": "Backup Configuration",
"settings.backup.hint": "Download all configuration (devices, targets, streams, templates, profiles) as a single JSON file.",
"settings.backup.hint": "Download all configuration (devices, targets, streams, templates, automations) as a single JSON file.",
"settings.backup.button": "Download Backup",
"settings.backup.success": "Backup downloaded successfully",
"settings.backup.error": "Backup download failed",
@@ -1074,7 +1074,7 @@
"calibration.error.save_failed": "Failed to save calibration",
"calibration.error.led_count_mismatch": "Total LEDs must equal the device LED count",
"calibration.error.led_count_exceeded": "Calibrated LEDs exceed the total LED count",
"dashboard.error.profile_toggle_failed": "Failed to toggle profile",
"dashboard.error.automation_toggle_failed": "Failed to toggle automation",
"dashboard.error.start_failed": "Failed to start processing",
"dashboard.error.stop_failed": "Failed to stop processing",
"dashboard.error.autostart_toggle_failed": "Failed to toggle auto-start",