On a fresh start with no picks (start_page=connect), the log prints "open this link in Google Photos" twice, with two different session links. That's the same on Windows CPython and Linux CPython, in real mode. The QR code shows the second session and the first one is orphaned. Google expires it, so nothing breaks, but each start makes one extra API call and leaves a dangling session.
It isn't the double-start guard: _LAUNCHER_OWNS_RUN holds. The likely cause is the screen build at gphotos_lvgl.py ~437, which calls _start_pick(rebuild=False) whenever page == "connect". If that build runs twice at startup (a rescale, or a re-layout), each run starts a session. The fix is to start a session only when none is pending. Found 2026-09-23 during the first real run.
On a fresh start with no picks (
start_page=connect), the log prints "open this link in Google Photos" twice, with two different session links. That's the same on Windows CPython and Linux CPython, in real mode. The QR code shows the second session and the first one is orphaned. Google expires it, so nothing breaks, but each start makes one extra API call and leaves a dangling session.It isn't the double-start guard:
_LAUNCHER_OWNS_RUNholds. The likely cause is the screen build atgphotos_lvgl.py~437, which calls_start_pick(rebuild=False)wheneverpage == "connect". If that build runs twice at startup (a rescale, or a re-layout), each run starts a session. The fix is to start a session only when none is pending. Found 2026-09-23 during the first real run.