Repository navigation
Fonte 0.1.5
Downloads that you start continue in the background, you can now add Brave (stable), and automatic installs wait for an unmetered network by default.
Requires Android 15 or later. The APK has no native code, so it runs on all ABIs. Update from 0.1.4 in place: the signing key is the same. After the update, Fonte keeps your network setting. If you want automatic installs to wait for an unmetered network, turn on Download only on unmetered networks in Settings. If the old switch was on, it stays on, and checks now use all networks.
Changed
- Downloads that you start with Update or Update all continue when you go to a different app. A progress notification in a new quiet "Downloads" channel shows the download. Before, Android could pause Fonte, and the download failed with "Download stalled".
- By default, automatic installs download only on an unmetered network, such as Wi-Fi. On a metered network, the update goes to the "updates available" notification. A later background run on an unmetered network installs it. Checks use all networks. The switch is now Download only on unmetered networks. Before, it also stopped the checks.
- At a first install from F-Droid or IzzyOnDroid, Fonte shows the progress of the signed index download, for example "Checking the F-Droid index 40%". Before, the row showed "Installing…" with no progress, so the install could look stuck.
- With no GitHub token, the automatic check when you open Fonte skips GitHub apps that it checked in the last hour. This saves the GitHub limit of 60 requests an hour. Pull to refresh and the background job check all apps.
- Fonte does less work at a cold start. It reads the installed apps one time, not three times, and it does not load their labels. Fonte now builds and sorts the app list on a background thread.
- TalkBack reads each switch row as one switch, with its title, subtitle and state.
- The home screen has a Check for updates accessibility action on the top bar subtitle. It starts the same check as pull to refresh, for Switch Access and TalkBack.
- The What's new card tells TalkBack "Expand" or "Collapse". A tap opens the card only when the notes are too long to show fully.
- Build: Fonte reads the signing passwords from the Keychain only for a signed release build. The key script stops if the Keychain items are missing. The dependency checksums are complete for a build with an empty cache. Google Maven supplies only Android and Google libraries. Five copies of a library licence text (about 18 KB) are no longer in the APK.
- Internal: more unit tests (install checks, token redirect rule, GitHub limit answers), StrictMode in debug builds, and one shared import function.
Fixed
- You can now add Brave (stable). Brave publishes many nightly and beta builds as GitHub pre-releases. Thus the 10 newest releases were sometimes all pre-releases, and Fonte found no release. Now, if this occurs and pre-releases are off, Fonte reads one more page: the latest stable release. For other repositories, Fonte sends the same single request as before.
- When GitHub refused your token (expired or revoked), all GitHub apps stopped updating, also Fonte. Settings still said "Set". Now Fonte checks again without the token and sends no token until you save a new one. Settings shows "Refused by GitHub", and Fonte posts one quiet notification in a new "GitHub token" channel. Fonte remembers the refusal after a restart and shows the notification only one time for each refused token.
- Version tags that are dates, such as
2024-11-01, compare as full dates. Before, Fonte read only the year. Thus a newer release could look the same or older, and the update did not show. - One entry that Fonte cannot read, for example an unknown source kind, no longer empties the app list. Fonte skips only that entry. Before the next save, it keeps a copy of the full file. Each copy has a timestamp in its name, so a new copy does not replace an older copy.
- A source that sends a broken answer no longer puts that answer (up to 8 MiB) into the app list and on the screen. Parser errors show one fixed text. Fonte cuts other error texts to 200 characters.
- The "updates available" notification changes when you install updates in Fonte. Before, it could show an old count for up to 24 hours. If you removed the notification, it does not come back.
- Before the first check, the detail screen shows "Not checked yet" for the latest version, not "Not found".
Privacy and security
- Certificate transparency is on for all connections. On Android 16, Fonte now refuses a certificate that is not in the public certificate logs. Android 17 does this check already.
- An APK name filter (regex) that could run for a very long time is now used as plain text, not as a regex. Such a filter can come from an imported list, and it could stop the checks of all apps. The test is a heuristic: it applies to a filter with more than 200 characters, a backreference, more than 4 repeats, or a repeated group with a repeat or
|in it. - The token sheet tells you that Fonte sends the token with each GitHub check, so GitHub can link these checks to your account. For a refused token, Fonte keeps only its SHA-256 hash, not the token.
- The README tells more about the network requests. A GitLab, Forgejo or Gitea release can link its APK on a different host. Fonte checks imported sources immediately. A source can use the stored ETag to see that two checks come from the same phone. F-Droid update checks use an API that has no signature, but the pinned certificate still protects each install.
- Fonte declares one new permission, "run user-initiated jobs", for the downloads that you start. Android gives it at install, with no prompt.
| File | Use |
|---|---|
Fonte-0.1.5.apk |
Release build, signed. |
SHA-256:
Fonte-0.1.5.apk:3d6e2f6d95ce8d6f86641bdc412a5b7427b78a680b66208db0bd089f207957b8
Signing certificate SHA-256: cc:15:4a:2b:16:d1:b2:02:1f:23:37:24:05:49:34:16:2b:f2:98:0e:16:16:72:64:0a:6e:0f:38:8c:36:ff:a4
Check the certificate with apksigner verify --print-certs Fonte-0.1.5.apk or with AppVerifier. Do not install an APK with a different certificate.