sdk/index.js:
- accepted/pair sinyali → mwse.pairs.set(from, peer)
- end/pair sinyali → mwse.pairs.delete(from)
(İstek gönderen taraf pairs haritasına eklendi)
sdk/Peer.js:
- acceptPair() başarısında → mwse.pairs.set(socketId, this)
- rejectPair() → mwse.pairs.delete(socketId)
- endPair() → mwse.pairs.delete(socketId)
(Kabul eden taraf da pairs haritasına eklendi)
public/studio/Studio.js — tamamen yeniden yazıldı:
Gelen eşleme isteği → bildirim banner'ı:
- Yeşil arka plan, socket ID kodu olarak gösterilir
- [Reddet] → rejectPair() → banner kapanır
- [Kabul Et] → acceptPair() → banner kapanır, eşler yenilenir
Eşler kolonu: artık mwse.pairs'tan doğru veriler geliyor
Oda oluşturma: description alanı eklendi (sunucu zorunlu tutuyordu)
Oda oluştur → "Oda adı / Açıklama / Şifre" modal
ID ile ara → prompt() yerine modal
Araç çubuğu: "Kimliğim" kartı, kopyala butonu (⎘→✓ flash)
public/studio/style.css:
.mwse-notif-area / .mwse-notif-bar / __msg / __dot / __actions
go test -race ./... — yeşil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sdk/index.js — bağlantı hatası düzeltildi:
- new MWSE() options=undefined → TypeError patlaması
- constructor(options) → opts = { endpoint:'auto', ...options }
- Artık new MWSE() / new MWSE('ws://host') / new MWSE({…}) hepsi çalışıyor
public/studio/Studio.js — tamamen yeniden yazıldı:
Eşler kolonu:
- mwse.pairs'ten gerçek eşleri gösteriyor
- Her eş için: Video+Ses / Sesli Ara / Ekran Paylaş / Kamera Seç /
Mikrofon Seç / Dosya Gönder / Aktif Akışlar / Eşleşmeyi Bitir
- "ID ile ara" → prompt ile direkt peer ID girerek requestPair()
Odalar kolonu: mwse.rooms'tan oda + üye listesi
Cihazlar kolonu:
- MediaSources.devices() ile kamera ve mikrofon listesi
- Her cihaza tıkla → seçili eşe akış başlat veya önizle (floating video)
- İzin İste butonu → izin alındıktan sonra listeyi yenile
Akışlar kolonu: peer.rtc._streams.list() canlı gösterimi
Kalite kolonu: Yüksek/Orta/Düşük preset + mute/stop
Araç çubuğu: socket ID, durum mesajı, Ana butonu (popTo(0))
Gelen track'ler: audio otomatik çalınır, status bar bildirir
Cihaz önizleme: floating video element (✕ ile kapatılır)
public/studio/app.js: studio.mount() await ile çağrılıyor
go test -race ./... — yeşil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>