Skip to content

Phase 5 — Services: maps + media + firebase + core cleanup (0.0.12-alpha01)

Import User requested to merge feature/v1-phase5-services into main

Summary

Lands Phase 5 of the v1.0 launch. Covers maps, media, firebase Service modules plus pre-Phase-6 core serialization cleanups. Closes the scope-leak trifecta and retires the last opt-in marker.

Version bump: 0.0.11-alpha010.0.12-alpha01.

ADRs

  • ADR-018: SwitchingMapProvider caller-owned CoroutineScope; scope-leak trifecta closed (final of ADR-011 + ADR-013 + ADR-018).
  • ADR-019: YallaGallery common surface narrowed to PHPicker-equivalent; Paging3 grid Android-only.

Breaking

  • SwitchingMapProvider + SwitchingMapController constructors now require scope: CoroutineScope. MapDependencies exposes it for Koin wiring.
  • YallaGallery common signature narrowed. Rich Paging3 grid moved to new Android-only YallaGalleryPagingGrid.
  • @ExperimentalYallaGalleryApi marker class removed entirely.
  • LocationsLayer(arrival, duration, …) params dropped from both Google + Libre provider packages.
  • OrderStatus + PaymentKind now @Serializable(with=…) with custom KSerializers — preserves string-ID wire contract.
  • PointKind gains Companion.from(wireValue) + custom serializer with POINT fallback for unknown wire values.

Additive

  • maps.api.overlay.RouteOverlayConfig / LocationsOverlayConfig / LocationIndicatorConfig data classes (shared overlay contract).
  • MapController fake-provider test coverage (37 test cases).
  • firebase init guard + pre-init lazy-property guards + behavioral tests.
  • Media: per-instance CameraX executor; calculateInSampleSize + GalleryPickerState tests.
  • Serialization round-trip tests for OrderStatus, PaymentKind, PointKind.

Lockstep

YallaClient PR chore/sdk-phase5-servicesdev (link to follow).

Pre-1.0 mode

Full-risk: no @Deprecated, no @RequiresOptIn. Direct break.

🤖 Generated with Claude Code

Merge request reports

Loading