Client Android tablette (Material 3) de la bibliotheque edda — frere moderne de muninn-eink.
- Kotlin 100%
|
All checks were successful
build / build (push) Successful in 15m47s
Trois moments de la boucle de lecture se passaient en silence, et ce silence se lisait comme une panne. Téléchargements — nouveau DownloadTracker (data/download) alimenté depuis BookDownloader lui-même, donc TOUS les appelants remontent : la fiche livre, la pile à lire qui se synchronise en arrière-plan (elle n'avait aucune UI), et le nouveau téléchargement de fin de livre. Bandeau app-wide + pourcentage sur la fiche. Le finish() est dans un finally : un téléchargement mort ne laisse pas de ligne fantôme. Synchronisation — ProgressSyncCoordinator.syncing existait déjà, avec le commentaire « for screens that show a sync hint », et aucun écran ne le consommait. Il est désormais affiché sous la barre de la bibliothèque, et un nouveau flux rounds expose le résultat de chaque tour pour un résumé bref (« 2 livres mis à jour ») ; un tour qui n'a rien changé ne dit rien. LibraryViewModel.rebuild reconstruisait un état neuf, ce qui aurait effacé ces champs à chaque repaint — passé en copy(). Tome suivant — NextInSeriesResolver cherche sur l'appareil d'abord (instantané et hors ligne), sinon dans le catalogue via /opds/v2/series/<nom>. La comparaison des noms de série replie accents, casse et ponctuation : kvasir les normalise côté serveur, et une égalité stricte aurait arrêté les propositions au milieu d'une série — l'échec le plus trompeur, puisqu'il ressemble à une fin de série. Le prompt exige hasNavigated, donc rouvrir un livre terminé le remarque « lu » sans ouvrir de boîte de dialogue. Accepter redémarre le lecteur sur le nouveau fichier plutôt que d'échanger la publication en place : navigateur, LocatorStore et push de progression sont tous indexés sur le livre ouvert dans onCreate. 7 tests sur le résolveur (Robolectric) : tome sur l'appareil, trou dans la série, orthographes divergentes (dont un cas qui ne doit PAS matcher), pas de série, pas de position, fichier inconnu, entrée dont le fichier a disparu. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| design-system | ||
| gradle | ||
| licenses | ||
| .gitignore | ||
| build.gradle.kts | ||
| CLAUDE.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
huginn-tablet
Client Android tablette de la bibliothèque edda (OPDS 2.0). Frère moderne de l'app e-ink muninn — Hugin & Munin, les corbeaux d'Odin : mêmes fonctions, style Material 3 taillé pour une tablette récente (couleur dynamique, mode sombre, layouts adaptatifs).
Fonctions
- Catalogue OPDS 2.0 : navigation, sections/carrousels, facettes, pagination.
- Recherche plein texte.
- Fiche détaillée (couverture + métadonnées, deux colonnes sur grand écran).
- Téléchargement EPUB et bibliothèque locale (tri/filtre, progression).
- Lecteur intégré (Readium) : pagination, sommaire, notes, typographie par livre.
- Synchronisation cross-device : progression, notes, statut « lu », pile « à lire ».
- Mises à jour in-app (APK depuis Forgejo).
Design
Material 3 « Expressive » : Material You (Android 12+) + palette indigo de repli,
clair/sombre, Playfair Display pour les titres, formes arrondies, navigation
adaptative (rail/bottom bar). Détails dans design-system/MASTER.md.
Build
./gradlew :app:assembleDebug -PappVersion=0.1
./gradlew :app:installDebug
minSdk 26 · compile/target 35 · Kotlin 2.1 · Compose BOM 2024.12 · Readium 3.1.1.