Commit Graph

40 Commits

Author SHA1 Message Date
9b5a028f3f 🎨 Improve mobile safe-area support and refine UPnP/Chromecast rendering
- Add viewport-fit=cover to HTML meta for iOS safe-area support
- Extend bottom drawers and tab bar into system navigation area using env(safe_area_inset_bottom)
- Adjust queue drawer transforms to account for safe-area padding
+ Add enrich_position_from_queue() helper and integrate across UPnP, Arylic TCP,
  LinkPlay & Chromecast backends to ensure queue-authoritative metadata
+ Add transient error retry logic for UPnP control actions (2 retries, 300ms delay)
+ Separate timeouts: short poll timeout for GetTransportInfo/GetPosition (3s),
  longer actiontimeout SetAVTURI/SetNext... for slow devices
+ Remove duplicate continuous-stream detection from play_uri() methods (now handled centrally)
- Bump version to 0.3.49
2026-04-13 04:14:18 +02:00
718c0d2aed 🔧 refactor(base_url): centraliser gestion des URLs absolues via middleware
- Ajout d'un BaseUrl layer dans pmoserver pour gérer les URLs absolues (LAN/WAN)
- Renommage de `covers_absolute_url_for` → ` covers_relative_route`, stocker les routes relatives
- Mise à jour des appels UPnP vers `covers_absolute_url_for_upnp` (fallback PMO_SERVER_URL)
- Correction des tâches de fond pour stocker les routes, pas l'URL complète
- Suppression du feature gate `simd` inutilisé dans pmoaudio/src/lib.rs
2026-04-04 10:14:51 +02:00
ec852c0002 feat: ajouter middleware Axum BaseUrl pour centraliser les URLs HTTP
Supprimer les fichiers obsolètes de configuration Claude (.claude/CLAUDE.md et .claude/hooks/preToolUse.sh), mettre à jour .gitignore pour ignorer les répertoires Claude, et ajouter une spécification détaillée pour implémenter un middleware Axum `BaseUrl` afin de centraliser la construction des URLs HTTP en fonction des headers X-Forwarded-*, évitant les hardcodages d'IP locale dans les réponses au frontend.
2026-03-29 19:49:26 +02:00
0137a4675f feat: add Qobuz playlist caching with versioning and infinite scroll UI
- Add qobuz_debug to .gitignore
- Bump PMOMusic version to 0.3.26
- Add .cargo/ copy in Dockerfile for registry config
- Implement infinite scroll in ServerDrawer.vue with IntersectionObserver and sentinel element
- Add source/source_version fields to playlists for cache invalidation
- Update pmocache and pmoplaylist DB schemas with versioning (SCHEMA_VERSION)
- Add Qobuz API metadata fetching and pagination for playlist tracks
- Implement album/playlist cache invalidation based on released_at/updated_at timestamps
- Refactor adapt_playlist_items_to_qobuz → adapt_items_to_qobuz with cleaner logic
- Add debug mode to save Qobuz API responses when QOBUZ_DEBUG_DIR is set
2026-03-25 11:08:28 +01:00
f0dd028051 chore: bump version to 0.3.26 and configure custom cargo registry
- Update version to 0.3.26 in Cargo.toml and version.txt
- Add custom registry 'pmo' to .cargo/config.toml
- Remove .cargo/ from .gitignore to allow registry config tracking
2026-03-24 16:15:08 +01:00
0cca9229ad feat: implement livemeta/pull API and station mapping
- Replace old /api/live endpoint with new livemeta/pull API (api.radiofrance.fr)
- Add hardcoded station ID/stream mappings with runtime-updatable mapping
- Implement station rediscovery on unknown slug or stream failure
- Add persistent caching for station mappings (30-day TTL) via pmoconfig
- Update live_metadata to use numeric IDs and handle ID mismatches
- Add station validation (API + stream accessibility check)
- Refactor metadata caching with fetched_at and fallback TTL
- Update discover_local_radios to scrape SvelteKit page data
- Add new models: PullResponse, PullStep, EmbedImage for livemeta format
- Improve live_metadata.rs example to safely truncate intros
- Enable parallel DIDL generation for playlist groups
2026-03-24 10:01:47 +01:00
90c8a6e562 Un peu de ménage pour retirer les répertoires target poussés par erreur. 2026-01-31 12:42:38 +01:00
e10f217385 feat(pmoradiofrance): implémentation complète du client Radio France
Cette mise à jour implémente complètement le client Radio France avec :

