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
|
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
|
18269059cc
|
#46: 3. parti sunucu köprüsü (bridge)
- internal/bridge: Inbox (bounded FIFO), HTTPApprover (fail-closed connection
gate), HTTPTrigger (suit-reply push) — birim testleri ile birlikte
- ws.Approver arayüzü + ws.Options.Approver: bağlantı kabulü HTTP upgrade
öncesinde delege edilir (403 ile reddedilebilir)
- services.WithBridgeInbox + bridge/send handler: client → uygulama sunucusu
mesajları inbox'a yönlendirilir
- httpserver.ServerOptions: BridgeInbox + Approver enjeksiyonu
- POST /api/bridge/inbox endpoint: uygulama sunucusu inbox'ı atomik olarak boşaltır
- main.go: BRIDGE_APPROVE_URL / BRIDGE_TRIGGER_URL / BRIDGE_INBOX env değişkenleri
ile köprü opsiyonel etkinleştirilir
- go test -race ./... yeşil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-17 12:05:59 +03:00 |
abdussamedulutas
|
c058feb22d
|
Ölçek ayarı, leak sağlamlaştırma ve #27/#28/#29 paritesi
Yüksek bağlantı sayısı + sürekli mesaj trafiği için engine'i sağlamlaştırır;
sınırsız bellek büyümesini (leak) kapatır; 1.0.0 engine parite issue'larını
(oda/pairing/sanal adresleme) tamamlar.
Ölçek/pool ayarı (config.ConnConfig, env-tunable, varsayılanlar yüksek):
- OutboundBuffer 1024, MaxMessageSize 16 MiB, read/write buffer, ping/pong/write
timeout'ları yapılandırılabilir.
- gorilla WriteBufferPool (paylaşımlı sync.Pool) — yüksek bağlantıda büyük
bellek tasarrufu. 150 bağlantı + ağır trafikte RSS ~43 MB.
- Dolu buffer'da düşür-ama-kapatma → relay teslimat %99.98 (150 bağlantı).
Leak düzeltmeleri (churn altında sınırsız büyüme yok):
- Pairing ters-indeksi (pairedBy): disconnect'te X'e değen tüm pair kenarları
O(derece) temizlenir; tek-yönlü bekleyen istek çöpü kalmaz.
- Davet bekleme listesi: istemci waiting odalarını tutar, disconnect'te düşülür.
- realloc artık farklı adres verir (önce al sonra bırak).
#27/#28/#29 paritesi + ifexistsJoin; kapsamlı parite + leak testleri eklendi.
go build/vet/test -race ./... yeşil (18 servis testi). Detay: decisions.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-17 07:43:54 +03:00 |
abdussamedulutas
|
835f0b5f2e
|
Go engine portu (0.1.0 çekirdek) — Node.js engine'i race-free Go'ya taşı
MWSE engine'i (Source/) performans odaklı, eşzamanlılık-güvenli bir Go
projesine taşır. WSTS tel sözleşmesi (SDK giriş/çıkış) korunur; frontend
dokunulmadan çalışmaya devam eder.
- internal/protocol: WSTS encode/decode (request/response/stream/signal)
- internal/ws: Client (bağlantı-başına tek-yazıcı), Room (RWMutex + snapshot
broadcast), Hub (kayıt + router + event bus), Server (yaşam döngüsü, saQut
heartbeat). #22 "ayrılırken-yazma" race'i yapısal olarak çözüldü.
- internal/services: YourID, Session, Auth, Room, IPPressure, DataTransfer
portu (Node'daki bariz bug'lar düzeltildi; tel şekilleri korundu).
- internal/config, internal/httpserver: env config, statik + /api + graceful
shutdown.
- loadtest/: ayrı modül — ping/relay yük testi + benchmark istemcisi.
go build/vet/test -race ./... yeşil. TestLeaveWhileSendRace regresyonu temiz.
Uçtan uca doğrulandı: ping ~140k req/s (p50 ~200µs, 0 hata),
relay ~190k msg/s (%98.5 teslim).
İnsan onayına bırakılanlar REVIEW.md'de; kararlar decisions.md'de;
durum PORT-PROGRESS.md'de. Hiçbir issue kapatılmadı, stable'a dokunulmadı,
deploy/push yapılmadı.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-17 07:09:36 +03:00 |