=== Goal
Bring the MMV beta viewer (`mmv.ui.beta`) to feature parity with the existing MobileFrontend mobile image viewer. This is a prerequisite for replacing the current mobile viewer and rolling out the Image Browsing feature to production (T410786).
=== Context
The MobileFrontend mobile image viewer is a relatively simple lightbox experience. The feature set is small, which means the road to parity should be short. Once parity is reached, the MobileFrontend viewer code (ImageCarousel, ImageGateway, overlay factory, and related Minerva init code) can be retired.
The beta viewer PoC (T417675) provides the foundation: basic image display, progressive loading, adjacent image prefetching, and the adapter interface for MMV's bootstrap. This epic covers everything else needed to match the current mobile viewer's functionality.
=== Subtasks (to be created)
- **[Spike] Document MobileFrontend viewer's complete feature set** — Audit the existing viewer to confirm we have a complete picture of what needs to be matched. This should be done first; it may surface parity items not yet listed below.
- **Ensure license info is displayed correctly** — Display license short name and license link, using MMV's existing ImageInfo provider or a lightweight composable.
- **Ensure other metadata is displayed correctly** — Author, caption, file page link, and any other metadata the current viewer shows. This should also include the ability to toggle metadata visibility by tapping the image (matching the current viewer's behavior).
- **Support downloading at various sizes** — Match the current viewer's download functionality. See also T410952 for aligning download sizes with `wgThumbLimits`.
- **Error handling for failed image loads** — Error state with a retry mechanism.
- **Loading state / fallback indicator** — While progressive loading handles most cases, add a fallback indicator for slow connections or API-dependent metadata.
- **Image exclusion handling** — Ensure the beta viewer respects image exclusions. This includes both `noviewer` class handling (don't open the viewer for excluded images) and broader filtering of non-photographic content (signatures, data visualizations, etc.) from the prototype's `excludedImageSelectors.js`.
=== Out of scope
- Touch gestures (pinch-to-zoom, swipe navigation) — potential fast-follow
- Share functionality — new feature beyond parity
- Carousel component (T417679)
- Desktop viewer changes
=== Open questions
- Is there any conditional feature logic in the current MobileFrontend viewer (e.g., features that only activate on certain wikis or for certain file types)?
- What is the minimum set of features we need before we're comfortable switching mobile users over? Is there anything listed above that could ship as a fast-follow after the switch?
- For image exclusion handling: should the beta viewer only respect `noviewer` (as the current viewer does), or should it also incorporate the broader filtering rules from the prototype? If the latter, should those rules live in the MMV bootstrap (so they apply to all image taps) or only in the carousel context?
=== Related
- Beta viewer merge: T417675
- Parent epic: T410786