Files
aiturk-hermes-ide/apps/mobile/README.md
T

199 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AITURK Mobil — Android geliştirme sürümü 0.1.4
Bu bir **geliştirme paketi**; planın tamamlanmış ürün/kapalı beta kabulü değildir.
Android uygulaması, IDE adaptörü ve hesap doğrulamalı bağlantı servisi kodlandı.
Google Live ve gerçek telefon/ağ doğrulaması henüz yapılmadı. Canlı
turkservis.online veya kurulu IDE bu kaynak değişiklikleriyle güncellenmedi.
## Çalışan ve test edilen parçalar
- Capacitor 8.5.1 Android projesi; Türkçe erişilebilir kurulum ve yazılı kullanım.
- Tarayıcıda mevcut AITURK hesabıyla kısa kod onayı; uygulamaya parola girilmez.
Dar kapsamlı mobil oturum Windows/Android kasasında tutulur. Mevcut hesap API
anahtarı gelişmiş seçenek olarak korunur. Bu yeni giriş henüz canlıya dağıtılmadı.
Telefonun eşleşmesini hedef bilgisayar kendi cihaz tokenıyla onaylar.
- WebRTC DTLS/SCTP veri kanalı; büyük Unicode mesajları sınırlı parçalara bölme.
- Mevcut IDE `/api/sessions` ve JSON-RPC adaptörü. Konuşma ve seçili model
gönderimden önce doğrulanır. Model listesi icat edilmez.
- Görevden önce diske yazılan tekrar gönderim kaydı. Kabul sonucu belirsizse
ikinci kez çalıştırılmaz. Telefonun bekleyen gönderimi Android kasasında kalır.
- Gerçek IDE onay kimliği ve redakte edilmiş tam komutla yalnız `once`/`deny`.
Sürekli/genel izin, sudo/UAC veya ses modeli üzerinden onay yolu yoktur.
- Google anahtarı Windows `safeStorage`, hesap cihaz sırrı Android Keystore
AES-GCM kullanır. Android yedekleme ve cihazlar arası veri taşıma kapatılır.
- Anahtardan kısa ömürlü, model/araç/sistem talimatı kısıtlı Google Live token
üretme kodu; doğrudan Google WebSocket, PCM mikrofon/oynatma ve kapatma kodu.
- Ses görüşmesini kapatma IDE'ye interrupt göndermez. Görünür görev gönder
düğmesi ve ayrı IDE durdur düğmesi vardır.
- Google kullanım bildirimleri ücretli liste tarifesiyle tahmin edilir; her
isteğin tekrar faturalandırılan geçmişi de sayılır. Ayrıntısı eksik tokenlar
için fiyat aralığı gösterilir. Bu fatura, kredi veya ücretsiz kota sorgusu değildir.
- Kullanıcı her görüşme için 1–10 dakika ve 0,01–10 USD tahmini durdurma sınırı
seçer (varsayılan 10 dakika / 0,25 USD). Üst tahmin sınıra ulaşırsa, süre
dolarsa veya 120 saniye kullanım bildirimi gelmezse yalnız Google bağlantısı
kapanır. Otomatik yeniden bağlanılmaz. Her yeni oturumda sayaç sıfırlanır;
bu günlük/aylık bütçe veya Google tarafında kesin harcama tavanı değildir.
## Geliştirme kurulumu
Node 22+, JDK 21 ve Android API 36 gerekir. Bu çalışma sırasında araçlar
`%LOCALAPPDATA%/aiturk-mobile-tools` altına kuruldu; kullanıcı sistem PATH'i
veya yönetici ayarları değiştirilmedi.
```powershell
# Bu klasörde; kök depodaki kurulumu etkilemeyen Android kurulumu
npm ci --workspaces=false --ignore-scripts
npm test --workspaces=false
npm run android:sync --workspaces=false
# JAVA_HOME ve ANDROID_HOME kendi araç yollarınızı göstermeli
.\android\gradlew.bat -p android assembleDebug assembleRelease lintDebug
```
`app-debug.apk` geliştirici anahtarıyla imzalanır. `app-release-unsigned.apk`
üretim imzası içermez ve kurulabilir sürüm olarak paylaşılmamalıdır. Özel üretim
imza anahtarı oluşturulmadı; mağaza hesabı veya ücretli hizmet açılmadı.
## Uyumlu IDE ve bağlantı servisi
Bu kaynak ağacındaki masaüstü paketini normal masaüstü build süreciyle derleyin.
Derlenmiş IDE'yi `--aiturk-mobile` parametresiyle açın. IDE zaten açıksa parametre
mobil bağlantı penceresini açar; çalışmakta olan konuşma kapatılmaz.
Mobil pencere açılmadan uzaktan erişim etkinleşmez.
1. Bilgisayardaki mobil pencerede “AITURK hesabımla giriş yap” seçin; tarayıcıda
hesabınıza girip uygulamanın kodunu onaylayın. “Girişi kontrol et” ile tamamlayın.
2. Bilgisayarı hesapla eşleştirin; açılan mevcut portal sayfasında kodu onaylayın.
3. Android'de aynı AITURK hesabıyla tarayıcı kod girişini tamamlayın. Bilgisayarda
“Telefon için QR oluştur” seçip telefonda kamerayla veya QR resmiyle okuyun.
4. Bilgisayarda “QR ile gelen telefonu getir” seçin; telefonun gösterdiği kısa
kodu girip açıkça onaylayın. Uzun kimliği elle yazmak gerekmez.
5. Bilgisayarda “Mobil bağlantıyı aç”, telefonda “Bilgisayarları bul” ve “Bağlan”.
6. Gerçek IDE konuşmasını seçin. Yazılı görevi görünür önizlemeden gönderin.
7. Google anahtarını telefondaki ayrı güvenli girişten bilgisayara aktarın.
Veri/ücret bilgisini kabul ettikten sonra Google görüşmesini başlatın.
Gateway eş değişikliği `portal/routes_mobile.py` ve `router_gateway.py` içindedir.
Mevcut member guard korunur. Üretim kurulumu ve TURN koşulları eş gateway
deposunun `docs/aiturk-mobile-operations.md` dosyasında açıklanır.
## Doğrulama ve sınırlar
0.1.4-dev (Android versionCode 5), 12 Eylül 2026: 41 mobil test geçti;
tarayıcı uygulama testi, yerel sertifika/DTLS testi ve Electron IPC/Windows kasa
testi geçti. Telefon kimliği QR resminin onaysız içe alınması ve değiştirilmiş
cihaz kimliklerinin reddi test edildi. `assembleDebug lintDebug` başarılı,
uygulama lint sonucu 0 hata / 17 uyarı. Debug APK imzası doğrulandı ve kimlik,
taşıma, uygulama, davet, gizlilik ve ana sayfa dosyaları kaynakla karşılaştırıldı.
APK SHA-256: `94835E223B71BE36AFB26686D3EBC79D8976514FFDB4E7CDFC189ACE7E2F12A5`.
Bu APK geliştirici imzalıdır; üretim/gerçek Android kabulü değildir.
12 Eylül 2026 yerel doğrulaması: `npm test` 37/37 geçti. Ses başlangıcı
beklerken iptal ve kapatılmış oturumu yeniden açma regresyonları önce başarısız
testlerle gösterildi, sonra düzeltildi. `npm run android:sync` ve
`gradlew.bat assembleDebug lintDebug` başarılı; uygulama lint sonucu 0 hata,
17 uyarı. `scripts/browser-smoke.mjs` gerçek DTLS veri kanalında 240.000
karakter aktarımını ve sentetik Google kullanım sınırını doğruladı; Google'a
gerçek çağrı yapmadı. APK içindeki `voice.mjs` kaynakla birebir karşılaştırıldı.
Debug imzası `apksigner verify` ile doğrulandı; bu üretim imzası değildir.
APK SHA-256: `F5DB098DF0F1C59B92F274969FCAD926BCB2DD25AF823533A983085A18BFB966`.
Bu kontrolde `adb devices -l` bağlı cihaz göstermedi; fiziksel telefon kabulü
ve canlı yayın hâlâ tamamlanmadı.
`npm test`: davranış, tekrar gönderim, onay sınırı, ses temizliği ve token kısıtları.
`scripts/browser-smoke.mjs`: yeni test tarayıcısında gerçek DTLS veri kanalı,
240.000 karakter Unicode aktarımı, dar ekran taşması ve dokunma hedefi.
`scripts/electron-smoke.mjs`: gerçek Electron IPC ve Windows safeStorage turu;
yalnız sentetik bir test anahtarı kullanır.
`src/peer-identity.mjs` cihaz kimliğine göre kalıcı standart RTCCertificate
kaydını, atomik ilk oluşturmayı, kayıtlı parmak iziyle yüklemeyi ve SDP kimlik
kontrolünü uygular. Anahtar eksik veya geçersizse yükleme yeni sertifika üretmez.
Bilgisayar QR daveti sürüm 2 ile sertifika parmak izini taşır; telefon bunu
eşleştirme kaydına alır ve SDP uygulanmadan önce kontrol eder. Bilgisayar
bağlantıda kayıtlı sertifikasını kullanır. Eski sürüm 1 QR ve kimliği olmayan
elle eşleştirmeler veri bağlantısı açamaz; yeni QR ile yeniden eşleştirme gerekir.
Telefon da eşleştirmede kendi sertifikasını oluşturur ve bağlantıda aynı
sertifikayı yükler. Kullanıcı telefondaki kimlik belgesini bilgisayardaki
ilgili alana aktarır; `phone.approve` belgeyi eşleştirme kimliği ve sunucunun
onayladığı cihaz kimliğiyle karşılaştırıp Windows kasasına kaydeder. IDE hem
gelen bağlantı listesinde hem `channel.answer` yolunda kayıtlı telefon
parmak izini kontrol eder; renderer SDP'yi uygulamadan önce tekrar doğrular.
İlk kayıt için yerel açık onay gerekir; mevcut telefon kimliği sessizce
değiştirilemez. Telefon kimliğini QR olarak da gösterir. Kullanıcı ekran
görüntüsünü kendi bilgisayarına aktararak “Telefon kimliği QR resmi” alanından
okutabilir; eşleştirme kimliği ve belge doldurulur, fakat otomatik onay verilmez.
Kısa kod ve ayrı onay düğmesi gereklidir; elle belge aktarma yolu da korunur.
`node scripts/certificate-smoke.mjs`: 12 Eylül 2026'da izole Edge bağlamında
yerel WebRTC sertifikasının IndexedDB'ye yazılıp sayfa yenilendikten sonra
aynı parmak iziyle geri alınması, geri alınan sertifikayla gerçek DTLS veri
aktarımı ve yanlış SDP parmak izinde DTLS'nin `failed` durumuna geçmesi
doğrulandı. Test artık gerçek `peer-identity.mjs` modülünü kullanıyor; eşzamanlı
dört oluşturma çağrısının tek kimlikte birleşmesi, kayıp kaydın ve yanlış
parmak izinin reddi de geçti. Tarayıcı uygulama testi ayrıca QR ile eşlenen
bilgisayar yerine farklı sertifikalı SDP geldiğinde görünür kimlik hatası
verildiğini ve hiçbir IDE isteği gönderilmediğini doğruladı. Electron IPC testi
Windows kasasındaki parmak iziyle sertifikanın pencere yenilemesinden sonra
yüklenmesini ve sessiz kimlik değişiminin reddini doğruladı. Bu testlerde portal
ve Google gerçek servisleri kullanılmadı; canlı karşılıklı kimlik kabulü değildir.
Gerçek IDE yolunun testi, kök dizinden zorunlu test sarmalayıcısıyla çalışır:
```bash
scripts/run_tests.sh tests/tui_gateway/test_mobile_runtime_integration.py -q
```
Bu test gerçek IDE HTTP, WebSocket, konuşma veritabanı, prompt.submit ve
message.complete yolunu çalıştırır. Ücretli çıkarım servisi yerine yerel
deterministik sağlayıcı kullanılır. Aynı görev ikinci defa gönderildiğinde IDE
geçmişinde yalnız bir kullanıcı görevi oluşur. Gerçek Google/iş modeli kalite
ve maliyet testi olarak sayılmaz.
12 Eylül 2026, 0.1.4 kaynak doğrulaması: zorunlu `scripts/run_tests.sh`
sarmalayıcısıyla `test_compute_host.py`, `test_compute_host_phase1.py` ve
`test_mobile_runtime_integration.py` birlikte çalıştırıldı. 3 dosyada 16 test
geçti, 0 başarısız; süre 32,9 saniye. Windows venv yönlendirici sürecinin
bildirdiği PID, gerçek süreç soy ağacı üzerinden doğrulanır. Bu koşu yalnız
yerel sentetik sağlayıcı kullanır, telefon donanımı veya Google kabulü değildir.
Henüz tamamlanmayanlar:
- Karşılıklı cihaz kimliğinin gerçek Android ve paketlenmiş IDE arasında,
yeniden başlatma/iptal/anahtar kaybı senaryolarıyla uçtan uca kabulü.
İki yönün kodu var; tarayıcı ve Electron testleri gerçek cihaz kabulünün
yerine geçmez. Telefon QR çıktısının pikselden geri okunması ve Electron'da
QR resminin açık onay vermeden alanlara aktarılması test edildi; gerçek
telefon ekran görüntüsü aktarımı henüz denenmedi.
- Fiziksel Android'de kurulum, mikrofon, kesme, Keystore ve arka plan testi.
- Kullanıcıya ait test anahtarıyla Google Live doğrulaması ve Türkçe konuşma
senaryoları. Sıfır gerçek Google çağrısı yapıldı; ücret oluştuğu iddia edilmiyor.
- Canlı gateway/TURN kurulumu, ayrı mobil ve bilgisayar ağlarıyla tam akış.
- Giriş ve QR artık kodlandı: 9 HTTP/DB testi, 27 mobil testi, gerçek QR pikseli
okuyan (hesap/claim yanıtları sahte) tarayıcı akışı geçti. Fiziksel Android
kamera/giriş kabulü ve farklı ağ bağlantısı henüz yapılmadı.
- Açık talimatla prepare_task/submit_task devri ve görev kimlikli terminal
olayları kodlandı. 25 Node testi ve üç görevli gerçek yerel IDE bağlantı
testi geçti. Canlı Google transkript sırası ve Türkçe kalite kabulü henüz yok.
- Yeniden bağlantı bounded IDE olay tamponunu okuyarak kaçırılan görev
sonucunu alır. Tampon kaybı/backend yeniden başlaması durumunda sonuç
bilinmiyor kalabilir; iş otomatik tekrar çalıştırılmaz.
- Maliyet tahmini/ayarlanabilir oturum sınırı uygulandı: 35 Node testi ve
derlenmiş uygulamanın gerçek WebRTC, sentetik IDE/Google yanıtlı sınır akışı
geçti. Gerçek Google faturasına karşı karşılaştırma henüz yapılmadı.
- Bağımsız güvenlik incelemesi ve sinyalleşme sunucusuna karşı doğrulanmış
kalıcı eş parmak izi. WebRTC standart şifrelemesi vardır; eş kimliğinin
sinyalleşme hizmetine güven sınırı gizlenmez.
- Üretim imzası, kapalı beta kabulü ve turkservis.online indirme yayını.
Capacitor CLI'nin kullanılmayan iOS araç zincirinde `xcode → uuid` üzerinden
3 moderate geliştirme bağımlılığı uyarısı mevcut; Android runtime audit sonucu
ayrıca kontrol edilir. Bunları gizlemek için `npm audit fix --force` uygulanmadı.
## Resmî dayanaklar
- https://capacitorjs.com/docs/getting-started/environment-setup
- https://ai.google.dev/gemini-api/docs/live-api/ephemeral-tokens
- https://ai.google.dev/api/live
- https://ai.google.dev/gemini-api/docs/pricing
- https://github.com/coturn/coturn/blob/master/README.turnserver