Land production-ready code for the new MMV beta viewer module (mmv.ui.beta) in the MultimediaViewer extension. This is the foundation that the detail view (T417678) and carousel integration (T417679) will build on.
Context
A proof-of-concept was built during T415712 demonstrating a new Vue 3 / Codex based viewer that plugs into MMV's existing bootstrap via an adapter class (BetaViewer.js). The adapter implements the same interface as the legacy viewer, so the bootstrap code doesn't need changes.
PoC patches (both marked DNM):
The gesture support patch should be disregarded for now — touch gestures are a potential fast-follow but are not part of this task.
Scope
- Clean up the core viewer code from the PoC for production (review TODOs, error handling, code style)
- Ensure the beta viewer module loads correctly via MMV's bootstrap when on mobile
- Ensure the existing desktop viewer is completely unaffected
- Add appropriate test coverage
- The beta viewer should be gated behind a feature flag initially
Out of scope
- Touch gesture support (pinch-to-zoom, swipe navigation, etc.)
- Feature parity with the current mobile viewer (tracked in T417678)
- Carousel component (tracked in T417679)
Open questions
- What feature flag mechanism should we use? URL parameter (?mmvBeta=1 as in the PoC), a MediaWiki config variable, or both?