Un enregistrement s'appelait « Station — date », ce qui oblige à rouvrir le fichier pour savoir ce qu'il contient. Le flux ICY annonce le morceau diffusé : le service le demande, le premier titre capté nomme l'enregistrement, la station devient le sous-titre, et le morceau en cours s'affiche pendant la capture. Ces octets de métadonnées ne sont pas de l'audio et sont retirés avant écriture ; laissés dans le fichier, ils le rendraient illisible. La valeur du champ se lit jusqu'à sa fin, et non jusqu'à la première apostrophe, sans quoi « Ain't That a Kick in the Head » se réduirait à « Ain ». L'onglet Hors ligne ignorait par ailleurs les enregistrements : n'ayant aucun état de téléchargement, ils échappaient à son filtre alors qu'ils sont, par nature, ce qu'il y a de plus disponible sans réseau. Ils y figurent désormais, la taille annoncée les additionne au cache, et « Tout libérer » dit clairement qu'il les épargne.
117 lines
6.5 KiB
Markdown
117 lines
6.5 KiB
Markdown
# Changelog
|
|
|
|
Toutes les évolutions notables de Cachette sont documentées ici.
|
|
|
|
Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/)
|
|
et le versionnage [SemVer](https://semver.org/lang/fr/).
|
|
|
|
## [1.4.0] — 2026-09-13
|
|
|
|
### Ajouté
|
|
|
|
- Titrage automatique des enregistrements radio. Le service demande désormais les métadonnées
|
|
ICY, ce qui fait annoncer par la station le morceau diffusé : l'enregistrement prend son nom,
|
|
la station passe en sous-titre, et le titre en cours s'affiche pendant la capture comme dans
|
|
la notification. Ces octets de métadonnées sont retirés avant écriture — laissés dans le
|
|
fichier, ils le rendraient illisible. Les stations qui n'en diffusent pas gardent le nom
|
|
« Station — date ».
|
|
|
|
### Corrigé
|
|
|
|
- Les enregistrements radio n'apparaissaient pas dans l'onglet « Hors ligne », qui ne listait que
|
|
ce qui porte un état de téléchargement. L'écran annonçait donc un nombre d'éléments disponibles
|
|
sans réseau en omettant précisément ceux qui l'étaient déjà. La taille affichée additionne
|
|
maintenant le cache et les enregistrements, et « Tout libérer » précise qu'il ne les touche pas.
|
|
- Les titres comportant une apostrophe étaient tronqués à la première rencontrée : « Ain't That a
|
|
Kick in the Head » devenait « Ain ». La valeur est lue jusqu'à la fin du champ ICY.
|
|
|
|
## [1.3.0] — 2026-09-13
|
|
|
|
### Ajouté
|
|
|
|
- **Radio.** Les stations les plus écoutées via l'annuaire communautaire Radio Browser, avec
|
|
filtres par genre et recherche par nom. Chaque station s'écoute en direct, ou s'enregistre :
|
|
un service de premier plan copie le flux dans un fichier jusqu'à l'arrêt demandé, et le verse
|
|
dans la bibliothèque — déjà hors connexion, sans rien à télécharger ensuite.
|
|
- Relance automatique des téléchargements en échec, après une pause croissante de 5, 15 puis
|
|
45 secondes. Une relance manuelle repart d'un compteur neuf.
|
|
|
|
### Notes
|
|
|
|
- Les flux HLS sont écartés de la liste des stations : ils se lisent, mais ne s'enregistrent pas
|
|
par copie d'octets, et un bouton qui échouerait vaudrait moins que pas de bouton.
|
|
- La relance et la reprise sur coupure réseau sont deux mécanismes distincts, et c'est voulu :
|
|
sans réseau, Media3 met le téléchargement en attente et le reprend de lui-même ; la relance,
|
|
elle, ne traite que les vrais échecs serveur.
|
|
- Le repli automatique vers une autre source n'a pas été retenu : rien ne garantit qu'un même
|
|
titre trouvé sur deux catalogues soit le même enregistrement, et l'application téléchargerait
|
|
silencieusement autre chose que ce qui a été choisi.
|
|
|
|
## [1.2.0] — 2026-09-13
|
|
|
|
### Ajouté
|
|
|
|
- Écran de choix des pistes. Un album ou un livre n'est plus une boîte noire : ses pistes sont
|
|
listées avec leur durée et leur taille, le total est annoncé, et le bouton dit exactement ce
|
|
qu'on s'apprête à télécharger (« Garder 4,2 Mo »). Les variantes d'un même morceau sont
|
|
regroupées — autant de lignes que d'œuvres, pas que de formats.
|
|
- Écoute en ligne avant téléchargement : un appui sur une piste la joue en streaming sans rien
|
|
mettre en cache.
|
|
- Playlists : listes nommées, ajout par appui long sur un média ou depuis l'écran de lecture,
|
|
lecture enchaînée, suppression piste par piste.
|
|
- Contrôles de lecture complétés : arrêt, saut de 15 secondes en avant et en arrière.
|
|
- Filtrage par langue des catalogues (français, anglais, allemand, espagnol, italien, néerlandais).
|
|
- Nouvelle source libre : **Wikimedia Commons**, pour les enregistrements classiques et les
|
|
archives sonores du domaine public.
|
|
|
|
### Corrigé
|
|
|
|
- Le filtre de langue de LibriVox ne pouvait pas fonctionner côté serveur : l'API accepte le
|
|
paramètre `language` puis l'ignore (`language=French` seul renvoie des livres anglais). Le tri
|
|
se fait désormais sur le champ `language` de chaque livre.
|
|
- Délais réseau ajustés d'après la latence mesurée des services : LibriVox répond en 14 à
|
|
16 secondes quelle que soit la taille demandée, ce qui faisait expirer les requêtes parallèles.
|
|
|
|
### Notes
|
|
|
|
- Deux catalogues ont été évalués puis écartés sur mesure plutôt que sur principe : **Openverse**
|
|
refuse désormais l'accès anonyme (401 sur huit requêtes sur huit) et **ccMixter** exige un
|
|
en-tête `Referer` que Media3 ne permet pas de poser par téléchargement.
|
|
|
|
## [1.1.0] — 2026-09-11
|
|
|
|
### Ajouté
|
|
|
|
- Mise à jour intégrée : Cachette surveille les releases du dépôt, télécharge l'APK en Wi-Fi
|
|
et propose l'installation. Vérification quotidienne en tâche de fond, et à la demande depuis
|
|
l'écran Sources, qui affiche aussi la version installée.
|
|
- La taille approximative de chaque résultat Internet Archive est affichée avant sélection : un
|
|
élément de 500 Mo ne se laisse plus confondre avec une chanson.
|
|
|
|
### Corrigé
|
|
|
|
- Recherche LibriVox qui ne renvoyait rien. L'API cherche les titres en correspondance exacte
|
|
sauf si la requête est préfixée par `^`, et les auteurs sur le seul nom de famille : « Jules
|
|
Verne » n'atteignait donc ni l'un ni l'autre. Les trois critères sont désormais interrogés en
|
|
parallèle et dédoublonnés, et un « aucun résultat » (HTTP 404) n'est plus traité comme une panne.
|
|
- Téléchargements Internet Archive qui échouaient ou n'aboutissaient pas. Trois causes distinctes :
|
|
les éléments en accès restreint répondaient 401 et sont maintenant écartés dès la recherche ;
|
|
seuls les fichiers `.mp3` et `.mp4` étaient acceptés, ce qui excluait des éléments ne proposant
|
|
que du `.m4a` ou de l'`.ogg` ; et le fichier retenu était le premier trouvé, souvent l'original
|
|
non compressé — c'est désormais le plus petit dérivé, soit 9 Mo au lieu de 30 sur un cas mesuré.
|
|
|
|
## [1.0.0] — 2026-09-11
|
|
|
|
### Ajouté
|
|
|
|
- Lecture audio et vidéo en arrière-plan (Media3 `MediaSessionService`), avec notification
|
|
système, commandes casque et écran verrouillé.
|
|
- Mise en cache hors connexion explicite : téléchargement à la demande, reprise automatique
|
|
après coupure réseau ou redémarrage via WorkManager.
|
|
- Bibliothèque unifiée mêlant le contenu de l'appareil (MediaStore) et les médias importés.
|
|
- Sources : appareil, lien direct `http(s)`, flux RSS de podcast.
|
|
- Catalogues libres de droits intégrés : Internet Archive et LibriVox, sans compte ni clé d'API.
|
|
- Parcours d'une source avec sélection multiple et téléchargement en lot.
|
|
- Écran « Hors ligne » : taille du cache, progression, libération élément par élément ou en bloc.
|
|
- Interface Jetpack Compose Material 3, thème clair et sombre, palette de marque.
|