Files
pmomusic/.claude/CLAUDE.md
Eric Coissac 0f20a11666 feat: améliorer la gestion des métadonnées de flux en continu avec dc:date
- Ajout d'une méthode de travail structurée pour éviter le 'vibe programming'
- Version bump à 0.3.30
- Correction de chrono dans pmocontrol Cargo.toml (suppression d'optional)
- Dans MusicRenderer : utilisation de dc:date pour calibrer track_start_time sur la diffusion réelle des flux continus
- Ajout d'une fonction parse_rfc3339_to_system_time
- Dans pmoradiofrance : remplacement de la durée dynamique (temps restant) par une durée fixe calculée à partir des bornes start_time/end_time, et ajout de start_time dans les métadonnées DIDL via dc:date
- Correction du calcul de l'élément 'now playing' dans PullResponse pour utiliser les bornes temporelles exactes
- Mise à jour de version.txt
2026-03-26 00:46:39 +01:00

1.5 KiB

PMOMusic Project Configuration

Version Control

Ce projet utilise Jujutsu (jj) pour le contrôle de version, PAS git.

  • Utiliser les commandes jj au lieu des commandes git
  • Bookmark principal : main
  • Ne jamais suggérer de commandes git

Environnement

Le PATH et les variables d'environnement sont configurés dans .claude-env à la racine du projet.

Configuration de l'application

  • Fichier de configuration principal : .pmomusic/config.yaml
  • Configuration UPNP personnalisable pour différencier les instances en développement

Développement

Pendant le développement, plusieurs serveurs PMOMusic peuvent tourner en parallèle. Utiliser la configuration UPNP dans .pmomusic/config.yaml pour différencier les instances :

host:
  upnp:
    manufacturer: "PMOMusic-Dev1"
    udn_prefix: "pmomusic-dev1"
    model_name_prefix: "PMOMusic-Dev1"
    friendly_name_prefix: "PMOMusic-Dev1"

Méthode de travail

Avant de modifier quoi que ce soit sur une fonctionnalité non triviale :

  1. Lire et comprendre le flux complet des données concernées, de bout en bout
  2. Identifier précisément où ça casse et pourquoi
  3. Faire une seule modification ciblée

Ne pas avancer par tâtonnements ("vibe programming") — cela produit des allers-retours, des bugs introduits puis annulés, et du code inutilement compliqué.

Architecture

  • Projet Rust multi-crates avec workspaces
  • Crates principales : pmoupnp, pmomediaserver, pmomediarenderer, pmoconfig
  • Pattern d'extension de configuration via traits (voir pmocache/src/config_ext.rs)