# Üniversiten Windows uygulaması · 1.1.0

Dersler, sorular, deneme sınavları, yanlış tekrarları, not panosu, kaynaklar, topluluk, kısa videolar ve yetkili hesaplarda yönetim paneli aynı Üniversiten hesabıyla uygulamada bulunur. Windows çalışma araçları da yanında açılır. Cihaz medyası bunlardan biridir.

## Setup ve çalışma araçları

`universiten-setup-windows.exe` mevcut Windows kullanıcısının `%LOCALAPPDATA%\Programs\Universiten` klasörüne kurar. Masaüstü kısayolu başlangıçta seçilidir; Başlat menüsü kısayolu ve kaldırıcı da eklenir. Kurulumdan sonra uygulamayı açma seçeneği başlangıçta kapalıdır. Otomatik başlangıç veya yönetici yetkisi yoktur. Taşınabilir ZIP seçeneği de kullanılabilir.

- **Odak:** 25 / 50 / 1–180 dakika, duraklat/devam/sıfırla, sessiz tamamlanma ve günlük tamamlanan odak geçmişi. Panel gizlense de gerçek geçen süre hesaplanır.
- **Çevrimdışı hızlı not:** oluştur, düzenle, ara, son silineni geri al ve Markdown/TXT’ye aktar. Notlar mevcut Windows kullanıcısının cihazında saklanır; web hesabındaki Not panom ile senkronize edilmez. Ortak Windows kullanıcı profilinde yerel not alanı da ortaktır.
- **Uygulama komutları:** Ctrl + K komut menüsü, Ctrl + Shift + N hızlı not, Ctrl + Shift + T odak, Ctrl + 1 / 2 / 3 çalışma masası / dersler / not panosu, Alt + Sol / Sağ geçmiş.
- **Pencere:** F11 tam ekran, Escape pencereye dönüş, isteğe bağlı üstte tutma ve Ctrl + + / − / 0 ile %75–150 görünüm. Boyut/zoom tercihi sonraki açılışa taşınır. Eski sınav ve auth/onay URL’leri başlangıç adresi olarak geri yüklenmez.
- **İndirmeler:** gerçek ilerleme, desteklenen duraklat/devam, iptal ve açık kullanıcı isteğiyle klasörü açma. Dosyalar kendiliğinden çalıştırılmaz.
- **Bağlantı kesilirse:** hızlı notlar ve odak araçları çalışır. Hesap verilerine, derslere ve sınavlara erişmek için internet gerekir.

Google düğmesi girişi varsayılan tarayıcıda başlatır. Üniversiten onay sayfasında hesabını onayladıktan sonra uygulamaya dönersin. Giriş/kayıt ekranları arasında dönüş adresi korunur. Tarayıcı çerezleri ve Google parolası okunmaz; mevcut e-posta hesabına Google bağlamak için webdeki Bağlı hesaplar akışı korunur. Hesaplar kendiliğinden birleştirilmez.

İkinci kısayol tıklaması mevcut pencereyi açar. Aktivasyon kanalı yalnız bu Windows kullanıcısına açık sabit pencere komutudur; ağ portu açmaz. Bozuk yerel dosya korunur; kayıt hatasında kaydedilmeyen düzenleme sessizce atılmaz.

## Gereksinimler ve güvenli bağlantı

Windows 10 sürüm 2004 (19041) veya daha yenisi, x64 ve Microsoft Edge WebView2 Evergreen Runtime gerekir. .NET çalışma ortamı pakete dahildir. Uygulama yönetici yetkisi, otomatik başlangıç, yerel sunucu veya eşleştirme kodu istemez. Taşınabilir ZIP’i kullanıyorsanız paketin bütün dosyalarını aynı klasöre çıkartıp `Universiten.Desktop.exe` dosyasını açın. Bu sürüm dijital olarak imzalanmamıştır; Windows indirme uyarısı gösterebilir.

