Added
- Regex pre-processing for stream names (#36). Providers embed junk in stream names that defeats fuzzy matching — decorative glyphs, invisible padding, bouquet prefixes, badges. Stream Name Regex Rules is the general escape hatch: a JSON list of
[find, replace]regex pairs, applied in order to stream names before normalization and Custom Aliases, so a new provider quirk no longer needs a plugin release. Example:[["\s*▎\s*", " "], ["\bVIP\b", ""]].- Matching only: stream names in Dispatcharr are never modified, and quality sorting, zone routing, country restriction, and duplicate detection all continue to read the original name — a rule that strips a country prefix for matching can't blind country detection or collapse two distinct failover streams together. Group labels are out of scope.
- 🧪 Test Regex Rules action: previews the effect against your actual streams without changing anything — per-rule status, an N-of-M changed count, and up to 20 before → after samples with invisible characters escaped so they're actually visible.
- Validate Settings reports a per-rule summary (
N ok, M rejected), with detail in the logs; scheduled runs surface a rejected-rule count in results and webhooks. - Guardrails: patterns shaped to backtrack exponentially (e.g.
(a+)+) are rejected before they ever run; at runtime, oversized names skip pre-processing, runaway growth is reverted, and a regex pass is time-capped — a bad rule degrades gracefully (and tells you) instead of freezing a worker.
617 tests (33 new for this feature). Update, set your rules, and click Test Regex Rules to see them work.