Keep the useful surface

The factory mounts a subtitle player and a soundboard. Both are extracted modules from the larger local toolkit, allowing the hosted category to share a consistent account, origin, and storage contract.

The soundboard retains browser playback, while routes for server audio playback return an explicit unavailable response. Configuration updates that request server playback are rejected as well. The restriction is enforced at both the route and saved-setting boundaries.

Make the environment part of the design

A desktop service can play through local speakers; a hosted server has no equivalent connection to the visitor's room. Preserving a button without preserving that behavior would mislead the user. The adapter keeps the supported path clear instead.

Mutable files and binary chunks use the controller's scoped storage interface. Source remains immutable, and concurrent updates use a revision-checked manifest. The service runs without subprocess permission.

A rejected server-playback setting cannot be saved and rediscovered later as though it were supported. The adapter checks the configuration payload before forwarding it.

Choose the right output device

Browser playback belongs to the visitor's session; server playback belongs to the machine hosting the process. Treating them as distinct capabilities keeps the interface honest about where sound will occur. The adapter preserves the media workflow while removing a desktop assumption that does not survive the move to hosted infrastructure.