Onglet Radio sur le serveur, bouton de synchronisation sur le mobile (2.5.0)

Le serveur gagne un onglet Radio : les stations de l'annuaire, écoutables en
direct dans le navigateur ou enregistrables — jusqu'à l'arrêt ou pour une durée
choisie —, puis réécoutables depuis l'interface. Quatre enregistrements en
parallèle au plus ; si le flux tombe, il est rouvert et le fichier continue.
Les enregistrements rejoignent la bibliothèque : le mobile les reçoit.

Un redémarrage du service clôt proprement les captures en cours, et celles
restées « en cours » après un plantage sont récupérées au démarrage suivant.
La copie de flux sans blocs ICY, propre au guet, est extraite pour être
partagée.

Côté mobile, la synchronisation manuelle n'était qu'un petit lien dans l'onglet
Connexion : elle a maintenant un vrai bouton dans l'onglet Synchronisation.
Deux passages ne se chevauchent plus, et une erreur inattendue s'affiche au lieu
de fermer l'application.

Le code Kotlin n'a pas été compilé sur cette machine (pas de JDK) : il a été
relu, mais reste à construire.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N6pmSE168yjyf8vgV8mZx6
This commit is contained in:
tuxgyverandClaude Sonnet 5 committed 2026-09-20 22:39:59 +02:00
1 parent 7810bef8a3
commit 5b5e90247f
15 files changed
+593 -48

No files matched your search

+34
View File
@@ -5,6 +5,40 @@ Toutes les évolutions notables de Noxely 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/).
## [2.5.0] — 2026-09-20
### Ajouté
- **Onglet `📻 Radio`.** Les stations de l'annuaire, filtrables par genre et par nom. Chacune
s'écoute en direct depuis le navigateur ou s'enregistre, jusqu'à l'arrêt ou pour 15 min, 30 min,
1 h ou 2 h. Jusqu'à quatre stations en parallèle ; une station déjà en cours est refusée.
- **Réécoute.** Les enregistrements sont listés avec leur taille et leur durée : on les lit depuis
le navigateur, on les supprime, et le mobile les reçoit à sa prochaine synchronisation comme
n'importe quel média. Les captures faites par un guet y figurent aussi.
- **Reprise sur coupure.** Quand le flux tombe, le serveur le rouvre et continue dans le même
fichier ; il n'abandonne qu'après cinq tentatives infructueuses d'affilée, en gardant ce qui a
été capté.
- Routes `POST /api/radio/record`, `POST /api/radio/record/{id}/stop` et
`GET /api/radio/recordings`. Réglage `NOXELY_RECORD_MAX_MINUTES` (180) : plafond de durée, pour
qu'un enregistrement oublié ne remplisse pas le disque.
- **Bouton « Synchroniser maintenant » dans l'application.** Il était jusque-là réduit à un
petit lien dans Réglages ▸ Connexion, visible seulement une fois connecté. Il figure
désormais en pleine largeur dans l'onglet **Synchronisation**, avec un indicateur pendant le
transfert, et grisé — avec la raison — tant que le serveur n'est pas renseigné.
### Modifié
- **Deux synchronisations ne se chevauchent plus.** Le passage planifié et le bouton pouvaient
télécharger les mêmes fichiers en double ; le second est maintenant refusé avec le message
« Synchronisation déjà en cours ». Une erreur inattendue pendant la synchronisation manuelle
s'affiche au lieu de fermer l'application.
- **Un redémarrage du service ne laisse plus d'enregistrement « en cours » à jamais.** Le serveur
clôt proprement les captures à l'arrêt ; si le processus meurt brutalement, les fichiers
qui contiennent de l'audio sont déclarés prêts au démarrage suivant, les vides écartés.
- La copie d'un flux en retirant les blocs ICY, jusque-là propre au guet, est désormais partagée
avec l'enregistrement à la demande.
## [2.4.0] — 2026-09-20
### Ajouté