Uygulama `https://universiten.com/hesabim` sayfasını açar. Site panelindeki cihaz oynatıcısı, Windows'un SMTC'ye bildirdiği gerçek oynayan/duraklatılmış oturumları gösterir. Desteklenen işlemler uygulamanın bildirdiği yeteneklerle sınırlıdır. Ses/sessize alma, seçili şarkıya ait uygulama sesi değil Windows varsayılan ses çıkışının **cihaz sesi**dir. SMTC'ye yayın yapmayan uygulamalar görünmez. Bildirimler, diğer uygulamaların ekranı veya çerezleri okunmaz. Meta veriler yalnız kullanıcı cihaz oynatıcısını etkinleştirince site isteğine yanıt olarak okunur; ayrı telemetri isteği veya yerel port yoktur.

`Tarayıcıdan giriş` düğmesi varsayılan tarayıcıda açık hesap onayı ister. Beş dakika içinde onaylanan, S256 PKCE ile bu uygulamaya bağlı tek kullanımlık oturum uygulamanın kendi WebView2 profilinde saklanır. Google düğmesi de bu akışa yönlendirilir. Tarayıcıdaki mevcut çerezler aktarılmaz; parola/kod istenmez. Bekleyen giriş iptal edilebilir ve tekrar başlatılabilir. Normal site parolasıyla uygulama içinde giriş de kullanılabilir.

`F11` tam ekranı açar/kapatır; tam ekrandaki `Escape` pencereye döner. Diğer site kısayolları korunur. Dış HTTPS bağlantıları varsayılan tarayıcıda açılır; dosya indirmek için konum seçmeniz gerekir. İndirilen dosyalar otomatik açılmaz.

Profil ve uygulamaya ait site çerezleri `%LOCALAPPDATA%\Universiten\Desktop\WebView2` altında mevcut Windows kullanıcısına aittir. Uygulama açıkken bu klasörü taşımayın. Runtime yoksa yalnız resmi Microsoft indirme sayfası sunulur; uygulama kendiliğinden yazılım kurmaz.

## Derleme ve kontroller

Resmi .NET SDK 8.0.425 ile uygulama kökünden:

```powershell
& '../device-sdk/dotnet.exe' publish companions/desktop/Universiten.Desktop.csproj -c Release -o ../desktop-publish
```

`../desktop-publish` içindeki **tüm** dosyalar paketlenmelidir. WebView2 loader yerel dosyaları korunmalıdır. `bin/`, `obj/`, yerel tarayıcı profili ve gizli ortam dosyaları dağıtıma eklenmez. NuGet SDK sürümü `Microsoft.Web.WebView2 1.0.4258.31` olarak sabittir; Evergreen Runtime paketlenmez.

```powershell
./Universiten.Desktop.exe --protocol-test
./Universiten.Desktop.exe --app-test
./Universiten.Desktop.exe --workspace-test
./Universiten.Desktop.exe --shell-test
./Universiten.Desktop.exe --self-test
```

Bu seçenekler pencere açmaz. Protokol, uygulama, çalışma araçları ve kabuk testleri saf/maket nesneler ile yalnız kendilerine ait geçici dosyaları kullanır; ağ bağlantısı veya gerçek medya komutu çalıştırmaz. Salt okunur platform testi yalnız API varlığı, oturum sayısı, ardışık Windows oturum kimliği kararlılığı/benzersizliği ve ses çıkışının kullanılabilirliğini JSON olarak verir; şarkı/sanatçı/uygulama adları, çerezler veya kimlikler basılmaz. Platform testi boş oturumlarda kararlılığı `null` bildirir. Normal pencere davranışı ve gerçek kullanıcı hesabıyla tarayıcı onayı ayrı uçtan uca kontroldür.

## Web köprüsü sözleşmesi

Yalnız ana `https://universiten.com` belgesi `window.chrome.webview.postMessage` üzerinden erişir. Host, port, kimlik bilgisi, mevcut belge yolu/sorgusu ve navigasyon nesli kontrol edilir. Üçüncü taraf iframe'lere host nesnesi veya frame mesaj işleyicisi verilmez.

