Repository navigation
Added
- Deleted projects are listed in a Trash section on the Projects screen, with their size, and can be put back or deleted for good, one at a time or all together, after a confirmation that names what goes. Until now they stayed on the phone with no way to remove or restore them. (#94, fixes #57)
Changed
- The bundled Python runtime is 3.13.16 (Chaquopy 17.1.0). (#98)
- Gradle dependencies are checked against recorded checksums, so a changed artifact fails the build. (#95, fixes #82)
- Each processor type (arm64-v8a, x86_64) has its own APK with its own version code, so F-Droid and the phone choose the matching one. The universal APK stays on the release page. (#90, #97)
Fixed
- The entry form no longer refuses an entry Beancount accepts: the balance check now follows Beancount's own per-currency tolerance rule, including
inferred_tolerance_default. (#52) - The project picker no longer fails after restoring a backup. (#59)
- A save that is interrupted by the screen closing is finished or put back, never left undecided; after a crash, a raw edit you typed is kept even if the engine is down at the next start. (#59)
- Undo after restoring a backup can no longer put the old project's files back over the restored ones, and Undo stays in order if the device clock is reset. (#59)
- A snapshot taken before a write is flushed to storage before the ledger is replaced, and a damaged one is never restored over an intact ledger. (#59)
- Files you named
keyare included in backups and the mirror. (#59) - Typed lots accept thousands separators, as Beancount does. (#52)
- Editing a ledger with Windows (CRLF) line endings keeps its line endings instead of mixing them. (#62)
- A cached answer is no longer reused after a plugin changes or the app is updated. (#62)
- A failed engine start no longer makes every later read wait out its timeout. (#62)
- Displayed amounts round half to even, as Beancount and Fava do. (#62)
- A remote server address typed with capital letters no longer shows blank pages, and a server under a path prefix such as
/favais found correctly. (#64) - Deleting or editing an entry checks that the file still holds the entry you were looking at, instead of acting on a line number from an older list. (#71)
- Text typed in the file editor while a save is running is no longer lost. (#71)
- The report view recovers when Android closes it to free memory, instead of taking the app down. (#71)
- A failed backup says what it left behind and removes the unfinished file; copies of backups, imports and script output no longer stay in the app's cache. (#71)
- Saving a remote password recovers from an unusable Keystore key and reports a failure instead of crashing. (#71)
- The entry form refuses an amount it cannot read (such as
4,50or4.5O) instead of leaving it out and letting Beancount fill in a figure. (#74) - Deleting a selection that includes an entry generated by a plugin no longer removes the entry after it. (#74)
- The document scanner frees its image memory as it goes instead of waiting for the garbage collector. (#78)
- Restore cannot be started twice; removing fetched packages or a saved script asks first; a sharing user name can contain a space. (#74)
- Receipt photos and attached copies are deleted from the app's cache once the document is filed, instead of staying until Android clears the cache. (#93, fixes #69)
- Restoring a deleted project whose name has been reused brings it back under the next free name instead of refusing, and the Trash is shown on the Add a ledger page when there are no projects, so deleting the only project can be undone. (#103, fixes #101, #102)
- Unlinking a document no longer removes the link of a different document that has the same file name; a bare name in an entry is matched only when it is unique, and Unlink says so when it is not. (#92, fixes #48)
Security
- Checking a backup is bounded in memory, and a backup archive can no longer ask the app to spend gigabytes deriving its key. (#59)
- Diagnostics redact
Authorization: Bearertokens, cookies and whole passphrases, and no longer risk a crash when logged from several threads. (#59) - A ledger cannot list another project's documents by naming a folder with a shared prefix. (#59)
- A remote server that answers oddly (a hostile ledger name, an endless reply) ends in an error message instead of a crash or a stall. (#64)
- A link in a report opens in the browser only after you confirm it, and only if it is a web address. (#71)
- A plugin picked from a file manager cannot be named so that it lands outside the install folder. (#71)
Download
| File | SHA-256 |
|---|---|
| beanbook-1.0.1-arm64-v8a.apk | f83f706a376d8cc37d72302a49956de86bfee21a7e2aa11245a514132d1351ee |
| beanbook-1.0.1-x86_64.apk | 11c43e3f336b0ad79b447b36a08127ddbc5b73df3e03035aaf136955b0460ca0 |
| beanbook-1.0.1-universal.apk | d9bd994894975f0161303280b5a18cbed71fe4fdb44faca8cc907e3e9aa8d3cd |
Verify
Signing certificate SHA-256: d7039d79b2afa3ffc81aeba7bc8dbf45a73b07b94f982ca913d65028b9b2ff55
Check a download against the table with sha256sum, or against checksums.txt with sha256sum -c checksums.txt. apksigner verify --print-certs <file> shows the certificate.
Full changelog: CHANGELOG.md · v1.0.0...v1.0.1