mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-05 20:02:41 +02:00
The panel only owned two derived fanout config keys (hls_target_sec ← seg_time, prebuffer_max_sec derived); the daemon's other tuning knobs lived only in its config.json and could not be set from the panel. Promote them to real settings so admins control the whole config — the unconditional fanout_sync (previous commit) then keeps config.json in step. Adds 9 settings columns (fanout_hls_window, fanout_grace_sec, fanout_write_timeout_sec, fanout_chunk_bytes, fanout_max_gop_bytes, fanout_source_insecure, fanout_default_prebuffer_sec, fanout_idle_buffer_grace_sec, fanout_idle_buffer_ratio) with defaults and ranges mirroring the daemon schema (XC_VM_Fanout internal/config/config.go): migration 014 + install SQL, inputs on the admin Settings page (numeric plus one switchery checkbox), and the source_insecure toggle in the settings boolean-normalization list. FanoutConfig::desired() now writes all 11 keys, clamped to the daemon's own ranges so a bad panel value can't push it into a pathological state; hls_window comes from the setting (not the daemon snapshot) and feeds the prebuffer_max_sec derivation. prebuffer_max_sec / hls_target_sec stay derived. Adds FanoutConfigTest (mapping, clamps, derived ring, idempotency, unknown-key preservation). Full suite green.