Mobile UX v2

Mobile Player Gelistirmeleri

Muzibu - iOS Safari + MediaSession Optimizasyonlari

29 Aralik 2025

Basit Anlatim (Herkes Icin)

Mobil muzik calar deneyimini iyilestirdik. Gereksiz butonlari kaldirdik, sure gosterimini daha kullanisli hale getirdik ve konsol hatalarini temizledik. Ayrica kilit ekranindaki play/pause butonlarinin calismama sorunu duzeltildi.

v2 Yeni Duzeltmeler

🔧

MediaSession Handler Bug Duzeltildi

Kilit ekrani kontrolleri

Lock screen ve Control Center'daki play/pause butonlari yanlis fonksiyon cagiriyordu (togglePlay()). Dogru fonksiyon (togglePlayPause()) ile duzeltildi.

// Onceki (hatali):

navigator.mediaSession.setActionHandler('play', () => self.togglePlay());

// Simdi (duzeltildi):

navigator.mediaSession.setActionHandler('play', () => self.togglePlayPause());

🔒

Sekmeler Arasi Izolasyon Dogrulandi

Her sekme bagimsiz

Kod analizi sonucu dogrulandi: Sekmeler arasi iletisim mekanizmasi (BroadcastChannel, storage event) bulunmuyor. Her sekme tamamen bagimsiz calisiyor.

🛡️

Auto-Play Guard'lari Dogrulandi

Kullanici izni olmadan calma yok

init() fonksiyonu clearPlayerState() cagiriyor, preloadLastPlayedSong() sonunda isPlaying = false set ediyor. Sayfa acildiginda asla otomatik calma yok.

v1 Yapilan Degisiklikler

🔇

Mute Butonu Kaldirildi

Mobil dropdown'dan

Mobilde ses kontrolu zaten cihaz butonlariyla yapiliyor. Ekstra mute butonu gereksiz yer kapliyordu.

⏱️

Kalan Sure Gosterimi

Album kapagi uzerinde

Onceden gecen sureyi gosteriyordu. Simdi kalan sureyi gosteriyor.

↔️

Progress Bar Simetrisi

Sol/sag bosluklar esitlendi

👆

Drag Feedback Kaldirildi

Progress bar altindan

💿

"Albume Git" Butonu Kaldirildi

Dropdown menuden

Duzeltilen Console Hatalari

Onceki Hata:

No context to update - muzibu-store.js:251

Cozum: console.warn kaldirildi, sessiz guard eklendi

Onceki Hata:

seekTo called with invalid argument: null - player-core.js:1786

Cozum: null/undefined kontrolu eklendi

Onceki Hata:

Safari preload error: 464 - player-core.js:5006

Cozum: console.warn kaldirildi (Safari bilinen davranis)

✓ Simdi Safari konsolunda hata mesaji gorulmemeli

isPlaying Guard Sistemi

Kullanici pause/stop yaptiginda player'in kendiliğinden devam etmesini onleyen guard'lar:

// onTrackEnded() - Sarki bittiginde (line 1835-1841)

if (!this.isPlaying) {
    serverLog('onTrackEndedBlocked', { reason: 'isPlaying is false' });
    return; // Sonraki sarkiya gecme!
}

// startCrossfade() - Crossfade baslatma (line 1348-1350)

if (!this.isPlaying) return; // Crossfade baslatma!

// clearPlayerState() - Sayfa yenilenince (line 5356)

this.isPlaying = false; // Her zaman false ile basla

// preloadLastPlayedSong() - Son sarkiyi yukle (line 561)

this.isPlaying = false; // Preload, auto-play degil!

Crossfade Hakkinda Not

Crossfade ozelligi mobil Safari'de sorunlu calistigi icin devre disi birakildi. Desktop'ta normal calismaya devam ediyor.

crossfadeEnabled: !(/iPhone|iPad|iPod/.test(navigator.userAgent) && !window.MSStream)

Degisen Dosyalar

M public/themes/muzibu/js/player/core/player-core.js +MediaSession fix
M public/themes/muzibu/js/muzibu-store.js
M resources/views/themes/muzibu/components/player.blade.php

Ilgili Dokumanlar