From 06ffdf467c0b1c3da68f0af0224f2277895ce662 Mon Sep 17 00:00:00 2001 From: "Shane B." Date: Wed, 19 Aug 2026 20:30:34 +0200 Subject: [PATCH] Say why bundles are still unlocked, which is not the reason written down MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both places claimed nothing can open a locked bundle. The app on main can - zip4j is in app/build.gradle.kts and AppleZipImporterUtil uses it - so the comment reads as a stale note about a missing feature, and the obvious next step is to turn locking on. That would be wrong, and the real constraint is release ordering. The newest Android release is 1.0.5, from before that work, and versionName has not moved past it: no *installed* app can open a locked bundle. Locking now produces files nobody can import, and it lands hardest on recipients, who did not choose the exporter's version and cannot fix it from their side. So the comment now names the condition that unblocks it - an Android release containing zip4j - rather than a capability that already exists. docs/android-import-handover.md ยง3 is already marked done and needs nothing. --- python/exporter/cli.py | 4 ++-- python/exporter/wizard.py | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/python/exporter/cli.py b/python/exporter/cli.py index 1dde0c17..41e41319 100644 --- a/python/exporter/cli.py +++ b/python/exporter/cli.py @@ -116,8 +116,8 @@ def build_parser() -> argparse.ArgumentParser: action="store_true", help=( "Write a plain zip. The bundle is locked with a generated code by default, because it" - " holds keys that cannot be revoked - but no OpenTagViewer release can open a locked" - " one yet." + " holds keys that cannot be revoked - but no released version of the Android app can" + " open a locked one yet, so a bundle for somebody else needs this." ), ) parser.add_argument( diff --git a/python/exporter/wizard.py b/python/exporter/wizard.py index 0e45ef51..2158b99f 100644 --- a/python/exporter/wizard.py +++ b/python/exporter/wizard.py @@ -564,9 +564,18 @@ def _export(self) -> None: messagebox.showerror("That selection cannot be exported", str(e)) return - # No password from the window yet: nothing that imports these can open a locked one, so - # offering it here would produce a file the recipient cannot use. See the CLI's - # --no-password, and docs/android-import-handover.md. + # **No password yet, and the reason is release ordering rather than a missing feature.** + # The app on `main` imports locked bundles - zip4j is in `app/build.gradle.kts` and + # `AppleZipImporterUtil` uses it - but no *released* APK does: the newest is 1.0.5, from + # before that work, and `versionName` has not moved past it. + # + # So locking bundles now would produce files that nobody's installed app can open, and the + # people worst affected would be recipients, who did not choose the exporter's version and + # cannot fix it from their side. + # + # **What unblocks this is an Android release containing zip4j, not a change here.** Once + # one exists, this becomes a decision about how long to keep supporting the versions before + # it. See the CLI's --no-password, and docs/android-import-handover.md. write_zip(bundle, path, password=None) messagebox.showinfo(