Pre-1.0 while the app is still being shaped: 0.1.0 was the build after the
dictionary work, this is the one with share and the optional assistant.
The APK is named for its version, because a file called app-release.apk tells
whoever receives it nothing. Changelogs in all three languages, one per
versionCode, which is the layout F-Droid reads.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reading
- Naskh is now the default face, and both Arabic-script fonts are registered
at four weights so the text can be thickened for a lit screen.
- Category listings show each poem's opening line, fetched best-effort from
api.ganjoor.net since the data set doesn't carry excerpts.
- Tap a couplet to save that passage or copy it; a saved passage keeps a
tappable link back to its poem. Poem text is selectable for plain copying.
Languages
- Persian, Urdu and English, Persian by default whatever the phone's locale,
applied in attachBaseContext and switchable from the top bar or the sheet.
- English chrome uses Libron (OFL); poems stay naskh or nastaliq throughout.
- Each language gets its own values-* folder: with Farsi only in values/,
Android was resolving it to the Urdu strings, since a same-script locale
outranks the default.
Offline
- Downloaded poets mirror the data set's layout under filesDir, so offline
mode is one lookup rather than a parallel path. Downloads run one poet at
a time, skip what's on disk, and resume by restarting.
- Downloads screen lists every poet with their portrait and tick boxes for
picking several, plus storage used, delete, and download-everything behind
a size warning.
- Offline mode refuses the network and says what's missing rather than
blaming the connection.
Also: poet sort (Ganjoor's order or alphabetical, via a Persian collator),
RTL nav transitions, an original shamsa launcher icon with a monochrome layer
for themed icons, and preferences written with commit so they survive the
process being killed.
F-Droid: dependenciesInfo off, optional signing so the build works with no
keystore, fastlane metadata in three languages, cleartext traffic disabled.
Verified on an API 36 emulator: downloaded a poet, pulled the emulator's
network, read them offline, and confirmed an undownloaded poet reports being
missing rather than erroring.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>