İstek alanları: `channel: "universiten.device.v1"`, `id: [A-Za-z0-9_-]{1,96}`, `action: status|play|pause|next|previous|seek|volume|mute`, isteğe bağlı `sessionId`, `value`. Başka veya yinelenen JSON alanı reddedilir; azami gövde 4 KiB. `status` isteğe bağlı 64 küçük hex karakterli `sessionId` alır. Kontroller bu kimliği zorunlu tutar. `volume` 0–100, `seek` 0–604800 saniye (gerçek süreyi aşamaz), `mute` boolean; diğer eylemler `value` almaz.

Yanıt: `{channel,id,ok,version:1,connected,playback,error,status,sessions}`. `playback` boşta `null`, `sessions` durum/success yanıtında en fazla 12 gerçek `DevicePlayback` kaydıdır. Kayıtta `id,title,author,deviceName,isPlaying,position,duration,volume,muted,canPlay,canPause,canNext,canPrevious,canSeek,canVolume,source` bulunur. `source` gerçek Windows SourceAppUserModelId'dir. Sanatçı `author` alanındadır. Kapak resmi bu sürümde aktarılmaz. Süresi belirsiz/aşırı uzun yayın `duration:0,canSeek:false` döner; sahte süre üretilmez.

Kimlik, concrete WinRT oturum eşitliğiyle saklanan rastgele opak nonce ve mevcut şarkı bilgisinin SHA256'ıdır. Aynı uygulamadaki iki aynı şarkılı ayrı oturum farklı kimlik taşır; şarkı değişimi eski komutu 409 ile reddeder. `status` kapanmış seçimin yerine gerçekten oynayan/mevcut oturumu bildirir; komutlar başka oturuma düşmez. Başarılı ileri/geri yanıtı seçilen Windows oturumunun yeni şarkısını korur. Tekrarlanan request ID bir işlemi tekrar çalıştırmaz; eşzamanlı çalışma 8, kısa yanıt önbelleği 256 kayıtla sınırlıdır. 4 saniye sonrasında kuyruktaki/gecikmiş iş komut başlatamaz. Başlamış Windows OS işlemi geri alınamaz.

## Resmi kaynaklar

- [Microsoft WebView2 WinForms başlangıcı](https://learn.microsoft.com/en-us/microsoft-edge/webview2/get-started/winforms)
- [WebView2 güvenlik modeli](https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/security)
- [Evergreen Runtime dağıtımı](https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution)
- [Sabit NuGet SDK paketi](https://www.nuget.org/packages/Microsoft.Web.WebView2/1.0.4258.31)
- [Windows SMTC session manager](https://learn.microsoft.com/en-us/uwp/api/windows.media.control.globalsystemmediatransportcontrolssessionmanager)

Uygulama simgesi mevcut `public/pwa/icon-192.png` içeriğinin PNG piksellerini değiştirmeden ICO kapsayıcısına koyar.

Microsoft WebView2 BSD lisans/bildirimleri ve .NET/Windows Desktop çalışma ortamı MIT lisans/bildirimleri `licenses/` klasöründe dağıtıma dahildir.

`universiten.app.v1` ayrı uygulama kanalında `{channel,id,action}` alır: `status`, `notes`, `timer`, `focus`, `commandPalette`, `downloads`, `zoomIn`, `zoomOut`, `zoomReset`, `pin`, `login`, `googleLogin`. Yanıt uygulama adı/sürümü/platformu, yetenekleri ve pencere durumunu verir. Yerel not içerikleri, dosya yolları ve çerezler bu kanal üzerinden gönderilmez. Aynı nonce eylemi tekrarlamaz; farklı eylem 409 döner. Setup kaynağı `companions/setup/Universiten.iss` ve doğrulanmış resmi Inno Setup derleyicisiyle paketlenir; bu projede imzalama anahtarı yoktur.
