Maps: Upgrade MapLibre GL JS from v5 to v6
As a PhotoPrism user, I want maps updated to the current rendering library, so that Places and location editing remain reliable on supported browsers.
User Experience
Upgrade MapLibre GL JS to v6 while preserving Places search, photo clusters, map controls, location editing, and lightbox mini-maps. Existing photo locations and API contracts remain unchanged.
Maps will require WebGL2. Older or restricted devices that cannot provide it should see a clear map-unavailable message while photo browsing, location information, and non-map location editing remain usable. The low-resolution map style does not bypass this requirement.
Technical Considerations
Adapt module and worker loading, image resolution, and map updates for v6. Preserve the intentional webpack pin and keep related documentation aligned. Verify production assets and representative desktop/mobile browser behavior, including the unavailable-map path.
Verification
Implemented MapLibre GL JS 6.9.0 while preserving webpack 5.107.2. Production builds passed for Community Edition, Plus, Pro, and Portal. Shared and Plus suites each passed 1,879 tests with 13 existing skips; the dedicated Pro and Portal suites passed 6 and 116 tests. Added 18 focused renderer/component regressions.
Chrome desktop and mobile-layout checks covered maps, clusters, controls, styles, labels, location editing, and the unavailable-WebGL2 path. Worker assets and production precaching were verified. Coordinate entry and location search remain usable without a map. Physical iOS/Android hardware and Safari were not exercised in this environment.
Documentation, specifications, and translation catalogs are aligned. Changes are ready for review.
Acceptance Criteria
- The frontend MUST use MapLibre GL JS v6 with working production worker assets and the existing webpack pin.
- Places, clusters, controls, mini-maps, and location editing MUST preserve their supported-browser behavior without changing stored coordinates or API contracts.
- Clients without WebGL2 MUST receive a clear fallback without blocking non-map workflows.
- Focused regression tests, the frontend suite, and production/browser checks MUST pass.
- Related documentation and specifications MUST describe the current compatibility requirements and behavior.
Source: photoprism/photoprism