Canlı süreç ölçümü
Ölçüldü
Tarayıcı süreç ağacının CPU ve PSS belleğini, web yüzeyi FPS değerini, sıcaklığı ve throttling bitlerini aynı aralıkta kaydeder.
scripts/measure-h03-browser-video.py
Tarayıcının mimarisi, bağımsız Rust motorunun modül planı, web standartlarına göre ürün eksikleri, güvenlik çalışması ve Raspberry Pi 5 yapım kaydı.
PARÇALAR · GÖREVLER · VERİ AKIŞI
Raspberry Pi 5'te çalışan tarayıcı; telefon arayüzü, WPE WebKit web motoru, yerel C köprüsü, GPU görüntü yolu, Rust kare aktarımı, KMS ekran sunumu ve Bluetooth ses çıkışından oluşuyor. Aşağıdaki tablo çalışan Linux prototipinin parçalarını ve kaynaklarını gösteriyor.
AselBrowser'ın işletim sistemi için geliştirilen yerel Rust HTML/CSS temeli de bu sayfanın devamında ayrıca açıklanıyor. İki geliştirme hattının mevcut yetenekleri kendi kod ve doğrulama sınırlarıyla izleniyor.
| Parça / teknoloji | Yaptığı iş | Kod / kitaplık |
|---|---|---|
| Telefon arayüzüPython · Pillow | Adres çubuğunu, Türkçe ekran klavyesini, menüleri, favorileri ve ses panelini çizer. Telefon kabuğu ile tarayıcı arasında ekran ve odak geçişini yönetir. |
|
| Gezinme ve kalıcı kayıtlarPython · SQLite | Adres ve arama metnini çözümler; geçmiş, favori, son arama, arama motoru, ses seviyesi, güçlendirme, profil ve mono tercihlerini saklar. |
|
| WPE uygulama köprüsüC · libwpe · WPEBackend-FDO | WebView yaşam döngüsünü, sayfa boyutunu ve gezinme komutlarını yönetir. Telefon arayüzünden gelen Unix soket mesajlarını WPE giriş olaylarına çevirir; kareleri ve sayfa durumunu dışarı verir. |
|
| Web sayfası motoruWPE WebKit 2.48.3 · C/C++ | WPEWebProcess HTML, DOM, CSS, yerleşim, boyama ve JavaScriptCore üzerinden JavaScript çalıştırmayı üstlenir. WPENetworkProcess ağ isteklerini ve web oturumunun ağ tarafını yürütür. Pi'deki internet ve YouTube gezintisi bu motorla çalışır. |
|
| GPU üzerinde görüntü oluşturmaMesa V3D · GBM · EGL · OpenGL ES | Pi 5'in V3D GPU'sunda EGL bağlamını ve dışa aktarılan görüntüyü oluşturur. Çalışan köprü glReadPixels ile BGRA piksellerini CPU'nun eriştiği belleğe okur. |
|
| Kare aktarım kitaplığıRust · paylaşımlı bellek | Üç kare yuvasını atomik yayın sayacı ve okuyucu sayılarıyla yönetir. Boyut, stride ve formatı doğrular; tarayıcı dikdörtgenini dönüştürüp ekran tamponuna kopyalar. |
|
| Ekran ve telefon katmanlarıC · Linux DRM/KMS | KMS ekran sahipliğini tutar. Telefon görünümünü ve tarayıcı karesini saat, mouse imleci ve çağrı katmanlarıyla birleştirir; 800×480 fiziksel çıktıyı 480×800 portre kullanımına uyarlar. |
|
| Ses işleme ve Bluetooth çıkışıGStreamer · C · ALSA · BlueALSA | Medya sesini çözer. Tarayıcıya özel h03audiosink; EQ, %100–%600 ek kazanç, mono birleştirme ve stereo bağlı tepe sınırlaması uygular. PCM ses ALSA ve BlueALSA üzerinden FreeClip 2'nin A2DP çıkışına gider. A2DP ses sürgüsü artık kulaklığın AVRCP donanım sesini yönetir. |
|
| Video çözme ve tanılamaGStreamer · libvpx · C · Python | WPE'nin kullandığı VP9 çözücüsünü ve video iş parçacıklarını ölçer. Deney modunda gerçek video boyutu ve düşen kareleri kaydeder; sıcaklık sınırı altında libvpx/libav kıyası yapar. Varsayılan çözücü değiştirilmedi. |
|
| Klavye, mouse ve dokunma girişiLinux evdev · C · Python | KMS görüntüleyicisi mevcut giriş aygıtlarını okur; mouse olaylarını sınırlı gruplarla işler. Koordinatlar ve tuşlar telefon UI soketine, web içeriği üzerindeki olaylar da WPE köprüsüne iletilir. |
|
| Süreç ve erişim sınırlarıWebKit sandbox · Bubblewrap · D-Bus proxy | Web süreci korumalı ortamda çalışır. Ses için yalnız gerekli dosyalar ve org.bluealsa erişimi olan filtreli bir soket bağlanır. Web sayfalarının kamera/mikrofon izin istekleri mevcut sürümde reddedilir; telefon çağrısı sırasında tarayıcı sesi kapatılır. |
|
Mevcut görüntü yolunda GPU'dan CPU'ya okuma ve ekran tamponuna kopya var. DMA-BUF ile doğrudan sunum henüz tamamlanmış değil.
İşletim sistemi hattındaki userspace/asel_browser; sınırlandırılmış HTML/CSS ayrıştırma, stil hesaplama, blok yerleşim, yazılımsal çizim ve çift tamponlu sunum temelini içerir. el0.rs süreç yetkilerini, present.rs ise kernelin kabul ettiği kare tanımlayıcısını düzenler. Bu temel yerel sayfaları işler; genel web standartları ve JavaScript desteğinin tamamlandığı iddia edilmiyor.
userspace/asel_browser/src/lib.rs · el0.rs · present.rs
Yeni Rust yolu: adres ve kaynak broker'ı → Rust HTML/CSS yerleşimi → gerçek glif çizimi → ekran sahibinin tamponu. Çekirdek WPE kullanmadan aarch64 bare-metal hedefinde derlendi; Pi 5'te ayrı test çalıştırıcısıyla HTTP, gezinme ve 12 görüntü karesi doğrulandı. Telefon arayüzü ve gerçek ekran sunum bağlantısı sonraki aşamada.
Pi'deki 2.48.3 sürümünün libwpe/FDO modeli için resmî WPE mimari belgesi; projeye özgü görevler için tabloda verilen kaynak dosyaları esas alınır.
31 EKİM 2026 · RASPBERRY PI 5 · YOUTUBE 1080P
Kullanıcının 1080p seçtiğini bildirdiği açık YouTube oturumu ölçüldü. Bu oturumda tarayıcı dört çekirdeğin toplam kapasitesinin yaklaşık %34'ünü kullandı. Yükün çoğu WPE WebProcess içindeydi; GPU karelerini taşıyan C motorunun payı yaklaşık %2 idi. Bu nedenle yalnız son ekran aktarımı veya yeni bir VP9 çözücüsü için yarı yarıya CPU azalması iddia edilmiyor.
Canlı 30,4 saniye
%33,95
Tarayıcı süreç ailesi · dört çekirdeğe göre. WebProcess %32,16; EGL motoru %1,96.
Bellek ve yüzey
626,3 MB
Tarayıcı ailesi PSS. Web yüzeyi 30,02 FPS; bu değer video kare kaybı ölçümü değildir.
Sürekli yükte sıcaklık
85,1 °C
0xe0008 soft sıcaklık sınırı; ayrı sorguda 0xe0006 güncel frekans kısıtlaması ve throttling.
Sentetik 1920×1080, 30 FPS, 180 karelik VP9 dosyası I420 çıkışına çözüldü. İki koşuda etkin throttling yoktu. Bu yalnız çözücü karşılaştırmasıdır; YouTube'un gerçek akışı ve toplam tarayıcı CPU'su için kazanım kanıtı değildir.
| Çözücü | CPU süresi · iki koşu | Sonuç |
|---|---|---|
| libvpx · vp9dec | 2,149 / 2,149 sn | Varsayılan korundu |
| libav · avdec_vp9 | 2,266 / 2,258 sn | Bu veride yaklaşık %5 daha çok CPU |
Sıfırdan VP9 kodeği şu an uygulanmadı: mevcut libvpx deneyde daha hızlı ve canlı VPx işçileri toplam dört çekirdek kapasitesinin kısa örnekte yaklaşık %11,6'sını kullanıyor. Kodeğin tek başına toplam yükü yarıya indirmesi bu verilerle desteklenmiyor. H.264 için tek sentetik koşu yapıldı; farklı kodlanmış dosyalar eşdeğer kalite olarak karşılaştırılmadı.
Ölçüldü
Tarayıcı süreç ağacının CPU ve PSS belleğini, web yüzeyi FPS değerini, sıcaklığı ve throttling bitlerini aynı aralıkta kaydeder.
scripts/measure-h03-browser-video.py
Kuruldu · deneysel
H03_BROWSER_VIDEO_METRICS=1 iken videoWidth, videoHeight, oynatma süresi, toplam ve düşen kareleri iki saniyede bir özel video.json dosyasına yazar. Normal kullanımda yoklama kapalıdır.
scripts/rpi5-h03-browser-engine.c · video_metrics_tick / video_metrics_done
Kuruldu · varsayılan korunuyor
H03_BROWSER_VP9_DECODER=libav veya libvpx ile yalnız deney oturumunda GStreamer sıralamasını değiştirir. Geçersiz veya boş seçimde sistemin mevcut sıralaması kullanılır.
scripts/h03_browser.py · Engine.audio_environment
Sentetik test tamamlandı
Aynı 180 karelik VP9 verisini libvpx ve libav ile I420 çıkışında çözer. Oynatım sürüyorsa, sıcaklık sınırı aşılmışsa veya güncel throttling varsa denemeyi durdurur.
scripts/benchmark-h03-video-decoders.py
Açık
Aynı YouTube videosunun gerçekten seçilmiş 1080p akışında kodeği, düşen kareleri, ses eşzamanını ve uzun süreli sıcaklığı kaydet; karşılaştırmayı ancak aynı kalite ve koşullarda yap.
scripts/measure-h03-browser-video.py · video.json
Açık
WebProcess GL, kuyruk ve kompozisyon maliyetini ayrı ölç. Gerçek DMA-BUF sunumunu fence, çağrı önceliği ve fiziksel ekran kabulüyle bitir.
scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-kms-viewer.c
scripts/rpi5-h03-browser-engine.c
const q = typeof v.getVideoPlaybackQuality === 'function'
? v.getVideoPlaybackQuality() : null;
return JSON.stringify({
found: true, width: v.videoWidth, height: v.videoHeight,
total_frames: q ? q.totalVideoFrames : null,
dropped_frames: q ? q.droppedVideoFrames : null
});
// H03_BROWSER_VIDEO_METRICS=1: iki saniyede bir, varsayılan kapalıscripts/h03_browser.py
decoder = os.environ.get('H03_BROWSER_VP9_DECODER', '').lower()
if decoder == 'libav':
ranks += ',avdec_vp9:512,vp9dec:128'
elif decoder == 'libvpx':
ranks += ',vp9dec:512,avdec_vp9:128'
# Boş seçim: kurulu varsayılan sıralama korunur.scripts/benchmark-h03-video-decoders.py
if browser_playing_audio():
raise SystemExit('live browser audio resumed')
if current_temp > args.max_temp or flags & 0xF:
raise SystemExit('thermal gate: no benchmark run')
# Aynı VP9 dosyası → vp9dec / avdec_vp9 → I420 → fakesinkHam kayıtlar: evidence/browser/pi5-youtube-1080p-20261031.json ve evidence/browser/pi5-video-decoder-preflight-20261031.txt. Canlı 1080p kodek, düşen video karesi ve yeni kurulumun gerçek oynatım kabulü açık.
Rust ile yerel HTML/CSS işleme, yetki sınırı, DSI sunumu ve telefon arayüzü. Modern web standartları bu hatta henüz tamamlanmış değil.
İnternet sayfaları açan Linux prototipi: WPE WebKit, V3D/EGL, telefon kabuğu, Rust kare aktarımı ve Bluetooth ses yolu.
BAĞIMSIZ RUST TARAYICI · MODÜL PLANI
NativeBrowser bugün sınırlı HTML/CSS, adres çözümleme, yerel HTTP test adaptörü, sekme/geçmiş ve RGB565/XRGB8888 çizim temeline sahip. Telefon arayüzüyle canlı bağlantı, sistem ağı, TLS, JavaScript, medya ve genel web uyumluluğu tamamlanmadı. Bu maddeler teslim planıdır.
Sıra A → B → C → D → E; M03 ölçümü her aşamada sürer. Doğrudan XRGB8888 ilk fixture ölçümünde RGB565'ten daha yavaştı; gerçek ekran ölçümü olmadan varsayılan değişmeyecek.
Aşama A · planlandı
Teslim koşulu: Gerçek telefon ekranında tek Rust oturumu gezinir.
Adres, sekme, geri/ileri, bağlantı, kaydırma ve odak durumunu tek Rust oturumuna bağla; ayrı kernel sayfa durumunu eşleştir.
Bağımlılık: NativeBrowser · telefon UI
Kabul: Gerçek ekranda adres girme, bağlantıya dokunma, geri/ileri ve iki sekme arasında geçiş aynı durumu korur.
Tampon sahipliği, stride, renk biçimi, hasar alanı, senkronizasyon ve ekran latch aşamasını ekran sahibine bağla; dokunma/fare koordinatlarını eşleştir.
Bağımlılık: M01 · present descriptor
Kabul: Pi 5 ekranında metin ve imleç doğru yerde görünür; kaydırma ve yeniden boyutlandırmada takılı kare kalmaz.
Yükleme, ayrıştırma, yerleşim, çizim ve sunumu ayrı zamanla. Süreç CPU/RAM, FPS, kare gecikmesi ve hata nedenlerini kaydet; eşdeğer WPE iş yüküyle karşılaştır.
Bağımlılık: M01 · M02
Kabul: Aynı Pi 5 fixture'ında p50/p95 süre, CPU, bellek ve FPS raporu vardır; RGB565 ve XRGB8888 ayrı ölçülür.
Aşama B · planlandı
Teslim koşulu: Telefon arayüzü kilitlenmeden web kaynakları yüklenir.
ResourceBroker'ı yetkili DNS/TCP IPC'ye bağla; güvenilir ağ işçisi, verimli sayfa devri, asenkron bildirim, kuyruk, zaman aşımı ve sekme kapanınca temizlik ekle.
Bağımlılık: M01 · DNS/TCP hizmetleri
Kabul: Yavaş/kopan bağlantıda UI yanıt verir, istek iptal edilir ve yetkisiz süreç doğrudan ağa çıkamaz.
Denetlenmiş TLS uygulamasıyla sertifika zincirini, alan adını ve tarihi doğrula; hatalı sertifikada güvenli biçimde reddet.
Bağımlılık: M04 · doğru sistem saati
Kabul: Geçerli HTTPS açılır; yanlış alan adı, süre dolması ve güvensiz sertifika açık hata verir; sessiz HTTP geri dönüşü olmaz.
URL, yönlendirme, içerik kodlaması, MIME, karakter kümesi, eşzamanlı yükleme ve sınırlı önbelleği genişlet; köken/CORS/CSP sınırlarını uygula.
Bağımlılık: M04 · M05
Kabul: Göreli adres, CSS ve resimler doğru çözülür; bozuk yanıt veya yönlendirme döngüsü oturumu kilitlemez.
Aşama C · planlandı
Teslim koşulu: Gerçek sayfalar dar HTML/CSS alt kümesinin ötesinde doğru görünür.
Tokenizer, ağaç kurma, hatalı işaretleme onarımı, belge kodlaması ve değişebilir DOM temelini kaynak sınırlarıyla geliştir.
Bağımlılık: M06
Kabul: Seçilmiş HTML web platform testleri ve bozuk sayfa fixture'ları tutarlı DOM üretir; bellek sınırı korunur.
Seçiciler, kalıtım, ölçüler, block/inline, flex ve viewport düzenini aşamalı ekle; değişen bölgeyi yeniden yerleştir.
Bağımlılık: M07
Kabul: Referans statik sayfalarda metin taşmadan okunur; viewport ve kaydırma görüntü karşılaştırması geçer.
Unicode şekillendirme, iki yönlü metin, satır kırma, font yedeği ve yaygın resim biçimlerini ekle; kısmi yeniden boyamayı hasar alanına bağla.
Bağımlılık: M06 · M08
Kabul: Türkçe/çok dilli metin ve resimler gerçek ekranda doğru görünür; değişmeyen bölge yeniden boyanmaz.
Aşama D · planlandı
Teslim koşulu: Sayfa kodu ve kullanıcı verisi tanımlı sınırlarla yönetilir.
Güvenilmeyen sayfa için CPU/bellek kotası, izinler, köken ayrımı ve çökme sonrası kurtarma modeli kur; script'ten önce IPC sınırını tanımla.
Bağımlılık: M04 · M07
Kabul: Bozuk veya aşırı kaynak isteyen sayfa kabuğu ve başka sekmeyi düşürmez; yetkisiz cihaz/dosya erişimi reddedilir.
Rust olay döngüsü, zamanlayıcılar ve DOM bağları kur; ECMAScript çalışma zamanını ayrı bir modül olarak seç, kapsamı testlerle büyüt.
Bağımlılık: M07 · M10
Kabul: Seçilmiş JS/DOM testleri geçer; sonsuz döngü UI'yi kalıcı olarak kilitlemez.
Form alanları, seçim, odak, Türkçe ekran klavyesi/IME, metin düzenleme ve erişilebilir öğe ağacını ekle.
Bağımlılık: M01 · M08 · M11
Kabul: Klavye, fare ve dokunmayla form gönderilir; odak sırası ve erişilebilir adlar doğrulanır.
Geçmiş, yer işaretleri, tercihler, çerezler ve site verisini kota/köken ayrımıyla sakla; özel oturum ve veri silme ekle.
Bağımlılık: M06 · M10
Kabul: Normal kayıtlar yeniden başlatmada kalır; özel oturum verisi silinir; kökenler birbirinin verisini okuyamaz.
Aşama E · planlandı
Teslim koşulu: Sesli içerik ve yaygın web iş yükleri gerçek cihazda ayrıca doğrulanır.
Ses/video çözme, medya denetimleri, çağrı önceliği ve Bluetooth çıkışını Rust oturumuna bağla; WPE ses yolu otomatik devralınmaz.
Bağımlılık: M05 · M09 · M10
Kabul: Pi 5'te video ve iki kulakta ses doğrulanır; çağrı önceliği ve ses geri dönüşü çalışır.
Web platform testlerini modül modül büyüt; CPU, RAM, gecikme, pil ve görsel doğruluğu aynı sayfalarda ölç; geçiş/kırılma sayısını yayınla.
Bağımlılık: M03 · M07–M14
Kabul: Hedef sayfalar gerçek Pi 5'te açılır; desteklenen özellikler ve açık testler raporlanır; CPU kazancı eşdeğer iş yükünde ölçülür.
Kilitli Cargo derlemesi onarıldı. Yerel Rust tarayıcısı 12 karelik fixture üzerinde RGB565 ve XRGB8888 için yedi eşlenik koşuda ölçüldü. Güncel ikiliyle çizim p50/p95 sırasıyla 237/508 µs ve 302/819 µs; HTML ayrıştırma p50 20 µs, yerleşim p50 9 µs. İki çıktı arasındaki en büyük renk kanalı farkı 7/255. Kod: scripts/benchmark-native-browser-gates.py ve scripts/build-native-browser-rust.sh.
Bu x86_64 host ölçümüdür. Pi 5 panel sunumu, FPS, giriş gecikmesi ve eşdeğer WPE karşılaştırması tamamlanmadan M03 açık kalır.
Güncel Rust ikilisi Pi 5 Linux üzerinde ayrıca derlendi. Yedi eşlenik host koşusunda RGB565 çizim p50/p95 466,5/609 µs, XRGB8888 713/825 µs; tepe RSS ortancası her iki yolda 4.832 KiB. HTML ayrıştırma p50 32–33 µs, yerleşim p50 12 µs. Bu süreç telefon ekranına bağlanmadığı için panel FPS ve WPE ile eşdeğer sayfa karşılaştırması açık kalır. Ham kayıt: evidence/browser/native-pi5-phase-gates-20261102.json.
Mevcut kod ve sınırlar: userspace/asel_browser/README-NATIVE.md, userspace/asel_browser/src/native/ ve kernel/src/ui/browser.rs. Yapılan işler 16–18 numaralı aşamalarda ayrıca kayıtlıdır.
5 KİTAP · YENİDEN İNCELEME · 18 ADIM
Kitapları sertifika yaşam döngüsü, süreç yetkisi, kullanıcı verisi, indirme, teşhis ve sürüm zinciri açısından yeniden eşleştirdik. Önceki 10 adım, önkoşulları ve kabul ölçütleri olan 18 adıma genişledi. S01'in ilk tehdit matrisi yazıldı. S02'de her kaynak için ayrı istek kimliği kullanan Rust IPC istemci sözleşmesi eklendi; eski veya başka sekmeye ait yanıt, yerel adres, kota aşımı ve bozuk başlık reddediliyor. Geliştirme adaptöründe HTTP okuması ile DNS beklemesinin iptali kodlandı; DNS beklemesi süreli ve tek işçiyle sınırlı. Çekirdekte ayrı browser endpoint'i ve canlı CNode grant'iyle kimlik doğrulayan, dört istekle sınırlı URL hazırlama protokolü eklendi. Seçmeli QEMU profilinde iki gerçek EL0 görevinden yalnız birine SEND grant'i verildi; telefon UI'sindeki üretim tarayıcısına yetki verilmedi. COMMIT ağ arka ucu bulunmadığını açıkça bildiriyor. Başlamış libc DNS çağrısı kesilemiyor. Gerçek OS ağ işçisi ve bloklanmış çağrıyı iptal etme hâlâ açık. S03'te HTTP/1 çerçevesi Content-Length veya chunked bitince EOF beklemeden sonuçlanıyor; eksik ve fazla baytlar reddediliyor. S05'te URL/alan adı kanonikleştirme ve geliştirme adaptöründe çözülen IP'yi denetleyerek aynı IP'ye bağlanma eklendi; özel ağlar varsayılan kapalı, loopback yalnız açık fixture kipinde. S03 ve S05 kısmi; S07'de URL/içerik içermeyen son 32 ağ isteğinin DNS, bağlantı, ilk bayt ve toplam süre izi RAM'de tutuluyor. S08'de sentetik sunucu gecikmesi ve süre aşımı testleri, S10'da kilitli paket/kaynak özeti makbuzu eklendi. Bu adımlar da kısmi; diğer maddeler plan aşamasında. Önce S02 ile S04/S05 tamamlanmalı; içerik yalıtımı ve güvenli HTTPS doğrulanmadan JavaScript, kalıcı oturum ve aygıt izinleri genel kullanıma açılmayacak.
Bugünkü kanıt: resource.rs istekleri yetki ve boyutla sınırlar; http.rsbelirsiz çerçeveleri reddeder; geliştirme adaptöründe HTTPS TlsUnavailabledöndürür. docs/ASELBROWSER-NATIVE-THREAT-MODEL.md sınırları kaydeder. DNS bekleme iptal/süre, HTTP çerçeve sonu, özel IP ve DNS yeniden bağlama ret testleri geçti. IPC fixture testleri yanlış istek/sekme yanıtını, iptali ve kota aşımını reddediyor; çekirdek gateway testleri kimlik ayrımı, parça kotası, süre dolumu ve grant iptalinde temizlemeyi doğruluyor. Ayrıca QEMU'daki yetkili EL0 görev URL'yi parça parça iletip BACKEND_UNAVAILABLE aldı; aynı endpoint numarasını bilen yetkisiz görev INVALID_CAPABILITY ile reddedildi. Ham UART ve denetim makbuzu evidence/qemu/browser-ipc-20261030/dizininde. Bu kanıt gerçek ağ, HTTPS veya fiziksel telefon kabulü değildir. HTTP ayrıştırıcısı için dört girdili fuzz hedefi hazırlandı; uzun, kapsama izli fuzz kabulü açık. CLI makbuzunda adres ve sayfa başlığı varsayılan gizli; S10 aracı değişmiş kaynak ağacını yayın için reddediyor. S18'in ilk denemesinde Rust ikilisi Pi 5 Linux üzerinde ayrı dizinde derlenip iki piksel yolunda 12 karelik loopback HTTP gezinme senaryosunu geçti; bu panel sunumu, telefon UI'si veya yayın kabulü değildir. S04 için gerçek telefon ağı, TLS, güven deposu ve saat hizmeti henüz bağlı değildir.
İncelenen bölümler: Bölüm 8, 11–13, 15, 17 ve 21: rastgelelik, bütünlük, imza, sertifika, TLS ve uç nokta güvenliği.
Tarayıcının TLS güven zinciri, rastgelelik ve HTTPS hata politikasını tasarlamak için temel. Kriptografik ilkelere kendi uygulamamızı yazmak yerine denetlenmiş bir TLS bileşeni seçilecek.
Ek çıkarım: doğru saat, güven deposunun yenilenmesi ve imzalı imaj ayrı güven bağımlılıklarıdır; bu üçü olmadan sertifika veya yayın doğrulaması kabul edilmez.
İncelenen bölümler: Bölüm 5–9: DNS/TCP/uygulama katmanları; Bölüm 11–13: gecikme, güvenlik ve kablosuz analiz.
DNS, TCP ve TLS hata ayıklama için kontrollü paket fixture'ları, yeniden iletim ve gecikme ayrımı. Paket yakalama tarayıcı içinde sürekli çalışan bir özellik olarak tasarlanmayacak.
Ek çıkarım: ağ, sunucu ve istemci gecikmesi ayrı ölçülmeli; başlangıç ve kapanış için baz ölçüm ile sentetik kopma/tekrar iletim izleri tutulmalı.
İncelenen bölümler: Bölüm 1–2: veri türleri, mahremiyet ve saklama; Bölüm 9, 11 ve 13: operasyon, istemci olayı ve kanıt.
İstemci tarafındaki şüpheli olayların nedenini anlayacak yerel, sınırlı telemetri; içerik ve kimlik bilgilerini varsayılan günlükten uzak tutan mahremiyet ilkesi.
Ek çıkarım: olay kaydı, saklama kotası, silme ve kullanıcı denetimli dışa aktarma bir bütün olmalı; tam trafik içeriği varsayılan olarak toplanmamalı.
İncelenen bölümler: Bölüm 2, 4–5, 7–10: en az yetki, politika, cihaz kimliği, uygulama zinciri ve karşıt bakış.
Sayfa, render süreci ve ağ broker'ı arasında her istekte yetki denetimi; bağımlılık, derleme ve dağıtım bütünlüğü. Kamusal web sitesinden istemci sertifikası talep etmek bu tasarımın varsayılanı değil.
Ek çıkarım: politika kararı ile uygulama noktası ayrılmalı; sekme yetkisi iptal edilebilmeli ve kaynak, derleme, imza ile çalışan imaj tek sürüm zincirinde izlenmeli.
İncelenen bölümler: Bölüm 2–3 ve 11–14: değerlendirme, tehdit modeli, TLS, web sunucusu ve uygulama katmanları.
Kendi tarayıcımızın saldırı yüzeyini envanterlemek, TLS ve web sınırlarını negatif testlerle denetlemek. Kitaptaki eski TLS 1.2 ayrıntıları güncel protokol metinleriyle yeniden kontrol edilecek.
Ek çıkarım: ayrıştırıcı, yönlendirme, indirme, profil ve içerik süreci ayrı ret testleri ister; dış sitelere izinsiz tarama planın parçası değildir.
Yetki, adres, protokol ve HTTPS kimliği kurulacak.
Süreç, köken, oturum, dosya ve aygıt izinleri ayrılacak.
Mahremiyetli ölçüm, kontrollü laboratuvar ve regresyon kurulacak.
İmzalı imaj zinciri ve Pi 5 kabul ölçümleri tamamlanacak.
S adımları mevcut Rust yol haritasındaki M modüllerine bağlanır. Önkoşullar, sıra numarasından daha belirleyicidir.
Sayfa içeriği, Rust render süreci, telefon UI, DNS/TCP/TLS broker'ı, profil, indirme ve güncelleme hizmetleri arasındaki veri/izin sınırlarını çıkar. Dış sayfa, bozuk yanıt ve ele geçirilmiş içerik süreci senaryolarını sırala.
Önkoşul: Başlangıç
Kabul: Her sınır için giriş, yetki, olası kötüye kullanım, reddetme davranışı ve sahibi kayıtlı bir tehdit matrisi vardır.
Mevcut ResourceBroker sözleşmesini gerçek sistem DNS/TCP hizmetine bağla. Her istek için sekme/oturum kimliği, yetki, boyut, zaman aşımı ve iptal kontrolü uygula; render sürecine ham soket verme.
Önkoşul: S01
Kabul: Sahte veya süresi geçmiş IPC isteği reddedilir; sekme kapanınca ağ işi durur; kopan ağda UI yanıt vermeye devam eder.
Mevcut sınırlı HTTP/1 ayrıştırıcısını akış, başlık, gövde ve açılmış içerik kotalarıyla genişlet. Çelişkili Content-Length/Transfer-Encoding, eksik chunk ve sıkıştırma bombası girdilerini ayrı test et.
Önkoşul: S02
Kabul: Bozuk çerçeve ve kota aşımı açık hata verir; işlem bellek taşması veya belirsiz yanıt kabulü yaşamaz.
Denetlenmiş TLS bileşeni ve güncellenebilir güven köklerini seç; OS rastgelelik kaynağı, sistem saati, sertifika zinciri, alan adı ve SNI doğrulamasını bağla. Güven deposu geri alımını ve sessiz HTTP düşüşünü engelle.
Önkoşul: S02 · OS saat/rastgelelik hizmetleri
Kabul: Geçerli sertifika açılır; yanlış ad, süre dolması, güvensiz kök, eski güven deposu ve yanlış saat ayrı hata üretir; HTTP'ye düşüş olmaz.
URL kanonikleştirme, DNS sonucu ile hedef bağlama, yönlendirme zinciri, köken, CORS ve CSP kararlarını tek kaynak politikasında topla. Kamusal sayfadan yerel/özel ağ kaynağına geçişi açık politikayla yönet.
Önkoşul: S02 · S04
Kabul: Yönlendirme ve ad çözümü değişse de yetki tekrar değerlendirilir; köken dışı okuma ve izinsiz yerel ağ isteği reddedilir.
HTML/JS/resim işleyen süreci telefon UI ve profil hizmetinden ayır; CPU, bellek, süre, dosya ve IPC yetkilerini sınırla. Çöken sekmeyi tek başına yeniden başlat.
Önkoşul: S01 · S02 · S05
Kabul: Bozuk sayfa başka sekmeyi veya UI'yi düşürmez; içerik süreci yetkisiz dosya ve ağa erişemez.
DNS, bağlantı, TLS, yanıt ve çizim aşamalarına istek kimliğiyle süre/hata ölçümü ekle. Varsayılan kayıtlarda URL sorgusu, çerez, Authorization başlığı ve sayfa gövdesini tutma; dönen log kotası uygula.
Önkoşul: S02 · S03 · S04
Kabul: Tek bir başarısız yükleme aşamalara ayrılabilir; günlük örneğinde kimlik bilgisi veya içerik yoktur; kota aşımı diski doldurmaz.
Geliştirme ortamında sentetik DNS, TCP yeniden iletimi, TLS kopması ve HTTP yönlendirme fixture'ları kur. Paket analizi ile tarayıcı zaman çizelgesini aynı istek kimliği üzerinden karşılaştır; gerçek trafik yakalamayı açık onaya bağla.
Önkoşul: S05 · S07
Kabul: Yavaş sayfada ağ gecikmesi ile render süresi ayrılır; dört hata senaryosunun yeniden üretilebilir kaydı vardır.
HTTP/URL/HTML ayrıştırıcılarına fuzz ve regresyon girdileri; TLS sertifika, yönlendirme, köken ve IPC için reddetme testleri ekle. Yalnız projenin kendi fixture ve test hedeflerini kullan.
Önkoşul: S03–S06
Kabul: Belirlenmiş bozuk girdiler çökme üretmez; güvenlik testleri her sürümde aynı sonuçla çalışır ve başarısızlık dağıtımı durdurur.
TLS ve diğer bağımlılıkları envanterle; güncelleme/açık takibi, SBOM, tekrarlanabilir derleme, imzalı yayın ve sürüm geri alma koruması kur. Pi 5 imajını kaynak revizyonuna bağla.
Önkoşul: S01 · S04
Kabul: Yayın kaydından kaynak, bağımlılık ve imaj izlenir; imzasız, değiştirilmiş veya eski sürüme zorlanan imaj etkinleştirilmez.
Çerez ve site verisini köken ve bağlam politikasına göre ayır. Kalıcı/özel profillerin depolama, kota, şifreleme, silme ve çökme sonrası tutarlılık kurallarını belirle.
Önkoşul: S05 · S06
Kabul: İki köken birbirinin verisini okuyamaz; özel oturum yeniden açılışta veri bırakmaz; profil silme testle doğrulanır.
HTML, CSS, görüntü ve DOM girdilerine boyut/derinlik sınırı koy. JavaScript eklenmeden önce olay döngüsü, zaman kotası ve API yetkileri için ret testlerini tamamla.
Önkoşul: S03 · S05 · S06
Kabul: Bozuk içerik çökme veya sınırsız döngü üretmez; JS kapalıyken betik çalışmaz, açıldığında köken ve izin testleri geçer.
Form gönderimi, otomatik doldurma ve yetki başlıklarını köken/HTTPS sınırına bağla; parolayı korumalı hizmette sakla. Şüpheli alan adı ve düz HTTP davranışını belirle.
Önkoşul: S04 · S05 · S11
Kabul: Kimlik bilgisi başka kökene veya HTTP'ye sessiz taşınmaz; günlük ve çökme kaydında parola bulunmaz.
İndirilen dosyayı yürütme yetkisi olmadan ayrı alana yaz. Ad/yol temizliği, içerik türü kararı, boyut kotası ve açık kullanıcı eylemi uygula.
Önkoşul: S03 · S06
Kabul: Yol geçişi, sahte uzantı ve kota aşımı sistem dosyasını değiştiremez; indirme otomatik çalıştırılmaz.
Aygıt erişimini görünür, kökene bağlı ve iptal edilebilir izinle aç. Medya çözümleyicilerini yalıt ve kaynak kotası uygula.
Önkoşul: S05 · S06 · S11
Kabul: İzin yokken aygıt açılamaz; sekme kapanınca akış kesilir; bozuk medya UI'yi düşürmez.
Sertifika hatası, süreç çökmesi ve şüpheli yönlendirme için yerel olay kaydı, sürüm bağı ve kullanıcı denetimli dışa aktarma kur. Etkilenen yetkiyi iptal et.
Önkoşul: S07 · S08 · S10
Kabul: Örnek olayın zamanı, karar nedeni ve çalışan sürümü içerik sızdırmadan bulunur; iptal sonrası eski oturum iş yapamaz.
İlgili web-platform-tests alt kümelerini ve URL/HTTP/HTML/CSS/görüntü fuzz korpusunu sürüm bazında çalıştır. Desteklenen davranış ve bilinen sapmaları kaydet.
Önkoşul: S03–S06 · S09 · S11–S15
Kabul: Seçili korpus çökmez; desteklenen web testlerinin sonuçları sürümle kayıtlıdır; güvenlik regresyonu yayını durdurur.
Gerçek cihazda HTTPS, iptal, özel oturum, indirme, medya ve kota senaryolarını çalıştır. CPU/RAM, açılış, sayfa gecikmesi ve çökme oranını önceki sürümle karşılaştır.
Önkoşul: S04–S17
Kabul: Güvenlik kapıları, cihaz testleri ve önceden belirlenmiş performans eşikleri geçmeden sürüm etkinleştirilmez.
Kitaplar mimari ve değerlendirme yöntemini sağlar; eski protokol örnekleri doğrudan uygulanmaz. Web davranışı güncel TLS 1.3,HTTP,Fetch,HTML,NIST SSDF veweb-platform-tests ile doğrulanacak. Kitaplardaki ağ taraması ve sürekli paket izleme yöntemleri kamusal sitelere otomatik uygulanmayacak.
Kitaplardan uzun metinler veya PDF kopyaları bu sayfaya taşınmadı; bölüm referansları uygulanacak işi izlemek içindir.
6 yerel dosya · 2 yeni Rust modülü
Dosyaların gerçek kapsamını ayrı ayrı doğruladık. İki erken erişim kitabı eksik, ISACA adlı PDF ise yalnız kitap incelemesi. Kavramları yerel Rust motorunun bugün desteklediği özelliklerle eşleştirdik; sunucu güvenliği bölümleri tarayıcı işlevi olarak sayılmadı. Eski baskılar için güncel web standartları esas alındı.
123 PDF sayfası · 1–4. bölümler
Tarayıcı sandbox'ı, CSP, köken, çerez ve HTTPS temelleri.
353 PDF sayfası · 1–13. bölümler
Ağ, oturum, yetki, girdi ve üçüncü taraf kod riskleri.
Yalnız 1–2. bölümler
Güvenlik başlıkları, çerez kuralları ve tehdit modeli.
18 bölüm ve ekler
URL/HTTP/HTML/CSS belirsizlikleri, köken, port ve içerik tanıma.
722 PDF sayfası · 21 bölüm
İstemci denetimi, oturum ve kontrollü negatif test senaryoları.
2 sayfa · kitap incelemesi
Kitabın tamamı değil; teknik uygulama dayanağı sayılmadı.
HTTP(S) için Fetch yasak portları her istekte ve yönlendirmede reddedilir; yerel↔ağ sessiz yönlendirmesi engellenir.
Belgede text/html, CSS'de text/css ve UTF-8 şarttır; başka veya çelişkili charset render edilmez.
WHATWG URL korpusu, opaque/local origin ve DNS sonucu ile hedefin aynı güven kararına bağlanması.
CSP, HSTS, Referrer-Policy, CORP ve Set-Cookie için sınırlı, sürümlü yanıt başlığı sözleşmesi.
CSP/mixed content ve RFC 6265bis çerez kuralları; köken ayrımı, özel oturum ve kota testleri.
İçerik süreci, aygıt/dosya izinleri, WPT/fuzz ve gerçek Pi 5 kabulü.
Önceki planda URL, başlık, CSP/CORS, çerez, süreç ayrımı, indirme ve aygıt izni vardı; aşağıdaki altı sorumluluk ayrıca adlandırılmamıştı. CSS için alt kaynak bütünlüğü eklendi; diğerleri ve çapraz kökenli/betik kapsamı açık.
subresource_integrity.rs
Aynı kökenli bağlı CSS'nin SHA-256/384/512 özeti yanıt baytlarıyla karşılaştırılıyor; uyuşmazsa uygulanmıyor.
Önkoşul: Çapraz kökenli CSS ve betik için CORS/Fetch henüz açık
Kitap: McDonald B2 · Hoffman B1 · W3C SRI
frame_policy.rs
iframe sandbox, frame-ancestors, opener ve COOP/COEP/CORP kararları ayrı tutulacak.
Önkoşul: Çoklu belge, köken ve güvenlik başlıkları
Kitap: Zalewski B9–11/B14/B16 · Hoffman B1
message_origin.rs
postMessage gönderici/hedef kökeni ve mesaj kanalı yetkisi doğrulanacak.
Önkoşul: JavaScript ve ayrı pencere/iframe bağlamı
Kitap: Zalewski B9/B11/B17 · Hoffman B1
cache_partition.rs
HTTP önbelleği köken ve site bağlamına ayrılacak; özel oturumda temizlenecek.
Önkoşul: Üst düzey site anahtarı ve profil deposu
Kitap: Zalewski B3/B9/B12 · McDonald B2
security_identity_ui.rs
Adres, HTTPS durumu ve izin istemleri aynı gezinme kimliğine bağlanacak.
Önkoşul: Kanonik URL, TLS kimliği ve telefon UI
Kitap: McDonald B1–2 · Stuttard/Pinto B5/B13
encoding_sniffing.rs
UTF-8 alt kümesi genişletilmeden önce BOM/meta/HTTP önceliği ve nosniff test edilecek.
Önkoşul: HTTP başlıkları ve genel web uyumluluk kapısı
Kitap: Zalewski B13 · Stuttard/Pinto B3
Bu modüller tam web güvenliği anlamına gelmez: yerel motorda JavaScript, çerez, CSP başlık aktarımı ve HTTPS TLS hizmeti henüz yok. Dayanaklar: WHATWG Fetch, WHATWG HTML köken modeli, WHATWG MIME Sniffing ve W3C CSP 3. CSS bütünlüğü alt kümesinin dayanağı W3C SRI taslağıdır.
Aşama 31 · 2 Rust modülü · kaynak ve kod
Resmî rehberlerin ilgili bölümleri kaynak yükleme hattıyla eşleştirildi. WSTG bir test rehberi, NIST CSF/SSDF yönetim ve geliştirme çerçeveleri, CyBOK bilgi kaynağıdır. Tarayıcı algoritması için W3C ve WHATWG metinleri esas alınıyor. Buradaki kod bağımsız Rust motorundadır; Linux/WPE prototipine aktarılmış değildir.
CSS ve kaynak manipülasyonu için kontrollü negatif testler; CORS, mesajlaşma ve storage kabulü açık.
Bütünlük ve istisna koşulları risk girdisi; sunucu tarafı açıklar tarayıcı özelliği sayılmıyor.
CSP, CORS ve güvenlik başlıkları için sonraki IPC ve belge politikası.
Risk, güvenli geliştirme ve kontrol/kanıt kapıları; web algoritmasının yerine geçmez.
Ağ broker'ında DNS hedefi, port, yönlendirme ve yetki sınırları.
Aynı kökenli CSS için SHA-256/384/512 özeti son yanıt baytlarında doğrulanıyor.
Türkçe kitaplar ve CISSP Official Study Guide bu çalışma alanında tam metin olarak bulunmadı;Hınçer/Kodlab, Gürel/Yalçınkaya, Altınok ve Wiley kayıtlarından yalnız kimlik ve kapsam bilgisi doğrulandı. Kitap içerikleri okunmuş sayılmıyor.
native/subresource_integrity.rsAynı kökenli bağlı CSS, son yanıt baytlarıyla eşleşmeyen en güçlü SHA özetinde uygulanmaz. Yanlış metaveri ayrı hata verir.
let rank = match algorithm {
"sha256" => 1, "sha384" => 2, "sha512" => 3,
_ => return Err(FetchError::InvalidIntegrityMetadata),
};
if rank > strongest { strongest = rank; matches = equal; }
else if rank == strongest { matches |= equal; }
if !matches { return Err(FetchError::IntegrityMismatch); }native/resource_budget.rsBelge, yönlendirme ve CSS aynı 24 istek / iki metin kotası payını kullanır. Yeni gezinme yeni kota oluşturur.
let mut budget = NavigationBudget::new(limits.max_text_bytes);
// resource::load, her yönlendirme ve CSS için:
budget.charge_request()?;
let response = broker.fetch(request)?;
budget.charge_bytes(response.body.len())?;Entegrasyon: native/mod.rs ve native/resource.rs. Eşleşen/uyuşmayan hash, bozuk metaveri, yönlendirme baytları ve toplam istek sınırı test edildi. 77 Rust testi ve AArch64 no_std derlemesi geçti. Çapraz kökenli CSS, betik, CORS ve tam SRI/WPT uyumu açık.
Aşama 32'de IPC'nin özel IP, localhost ve belirsiz sayısal adres ön filtresi eklendi; yönlendirme de ikinci ağ çağrısından önce kesiliyor. Güncel toplam 80 Rust testi geçti. Yetkili ağ işçisinin gerçek DNS yanıtını bağlanmadan önce yeniden denetlemesi hâlâ açık.
Ağ güvenliği kitapları güven sınırlarını anlatır; modern sayfa davranışı için HTML, URL, CSS, ECMAScript, erişilebilirlik ve çapraz tarayıcı testleri de gerekir. Yerel Rust motoru şu an sınırlı HTML/CSS işler. Bu tablo tamamlanmış özellikleri değil, sıradaki kabul kapılarını gösterir.
Pi 5 üzerinde açılış, kapanış, çağrı önceliği, imleç, ses, RAM, FPS ve sıcaklığı aynı 30 dakikalık senaryoda ölç.
Güvenilir saat ve rastgelelik, DNS/TCP/TLS, sertifika ve köken denetimini yetkili EL0 broker ile doğrula.
URL ve HTML ayrıştırma, flex/grid, duyarlı viewport, Türkçe şekillendirme ve büyütme için seçilmiş WPT ile ekran karşılaştırması çalıştır.
Sınırlı resim çözümü, alt metin, form alanları ve klavye/IME davranışını gerçek etkileşim senaryolarıyla doğrula.
Test262 alt kümesi, olay döngüsü, DOM olayları ve işlem yalıtımı için ayrı geçiş kapıları kur.
Köken kotası, çerez, özel oturum, codec, A/V eşzamanı ve Bluetooth kanallarını uzun oturumda sınırla.
Dayanaklar: WHATWG HTML, WHATWG URL, CSSWG, ECMAScript, Web Platform Tests ve WCAG 2.2.
Gerçek WPE kareleri üç DMA-BUF tamponuyla doğrudan KMS görüntüleyicisine aktarıldı; dört 120 karelik koşulda 480/480 KMS commit doğrulandı. Aynı yerel animasyon sayfasında tam kare CPU okumasını atlamak, tarayıcı işlem ailesinin yükünü iki karşılaştırmada %7,8’den %4,6 ve %4,2’ye indirdi. Ayrı test durumunda sahte çağrı başlayınca KMS üst katmanı temizlendi ve yeni kare reddedildi. Bu geçici tanılama akışıdır. Aşama 12 üretim geçişi, fence, gerçek çağrı ve tüm telefonun performans kabulü bitene kadar açık.
Üç tampon ve EGL fence ile DMA-BUF üretim adayı Pi 5'te açık. A/B ve beş dakikalık ölçüm geçti; görüntü/imleç için iyi çalışıyor geri bildirimi alındı. Gerçek gelen çağrı sınaması açık.
Pi 5'in A2DP tanı sesini kullanıcı sol-sağ-sol-sağ duydu; fiziksel stereo geçti. HFP görüşme sesi, medya geçişi ve bağlantı kararlılığı açık.
K400 Plus USB kopmasında aynı süreçte otomatik yeniden bağlanma geçti. Kablosuz sessizleşme, sürükleme p50/p95 gecikmesi ve akıcılık kabulü açık.
Ayrı profil deposu, telefon UI olayları, ağ broker IPC ve ekran sahibinde gerçek sunum.
HTML/CSS, metin ve resim; ardından JavaScript ve medya için ayrı uyumluluk kapıları.
Özel IP ve belirsiz sayısal adres ön filtresi eklendi. Kernel yetkili ağ işçisi, DNS sonucu denetimi, güvenilir saat/rastgelelik, TLS, köken ve bloklayan iptal hâlâ açık.
Gerçek YouTube akışında kesin kodek, video boyutu, düşen kare, ses eşzamanı ve uzun süreli ısı ölçümü; aynı koşullarda CPU/FPS karşılaştırması.
1 Kasım'da yeniden açılmış durağan sayfa 391,4 MB PSS ve %3,72 CPU; kapanışta WPE kalmadı. Aynı oynatma dizisinde eski/yeni politika A/B ve uzun oturum hâlâ açık.
Aynı YouTube parçasında %100–%600 çubuğunu, sol/sağ dengeyi, duyulan yüksekliği ve tepe sınırlayıcı bozulmasını kulakta doğrulama.
Ayrı oturumlarda Bing araması açıldı, cihaz NTP ile eşzamanlıydı ve curl sertifikayı doğruladı. Canlı oturum başka sayfaya geçtiği için oradaki uyarının kesin nedeni henüz bilinmiyor. Kurulu tanı ikilisi ayrı geçici profilde kendinden imzalı yerel HTTPS sertifikasını reddetti, arayüz uyarısını gösterdi ve 0x1 bilinmeyen otorite bayrağını kaydetti. Sertifika denetimi gevşetilmedi. Uyarı tekrar ederse bayrak, saat ve zincir birlikte değerlendirilecek.
Pi 5'te ayrı yerel sayfa ölçümünde Mobil innerWidth=480, Masaüstü innerWidth=960 ve her ikisinde fiziksel outerWidth=480 çıktı. 33 Python arayüz testi, C derlemeleri ve KMS CLI ön doğrulaması geçti. Yeni sürüm Pi 5'e yedekli kuruldu; canlı sayfada 12 saniyelik açılış izlemesinde akış zaman aşımına uğramadı. Altı kaydırma komutu 87 yeni kare üretti ve KMS web katmanı temizlenmedi. Kullanıcının fiziksel panelde tekrar kaydırıp bozulmanın bittiğini ve iki görünümün beklenen okunabilirliğini onaylaması açık.
Pi 5'te C derlemesi ve yerel WPE kabulü geçti: üç normal düğme tıklandı, handler'ı bozuk reklam gizlendi, reklam dışındaki hesap paneli açık kaldı. Yeni motor yedekli kuruldu; canlı tarayıcı ve DMA-BUF akışı yeniden açıldı, ilk izlemede KMS zaman aşımı olmadı. Gerçek reklam sağlayıcısı her yüklemede aynı ilanı sunmadığından kullanıcının X'inde fiziksel kabul açık.
İzole Pi 5 WPE testinde düzeltmeden önce sağ kenar X olayı eksikti; aday motorda sağ kenar X, diğer üç tıklama ve tekerlek kaydırması geçti. İlk canlı kurulum girişimi etkin görüşme nedeniyle korumada durdu. Görüşme bitince motor yedekli kuruldu; kurulu ikilide test tekrar geçti, canlı DMA-BUF akışı başladı ve KMS zaman aşımı görülmedi. Kullanıcının gördüğü reklamda fiziksel kabul açık.
Yerel görsel çıktısı incelendi ve 35 arayüz testi geçti. Pi 5'e yedekli kuruldu; kurulu modülde doğrudan yerleşim testi ve gerçek klavye gizleme düğmesinden geçen olay testi geçti. UI/KMS yeniden başladı, 768000 baytlık kare üretildi. Fiziksel panelde kullanıcı kabulü açık.
Hata önce testte yeniden üretildi: arama ekranındaki ses simgesinin hedefi None idi. Düzeltmeden sonra ses paneli, Çalışan Programlar panelinden üç nokta menüsüne ve menüden ses paneline geçişler çalıştı. 36 yerel test ve Pi 5 kurulu modülde üç olay testi geçti; UI/KMS yeniden açıldı ve EGL akışı kare üretti. Fiziksel panelde kullanıcı kabulü açık.
01 · AselBrowser / işletim sistemi
A44 aşamasında bellek güvenli, sınırlandırılmış HTML/CSS ayrıştırma, style cascade, blok yerleşim, yazılımsal raster ve çift tamponlu sunum temeli kuruldu. Ürün hedefi modern mobil tarayıcı olarak tutuldu; mevcut kodun kapsamı açıkça FoundationEngine diye işaretlendi.
Yerel sayfa işlenip framebuffer üretilebiliyor. Tam web standartları, JavaScript ve genel internet gezintisi bu temelin mevcut yeteneği olarak sunulmuyor.
Kaynak: userspace/asel_browser/src/lib.rs
#![forbid(unsafe_code)]
pub const CURRENT_CLAIM: BrowserClaim = BrowserClaim::FoundationEngine;
pub enum BrowserClaim {
FoundationEngine,
StandardsCompletenessCandidate,
EdgeFirefoxChromeClassTarget,
}02 · AselBrowser / işletim sistemi
A45 aşamasında render süreci için display, input, clock ve ağ broker yetkileri tanımlandı. Yerel sayfa yükleme ve present çıktısı süreç sözleşmesine bağlandı; ham MMIO, doğrudan dosya ve soket API'si verilmedi.
HTTPS, ağ broker yetkisi olmadan kapalı davranıyor. Bu, gerçek bir ağ broker uygulamasının tamamlandığı anlamına gelmiyor.
Kaynak: userspace/asel_browser/src/el0.rs
pub struct RenderProcess {
engine: BrowserEngine,
caps: CapabilitySet,
dma_base: u64,
panel: PanelTiming,
}
pub fn present(&self, format: PixelFormat) -> Result<PresentFrame, PresentError> {
plan_present(self.caps, self.engine.front_buffer(), self.dma_base, format)
}03 · AselBrowser / işletim sistemi
A46 aşamasında tarayıcının present descriptor'ı kernelin gerçek RPi5 framebuffer doğrulayıcısına uyduruldu. Adres hizası, stride, uzunluk, format ve display yetkisi sınandı.
Render süreci ham ekran kayıtlarına yazmadan doğrulanmış bir frame descriptor üretiyor; çapraz crate sözleşme testi mevcut.
Kaynak: userspace/asel_browser/src/present.rs · simulation/tests/asel_browser_scanout_contract.rs
let frame = proc.present(PixelFormat::Xrgb8888).expect("present");
let d = frame.descriptor;
let kernel = FramebufferDescriptor::new(
d.address, d.length, d.width, d.height, d.stride,
ScanoutFormat::Xrgb8888,
).expect("kernel scanout path accepts the browser descriptor");04 · AselBrowser / işletim sistemi
A47 aşamasında motor no_std telefon imajına ve ana ekrandaki Tarayıcı ikonuna bağlandı. Yerel sayfa ayrıştırma, yerleşim ve DSI yüzeyine çizim her karede çalıştırıldı.
Ana ekrandan tarayıcı görünümü açılıyor. Bu işletim sistemi hattında HTTPS, broker yokken reddediliyor.
Kaynak: kernel/src/ui/ios_home.rs · simulation/tests/rpi5_ios_home_browser.rs
cargo test -p asel_browser
cargo check -p asel_browser --no-default-features
cargo test -p aselsan_microkernel_simulation --test asel_browser_scanout_contract
make image-rpi5-ios-home05 · AselBrowser / işletim sistemi
Sekmeler, adres çubuğu, yeni sekme sayfası, geçmiş ve ayar sayfalarının durumu kernel UI modüllerine ayrıldı. Parmağın sürükleme ve bırakma hareketi AselMotor eksenine bağlandı.
Arayüzün durumu ve çizimi ayrı modüllerde; bu UI kapsamı, WPE'nin internette sayfa çalıştıran ayrı Linux hattıyla karıştırılmıyor.
Kaynak: kernel/src/ui/browser.rs · kernel/src/ui/browser_ntp.rs · kernel/src/ui/aselmotor.rs
HomeView::Browser { .. } => frame.browser != previous.browser,
HomeView::Browser { .. } => !frame.browser.same_chrome(&previous.browser),06 · WPE / Raspberry Pi 5
Pi üzerindeki WPE WebKit 2.48.3 ve WPEBackend-fdo 1.16.0 ile C motor kuruldu. Python telefon kabuğu Unix datagram komutlarıyla gezinme, geri/ileri, tıklama, kaydırma, yazma ve yeniden boyutlandırmayı motora taşıdı.
HTTPS sayfaları ayrı WPE sürecinde açıldı. WPE, AselBrowser Rust çekirdeğinin yerine geçmiş değil; çalışan Linux prototipi hattıdır.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py
if (!wpe_loader_init("libWPEBackend-fdo-1.0.so.1")) return 1;
exportable = use_egl
? wpe_view_backend_exportable_fdo_egl_create(&egl_client, NULL, width, height)
: wpe_view_backend_exportable_fdo_create(&client, NULL, width, height);07 · WPE / Raspberry Pi 5
Adres ile arama sorgusu ayrıldı; HTTP/HTTPS dışındaki şemalar reddedildi. SQLite'a geçmiş, yer işaretleri, arama sorguları ve tercihler kaydedildi; son adres yeniden açılabilir hale geldi.
Tarayıcı yeniden açıldığında kayıtlar aynı kullanıcı profilinde duruyor.
Kaynak: scripts/h03_browser.py
CREATE TABLE IF NOT EXISTS visits(url TEXT PRIMARY KEY,title TEXT NOT NULL,visited INTEGER NOT NULL,count INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS bookmarks(url TEXT PRIMARY KEY,title TEXT NOT NULL,created INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS searches(query TEXT PRIMARY KEY,used INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS preferences(key TEXT PRIMARY KEY,value TEXT NOT NULL);08 · WPE / Raspberry Pi 5
Tarayıcı açıkken sol üstte, saatin sağında WPE süreç ağacının anlık CPU ve PSS belleği gösterildi. Etikete basınca tüm çalışan süreçler CPU veya RAM'e göre sıralanan pencerede listeleniyor.
Örnekleme yaklaşık saniyede bir iş parçacığında yapılıyor; metrik toplama ana çizim döngüsünü kilitlemiyor.
Kaynak: scripts/h03_browser.py
label(c.d,(104,10),self.usage.label,13,INK,True)
c.hit((101,0,320,38),('browser_usage',))
def sorted_usage(self):
return sorted(self.system_usage.rows, key=lambda row:(row[self.usage_sort],row['ram']), reverse=True)09 · WPE / Raspberry Pi 5
Eski SHM export yolunda aynı yerel animasyon sayfası iki kez ölçüldü. Web sürecindeki llvmpipe iş parçacıkları, CPU ve kare hızı ayrı kaydedildi; yalnız eglinfo çıktısına dayanılmadı.
SHM koşuları %196,4 / %195,1 tek çekirdek eşdeğeri CPU ve 15,6 FPS verdi. Bu değerler yalnız aynı test sayfasının ölçümüdür.
Kaynak: scripts/benchmark_h03_browser_engine.py · docs/PHONE-H03-BROWSER-GPU-PLAN.md
python3 scripts/benchmark_h03_browser_engine.py --engine /home/oo/.local/share/aselsanos-h03/h03-browser-engine --seconds 810 · WPE / Raspberry Pi 5
Pi 5'in /dev/dri/renderD128 düğümünde GBM ve EGL bağlamı oluşturuldu. WPE FDO EGL export kullanıldı; renderer yazılımsal çıkarsa başlatma reddedildi. Motor SHM geri dönüşünü korudu.
Aynı yerel iş yükünde EGL iki koşuda %25,5 / %25,0 CPU ve 30,0 / 30,1 FPS üretti; motor CPU'sunda yaklaşık %87 düşüş. GPU'dan glReadPixels ile okuma hâlâ var.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-activate-browser-egl.py
drm_fd=open(render_node,O_RDWR|O_CLOEXEC);
gbm_device=gbm_create_device(drm_fd);
if (!gl_renderer || strstr(gl_renderer,"llvmpipe") || strstr(gl_renderer,"softpipe")) {
fprintf(stderr,"H03_EGL_SOFTWARE_RENDERER=%s\n",gl_renderer?gl_renderer:"unknown");
return 0;
}11 · WPE / Raspberry Pi 5
EGL karesi dosya ve Python tam ekran çizimi yerine üç yuvalı paylaşımlı belleğe yazıldı. Rust okuyucu atomik sıra ve okuyucu sayacıyla yuvayı koruyup portre KMS tamponuna kopyaladı. Telefon UI'si ve çağrı katmanı tek KMS sahibi üzerinde kaldı.
242 karelik, sekiz saniyelik yerel testte eski toplam %44,4 CPU; Rust aktarımı %23,9 ve tekrarda %24,0 CPU. Yaklaşık %46 düşüş; %50 iddiası yok.
Kaynak: scripts/rpi5-h03-framepipe.rs · scripts/rpi5-h03-kms-viewer.c
let generation = published.load(Ordering::Acquire);
let index = ((generation - 1) % 3) as usize;
(*readers).fetch_add(1, Ordering::AcqRel);
if published.load(Ordering::Acquire) != generation {
(*readers).fetch_sub(1, Ordering::Release);
continue;
}12 · WPE / Raspberry Pi 5
Gerçek WPE EGL kareleri V3D üzerinde 688×480 AR24 DMA-BUF'a döndürülüyor. Üç tampon, release yanıtı ve EGL native fence fd'si KMS IN_FENCE_FD ile bağlandı. KMS overlay 107 web içeriğini, cursor plane 657 imleci sunuyor. Durağan sayfa yaşam sinyali, tarayıcı çıkışında katman temizliği ve başarısız aktarımda eski tam kare yola dönüş eklendi. Üretim yolu geri alınabilir bayrakla Pi 5'te açıldı.
Fence'li 30 kare, iki köşe imleci ve 3 saniye durağan sayfa testleri geçti. Kayıtlı aynı sayfada 20'şer saniyelik A/B ölçümünde tarayıcı CPU ortancası dört çekirdek üzerinden SHM %4,05, DMA-BUF %2,46; motor %1,73→%0,49; yüzey 30,49→29,59 FPS. Beş dakikalık pasif oturumda 300 örnek, 30,51 FPS, %2,46 CPU ortancası ve hız kısıtlaması olmadan en çok 70,5 °C ölçüldü. Kullanıcı görüntü/imleç için iyi çalışıyor geri bildirimi verdi; tarayıcı çıkışında WPE süreçleri durdu ve KMS web katmanı temizlendi. Ekran sahibinden standart yeniden açılışta DMA-BUF akışı tekrar geçti. Gerçek gelen çağrı kabulü açık; aşama açık.
Kaynak: docs/ASELBROWSER-OPEN-WORK-PLAN.md · docs/PHONE-H03-BROWSER-GPU-PLAN.md · scripts/rpi5-h03-kms-stream.c · scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-kms-viewer.c · scripts/activate-h03-browser-dmabuf.py · scripts/test-h03-browser-live-dmabuf.py · evidence/browser/pi5-dmabuf-ab-shm-20261101.json · evidence/browser/pi5-dmabuf-ab-dmabuf-20261101.json · evidence/browser/pi5-dmabuf-soak-20261101.json
# Pi 5'te geri alınabilir üretim adayı
H03_BROWSER_DMABUF=1
H03_KMS_ATOMIC_STREAM=1
# EGL native fence fd → KMS IN_FENCE_FD; web overlay 107, imleç plane 657.
# Bayrak: ~/.local/share/aselsanos-h03/browser-dmabuf.enabled
# Kabul: aynı sayfada CPU/FPS A/B ve fiziksel görüntü/arama sınaması.13 · WPE / Raspberry Pi 5
YouTube sesinin kaybolması incelendi: WebProcess sandbox içinden özel ALSA dosyası ve sistem D-Bus soketi görünmüyordu. ALSA dosyası salt okunur bağlandı; yalnız org.bluealsa erişimi olan xdg-dbus-proxy soketi açıldı. WPE sandbox etkin tutuldu. Tarayıcı ses düğmesi ve kalıcı seviye ayarı eklendi.
Sandbox içindeki testte medya sesi ve A2DP veri akışı doğrulandı. Kullanıcı gerçek YouTube videosunun sesini FreeClip 2 üzerinden duyduğunu onayladı. Daha sonra bildirilen sol kanal sorunu ve bağlantı kesilmesi sonraki aşamada açık olarak izleniyor.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py · scripts/rpi5-h03-install-browser.sh
// Yalnız gerekli ses erişimleri:
webkit_web_context_add_path_to_sandbox(context,
g_getenv("ALSA_CONFIG_PATH"), TRUE);
webkit_web_context_add_path_to_sandbox(context, audio_proxy_path, FALSE);
// xdg-dbus-proxy: --filter --talk=org.bluealsa14 · WPE / Raspberry Pi 5
Tarayıcıya özel h03audiosink GStreamer eklentisi F32 stereo, %100–%600 kazanç, Dengeli/Konuşma/Bas EQ, mono birleştirme ve stereo bağlı tepe sınırı sağlıyor. Ayarlar SQLite'da kalıcı. Ayrı sol ve sağ kanal sayısal testi ile düşük seviyeli stereo A2DP tanı sesi eklendi.
Pi 5'te DSP kazanç, mono, sınırlayıcı ve sol/sağ kanal izolasyonu sayısal testleri geçti. FreeClip 2 yeniden bağlandığında 48 kHz sol-sağ-sol-sağ tanı dosyası ve tarayıcının h03audiosink düşük seviyeli tonu gerçek A2DP çıkışından hatasız çalındı; DSP seviye dosyası 80 stereo tampon kaydetti. Kullanıcı tanı sesini kulakta sol-sağ-sol-sağ sırasıyla duyduğunu doğruladı. Fiziksel stereo kabulü geçti. Kulaklık sonra uzak uçtan bağlantıyı kapattı; gerçek görüşmede çift yönlü HFP ses ve medya/görüşme geçişi açık. Aşama açık.
Kaynak: scripts/rpi5-h03-browser-audio.c · scripts/h03_audio_dsp.h · scripts/h03_browser.py · scripts/test_h03_audio_dsp.c · scripts/test-h03-freeclip-stereo.py
// EQ → ek kazanç → stereo bağlı tepe sınırı → ALSA
self.engine.audio_settings(self.boost, self.audio_preset, self.mono)
// Kazanç geçişi: 20 ms; tepe sınırı: 0,95; bırakış: 80 ms.
// Bu sınır dijital örnek içindir; fiziksel ses basıncı ölçümü değildir.15 · WPE / Raspberry Pi 5
Mouse olayları en çok 256 olaylık sınırlı gruplarla boşaltılıyor. İmleç 24×36 piksele büyütüldü. UI kontrolü tek, bloklamayan datagram soketini kullanıyor; başarısız POINTER_UP yeniden deneniyor. K400 Plus evdev bağlantısı kesilirse görüntüleyici basılı tuşu bırakıp sabit /dev/input/by-id yolunu 500 ms aralıkla yeniden açıyor; açılış betiği alıcı geç görünürse bekliyor.
31 Ekim'deki donmada KMS saati ilerlerken 12 saniye sıfır ham giriş olayı ölçüldü. USB alıcı yeniden tanıtılınca olaylar geri geldi. Yeni görüntüleyici Pi 5'e yedekle kuruldu; kontrollü USB kopma/yeniden bağlanma sınamasında aynı PID ile DISCONNECTED ve RECONNECTED kaydetti. Kablosuz bağlantının kesin kök nedeni, girişten ekrana gecikme ve kullanıcı akıcılık kabulü hâlâ açık.
Kaynak: scripts/rpi5-h03-kms-viewer.c · scripts/rpi5-h03-autostart.sh · scripts/h03_browser.py · evidence/browser/pi5-k400-input-recovery-20261031.txt
for (int batch = 0; batch < 256; batch++) {
// Kuyruktaki evdev olaylarını, EAGAIN gelene kadar işle.
}
// UI kontrolüne tek AF_UNIX SOCK_DGRAM fd ile sendto;
// kalıcı hatada fd kapatılıp sonraki gönderimde yeniden açılır.16 · AselBrowser / işletim sistemi
Var olan Rust HTML/CSS temelinin üzerine ayrı adres çözümleme, sınırlı HTTP/1 yanıt işleme, yetkili kaynak broker'ı, aynı kökenli CSS yükleme, bağlantıya tıklama, sekmeler, geçmiş, kaydırma ve Türkçe glif boyama eklendi. Çekirdek core + alloc ile aarch64-unknown-none hedefinde derleniyor. Linux için yazılan std adaptörü Pi 5 üzerinde yerel HTTP test sayfası yükledi; 12 gezinme karesi oluşturdu. XRGB8888 için ekran sahibinin verdiği tampona doğrudan çizim API'si eklendi.
Pi 5'te ilk tek koşu değişkendi. Sonraki beş eşlenik 12 kare koşusunda render ortancası RGB565 için 350,5 µs, doğrudan XRGB8888 için 458 µs oldu. RGB565→XRGB8888 genişletmesi ayrıca 430 µs ölçüldü; doğrudan yol bu küçük fixture için uçtan uca CPU adayıdır. Gerçek KMS sunumu, WPE ile genel CPU karşılaştırması ve telefon UI bağlantısı henüz yok.
Kaynak: userspace/asel_browser/src/native/ · userspace/asel_browser/README-NATIVE.md · evidence/browser/pi5-native-paint-ab-20261031.json · evidence/browser/pi5-native-rgb565-expand-20261031.txt
cargo test -p asel_browser
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none
python3 scripts/test-native-browser-host.py --direct-xrgb17 · AselBrowser / işletim sistemi
NativeBrowser sekme/geçmiş durumunu telefon arayüzünde tek kaynak yap; dokunma ve klavye olaylarını bağla. Ağ/DNS/TLS broker'ını yetkili mesajlarla, zaman aşımı ve sınırlandırılmış yanıtlarla uygula. Ödünç alınan görüntü tamponunu ekran sahibinin eşitleme ve sunum akışına bağla.
Pi 5 Linux'ta bağımsız Rust derlemesi ve ayrı süreç oturum geri yüklemesi geçti. Beş eşlenik 12 kare denemesinde RGB565 render 350,5 µs, doğrudan XRGB8888 458 µs ortanca; RGB565→32 bit genişletme ayrıca 430 µs ölçüldü. KMS sunumu henüz ölçülmedi. Mevcut telefon kayıt hizmeti 256 bayt/nesne ve toplam 8 KiB; PIM 7,5 KiB ayırıyor. 576 KiB sınırındaki oturum için ayrı yetkili profil deposu gerekiyor. HTTPS, gerçek sistem ağı ve fiziksel ekran kabulü açık.
Kaynak: userspace/asel_browser/src/native/ · kernel/src/ui/browser.rs · userspace/asel_browser/README-NATIVE.md
NativeBrowser::render_to(&mut compositor_surface)
// Gerçek ağ/TLS broker'ı ve ekran bağlantısı sonraki kabul kapısı.18 · AselBrowser / işletim sistemi
Önce gerçek sitelerde HTML/CSS uyumluluğunu, metin şekillendirmeyi, resim yüklemeyi ve sayfa yaşam döngüsünü geliştir. Sonra JavaScript, güvenli site yalıtımı, medya kod çözümü ve ses çıkışını ayrı test ve kabul kapılarıyla ekle.
Yerel Rust motoru henüz YouTube veya modern JavaScript sitelerini çalıştıran genel tarayıcı değildir; Edge/Firefox/Chrome düzeyi ürün hedefi olarak kalıyor.
Kaynak: userspace/asel_browser/README-NATIVE.md · userspace/asel_browser/src/lib.rs
pub const CURRENT_CLAIM: BrowserClaim = BrowserClaim::FoundationEngine;19 · AselBrowser / işletim sistemi
Beş ağ güvenliği kitabının tarayıcıya uygun bölümleriyle S01 tehdit sınırları belgelendi. Sabit sekme/gezinme kimliği her kaynak isteğine ekleniyor; iptal yönlendirme ve CSS dahil her fetch öncesi/sonrası denetleniyor. HTTP/1, HTML, CSS ve birleşik çizim hedefleri kapsama geri bildirimli fuzz ile çalıştırıldı.
Yerel tarayıcı testleri ve no_std AArch64 kontrolü geçti. Kayıtlı HTTP koşuları toplam 2.505.891 girdi işledi; 20.000 baytlık girdilerle 16 KiB başlık sınırı yoklandı. HTML, CSS ve çizim koşuları toplam 1.859.954 girdi işledi. Bu kısa koşularda çökme görülmedi. Kimlikler yetki belgesi değildir; üretim kernel yetkisi, DNS/TCP/TLS, uzun fuzz ve bloklayan fetch içinde iptal açık.
Kaynak: docs/ASELBROWSER-NATIVE-THREAT-MODEL.md · userspace/asel_browser/src/native/resource.rs · userspace/asel_browser/fuzz/fuzz_targets/ · evidence/browser/http-framing-fuzz-large-20261031.txt · evidence/browser/html-subset-fuzz-20261031.txt · evidence/browser/css-subset-fuzz-20261031.txt · evidence/browser/render-inline-fuzz-20261031.txt
pub struct RequestScope { pub tab_id: u64, pub navigation_id: u64 }
if broker.is_cancelled(scope) { return Err(FetchError::Cancelled); }
// Broker yetkisi kernel endpoint/capability üzerinden doğrulanmalı.20 · WPE / Raspberry Pi 5
Ana ekrana dönüşün yalnız HIDE göndermesi nedeniyle WPEWebProcess arka planda kalıyordu. Çıkış artık QUIT ile motoru durduruyor; kalan yardımcı süreçleri yalnız tarayıcının ayrı süreç grubunda temizliyor. Yeniden açılış önceki adresi geri yüklüyor; boş başlangıç sayfası motoru gereksiz başlatmıyor. UI hizmeti kapanırken de tarayıcıyı durduruyor.
Pi 5'te OPEN ile WPEWebProcess başladı, CLOSE sonrası WebProcess ve motor kalmadı. İkinci OPEN önceki adresi geri yükledi; ikinci CLOSE da temizdi. 26 Python tarayıcı testi geçti. Ayrı yerel Rust hattında yavaş HTTP yanıtının iptal testi eklendi; 24 yerel test ve aarch64-unknown-none kontrolü geçti. Gerçek OS ağ IPC'si ve TLS hâlâ açık.
Kaynak: scripts/h03_browser.py · scripts/rpi5-h03-ui-service.py · scripts/test_h03_browser.py · userspace/asel_browser/src/native/host.rs · userspace/asel_browser/tests/native_browser.rs
# Çıkış: HIDE → QUIT → yalnız ayrılmış motor süreç grubunu temizle
# Geliştirme adaptörü: okuma beklerken iptal kontrolü; gerçek OS IPC hâlâ açık.21 · AselBrowser / işletim sistemi
Dört kayıtlı, sınırlı browser IPC protokolü için bağımsız EL0 probe yazıldı. QEMU virt çekirdeği iki görev başlattı: yalnız birine canlı CNode ENDPOINT_SEND yetkisi verdi. İstemci tarafındaki ScalarTransport URL parçalama, son tarih ve iptal için eklendi; ağ arka ucu yokken açık hata verir. QEMU ham UART kaydı görev kimliği, sıra ve ret sonuçlarını denetleyen araçla saklandı.
Yetkili görev URL'yi 16 baytlık parçalarda iletip BACKEND_UNAVAILABLE aldı. Aynı endpoint numarasını bilen yetkisiz görev INVALID_CAPABILITY aldı. İkisi de çıktı ve toplandı. Bu sonuç yalnız gerçek EL0/CNode hazırlama sınırını doğrular; gerçek DNS/TCP/TLS, HTTP gövdesi, telefon UI ve Pi 5 bare-metal açılışı henüz yok.
Kaynak: abi/src/browser_ipc.rs · kernel/src/phone/browser_gateway.rs · userspace/browser_ipc_probe/src/main.rs · evidence/qemu/browser-ipc-20261030/receipt.json
cargo build -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-qemu,browser-ipc-smoke
python3 scripts/browser-ipc-qemu-check.py evidence/qemu/browser-ipc-20261030/uart.log --json evidence/qemu/browser-ipc-20261030/receipt.json22 · AselBrowser / işletim sistemi
Tarayıcının güvenli Rust çekirdeğini unsafe koddan ayırarak ayrı no_std AArch64 EL0 syscall paketi eklendi. IPC_CALL_TIMEOUT adaptörü canlı endpoint grant'iyle çağrı yapıyor. Yeni CLOCK etiketi çekirdeğin 100 Hz monoton tick sayısını döndürüyor; istemci son tarihleri aynı zaman alanında hesaplıyor ve saat hatasında isteği başlatmıyor. QEMU test görevi saat sorgusunda doğrudan bu yeni paketi kullanıyor.
AArch64 derlemeleri, tarayıcı ve gateway testleri geçti. QEMU UART kaydında yetkili EL0 görev yeni adaptörle CLOCK yanıtını aldı; yetkisiz görev INVALID_CAPABILITY aldı. Kanıt yalnız syscall, yetki ve zaman sınırını kapsıyor. HTTP yanıt gövdesi ABI'si, ağ işçisi, DNS/TCP/TLS, telefon UI bağlantısı ve fiziksel Pi 5 kabulü açık.
Kaynak: abi/src/browser_ipc.rs · userspace/asel_browser_el0/src/lib.rs · kernel/src/phone/browser_gateway.rs · evidence/qemu/browser-ipc-clock-20261030/receipt.json
cargo check --manifest-path userspace/asel_browser_el0/Cargo.toml --target aarch64-unknown-none
python3 scripts/browser-ipc-qemu-check.py evidence/qemu/browser-ipc-clock-20261030/uart.log --require-clock --json evidence/qemu/browser-ipc-clock-20261030/receipt.json23 · AselBrowser / işletim sistemi
IPC v2'ye RESPONSE_HEAD, RESPONSE_READ ve RESPONSE_FINISH eklendi. Kernel gateway tamamlanmış URL'yi yalnız güvenilir işçiye kopyalayabiliyor; işçi durum, Content-Type, Location ve istek kotasıyla sınırlı gövdeyi yayımlayabiliyor. EL0 istemci token sahibini, son tarihi ve 16 baytlık tüm parçaları denetleyip sonucu ResourceBroker'a döndürüyor.
Gerçek kernel gateway ile Rust istemcinin uçtan uca host testi, kota/sahiplik/süre dolumu testleri ve AArch64 derlemesi geçti. Reddedilen BEGIN/COMMIT sonrası token iptali de test edildi. QEMU'da yeni ABI ile yetkili ve yetkisiz EL0 görev sınırı yeniden doğrulandı. Ağ işçisi kurulmadığından canlı backend kapalıdır; DNS/TCP/TLS ve yüksek verimli sayfa devri tamamlanmadı.
Kaynak: abi/src/browser_ipc.rs · kernel/src/phone/browser_gateway.rs · userspace/asel_browser/src/native/ipc_scalar.rs · simulation/tests/browser_ipc_roundtrip.rs · evidence/qemu/browser-response-20261031/receipt.json
cargo test -p aselsan_microkernel_simulation --test browser_ipc_roundtrip
sh scripts/test-browser-gateway-host.sh
python3 scripts/browser-ipc-qemu-check.py evidence/qemu/browser-response-20261031/uart.log --require-clock24 · AselBrowser / işletim sistemi
NativeBrowser sekme, geçmiş, kaydırma ve sonraki gezinme kimliğini 576 KiB ile sınırlı, sürümlü kayda aktarıyor. İçeri alma bütün kaydı doğrulamadan oturumu değiştirmiyor; seçili sayfa resume_active ile yeniden yükleniyor. Linux geliştirme adaptörü dosyayı 0600 izinle atomik rename ve fsync ile saklıyor. Yerel CLI --session seçeneğiyle açılışta yükleyip başarılı komutlardan sonra kaydediyor.
İki sekmeli geri yükleme, kaydırma, bozuk/kesik kayıt reddi ve atomik dosya değişimi testleri geçti. Pi 5 Linux'ta iki ayrı CLI sürecinde sekmeler, geri geçmişi, boş sekme ve sonradan seçilen sekmenin yeniden yüklenmesi doğrulandı; göreli dosya yolu da çalışıyor. no_std AArch64 derlemesi geçti. Kayıt sayfa içeriği veya kimlik bilgisi taşımaz. Telefon OS güvenilir depo IPC'si ve fiziksel yeniden başlatma kabulü açık.
Kaynak: userspace/asel_browser/src/native/session.rs · userspace/asel_browser/src/native/host_session.rs · userspace/asel_browser/src/bin/asel-browser-native.rs · scripts/test-native-browser-session.py
cargo test -p asel_browser
python3 scripts/test-native-browser-session.py
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none25 · WPE / Raspberry Pi 5
Kullanıcının 1080p olarak bildirdiği açık YouTube videosunda 30,4 saniyelik süreç CPU/PSS, web yüzeyi FPS ve sıcaklık ölçümü alındı. WebProcess VPx işçileri ve GL/kuyruk yükü ayrı örneklendi. Sıcaklık 85,1 °C ve etkin soft sınırdayken A/B durduruldu. Video durup cihaz soğuyunca aynı 180 karelik VP9 test verisi libvpx ve libav ile I420 çıkışında karşılaştırıldı. Motora isteğe bağlı HTMLVideoElement kare telemetrisi, Python başlatıcısına deneysel VP9 çözücü seçimi eklendi; çalışan oturum kesilmeden yeni sürüm sonraki açılışa kuruldu.
Canlı oturumda tarayıcı dört çekirdeğin %33,95'ini, WebProcess %32,16'sını, EGL motoru %1,96'sını kullandı; yüzey 30,02 FPS ve PSS 626,3 MB idi. 0xe0006 güncel frekans kısıtlaması ve throttling görüldü. Aynı sentetik VP9 dosyasında libvpx iki kez 2,149 CPU saniyesi, libav 2,266/2,258 saniye kullandı; varsayılan libvpx korundu. Yerel 1920×1080 videoda tanılama çalıştı ve 30 tarayıcı testi geçti. Gerçek YouTube kodeği, düşen kareleri ve yeni sürümün canlı performans kabulü açık; toplam CPU düşüşü iddia edilmiyor.
Kaynak: scripts/measure-h03-browser-video.py · scripts/benchmark-h03-video-decoders.py · scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py · evidence/browser/pi5-youtube-1080p-20261031.json · evidence/browser/pi5-video-decoder-preflight-20261031.txt
python3 scripts/measure-h03-browser-video.py --seconds 30
H03_BROWSER_VIDEO_METRICS=1 # yalnız deneyde video.json üretir
H03_BROWSER_VP9_DECODER=libav # deneysel A/B; varsayılan libvpx korunur
python3 scripts/benchmark-h03-video-decoders.py --vp9 vp9-1080p30-6s.webm --decoder vp9dec --repeats 1 --max-temp 7826 · WPE / Raspberry Pi 5
Video dururken WPEWebProcess için RSS, PSS, anonim bellek ve 10 saniyelik CPU ölçüldü. Varsayılan 3 GiB üst sınır yerine WebKit bellek baskısı 1.200 MB, konservatif eşik %50, katı eşik %85 ve öldürme eşiği kapalı olacak biçimde yeni WebContext'e bağlandı. Çalışan programlar listesindeki çarpı yalnız tarayıcının doğrulanmış süreç grubunda etkin; seçildiğinde motor ve tüm WPE yardımcı süreçleri birlikte kapanıyor. Pi 5'e yedekli kurulum ve canlı UI yeniden başlatması yapıldı.
Durmuş sayfada WebProcess PSS 819,5 MiB, tarayıcı ailesi PSS 944,3 MiB ve CPU dört çekirdeğin %3,83'üydü. Aynı adres yeni motorla yeniden yüklendiğinde ilk WebProcess PSS 292,9 ve 280,5 MiB, aile PSS 402,3 MiB oldu. Yeniden yükleme ve bellek ayarının etkileri ayrı ölçülmedi; uzun oturum ve video tekrar oynatma kabulü açık. Canlı işlem listesinde tarayıcı süreçlerinde çarpı, sistem servislerinde düğme olmadığı görüntülendi.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py · scripts/test_h03_browser.py · docs/PHONE-H03-BROWSER-GPU-PLAN.md · evidence/browser/pi5-youtube-paused-memory-20261031.json · evidence/browser/pi5-browser-usage-close-20261031.png
webkit_memory_pressure_settings_set_memory_limit(pressure,1200);
webkit_memory_pressure_settings_set_strict_threshold(pressure,0.85);
webkit_memory_pressure_settings_set_conservative_threshold(pressure,0.5);
webkit_memory_pressure_settings_set_kill_threshold(pressure,0);
// × yalnız Engine._group_members() ile doğrulanan tarayıcı süreçlerinde.27 · WPE / Raspberry Pi 5
Kısık YouTube sesinin zinciri ölçüldü: tarayıcı %100 ve +12 dB iken BlueALSA yazılım ölçeği 127/127, FreeClip 2'nin AVRCP donanım seviyesi 67/127 idi. A2DP için native ses kontrolü açıldı; kulaklık seviyesi arayüzden 127/127'ye ulaştı. Eski 0–12 dB düğmeleri sürüklenebilen %100–%600 kazanç çubuğuna dönüştürüldü. %600 yaklaşık +15,56 dB'dir; GStreamer DSP üst sınırı 16 dB'ye çıkarıldı, stereo tepe sınırlayıcısı korundu.
Pi 5'te Bluetooth A2DP bağlı, SoftVolume kapalı, donanım seviyesi 127/127 ve YouTube oynarken PCM Running: true olarak doğrulandı. %600 tercihi dosyaya 15,563 dB yazıldı; 15 saniyelik oynatımda işleme sayacı ilerledi. Kullanıcı daha sonra tercihi %100'e çekti; son tercih korunuyor. Kulakta gerçek yükseklik, iki kanal ve bozulma kabulü açık.
Kaynak: scripts/h03_browser.py · scripts/rpi5-h03-ui-service.py · scripts/rpi5-h03-browser-audio.c · scripts/h03_audio_dsp.h · scripts/test_h03_browser.py · scripts/test_h03_audio_dsp.c · evidence/browser/pi5-freeclip-browser-volume-20261031.json
// Tarayıcıya özel A2DP yolu: bluealsa:PROFILE=a2dp,SOFTVOL=no
boost_db = 20 * log10(boost_percent / 100); // %100–%600
// %600 = +15,563 dB; PCM tepe sınırlayıcı 0,95'i korur.
bluealsa-cli volume A2DP_SINK 12728 · AselBrowser / işletim sistemi
Güvenlik planının yanına HTML, URL, CSS, ECMAScript, erişilebilirlik, medya ve ürün performansı kabul kapıları eklendi. Yerel Rust motoru artık bir sayfada karşılaşılan ama henüz işlenmeyen betik, görsel, medya, form ve gömülü çerçeve öğelerini sayıyor. Görsel çözücü olmadığı durumda img alt açıklaması görünür metne ekleniyor; src adresi metne dökülmüyor.
Uyumluluk sayıları CLI makbuzunda compat_* alanlarına yazılıyor; URL ve başlık varsayılan olarak gizli. Yerel Rust testleri ve aarch64 no_std derlemesi geçti. Bu sayaç standart uyumu değildir; gerçek site korpusu, WPT/Test262 seçimi, JavaScript, resim çözümü ve gerçek Pi 5 entegrasyonu açık.
Kaynak: docs/ASELBROWSER-OPEN-WORK-PLAN.md · userspace/asel_browser/src/native/mod.rs · userspace/asel_browser/src/lib.rs · userspace/asel_browser/tests/native_browser.rs · userspace/asel_browser/README-NATIVE.md
pub struct CompatibilityGaps {
pub scripts: u16, pub images: u16, pub media: u16,
pub forms_and_controls: u16, pub embedded_frames: u16,
}
// CLI: compat_scripts=1, compat_images=1, compat_media=1
// Görsel yüklenmiyorsa <img alt> metni DOM'da korunur.29 · AselBrowser / işletim sistemi
Altı yerel dosyanın gerçek kapsamı tek tek incelendi: iki Grokking MEAP taslağı 4 ve 13 bölüm, Hoffman erken EPUB iki bölüm, Tangled Web 18 bölüm, Stuttard/Pinto PDF 21 bölüm, ISACA adlı PDF yalnız iki sayfalık inceleme. Yerel Rust hattına network_policy.rs ve content_type.rs eklendi. HTTP(S) yasak portları ve yerel/ağ yönlendirme sınırı her hopta; belge/CSS MIME ve UTF-8 charset yükleme öncesinde denetleniyor.
İlk istek, yönlendirme ve doğrudan IPC çağrısında yasak port ret testleri; yerel→ağ ret testi; UTF-8, yanlış charset, çelişkili charset ve yanlış MIME testleri geçti. Bu dar kapsam tam CSP, çerez, HTTPS veya web standart uyumu değildir. Genişletilmiş kaynak matrisi ve sıradaki modüller docs/ASELBROWSER-WEB-APP-SECURITY-BOOK-AUDIT.md içinde.
Kaynak: docs/ASELBROWSER-WEB-APP-SECURITY-BOOK-AUDIT.md · userspace/asel_browser/src/native/network_policy.rs · userspace/asel_browser/src/native/content_type.rs · userspace/asel_browser/tests/native_browser.rs
cargo test -p asel_browser
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none30 · AselBrowser / işletim sistemi
Altı dosyanın içerikleri mevcut Rust modülleri ve site planıyla yeniden karşılaştırıldı. Önceki planda URL, başlık, CSP/CORS, çerez, süreç ayrımı, indirme ve aygıt izni vardı; alt kaynak bütünlüğü, çerçeve/pencere sınırı, belgeler arası mesaj kökeni, önbellek bölümleme, güven kimliği arayüzü ve geniş kodlama/MIME kararı ayrı modül olarak eksikti. Altı modül, kitap bölüm dayanakları ve önkoşullarıyla yol haritasına eklendi.
Bu aşama envanter ve plan düzeltmesidir; altı yeni modülün kodu yazılmadı. Mevcut uygulama yalnız network_policy.rs ve content_type.rs alt kümesidir. Sunucu tarafı CSRF doğrulaması, SQL enjeksiyonu ve iş mantığı tarayıcı modülü sayılmadı.
Kaynak: docs/ASELBROWSER-WEB-APP-SECURITY-BOOK-AUDIT.md · website/src/components/BrowserWebAppSecurityAudit.tsx
# Kodlanan: native/network_policy.rs, native/content_type.rs
# Açık: subresource_integrity.rs, frame_policy.rs, message_origin.rs, cache_partition.rs, security_identity_ui.rs, encoding_sniffing.rs31 · AselBrowser / işletim sistemi
OWASP WSTG v4.2, Top 10:2025, Proactive Controls C8, NIST CSF 2.0/SP 800-218/SP 800-53, CyBOK Network Security ve W3C SRI kaynak yükleme hattıyla eşleştirildi. Yerel Rust motoruna subresource_integrity.rs ve resource_budget.rs bağlandı. Aynı kökenli bağlı CSS'nin SHA-256/384/512 özeti son yanıt baytlarıyla doğrulanıyor; belge, yönlendirme ve CSS 24 istek ve iki metin boyutu toplam kotasını paylaşıyor.
77 Rust testi ve AArch64 no_std derlemesi geçti. Eşleşen/uyuşmayan en güçlü özet, bozuk metaveri, yönlendirme bayt kotası, istek sınırı ve yeni gezinme sıfırlaması denendi. Türkçe kitapların ve CISSP kılavuzunun tam metni mevcut değildi; yalnız katalog/yazar bilgileri doğrulandı. CORS, betik SRI, güvenlik başlığı IPC'si, WPT ve gerçek Pi 5 kabulü açık.
Kaynak: docs/ASELBROWSER-SECURITY-STANDARDS-REVIEW.md · userspace/asel_browser/src/native/subresource_integrity.rs · userspace/asel_browser/src/native/resource_budget.rs · userspace/asel_browser/src/native/mod.rs · userspace/asel_browser/src/native/resource.rs · userspace/asel_browser/tests/native_browser.rs
cargo test -p asel_browser -- --test-threads=1
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none
// CSS hash uyuşmazsa kaynak uygulanmaz; BudgetExceeded ayrı hata olarak döner.32 · AselBrowser / işletim sistemi + WPE / Raspberry Pi 5
Yerel Rust IPC istemcisi özel/rezerve IP literalini, localhost adını ve farklı çözümleyicilerin IP sayabileceği hex/sayısal son etiketleri ağ taşımasına göndermeden reddediyor. Ortak hedef politikası Linux geliştirme adaptöründe çözülmüş IP'ye de uygulanıyor. Pi 5'te telefon arayüzünden kayıtlı durmuş YouTube sayfası açılıp kısa süre ölçüldü ve tarayıcı kapatıldı.
80 Rust testi ve AArch64 no_std derlemesi geçti; özel IP'ye yönlendirme ikinci IPC çağrısından önce durdu. Pi 5'te 20,4 saniyelik durağan sayfada aile PSS 391,4 MB, dört çekirdek üzerinden CPU ortancası %3,72 ve yüzey 30,26 FPS idi. Kapanışta WPE süreçleri ve motor soketi kalmadı. Bu sonuçlar 9 açık aşamadan hiçbirini kapatmıyor: gerçek OS ağ işçisi/TLS, uzun bellek A/B, video, çağrı, giriş gecikmesi ve fiziksel ses kabulü açık. FreeClip 2 bağlantı denemesi zaman aşımına uğradı.
Kaynak: userspace/asel_browser/src/native/target_policy.rs · userspace/asel_browser/src/native/ipc_contract.rs · userspace/asel_browser/src/native/host.rs · userspace/asel_browser/tests/native_browser.rs · evidence/browser/pi5-open-work-audit-20261101.json
// IPC ön filtresi; yetkili OS işçisi her DNS sonucunu ayrıca denetlemeli.
if !public_literal_host(request.url.host()) { return Err(FetchError::Denied); }
// Pi 5: durmuş sayfa 20,4 s, 391,4 MB PSS, %3,72 CPU; CLOSE sonrası WPE yok.33 · WPE / Raspberry Pi 5
Canlı tarayıcıda Bing araması sırasında sertifika doğrulanamadı uyarısı görüldü. Pi 5 saati, CA deposu ve curl doğrulaması kontrol edildi. Aynı adres ayrı SHM, üretim profili kopyalı SHM ve EGL oturumlarında yeniden denendi. WPE TLS hata bayraklarını günlüğe yazan ikili yedekli ve atomik biçimde sonraki açılışa kuruldu; çalışan oturum kesilmedi.
Ayrı oturumlarda Bing araması açıldı, cihaz NTP ile eşzamanlıydı ve curl sertifikayı doğruladı. Canlı oturum başka sayfaya geçtiği için oradaki uyarının kesin nedeni henüz bilinmiyor. Kurulu tanı ikilisi ayrı geçici profilde kendinden imzalı yerel HTTPS sertifikasını reddetti, arayüz uyarısını gösterdi ve 0x1 bilinmeyen otorite bayrağını kaydetti. Sertifika denetimi gevşetilmedi. Uyarı tekrar ederse bayrak, saat ve zincir birlikte değerlendirilecek.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/test-h03-browser-tls.py · evidence/browser/pi5-bing-tls-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md
static gboolean tls_failed(..., GTlsCertificateFlags errors, ...) {
fprintf(stderr, "H03_TLS_FAILURE flags=0x%x\n", (unsigned)errors);
last_error = g_strdup("Bu sitenin güvenli bağlantısı doğrulanamadı.");
return TRUE; // sertifika hatası için istisna verme
}
// Pi 5: test-h03-browser-tls.py → H03_TLS_NEGATIVE_OK, flags=0x134 · WPE / Raspberry Pi 5
Kullanıcının kaydırırken gördüğü geçici yatay dikdörtgen bozulmaları incelendi. KMS günlüğünde 2 saniyelik durağanlık sınırı yüzünden DMA-BUF web katmanının 6–11 kare sonra temizlendiği ve motorun ilk başarısız yaşam sinyalinde readback yoluna geçtiği görüldü. KMS süre sınırı 30 saniyeye çıkarıldı; motor tek geçici sinyal kaybında vazgeçmek yerine beş deneme yapıyor ve kalıcı hatada web katmanını temizliyor. Tarayıcı menüsüne kalıcı Mobil/Masaüstü seçimi kondu; Mobil kullanıcı aracısı ve 480 piksel sayfa alanı, Masaüstü kullanıcı aracısı ve 960 piksel düzeni 0,5 yakınlaştırmayla 480 piksel ekrana sığdırıyor.
Pi 5'te ayrı yerel sayfa ölçümünde Mobil innerWidth=480, Masaüstü innerWidth=960 ve her ikisinde fiziksel outerWidth=480 çıktı. 33 Python arayüz testi, C derlemeleri ve KMS CLI ön doğrulaması geçti. Yeni sürüm Pi 5'e yedekli kuruldu; canlı sayfada 12 saniyelik açılış izlemesinde akış zaman aşımına uğramadı. Altı kaydırma komutu 87 yeni kare üretti ve KMS web katmanı temizlenmedi. Kullanıcının fiziksel panelde tekrar kaydırıp bozulmanın bittiğini ve iki görünümün beklenen okunabilirliğini onaylaması açık.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-kms-viewer.c · scripts/h03_browser.py · scripts/test_h03_browser.py · scripts/test-h03-browser-view-mode.py · scripts/activate-h03-browser-view-mode.py · evidence/browser/pi5-browser-view-mode-and-stream-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md
// Tarayıcı menüsü: Görünüm: Mobil ↔ Masaüstü (SQLite'da kalıcı).
MODE|desktop → desktop UA + webkit_web_view_set_zoom_level(view, 0.5);
MODE|mobile → mobile UA + webkit_web_view_set_zoom_level(view, 1.0);
// Pi 5: 480/960 CSS px; kaydırmada +87 kare, 0 KMS timeout/clear.35 · WPE / Raspberry Pi 5
Kullanıcının kapanmayan reklam bildirimi üzerine üst, alt ve farklı kökendeki iframe düğmeleri gerçek WPE olaylarıyla denendi; genel tıklama yolu çalışıyor. Örnek haber sayfasında çerez bildirimi alt sağdaki reklam X'ini örtüyor; başka bir durumda 20×24 CSS piksel empowerBannerClose öğesi tıklama hedefi olduğu halde reklam yerinde kaldı. Motora tüm çerçevelerde çalışan bir belge-başı script eklendi: yalnız küçük ve kapatma işaretli öğe reklam/banner/sponsor kapsayıcısındaysa sayfanın kendi işlemini 450 ms bekliyor, öğe ve kapsayıcı hâlâ görünüyorsa kapsayıcıyı gizliyor. Ortam değişkeniyle kapatılabiliyor.
Pi 5'te C derlemesi ve yerel WPE kabulü geçti: üç normal düğme tıklandı, handler'ı bozuk reklam gizlendi, reklam dışındaki hesap paneli açık kaldı. Yeni motor yedekli kuruldu; canlı tarayıcı ve DMA-BUF akışı yeniden açıldı, ilk izlemede KMS zaman aşımı olmadı. Gerçek reklam sağlayıcısı her yüklemede aynı ilanı sunmadığından kullanıcının X'inde fiziksel kabul açık.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/test-h03-browser-click-targets.py · scripts/activate-h03-browser-adclose.py · evidence/browser/pi5-browser-ad-close-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md
// X tıklandıktan sonra sayfanın kendi handler'ı 450 ms içinde kapatmazsa:
if (smallCloseControl && adAncestor && stillVisible) {
adAncestor.style.setProperty('display', 'none', 'important');
}
// Geri alma: H03_BROWSER_AD_CLOSE_FALLBACK=036 · WPE / Raspberry Pi 5
Kullanıcının X'e basınca sayfanın kaydığı gözlemi 480 piksel WPE görünümünde yeniden üretildi. 2000 piksel yüksekliğinde yerel sayfaya sağ kenara yaslı 20 piksel kapatma düğmesi kondu. x=475 tıklaması düğmeye ulaşmadı; diğer üst, alt ve iframe düğmeleri çalıştı. Kullanıcı düzeyinde, bütün çerçevelere uygulanan WebKit stil sayfası ile kaydırma çubuğunun tıklamayı örten izi gizlendi. Tekerlek, dokunma ve klavye kaydırması korunuyor.
İzole Pi 5 WPE testinde düzeltmeden önce sağ kenar X olayı eksikti; aday motorda sağ kenar X, diğer üç tıklama ve tekerlek kaydırması geçti. İlk canlı kurulum girişimi etkin görüşme nedeniyle korumada durdu. Görüşme bitince motor yedekli kuruldu; kurulu ikilide test tekrar geçti, canlı DMA-BUF akışı başladı ve KMS zaman aşımı görülmedi. Kullanıcının gördüğü reklamda fiziksel kabul açık.
Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/test-h03-browser-click-targets.py · scripts/activate-h03-browser-edge-click.py · docs/ASELBROWSER-OPEN-WORK-PLAN.md
WebKitUserStyleSheet *edge_style=webkit_user_style_sheet_new(
"::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; }",
WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, NULL, NULL);
// Geri alma: H03_BROWSER_EDGE_CLICK_FIX=0
// Pi 5: önce [upper, frame, lower], sonra [upper, edge, frame, lower, scroll]37 · AselBrowser arayüzü / Raspberry Pi 5
Kullanıcının fotoğrafında klavye gizlenince arama alanı ekran ortasında kalıyor, alt araç çubuğu aşağı iniyor ve arada boşluk oluşuyordu. draw_address() alanının sabit y=461 kullandığı saptandı. Alan klavye açıkken y=461, kapalıyken y=737 konumuna taşındı; öneri listesi yeni yüksekliğe uydu, düzenleme ekranındaki arka araç çubuğu kaldırıldı ve liste kaydırma sınırı güncellendi.
Yerel görsel çıktısı incelendi ve 35 arayüz testi geçti. Pi 5'e yedekli kuruldu; kurulu modülde doğrudan yerleşim testi ve gerçek klavye gizleme düğmesinden geçen olay testi geçti. UI/KMS yeniden başladı, 768000 baytlık kare üretildi. Fiziksel panelde kullanıcı kabulü açık.
Kaynak: scripts/h03_browser.py · scripts/test_h03_browser.py · scripts/activate-h03-browser-address-reflow.py · docs/ASELBROWSER-OPEN-WORK-PLAN.md
field_y = 461 if self.app.keyboard else 737
list_bottom = 444 if self.app.keyboard else 720
# Tarayıcı araç çubuğu yalnız düzenleme dışındayken çizilir.
# Pi 5: test_keyboard_hide_button_reflows_full_ui geçti.38 · AselBrowser arayüzü / Raspberry Pi 5
Arama düzenleme ekranında draw_address() bütün tıklama alanlarını sıfırladığı için görünen ses simgesi işlevsizdi. Açık bir panelde draw_sheet() üst şeritteki ses ve kullanım alanlarını siliyordu. Görünen üst durum şeridi hedefleri arama ve panel çiziminde korunuyor; panelde alt araç çubuğunun üç nokta hedefi de korunuyor.
Hata önce testte yeniden üretildi: arama ekranındaki ses simgesinin hedefi None idi. Düzeltmeden sonra ses paneli, Çalışan Programlar panelinden üç nokta menüsüne ve menüden ses paneline geçişler çalıştı. 36 yerel test ve Pi 5 kurulu modülde üç olay testi geçti; UI/KMS yeniden açıldı ve EGL akışı kare üretti. Fiziksel panelde kullanıcı kabulü açık.
Kaynak: scripts/h03_browser.py · scripts/test_h03_browser.py · scripts/activate-h03-browser-ui-hits.py · evidence/browser/pi5-browser-ui-hits-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md
# Görünür durum şeridi ve alt araç çubuğu panel açıkken tıklanabilir kalır.
c.hits = [hit for hit in c.hits if hit[0][3] <= 38 or hit[0][1] >= 730]
# Pi 5: ses, kullanım paneli ve üç nokta geçişleri için üç olay testi geçti.