AgePony v3.2.0
Encrypting more than one file stops being a chore.
Everything in the encrypt flow used to reset itself: armor went back on, passphrase mode went back off, recipients were forgotten, and finishing a file dropped you at an empty form. Encrypting ten files meant setting the same three things ten times. This release makes the encrypt screen one window that remembers what you told it.
Reported by @Umotas in #2, who listed five specific things that were slower than they needed to be. All five are fixed.
Fixed
- "Armor as text" is remembered, between files and between launches, with a switch in Settings → Encryption.
- Passphrase (scrypt) only is remembered the same way, with its own Settings switch.
- A passphrase is entered once per session. It is held until the vault locks, so a run of files asks once rather than once each. Memory only — never written to disk, never in the encrypted vault snapshot, and dropped by the same code path that drops the vault key, which runs whenever the app is backgrounded. "Forget passphrase" is on the encrypt screen and in Settings.
- Recipients are chosen inline. The picker opens in place instead of replacing the screen, so the whole setup is one window and confirming no longer bounces you to the top of the form.
- Finishing an encrypt keeps every setting. "Encrypt more files" holds recipients, passphrase, signing key and armor and goes straight to the file picker. "Clear recipients & passphrase" is there when you do want a fresh start.
- Add Recipient no longer pre-fills the name with the key. The field used to start out holding a truncated key, which read as a read-only display rather than an editable name, so recipients got saved as
age1pqdu27d…d8swW. It now starts empty with the key shown above it, and saving unnamed asks first.
Deliberate limits
- The Text tab does not inherit a file passphrase. Convenience should not quietly carry a passphrase between contexts.
- The encrypt button is disabled while the picker is open. Encrypting with unconfirmed edits on screen would have used the last confirmed choice — silently sending a file to the previous recipient.
- Signing-only identities are never preselected. Hardware and security-key identities can be active but cannot receive a file.
Compatibility
No format change, and no change to agepony-core at all — the age implementation, every recipient type and the streaming payload cipher are untouched. Files written by 3.2.0 are ordinary age files, and files from earlier AgePony versions or the age CLI open unchanged.
No change to the vault format either: the new settings are app preferences, not vault contents, so upgrading in place keeps every identity, recipient and note.
No new dependencies. The unsigned foss release APK builds byte-identically from two independent clean clones.
Build fix
buildTypes.release assigned the release signing config unconditionally while only populating it when keystore.properties existed, so any tree without the keystore failed in packageRelease with SigningConfig "release" is missing required property "storeFile". The assignment now sits inside the same guard, and those builds produce an unsigned APK. Present in 3.0.2 and 3.1.0 as well — not a 3.2.0 regression.
Download
AgePony-3.2.0-foss.apk — the F-Droid flavor, no Google dependencies.
SHA-256: 86fbec00cb506b06fe89dd9d3c5a04b4319cb7566ec069af9aa5d191fb0187ae
This build is signed with the AgePony release key. The Google Play build is re-signed by Play App Signing and an eventual F-Droid build is signed by F-Droid, so the three are not interchangeable — switching between them needs an uninstall.