Commit Graph

27 Commits

Author SHA1 Message Date
abdussamedulutas 0c654ae4c8 Studio: UUID yerine sanal IP gösterimi
Akış:
  - scope sonrası allocAPIPAddress() → 10.x.x.x al
  - PeerInfo.set('ip', ip) → auth/info → tüm mevcut pairlere yayımlar
  - accepted/pair sonrası tekrar set() → yeni paire de ulaşır
  - pair/info sinyali → peer.info.info.ip güncellenir (SDK zaten yapıyor)

Araç çubuğu ID kartı:
  - Sanal IP: büyük, mavi (10.x.x.x) — IP alındıkça güncellenir
  - Kısa UUID: küçük, soluk (son 8 karakter) — scope'ta dolar
  - Tıkla → tam UUID kopyalanır (paylaşmak için hâlâ gerekli)

Eşler kolonunda:
  - Etiket: peer.info.info.ip (varsa) yoksa kısa UUID
  - Meta: kısa UUID · bağlantı türü · akış sayısı

Eş eylem kolonu başlığı: IP veya kısa UUID
Oda üyeleri: kendi kaydı için sanal IP gösterilir

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 13:46:27 +03:00
abdussamedulutas d9598ba15f Studio: kabul sonrası Eşler kolonuna yönlendir + addStream duplicate fix
- acceptPair başarılı → popTo(1) + pushPeersColumn() → kabul eden taraf
  anında Eşler kolonunda yeni eşi görür
- _call(): aynı type (cam+mic/mic/screen) zaten varsa removeStream sonra addStream
- _pushDevicesColumn: aynı cihaz label'ı varsa removeStream sonra addStream
  (kullanıcı ikinci kez cihaz seçtiğinde 'already exists' hatası önlendi)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 13:43:49 +03:00
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 3bba5af340 Studio: ID kartı, modal, oda oluşturma, Ana butonu kaldırıldı
Araç çubuğu:
  - Socket ID → kopyalanabilir kart (tıkla → clipboard, yeşil flash)
  - "Ana" butonu kaldırıldı (kafakarıştırıcıydı, Miller kolon kendisi navigasyon sağlıyor)
  - Durum mesajı sağda kaldı

Modal sistemi (_showModal):
  - Başlık + label'lı input alanları + İptal/Tamam butonları
  - Arka plana tıkla veya ✕ ile kapat
  - Enter → onayla, Esc → kapat
  - İlk alana otomatik focus

Eşler kolonu:
  - "ID ile ara" → prompt() yerine modal
  - Alan: Socket ID, placeholder: 'xxxxxxxx-xxxx-…'

Odalar kolonu:
  - "Oda Oluştur" (primary buton) → modal
  - Alanlar: oda adı + opsiyonel şifre
  - Oluşturunca oda kolonunu yeniler

style.css:
  - .mwse-id-card + __label/__value/__copy + --copied
  - .mwse-modal-overlay / .mwse-modal / __header/__body/__field/__footer/__input/__close

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 13:31:09 +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 764644176c Studio ürünü sdk/'dan public/studio/'a taşındı + /studio route
sdk/studio/ → public/studio/:
  - index.js      → Studio.js (import yolları güncellendi:
                     ../webrtc/ → /sdk/webrtc/, ./ColumnView → /studio/ColumnView)
  - ColumnView.js → /studio/ altında (import: ./Column → /studio/Column)
  - Column.js, style.css → taşındı, değişmedi

public/studio/index.html — tam ürün HTML'i:
  - Loading overlay (spinner, hata durumu)
  - <script type="module" src="/studio/app.js">

public/studio/app.js — uygulama başlangıcı:
  - MWSE /sdk/index.js'den import
  - Studio /studio/Studio.js'den import
  - scope/close/error olaylarına göre loading overlay yönetimi

httpserver.go:
  - /studio     → public/studio/index.html
  - /studio/    → http.FileServer(public/studio/) — JS/CSS asset'leri

