Legg til fase 17: lydstudio-utbedring (7 oppgaver)

Kodegjennomgang av lydstudio-implementasjonen avdekket:
- Responsivt design mangler (mobil-layout)
- FFmpeg-parametervalidering bør strammes
- Fade/silence-logikkfeil (negativ start, margin-underflow)
- Frontend input-begrensninger mangler
- Job-polling lekker ved navigering
- Temp-filer ryddes ikke ved krasj
- FFmpeg-feilmeldinger når ikke bruker

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-18 00:55:20 +00:00
parent 2ac0ba5fcb
commit 51f49fea22
2 changed files with 15 additions and 2 deletions

View file

@ -29,18 +29,19 @@ declare -A PHASE_DEPS=(
[9]="3" [9]="3"
[10]="2" [10]="2"
[11]="5 6 7" [11]="5 6 7"
[12]="1 2 3 4 5 6 7 8 9 10 11 13 14 15 16" [12]="1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17"
[13]="3 4" [13]="3 4"
[14]="6 13" [14]="6 13"
[15]="3 10" [15]="3 10"
[16]="11 13" [16]="11 13"
[17]=""
) )
# --- Finn blokkerte faser --- # --- Finn blokkerte faser ---
# En fase er blokkert hvis den har en [?], [!] eller [~] oppgave # En fase er blokkert hvis den har en [?], [!] eller [~] oppgave
blocked_phases() { blocked_phases() {
local phases="" local phases=""
for phase in $(seq 1 16); do for phase in $(seq 1 17); do
if grep -qP "^\- \[(\?|!|~)\] ${phase}\." "$TASKS" 2>/dev/null; then if grep -qP "^\- \[(\?|!|~)\] ${phase}\." "$TASKS" 2>/dev/null; then
phases="$phases $phase" phases="$phases $phase"
fi fi

View file

@ -182,6 +182,18 @@ Ref: `docs/features/lydmixer.md`
- [ ] 16.6 EQ-effektkjede: fat bottom (`BiquadFilterNode` lowshelf ~200Hz), sparkle (`BiquadFilterNode` highshelf ~10kHz), exciter (`WaveShaperNode` + highshelf). Per-kanal toggles, synkronisert via STDB. Presets (podcast-stemme, radio-stemme). - [ ] 16.6 EQ-effektkjede: fat bottom (`BiquadFilterNode` lowshelf ~200Hz), sparkle (`BiquadFilterNode` highshelf ~10kHz), exciter (`WaveShaperNode` + highshelf). Per-kanal toggles, synkronisert via STDB. Presets (podcast-stemme, radio-stemme).
- [ ] 16.7 Stemmeeffekter: robotstemme (ring-modulasjon: `OscillatorNode``GainNode.gain`), monsterstemme (egenutviklet `AudioWorkletProcessor` med phase vocoder for pitch shift). Effektvelger-UI per kanal. Parameterjustering (pitch-faktor, oscillator-frekvens). - [ ] 16.7 Stemmeeffekter: robotstemme (ring-modulasjon: `OscillatorNode``GainNode.gain`), monsterstemme (egenutviklet `AudioWorkletProcessor` med phase vocoder for pitch shift). Effektvelger-UI per kanal. Parameterjustering (pitch-faktor, oscillator-frekvens).
## Fase 17: Lydstudio-utbedring
Ref: Kodegjennomgang av `b4c4bb8` (Lydstudio: lydredigering via FFmpeg).
- [ ] 17.1 Responsivt studio-layout: `/studio/[id]` sidebar stacker under waveform på mobil. Verktøypanel som modal/sheet på små skjermer. Ref: feedback om at alt UI skal være responsivt uten unntak.
- [ ] 17.2 FFmpeg-parametervalidering: valider at alle numeriske verdier (threshold, gain, ratio, frekvenser) er innenfor sikre grenser i `audio.rs` før de interpoleres i filterstrenger. Avvis ugyldige verdier med feilmelding.
- [ ] 17.3 Fade/silence-logikk: fiks negativ fade-out start (clamp til 0), og adaptiv silence-margin (margin skal ikke overstige halve regionens varighet). Gi feilmelding ved ugyldige fade-varigheter.
- [ ] 17.4 Frontend input-begrensninger: legg til `min`/`max` på alle tallfelter i OperationPanel (silenceThreshold, fadeMs, normTarget, compRatio). Hindre ugyldig input.
- [ ] 17.5 Job-polling opprydding: rydd opp interval/timeout ved navigering bort fra studio-siden. Vis feilmelding etter N mislykkede polling-forsøk. Wrap metadata JSON.parse i try/catch.
- [ ] 17.6 Temp-fil opprydding: legg til periodisk jobb i maskinrommet som sletter gamle temp-filer i CAS tmp-katalog. Bruk `/tmp` eller sett TTL.
- [ ] 17.7 FFmpeg feilmeldinger til bruker: propager stderr fra FFmpeg-feil til frontend via strukturert feilrespons. Vis i RenderDialog.
## Fase 12: Herding ## Fase 12: Herding
- [ ] 12.1 Observerbarhet: strukturert logging, metrikker (request latency, queue depth, AI cost). - [ ] 12.1 Observerbarhet: strukturert logging, metrikker (request latency, queue depth, AI cost).