Add noise gate, palette quantization filters and drag-and-drop filter ordering

- Add noise gate filter: suppresses per-pixel color flicker below threshold
  using stateful frame comparison with pre-allocated int16 buffers
- Add palette quantization filter: maps pixels to nearest color in preset
  or custom hex palette, using chunked processing for memory efficiency
- Add "string" option type to filter schema system (base, API, frontend)
- Replace up/down buttons with pointer-event drag-and-drop in PP template
  filter list, with clone/placeholder feedback and modal auto-scroll
- Add frame_interpolation locale keys (was missing from all 3 locales)
- Update TODO.md: mark completed processing pipeline items

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-01 10:58:02 +03:00
parent 62b3d44e63
commit bf2fd5ca69
11 changed files with 460 additions and 16 deletions

View File

@@ -348,8 +348,7 @@
"filters.select_type": "Select filter type...",
"filters.add": "Add Filter",
"filters.remove": "Remove",
"filters.move_up": "Move Up",
"filters.move_down": "Move Down",
"filters.drag_to_reorder": "Drag to reorder",
"filters.empty": "No filters added. Use the selector below to add filters.",
"filters.brightness": "Brightness",
"filters.saturation": "Saturation",
@@ -360,6 +359,9 @@
"filters.flip": "Flip",
"filters.color_correction": "Color Correction",
"filters.filter_template": "Filter Template",
"filters.frame_interpolation": "Frame Interpolation",
"filters.noise_gate": "Noise Gate",
"filters.palette_quantization": "Palette Quantization",
"postprocessing.description_label": "Description (optional):",
"postprocessing.description_placeholder": "Describe this template...",
"postprocessing.created": "Template created successfully",

View File

@@ -348,8 +348,7 @@
"filters.select_type": "Выберите тип фильтра...",
"filters.add": "Добавить фильтр",
"filters.remove": "Удалить",
"filters.move_up": "Вверх",
"filters.move_down": "Вниз",
"filters.drag_to_reorder": "Перетащите для изменения порядка",
"filters.empty": "Фильтры не добавлены. Используйте селектор ниже для добавления.",
"filters.brightness": "Яркость",
"filters.saturation": "Насыщенность",
@@ -360,6 +359,9 @@
"filters.flip": "Отражение",
"filters.color_correction": "Цветокоррекция",
"filters.filter_template": "Шаблон фильтров",
"filters.frame_interpolation": "Интерполяция кадров",
"filters.noise_gate": "Шумоподавление",
"filters.palette_quantization": "Квантизация палитры",
"postprocessing.description_label": "Описание (необязательно):",
"postprocessing.description_placeholder": "Опишите этот шаблон...",
"postprocessing.created": "Шаблон успешно создан",

View File

@@ -348,8 +348,7 @@
"filters.select_type": "选择滤镜类型...",
"filters.add": "添加滤镜",
"filters.remove": "移除",
"filters.move_up": "上移",
"filters.move_down": "下移",
"filters.drag_to_reorder": "拖动以重新排序",
"filters.empty": "尚未添加滤镜。使用下方选择器添加滤镜。",
"filters.brightness": "亮度",
"filters.saturation": "饱和度",
@@ -360,6 +359,9 @@
"filters.flip": "翻转",
"filters.color_correction": "色彩校正",
"filters.filter_template": "滤镜模板",
"filters.frame_interpolation": "帧插值",
"filters.noise_gate": "噪声门",
"filters.palette_quantization": "调色板量化",
"postprocessing.description_label": "描述(可选):",
"postprocessing.description_placeholder": "描述此模板...",
"postprocessing.created": "模板创建成功",