Two gaps in the licence file, both from work done after it was written.
The share, lookup and assistant glyphs are Material Symbols path data copied
into our own vector files. The Libraries table credits the Material icons
library, which is not the same thing as copying its paths, so the drawables now
have their own entry and appear in the app's About page.
The assistant was not mentioned at all. It ships no vendor SDK, no key and no
default endpoint, so nothing non-free is distributed — but a reader may point
it at a service whose terms are their own, and what a model writes back belongs
to neither Ganjoor nor this app. Written down for F-Droid's sake as much as the
reader's.
No new dependencies came with any of it: the assistant reuses the HTTP client
and JSON parser already here.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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>