Previously the backend only fetched streams for the single requested mode (defaulting to sub), so modeSources never had a dub entry. The frontend's switchMode showed visual feedback but streamUrlForMode returned an empty string since no dub token existed. Now both modes are fetched and availableModes is derived from what actually resolved.