- Découverte dynamique des stations (principales, webradios et locales)
- Accès aux métadonnées live via l'API publique
- Gestion des flux audio HiFi (AAC 192 kbps, HLS)
- Support du cache des stations avec TTL configurable
- Extension de configuration pour pmoconfig
- Exemples d'utilisation et tests d'intégration

Les stations découvertes incluent : France Inter, France Info, France Culture, France Musique, FIP, Mouv', France Bleu (locales), et leurs variantes webradios respectives.

Les fonctionnalités incluent :
- Récupération des métadonnées live (émission en cours, producteur, visuels)
- Accès aux flux audio HiFi
- Gestion intelligente des rafraîchissements via delayToRefresh
- Cache des listes de stations avec TTL configurable (7 jours par défaut)

Les tests d'intégration couvrent : découverte des stations, métadonnées live, flux audio, cache, et gestion des erreurs.
2026-01-22 22:00:40 +01:00
90399b408a correction for lazy playlist and lazy cache 2025-12-15 12:17:33 +01:00
9f62191830 webui control point step 2 2025-12-06 12:48:21 +01:00
f096a8cd8f Couche d'abstraction supplementaire 2025-12-06 12:48:21 +01:00
996a2096d0 On revient sur les débugages du Média Serveur. 2025-12-06 12:48:21 +01:00
9bc0c2544d Round 3 2025-11-17 21:30:26 +01:00
97a383c079 Tentative de gestion d'un historique 2025-11-16 08:02:50 +01:00
Claude
282b4cfad6 Amélioration documentation pour environnement Claude Code
- Ajout d'un guide complet pour les sessions Claude Code
- Correction: cpal remplace rodio pour AudioSink
- Ajout de libasound2t64 dans les dépendances (bibliothèque partagée)
- Ajout de RUSTFLAGS dans la configuration des variables d'environnement
- Documentation du workflow pour chaque nouvelle session
- Ajout de setup-env.sh au .gitignore

Le guide inclut maintenant:
- Installation complète sans sudo
- Configuration des variables d'environnement
- Vérification de l'installation
- Compilation et test des exemples
- Résolution des erreurs communes
2025-11-05 18:57:52 +00:00
8245fa6f41 intégration de pmoflac dans pmoaudiocache. nétoyage du code audio obsolete 2025-10-29 22:36:36 +01:00
5a785a445a Création d'un décodeur générique 2025-10-29 22:36:36 +01:00
0313492978 Ajout d'un lecteur AIFF 2025-10-29 22:36:36 +01:00
3cb90b72ac Crate pmoflac 2025-10-29 22:36:36 +01:00
ea6dd03ac0 Je ne sais pas trop 2025-10-29 22:35:53 +01:00
ecb362ae48 refactoring des caches 2025-10-25 17:46:53 +02:00
b95bebdb6a Patch of the web logger 2025-10-20 19:50:58 +02:00
79940e685c Correction on cache system 2025-10-20 16:18:21 +02:00
3ca6fa9884 Complete la crate pmoaudio 2025-10-11 16:02:45 +02:00
05aa1634e9 test ollama code 2025-10-09 22:38:02 +02:00
c7d7ed749a Version fonctionnelle du cache 2025-10-09 06:59:55 +02:00
9bf5bc7fe2 Ajoute pmocovers 2025-10-07 11:41:10 +02:00
e5f5686ba1 Revenons sur les devices 2025-10-05 22:03:13 +02:00
271bc76817 Developpement de la library pmoupnp 2025-10-05 21:29:10 +02:00
731e58b1d0 on redemare en Rust
This commit contains the following changes:
     M .gitignore
     A Cargo.lock
     A Cargo.toml
     A PMOMusic/Cargo.toml
     A PMOMusic/src/main.rs
     D README.md
     A Readme.md
2025-10-05 21:29:10 +02:00
99caa592f5 On range tout pour recommencer en rust 2025-09-16 21:00:02 +02:00
7949be9621 On efface le cache des image 2025-09-16 20:35:52 +02:00
be2792b27d Intégration de libsoxr pour le rééchantillonnage audio 2025-09-16 20:25:46 +02:00
d799a3fe38 Maintenant capter les URL des documents didl parser et les stocker dans le cache... 2025-09-09 21:05:05 +02:00
2a0d69e6b8 ignore local config file 2025-09-06 17:46:06 +02:00
d1132e00cd On avance... 2025-09-06 17:45:28 +02:00
a3a0b1256b Add doc with ai 2025-07-12 21:23:39 +02:00
821a37f975 change a lot 2025-07-12 12:28:13 +02:00
a22eaa641a Add git ignore 2025-06-21 17:23:12 +02:00
c80f49f615 Premier commit 2025-06-08 13:25:01 +02:00