8 dosyada toplam 5 kronik hata ve UI/UX iyileştirmesi kalıcı olarak düzeltildi. Build hatasız tamamlandı.
Dosya: TranscriptTab.tsx
Kök Neden: İki fetch çağrısı aynı AbortController'ı paylaşıyordu. İlk çağrı tamamlandığında ikinci de abort olabiliyordu. İngilizce fetch başarısız olduğunda tüm component crash oluyordu. Segment eşleşmesi index-based'di (güvenilmez).
Yapılan Değişiklikler:
- İki fetch için bağımsız AbortController'lar oluşturuldu, parent signal'a bağlandı
- İngilizce fetch
try/catchile sarıldı — başarısız olursa sadece uyarı gösterilir - Segment eşleşmesi
startTimeMstabanlı en yakın zaman damgası eşleşmesine güncellendi (5s tolerans) dualLangWarningstate'i eklendi ve UI'da uyarı mesajı gösterildi
Dosya: gemini-content-script.ts
Kök Neden: execCommand('insertText') arka plan sekmelerinde çalışmıyor. Yapıştırma doğrulaması (input as HTMLInputElement).value?.trim().length ile TypeError riski taşıyordu. findSendButton selector'ları güncel Gemini UI ile uyumsuzdu.
Yapılan Değişiklikler:
- Metin yerleştirme ayrı bir fonksiyona (
insertTextIntoInput) ayrıldı - Yapıştırma kontrolü
hasContent()ile güvenli hale getirildi (optional chaining) - İlk deneme başarısız olursa sekme aktif edilerek yeniden deneme mekanizması eklendi
findSendButton6 farklı selector stratejisi ile güncellendi (data-testid, aria-label, SVG icon tespiti)isStreamingActivegenişletildi (Gemini'nin yeni animasyon göstergeleri)waitForResponse120 saniyeye çıkarıldı, stabil eşik 4'e artırıldı, ilk içerik bekleme döngüsü eklendi
Dosyalar: tab-manager.ts, controller.ts
Kök Neden: openGemTab her zaman yeni sekme açıyordu (mevcut sekmeleri yeniden kullanmıyordu). Sekme arka planda açılıyordu (active: false) bu da DOM etkileşimini engelliyordu. Controller content script inject kontrolü yapmıyordu.
Yapılan Değişiklikler:
openGemTabmevcut sekmeleri yeniden kullanacak şekilde güncellendi (newChatPerVideo=false ise)- Sekme artık aktif olarak açılıyor (
active: true) — execCommand güvenilirliği için kritik - Controller'a content script inject kontrolü (
chrome.scripting.executeScript) eklendi - Sayfa yüklendikten sonra 2 saniye ek bekleme eklendi (DOM hazırlığı için)
- Tab load timeout 20 saniyeye artırıldı
waiting_responsestatus emit eklendi
Dosyalar: SummaryTab.tsx, content-panel.css
Kök Neden: renderSimpleMarkdown liste desteği yoktu. whiteSpace: 'pre-wrap' ile HTML block elementleri çift boşluk yaratıyordu. Heading stilleri eksikti. word-break yoktu.
Yapılan Değişiklikler (renderSimpleMarkdown):
- Unordered list desteği (
- item→<ul><li>) - Ordered list desteği (
1. item→<ol><li>) - Code block desteği (``` →
<pre class="zy-code-block">) - Inline code desteği (
`→<code class="zy-inline-code">) - Horizontal rule desteği (
---→<hr>) - Paragraf sarmalama ve düzgün
<br>dönüşümü - CSS class tabanlı stiller (
zy-heading,zy-paragraph, vb.)
Yapılan Değişiklikler (CSS):
whiteSpace: 'pre-wrap'kaldırıldı, CSS class'ları ile değiştirildiword-break: break-wordveoverflow-wrap: break-wordeklendi- Kapsamlı heading boyutları ve spacing
- Liste stilleri (disc, decimal)
- Code block styling (monospace font, background, border)
- Scrollbar styling
- Typography normalization
Dosya: openai-compatible-provider.ts
Kök Neden: Default timeout 120s yeterli değildi. Abort listener memory leak'e neden oluyordu. 429 Rate Limit sonrası retry yoktu. NVIDIA reasoning_content hata fırlatıyordu. Hata mesajları yetersizdi.
Yapılan Değişiklikler:
- Default timeout 180 saniyeye artırıldı, minimum 60s garanti
- 429 Rate Limit için tek seferlik retry (retry-after header'ına göre bekleme)
- 503 Service Unavailable için tek seferlik retry (5s bekleme)
- Abort listener
{ once: true }ve response sonrasıremoveEventListenerile temizleniyor - NVIDIA
reasoning_contenthata yerine content olarak kullanılıyor - Timeout hata mesajı kalan süre ve öneri içeriyor
- Rate limit hata mesajı retry-after ve kalan istek bilgisi içeriyor
- Ağ hatası mesajı internet kontrolü önerisi ekliyor
✓ TypeScript compilation — 0 hata
✓ Vite build — 66 module, 2.70s
✓ 12 output dosyası üretildi
Bilinen uyarı (mevcut, değişiklikten bağımsız): registry.ts dynamic/static import karışıklığı — mevcut davranışı etkilemez.