diff --git a/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue b/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue index 1e94c98b..fd0248bb 100644 --- a/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue +++ b/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue @@ -100,14 +100,7 @@ function formatTime(ms: number | null | undefined): string { } const currentTime = computed(() => formatTime(state.value?.position_ms)); -const totalTime = computed(() => { - const duration = state.value?.duration_ms; - const transport = state.value?.transport_state; - console.log( - `[CurrentTrack] rendererId=${props.rendererId}, duration_ms=${duration}, transport=${transport}, title=${state.value?.current_track?.title}`, - ); - return formatTime(duration); -}); +const totalTime = computed(() => formatTime(state.value?.duration_ms)); const hasCover = computed( () => !!metadata.value?.album_art_uri && !imageError.value, diff --git a/pmoapp/webapp/src/composables/useCoverImage.ts b/pmoapp/webapp/src/composables/useCoverImage.ts index b7316520..e7f2968d 100644 --- a/pmoapp/webapp/src/composables/useCoverImage.ts +++ b/pmoapp/webapp/src/composables/useCoverImage.ts @@ -65,9 +65,6 @@ export function useCoverImage( if (retryCount.value < maxRetries) { retryCount.value++; - console.log( - `[useCoverImage] Retrying image load (${retryCount.value}/${maxRetries}): ${currentUrl.value}`, - ); setTimeout(() => { if (!currentUrl.value) return; @@ -77,7 +74,6 @@ export function useCoverImage( currentUrl.value, retryCount.value, ); - console.log(`[useCoverImage] Retry URL: ${cacheBustedUrl.value}`); }, retryDelay * retryCount.value); // Exponential backoff } else { console.error( @@ -89,9 +85,6 @@ export function useCoverImage( // Handle successful image load function handleImageLoad() { - console.log( - `[useCoverImage] Image loaded successfully: ${currentUrl.value}`, - ); imageLoaded.value = true; imageError.value = false; retryCount.value = 0; @@ -119,18 +112,11 @@ export function useCoverImage( watch( imageUrl, (newUri, oldUri) => { - console.log( - `[useCoverImage] URL changed from "${oldUri}" to "${newUri}"`, - ); - imageError.value = false; retryCount.value = 0; // Si c'est un changement d'URL (pas l'initialisation) if (oldUri && newUri && oldUri !== newUri) { - console.log( - `[useCoverImage] Changing image, keeping old one visible during load`, - ); isLoadingNewImage.value = true; // On garde imageLoaded à true pour garder l'ancienne image visible } else if (!newUri) { @@ -148,9 +134,6 @@ export function useCoverImage( if (newUri) { // Generate cache-busted URL cacheBustedUrl.value = getCacheBustedUrl(newUri, 0); - console.log( - `[useCoverImage] New cache-busted URL: ${cacheBustedUrl.value}`, - ); } else { cacheBustedUrl.value = null; } diff --git a/pmoapp/webapp/src/composables/useMediaServers.ts b/pmoapp/webapp/src/composables/useMediaServers.ts index cfaf03d0..0b7cc14f 100644 --- a/pmoapp/webapp/src/composables/useMediaServers.ts +++ b/pmoapp/webapp/src/composables/useMediaServers.ts @@ -37,9 +37,6 @@ function ensureSSEConnected() { switch (event.type) { case 'online': - // Nouveau serveur découvert - console.log(`[useMediaServers] Serveur ${serverId} (${event.friendly_name}) est maintenant en ligne`) - // Ajouter au cache avec les infos disponibles const server: MediaServerSummary = { id: serverId, @@ -55,9 +52,6 @@ function ensureSSEConnected() { break case 'offline': - // Serveur déconnecté - console.log(`[useMediaServers] Serveur ${serverId} est maintenant hors ligne`) - // Marquer comme offline dans le cache const existingServer = serversCache.value.get(serverId) if (existingServer) { @@ -77,7 +71,6 @@ function ensureSSEConnected() { case 'global_updated': // Invalider tout le cache de ce serveur - console.log(`[useMediaServers] GlobalUpdated pour ${serverId}`) const globalKeysToDelete: string[] = [] browseCache.value.forEach((_, key) => { if (key.startsWith(serverId + '/')) { @@ -89,7 +82,6 @@ function ensureSSEConnected() { case 'containers_updated': // Invalider les containers spécifiques - console.log(`[useMediaServers] ContainersUpdated pour ${serverId}:`, event.container_ids) event.container_ids.forEach(containerId => { const key = `${serverId}/${containerId}` browseCache.value.delete(key) diff --git a/pmoapp/webapp/src/composables/useRenderers.ts b/pmoapp/webapp/src/composables/useRenderers.ts index 831c2693..a9947164 100644 --- a/pmoapp/webapp/src/composables/useRenderers.ts +++ b/pmoapp/webapp/src/composables/useRenderers.ts @@ -48,11 +48,6 @@ function ensureSSEConnected() { // Gérer les événements Online/Offline différemment if (event.type === "online") { - // Nouveau renderer découvert - console.log( - `[useRenderers] Renderer ${rendererId} (${event.friendly_name}) est maintenant en ligne`, - ); - // Ajouter au cache avec les infos disponibles // Note: on n'a pas toutes les infos (capabilities, protocol) donc on fetch ensuite const renderer: RendererSummary = { @@ -86,11 +81,6 @@ function ensureSSEConnected() { } if (event.type === "offline") { - // Renderer déconnecté - console.log( - `[useRenderers] Renderer ${rendererId} est maintenant hors ligne`, - ); - // Marquer comme offline dans le cache const renderer = renderersCache.value.get(rendererId); if (renderer) { @@ -109,9 +99,6 @@ function ensureSSEConnected() { snapshotState.lastEventAt.set(rendererId, timestamp); const snapshot = snapshotState.snapshots.get(rendererId); - console.log( - `[SSE Event] type=${event.type}, rendererId=${rendererId}, snapshot exists=${!!snapshot}, transport=${snapshot?.state?.transport_state}`, - ); // Si pas de snapshot, on doit fetch if (!snapshot) { @@ -126,11 +113,6 @@ function ensureSSEConnected() { break; case "position_changed": - // Debug: log pour tracer les oscillations - console.log( - `[position_changed] renderer=${rendererId}, duration=${event.track_duration}`, - ); - // Mettre à jour position et durée de manière atomique pour garantir la cohérence // Le backend envoie TOUJOURS les deux valeurs (même si null) @@ -177,9 +159,6 @@ function ensureSSEConnected() { ...snapshot, state: newState, }; - console.log( - `[position_changed] Setting new snapshot for ${rendererId}, state ref=${Object.prototype.toString.call(newState)}, transport=${newState.transport_state}`, - ); snapshotState.snapshots.set(rendererId, newSnapshot); break; diff --git a/pmoapp/webapp/src/composables/useWebRenderer.ts b/pmoapp/webapp/src/composables/useWebRenderer.ts index f2b06765..9d729fd3 100644 --- a/pmoapp/webapp/src/composables/useWebRenderer.ts +++ b/pmoapp/webapp/src/composables/useWebRenderer.ts @@ -106,7 +106,6 @@ class GaplessEngine { private volume = 1.0; private muted = false; - private paused = false; /** Durée de la piste courante (secondes), lue via loadedmetadata */ private _duration = 0; @@ -144,10 +143,8 @@ class GaplessEngine { /** Charge la piste courante (sans la jouer). */ setCurrent(uri: string): void { - this.paused = false; this.nextUri = null; this.onStateChange("TRANSITIONING"); - console.debug(`[GaplessEngine] setCurrent: ${uri}`); const el = this.slots[this.currentSlot]; // Retirer l'écouteur "ended" de l'autre slot si présent @@ -163,7 +160,6 @@ class GaplessEngine { // Récupérer la durée dès que les métadonnées sont disponibles el.onloadedmetadata = () => { this._duration = el.duration || 0; - console.debug(`[GaplessEngine] loadedmetadata: duration=${this._duration.toFixed(2)}s`); }; // Ne pas émettre STOPPED ici : l'état reste TRANSITIONING jusqu'au play() } @@ -176,12 +172,10 @@ class GaplessEngine { el.src = uri; el.preload = "auto"; el.load(); - console.debug(`[GaplessEngine] setNext: préchargement de ${uri} dans slot ${nextSlot}`); } async play(): Promise { const el = this.slots[this.currentSlot]; - console.debug(`[GaplessEngine] play(), slot=${this.currentSlot}, src=${el.src}, paused=${this.paused}`); el.onended = () => this.onCurrentEnded(); @@ -192,7 +186,6 @@ class GaplessEngine { return; } - this.paused = false; this.startPositionTimer(); this.onStateChange("PLAYING"); } @@ -200,7 +193,6 @@ class GaplessEngine { pause(): void { const el = this.slots[this.currentSlot]; el.pause(); - this.paused = true; this.stopPositionTimer(); this.onStateChange("PAUSED"); this.sendPosition(); @@ -211,7 +203,6 @@ class GaplessEngine { el.onended = null; el.pause(); el.currentTime = 0; - this.paused = false; this.nextUri = null; this.stopPositionTimer(); this.onStateChange("STOPPED"); @@ -240,7 +231,6 @@ class GaplessEngine { } private onCurrentEnded(): void { - console.debug("[GaplessEngine] onCurrentEnded"); const nextSlot = (1 - this.currentSlot) as 0 | 1; if (this.nextUri !== null) { @@ -343,7 +333,6 @@ export function useWebRenderer() { async function execCommand(action: TransportAction, params?: CommandParams) { if (!engine) return; - console.debug(`[WebRenderer] Commande: ${action}`, params); switch (action) { case "set_uri": @@ -393,9 +382,6 @@ export function useWebRenderer() { case "session_created": rendererInfo.value = msg.renderer_info; connected.value = true; - console.info( - `[WebRenderer] Session créée — UDN: ${msg.renderer_info.udn}`, - ); onConnectedCallback?.(); break; @@ -424,12 +410,9 @@ export function useWebRenderer() { const protocol = location.protocol === "https:" ? "wss:" : "ws:"; const url = `${protocol}//${location.host}/api/webrenderer/ws`; - console.info(`[WebRenderer] Connexion à : ${url}`); - ws = new WebSocket(url); ws.onopen = () => { - console.info("[WebRenderer] WebSocket ouvert, envoi Init"); send({ type: "init", capabilities: { @@ -445,7 +428,6 @@ export function useWebRenderer() { connected.value = false; rendererInfo.value = null; ws = null; - console.info("[WebRenderer] Déconnecté"); }; ws.onerror = (err) => { diff --git a/pmoapp/webapp/src/main.ts b/pmoapp/webapp/src/main.ts index 39b3f00d..66972173 100644 --- a/pmoapp/webapp/src/main.ts +++ b/pmoapp/webapp/src/main.ts @@ -34,12 +34,7 @@ const uiStore = useUIStore(); sse.onConnectionChange((connected) => { uiStore.setSSEConnected(connected); - if (connected) { - console.log("[App] SSE connecté"); - } }); // Démarrer la connexion SSE sse.connect(); - -console.log("[App] PMOControl initialisé"); diff --git a/pmoapp/webapp/src/services/pmocontrol/sse.ts b/pmoapp/webapp/src/services/pmocontrol/sse.ts index ae2cbdc4..ecafeef0 100644 --- a/pmoapp/webapp/src/services/pmocontrol/sse.ts +++ b/pmoapp/webapp/src/services/pmocontrol/sse.ts @@ -31,13 +31,10 @@ export class PMOControlSSE { return } - console.log('[SSE] Connexion à /api/control/events...') - try { this.eventSource = new EventSource('/api/control/events') this.eventSource.onopen = () => { - console.log('[SSE] Connexion établie') this.reconnectAttempts = 0 this.isConnected = true this.notifyConnectionCallbacks(true) @@ -75,7 +72,6 @@ export class PMOControlSSE { } if (this.eventSource) { - console.log('[SSE] Déconnexion') this.eventSource.close() this.eventSource = null this.isConnected = false @@ -99,8 +95,6 @@ export class PMOControlSSE { this.maxReconnectDelay ) - console.log(`[SSE] Reconnexion dans ${delay / 1000}s (tentative ${this.reconnectAttempts})`) - this.reconnectTimer = window.setTimeout(() => { this.reconnectTimer = null this.connect()