From cc0f06eb7ded28425a9cfba5af1c941086d07de7 Mon Sep 17 00:00:00 2001 From: randogoth Date: Wed, 14 Oct 2026 12:49:16 +0300 Subject: [PATCH] Correct what the listing refetch actually buys The docstring claimed a description corrected upstream without a new release still lands here. It does not: the fastlane tree is read from the source archive at the released tag, so an edit on main is invisible until the tag moves or a new release is cut. Says so now, since that is the thing someone reaching for this function wants to know. Comment only; no behaviour change, so nothing to redeploy. Co-Authored-By: Claude Opus 5 (1M context) --- fdroid-sync.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/fdroid-sync.py b/fdroid-sync.py index fab33d6..2e7c2e6 100755 --- a/fdroid-sync.py +++ b/fdroid-sync.py @@ -282,11 +282,17 @@ _listing_done = {} def sync_listing(app, cfg, tag, apk: Path, locale): """Refresh metadata// from the app repo. True if it changed. - Refetched on every run rather than only when the release moves, so a - description or screenshot corrected upstream without a new release still - lands here. Within a run it is done once per tag: the later passes exist to - notice a *new* release, and repeating the fetch and the APK icon parse for - a tag already handled would be pure waste. + Read from the source archive at the *released tag*, not from the default + branch, so the listing always describes the build it ships with. The + consequence is worth stating plainly: correcting a typo in + full_description.txt on main changes nothing here. It takes a new release, + or moving the tag. + + Refetched on every run even when the release has not moved, so a tag that + was moved in place is still picked up, and so a listing lost to a failed + run repairs itself. Within a single run it is done once per tag: the later + passes exist to notice a *new* release, and repeating the fetch and the APK + icon parse for a tag already handled would be pure waste. """ if _listing_done.get(app["id"]) == tag: return False