Commit Graph

3 Commits

Author SHA1 Message Date
abdussamedulutas 3736d78dfe Studio: eşleşme akışı tam çalışır hale getirildi
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>
2026-06-17 13:38:17 +03:00
abdussamedulutas 66158b1f74 Studio bağlantı fix + tam WebRTC/cihaz yönetimi
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>
2026-06-17 13:22:03 +03:00
abdussamedulutas 28abefaaa9 Frontend TS→JS ES modülleri + #42 codec altyapısı + versiyon握手
SDK (sdk/ dizini — native ES module, bundler yok):
- sdk/version.js      : SDK_VERSION="1.0.0", CODEC_JSON/BINARY sabitleri
- sdk/codec.js        : WSTSCodec — JSON (şu an), binary stub (#42 altyapısı)
  Binary çerçeveleme: opcode(1B)+length(4B)+payload; şimdilik NotImplemented fırlatır
- sdk/EventTarget.js  : MWSEEventTarget (browser EventTarget ile çakışma yok)
- sdk/Connection.js   : endpoint:"auto" → import.meta.url ile sunucu tespiti
- sdk/WSTSProtocol.js : codec üzerinden encode/decode, sinyal yönlendirme
- sdk/EventPool.js    : request()/only() ayrımı (#33 korunuyor)
- sdk/Peer.js         : WebRTC stub bağlantısı, WOM pack/to (#33)
- sdk/Room.js         : WOM pack/room (#33), createRoom/join/eject
- sdk/PeerInfo.js, RoomInfo.js, IPPressure.js, P2PFileSender.js
- sdk/WebRTC.js       : placeholder — ayrıca ele alınacak
- sdk/index.js        : MWSE ana sınıfı + versiyon el sıkışması

Versiyon el sıkışması (backend ↔ frontend zorunlu):
- internal/protocol/version.go  : WSTSVersion="1.0.0", WSTSCodecJSON=0
- internal/services/yourid.go   : bağlantı anında wsts/hello sinyali gönderir
  (v + codecs listesi; id sinyalinden ÖNCE gelir)
- sdk/index.js _awaitHello()    : scope çalıştırılmadan önce wsts/hello beklenir;
  versiyon uyuşmazsa bağlantı kapatılır + 'error' eventi ateşlenir (5s timeout)

Servis (httpserver):
- /sdk.js  → 301 /sdk/index.js  (import.meta.url doğru çözümlenir)
- /sdk/    → sdk/ dizini file server
- internal/config: MWSE_SDK_DIR env değişkeni (varsayılan ./sdk)

Demo dosyaları: public/demos/{chat,audio,video}.html
go test -race ./... yeşil

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 12:24:21 +03:00