86a9d344e6
Add the foundation for audio processing filters, mirroring the existing picture filter/postprocessing template system: - AudioFilter base class, AudioFilterRegistry, AudioFilterOptionDef - AudioProcessingTemplate dataclass + SQLite-backed store - audio_filter_template meta-filter with recursive resolution - Full REST API: CRUD templates + filter registry discovery - Dependency injection wired in dependencies.py and main.py
3.1 KiB
3.1 KiB
Phase 6: Frontend — Source Types
Status: ⬜ Not Started Parent plan: PLAN.md Domain: frontend
Objective
Update the audio source UI to support the new ProcessedAudioSource and CaptureAudioSource types, and remove the old MonoAudioSource and BandExtractAudioSource UI.
Tasks
- Task 1: Update audio source TypeScript types/interfaces for new source types
- Add
ProcessedAudioSourcetype withaudio_source_id+audio_processing_template_id - Rename
MultichannelAudioSourcetype toCaptureAudioSource(source_type: "capture") - Remove
MonoAudioSourceandBandExtractAudioSourcetypes
- Add
- Task 2: Create
ProcessedAudioSourcecard component- EntitySelect for input audio source (any audio source)
- EntitySelect for audio processing template
- Show resolved chain info (which capture source at the end)
- Create/Edit/Delete actions
- Task 3: Update
CaptureAudioSourcecard (relabeled from Multichannel)- Same fields (device selector, loopback toggle, template selector)
- Updated label/icon to say "Capture Audio Source"
- Task 4: Remove
MonoAudioSourcecard component/rendering - Task 5: Remove
BandExtractAudioSourcecard component/rendering - Task 6: Update audio source creation dialog/flow
- Source type picker now shows: Capture, Processed (instead of Multichannel, Mono, Band Extract)
- Type-specific form fields
- Task 7: Update EntitySelect dropdowns that list audio sources
- Show type badges (Capture vs Processed) for clarity
- Audio source selectors in CSS editor, value source editor, etc.
- Task 8: Update i18n keys for renamed/new source types
- Task 9: Update any inline onclick handlers or window exports in app.js
Files to Modify/Create
static/js/features/audio-sources.ts— modify — new types, remove old typesstatic/js/features/audio-source-modal.ts(or equivalent) — modify — updated editorstatic/css/dashboard.css— modify — any style updatesstatic/js/app.js— modify — update exports if neededstatic/js/core/i18n/en.json— modify — updated keysstatic/js/core/i18n/ru.json— modify — updated keysstatic/js/core/i18n/zh.json— modify — updated keys
Acceptance Criteria
- ProcessedAudioSource can be created/edited/deleted from the UI
- CaptureAudioSource shows correctly with updated label
- MonoAudioSource and BandExtractAudioSource UI is completely removed
- EntitySelect for audio sources shows type badges
- Source type picker shows only Capture and Processed
- All strings are internationalized
Notes
- NEVER use plain HTML
<select>— use project custom selectors - NEVER use emoji — use SVG icons
- Use fetchWithAuth for ALL API calls
- Call cache.invalidate() before load in save/delete handlers
- Check DOM ID conflicts when adding new card types (project checklist)
Review Checklist
- All tasks completed
- Code follows project conventions
- No unintended side effects
- Build passes
- Tests pass (new + existing)