localhost:PORT/studio → Studio açılıyor
go test -race ./... — tüm testler yeşil

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 13:13:56 +03:00
abdussamedulutas 777f422873 #38/#34: CanvasCompositor ve demo güncellemesi
sdk/webrtc/CanvasCompositor.js (#38):
  - Gelen video track'lerini tek canvas'ta birleştirme (grid/pip/side-by-side/focus)
  - OffscreenCanvas öncelikli (DOM gerektirmiyor), yoksa <canvas> kullanır
  - setFPS(), setLayout(), setFocus() ile runtime kontrol
  - stream() → MediaStream; StreamManager.addStream('composite', ...) ile gönderilir
  - setEncodings() ile bitrate/fps zaten StreamManager üzerinden destekleniyor

sdk/webrtc/index.js: CanvasCompositor re-export eklendi

public/demos/ (#34): Tüm demo'lar yeni SDK API'sine güncellendi:
  - <script src="/script"> → <script type="module"> import MWSE from '/sdk/index.js'
  - new MWSE() (endpoint otomatik import.meta.url'den alınıyor)
  - rtc.connect({ polite }) ile perfect negotiation polite/impolite tayini
  - rtc.addStream() / rtc.on('track') yeni API
  - rtc.on('failed') durumu gösteriliyor
  - window.send() module scope sorununu çözüyor (onclick handler)

go test -race ./... — tüm testler yeşil

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 13:02:58 +03:00
abdussamedulutas 06ca31eecb Eski Node.js / TypeScript yapı dosyaları temizlendi
Silinen dizinler:
- Source/        — Node.js engine (Go engine tarafından ikame edildi)
- frontend/      — TypeScript SDK kaynağı (sdk/ ES modülleri ile değiştirildi)
- script/        — Parcel bundle çıktısı (artık yok; /sdk/ route'u devrede)

Silinen kök dosyalar:
- index.js       — Node.js giriş noktası (Source/index.js'e refer ediyordu)
- package.json / package-lock.json — Parcel/TypeScript build araçları
- tsconfig.json  — TypeScript derleyici ayarları

Taşınan:
- script/status.xml → public/status.xml (httpserver fallback olarak kullanıyor)

Güncelleme:
- httpserver.go  : /script/* route'u kaldırıldı; / artık /sdk/index.js'e yönlendiriyor
- config.go      : ScriptDir alanı ve MWSE_SCRIPT_DIR env değişkeni kaldırıldı
- contract_test  : ScriptDir → SDKDir
- .gitignore     : Node/Parcel artıkları için temizlendi ve kısaltıldı

go test -race ./... yeşil

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 12:28:37 +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
abdussamedulutas c623016841 Revision 2026-04-23 23:10:05 +03:00
abdussamedulutas d98ec6330e İçerik güncellemesi / Bugfix 2025-12-07 13:57:08 +03:00
abdussamedulutas 33b57d7e67 WebDevice suite 2025-10-17 09:37:09 +03:00
abdussamedulutas 212e0151fa Merge branch 'perfectnogation' into stable 2025-08-01 22:27:28 +03:00
abdussamedulutas 3d8fb16d70 Stable index.js 2025-08-01 22:26:49 +03:00
abdussamedulutas 473dd62789 mh288 protokolü oluşturuldu 2025-08-01 21:17:28 +03:00
abdussamedulutas bcdbe5f3fd Perfect nogation bugfixed 2025-07-14 23:22:37 +03:00
abdussamedulutas 055fdd47bd Test added perfect nogation 2025-07-13 16:48:22 +03:00
abdussamedulutas 965ca07853 Test Arayüzü 2025-07-13 16:09:06 +03:00
abdussamedulutas cbe424f3e3 Styling 2025-07-01 21:26:31 +03:00
abdussamedulutas b66adffd3a Grid analyze 2025-06-16 02:50:27 +03:00
abdussamedulutas 3ebf5cc1f5 Grid analyze 2025-06-16 02:44:47 +03:00
Abdussamed 9fe48fab77 Bitrate trials webrtc 2023-10-02 23:13:20 +03:00
Abdussamed 2a928381ec Room infodeveloped 2023-09-17 17:03:51 +03:00
Yasin İLKAYA df792f40cd fetchPeers / Peer count 2023-06-02 17:36:37 +03:00
Yasin İLKAYA 38cc4ab073 Feature fix 2023-05-23 22:09:57 +03:00
Yasin İLKAYA dd1ef9e247 Example streaming 2023-05-16 15:50:49 +03:00
Yasin İLKAYA 70cf3a03e4 Example streaming 2023-05-16 15:47:16 +03:00