Card bulk operations, remove expand/collapse, graph color picker fix

- Bulk selection mode: Ctrl+Click or toggle button to enter, Escape to exit
- Shift+Click for range select, bottom toolbar with SVG icon action buttons
- All CardSections wired with bulk actions: Delete everywhere,
  Start/Stop for targets, Enable/Disable for automations
- Remove expand/collapse all buttons (no collapsible sections remain)
- Fix graph node color picker overlay persisting after outside click
- Add Icons section to frontend.md conventions
- Add trash2, listChecks, circleOff icons to icon system
- Backend: processing loop performance improvements (monotonic timestamps,
  deque-based FPS tracking)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-19 01:21:27 +03:00
parent f4647027d2
commit 122e95545c
18 changed files with 771 additions and 149 deletions

View File

@@ -1722,5 +1722,19 @@
"section.empty.sync_clocks": "No sync clocks yet. Click + to add one.",
"section.empty.cspt": "No CSS processing templates yet. Click + to add one.",
"section.empty.automations": "No automations yet. Click + to add one.",
"section.empty.scenes": "No scene presets yet. Click + to add one."
"section.empty.scenes": "No scene presets yet. Click + to add one.",
"bulk.select": "Select",
"bulk.cancel": "Cancel",
"bulk.selected_count.one": "{count} selected",
"bulk.selected_count.other": "{count} selected",
"bulk.select_all": "Select all",
"bulk.deselect_all": "Deselect all",
"bulk.delete": "Delete",
"bulk.start": "Start",
"bulk.stop": "Stop",
"bulk.enable": "Enable",
"bulk.disable": "Disable",
"bulk.confirm_delete.one": "Delete {count} item?",
"bulk.confirm_delete.other": "Delete {count} items?"
}

View File

@@ -1722,5 +1722,21 @@
"section.empty.sync_clocks": "Синхронных часов пока нет. Нажмите + для добавления.",
"section.empty.cspt": "Шаблонов обработки полос пока нет. Нажмите + для добавления.",
"section.empty.automations": "Автоматизаций пока нет. Нажмите + для добавления.",
"section.empty.scenes": "Пресетов сцен пока нет. Нажмите + для добавления."
"section.empty.scenes": "Пресетов сцен пока нет. Нажмите + для добавления.",
"bulk.select": "Выбрать",
"bulk.cancel": "Отмена",
"bulk.selected_count.one": "{count} выбран",
"bulk.selected_count.few": "{count} выбрано",
"bulk.selected_count.many": "{count} выбрано",
"bulk.select_all": "Выбрать все",
"bulk.deselect_all": "Снять выбор",
"bulk.delete": "Удалить",
"bulk.start": "Запустить",
"bulk.stop": "Остановить",
"bulk.enable": "Включить",
"bulk.disable": "Выключить",
"bulk.confirm_delete.one": "Удалить {count} элемент?",
"bulk.confirm_delete.few": "Удалить {count} элемента?",
"bulk.confirm_delete.many": "Удалить {count} элементов?"
}

View File

@@ -1722,5 +1722,19 @@
"section.empty.sync_clocks": "暂无同步时钟。点击 + 添加。",
"section.empty.cspt": "暂无 CSS 处理模板。点击 + 添加。",
"section.empty.automations": "暂无自动化。点击 + 添加。",
"section.empty.scenes": "暂无场景预设。点击 + 添加。"
"section.empty.scenes": "暂无场景预设。点击 + 添加。",
"bulk.select": "选择",
"bulk.cancel": "取消",
"bulk.selected_count.one": "已选 {count} 项",
"bulk.selected_count.other": "已选 {count} 项",
"bulk.select_all": "全选",
"bulk.deselect_all": "取消全选",
"bulk.delete": "删除",
"bulk.start": "启动",
"bulk.stop": "停止",
"bulk.enable": "启用",
"bulk.disable": "禁用",
"bulk.confirm_delete.one": "删除 {count} 项?",
"bulk.confirm_delete.other": "删除 {count} 项?"
}