Skip to content

Fix Google Photos pagination (#155) & Add Spanish translation (i18n) - #164

Open
miguelsg29 wants to merge 10 commits into
starbrightlab:mainfrom
miguelsg29:main
Open

Fix Google Photos pagination (#155) & Add Spanish translation (i18n)#164
miguelsg29 wants to merge 10 commits into
starbrightlab:mainfrom
miguelsg29:main

Conversation

@miguelsg29

@miguelsg29 miguelsg29 commented Jul 21, 2026

Copy link
Copy Markdown

Closes #155

Summary of Changes

This PR addresses Issue #155 regarding Google Photos shared album crawling and portrait photo display quality, and introduces full Spanish language support (i18n) across the entire Immortal launcher ecosystem.

1. Google Photos Album Pagination & High Resolution

  • Full Album Pagination: Implemented extractGoogleAlbumKey, extractGoogleContinuationToken, and fetchGoogleBatchRpc crawling in RemoteAlbum.kt so shared albums with >30 photos load all items (up to 100 pages / 10,000 photos) instead of capping at the initial HTML chunk.
  • High-Res Image Suffix: Updated CDN size suffix to =w${maxDim}-h${maxDim}-no where maxDim = maxOf(screenW, screenH). This prevents 9:16 portrait photos from downscaling to low resolution inside the bounding box.

2. Portrait Photo Display & Motion Enhancements

  • Aspect-Ratio Preserved Background Blur: Added an aspect-ratio-preserving background blur layer (blurPhoto) for portrait photos. Eliminates black side bars without squishing or stretching the image.
  • Dual-Layer Buffer Crossfade: Replaced abrupt photo swapping with a 900ms dual-layer (layerA & layerB) crossfade transition for smooth photo changes without visual pops or black flashes.
  • Clipped Picture Frame: Wrapped frontal photos in a fixed-size photoFrameContainer (clipChildren = true, clipToOutline = true), so Ken Burns zoom/pan motion occurs gracefully inside the frame without edge flickering.
  • Optional Vertical Photo Trimming (cropVertical): Added a user-configurable toggle in ScreensaverConfig (cropVertical) and SettingsDomains.screensaver ("Crop vertical photos (~20%)") to trim ~10% off top and bottom of portrait photos.

3. Complete Spanish Language Support (i18n)

  • Settings Registry & Options: Fully localized all settings domains (immortal, screensaver, calendar, welcome, sunrise, chime, mqtt, quickbar, digitalclock) into Spanish.
  • App Store & Catalog: Localized app store catalog titles, summaries, app descriptions, categories, search placeholders, and action buttons ("Instalar", "Abrir", "Actualizar", "Actualizar todo", etc.).
  • Home Grid & App Switcher: Translated built-in tile labels ("Llamadas", "Herramientas", "Navegador"), folder tiles ("Ajustes"), update status indicators ("Al día"), search placeholders, and folder overlay hints.
  • Widgets & Overlays: Localized widget picker overlay ("Añadir widget"), custom widget titles, and sub-menus (World Clock, Welcome Overlay, Ambient Audio, Sunrise Light).

4. Verification & Unit Tests

  • Passes all unit tests: ./gradlew :app:testDebugUnitTest (BUILD SUCCESSFUL).
  • Added unit tests for Google album key and continuation token extraction in RemoteAlbumTest.kt.
  • Verified debug build on physical Meta Portal Go hardware (./gradlew :app:assembleDebug).

@miguelsg29 miguelsg29 changed the title Fix Google Photos pagination & vertical photo scaling (closes #155) Fix Google Photos pagination (#155) & Add Spanish translation (i18n) Jul 22, 2026

@starbrightlab starbrightlab left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the big contribution here. After a full review I'd like to restructure how this lands, because it currently bundles three separable things (Google Photos fix + Spanish i18n, with #165/#166 stacked on top).

Plan:

  1. Google Photos fix → taken separately. The 8a31dec commit that closes #155 is being merged on its own via #168 (your authorship preserved), decoupled from the i18n so it can ship immediately. Once #168 lands, a rebase here will drop 8a31dec automatically (same patch already in main), leaving this PR as i18n-only.

  2. Spanish i18n — accepted in principle, and the architecture is safe (English strings.xml untouched, translate() degrades to English, language field has an EnumSpec so the tripwire stays green). One change required before merge:

    • English regression: SettingsDomains.kt:238 lowercased the fit toggle to "fill"/"fit". Since I18n.translate returns English verbatim, English users now see lowercase "fill"/"fit" on the fit control and in the fleet/remote JSON. Please restore "Fill"/"Fit" (and key the ES dict on the capitalized strings, or add "fill"->"Fill" to the English path).
    • Nit: call sites use the fully-qualified com.immortal.launcher.i18n.I18n.translate(...) everywhere — an import alias / top-level tr would cut a lot of diff noise.

So: rebase onto main after #168 merges, fix the fill/fit labels, and this becomes a clean i18n-only PR I can take. Really appreciate the localization work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

google photos screensaver only showing 30 pics in album of approx 8,000 pics

2 participants