Repository navigation
Releases: Memati8383/Tengri
Release list
TENGRI v1.8.0
TENGRİ 1.8.0
Bu sürüm iki yeni yüz ve bir geri alma revizyonu getiriyor: masanın üstünde yüzen
Medya Adası, onuncu sekme olarak Disk Analizörü, ve yedekten dönerken artık
tek tek değer yazan bir geri yükleme yolu. Arayüzün geri kalanı yerinde duruyor;
tüm ekran görüntüleri bu derlemeden TENGRI_SHOT=1 ile yeniden alındı.
Rakamlar tahmin değil, yerel derlemeden ölçüldü: exe 2.139.648 bayt, altı test
paketi 938 denetim / 0 hata, registry tablosu 92 anahtar ve 80 ayar
(tools\make_tweak_table.ps1 sayıyor; CI üretilmiş tabloyu kaynakla karşılaştırıyor).
Medya Adası
Uygulamanın kendi penceresinden bağımsız, üstte-görünür, şeffaf bir pencere
(src/core/island.cpp, yeni). Yüzeyi fare dışındayken tıklamayı geçirir; yalnızca
üzerine gelindiğinde etkinleşir. Neden ayrı pencere: tek pencereye çizilen bir ada,
uygulama küçültüldüğünde ya da tepsiye gizlendiğinde onunla birlikte kaybolurdu.
Adaya ayrı bir ImGui bağlamı ve ayrı bir D3D11 cihazı açtırmadık — ada, uygulamanın
cihazı üzerinde kendi swap zincirini açar ve karesini ana pencerenin karesinden
sonra çizer. Aynı bağlamda ikinci bir NewFrame denemesi tüm pencereyi
tıklanamaz hâle getiriyordu; bu yüzden ada kendi ImDrawList'ini kullanıyor.
- Okuduğu şey: Windows'un medya oturumu API'sinden (SMTC) yalnızca Spotify
oturumunun parça bilgisini, kapağını ve ses seviyesini okur; diğer oynatıcıların
oturumları listelenmez. - Altı tema: Black, Spotify, Aurora, Sunset, Ocean, Cover. Kartta tema düğmesiyle
ya da Ayarlar → Medya Adası → tema şeridiyle değişir. - Etkileşim:
INSERTile göster/gizle, üzerine gelince genişler, tekerlekle ses. - Masaüstü modu: başka bir pencere öndeyken adanın gizlenmesi.
- Senkronize sözler: çalan şarkı
lrclib.net'e sorulur (bkz. aşağıdaki ağ notu ve
SECURITY.md). Ayarlar → Medya Adası → Senkronize sözler ile kapatılınca istek
hiç çıkmaz; adanın kendisi de Adayı göster ile kapatılır.
Disk Analizörü
Kenar çubuğuna onuncu sekme olarak eklendi (src/core/diskanalyzer.cpp, yeni; arayüzden
bağımsız, salt Windows API). İki tarama yolu var ve arayüz motor seçimiyle ilgilenmez:
- MFT: yönetici yetkisiyle
\\.\C:ham bölümünden$FILEkayıtları doğrudan
okunur; milyonlarca dosya dizin gezmeden tek sıralı okumayla ağaca dönüşür. Yalnızca
NTFS bölümlerde çalışır. - Walk: paralel
FindFirstFilegezisi. Yetki gerektirmez; çıkarılabilir, ağ ve
tek-klasör hedeflerinde tek yoldur. NTFS'te MFT açılamazsa buna düşülür.
Sonuç her iki yolda da parent-index'li düz bir düğüm dizisidir; dizin düğümlerinin
boyutu alt ağaç toplamı olarak yukarıdan toplanır. Görselleştirme: treemap, renk
modları, ağaç görünümü, halka grafiği ve arama. Birim testler (tests/test_disk.cpp,
258 denetim) ParseMftRecord, DecodeDataRuns ve LayoutTreemap'i sahte kayıt
tamponlarıyla sınar — gerçek diskten okuma yapmaz, canlı yürüyüş testleri yalnızca
%TEMP% altında kendi kurduğu ağaçta koşar.
Disk Analizörü'nün ekran görüntüsü yok, ve bu bir eksiklik değil tercih: ekran
makineye özgü klasör adlarını ve boyutlarını çiziyor,TENGRI_SHOTkipi yalnızca
tanıtıcı alanları maskeleme sözü veriyor. Bu sekmenin davranışı görselle değil,
README'deki Disk Analizörü tablolarıyla anlatılıyor.
Yedekten dönüş artık değer değer yazıyor
Geri alma, .reg dosyasını reg.exe ile içe aktarmak yerine çözülen baytları
doğrudan RegSetValueExW / RegDeleteValueW ile yazıyor (src/core/regwrite.hpp,
yeni). İki sebep:
- Doğrulanan dosya ile içe aktarılan dosya aynı yolun iki ayrı açılımıydı; aralarında
aynı kullanıcının içeriği değiştirmesi mümkündü. Artık dosya bir daha açılmıyor. reg.exe'nin allowlist kavramı yok; kapsamı yalnızca bizim denetimimiz belirliyordu.
Kapsam artık değerin adına kadar daraltıldı: içeri kapısı (src/core/regtext.hpp)
bir dosyanın üretilmiş tabloda gerçek bir (kategori, sıra) çifti olduğunu ve içindeki
her anahtar satırının o çiftin anahtarlarından birinin kendisi ya da alt anahtarı
olduğunu, hem de yazılacak değer adının tablodaki hedefle eşleştiğini denetliyor.
Bunun bir yan etkisi var: 1.7.0'ın ürettiği alt ağaç dökümü .reg dosyaları bu
kapıdan geçmez — o dosyalar tek bir değeri değil tüm alt ağacı taşıyordu ve değer adı
kapsamını aşan satırlar içeriyor. Yani 1.7.0 yedekleri bilinçli olarak reddediliyor;
1.8.0'dan alınan yedekler geri yüklenir.
Yerel girdilerin güven sınırı (bu sürümde eklenen)
- Kendinden-gelen kapısı (
src/core/selfgate.hpp, yeni):WM_COPYDATAaynı
oturumdaki her sürecin açık kanalıdır ve UIPI yalnızca daha düşük bilesenlik
(integrity) seviyesindeki gönderenleri engeller — aynı seviyedekileri engellemez.
Bildirim komutlarını (sekme değiştir, öne getir, yazma işini tekrarla, indirme
başlat) yalnızca kendimizden kabul etmek için gönderenin tam exe yolu ve
kullanıcı SID'i bizinkine eşit olmak zorunda; ikisi de başarıyla okunabilmeli.
Bu bir ayrıcalık sınırı değil (saldırgan zaten kendi yetkimizle exemizi
çalıştırabilir); sağladığı, rastgele bir sürecin arayüzümüze komut fıratamaması ve
gereksiz UAC kapısı açılamaması. Ayrıcalık sınırı olarak UAC duruyor.
Ölçülen rakamlar
| Değer | |
|---|---|
| Registry anahtarı | 92 (tools\make_tweak_table.ps1 sayıyor; CI üretilmiş tabloyu kaynakla karşılaştırıyor) |
| Ayar (tweak) | 80, 0 eksik |
| Test denetimi | 938, 0 hata (altı paket) |
| exe boyutu | 2.139.648 bayt yerel derleme; yayınlanan CI derlemesinin boyutu ve SHA-256'sı latest.jsonda yazıyor (araç seti yamasına göre birkaç KB oynar) |
| Sekme | 10 (Disk Analizörü eklendi) |
| Ekran görüntüsü | 11 — giriş + dokuz sekme + medya adası; Disk Analizörü'nün görseli yok (yukarıda gerekçesi) |
| Medya adası teması | 6 |
| Ağ çıkışı | 4 — github latest.json, github indirme, 1.1.1.1 ICMP, lrclib.net söz araması; hepsi README Ağ kullanımı ve SECURITY.md'de satır satır |
| Temizlik kategorisi | 10 |
| RAM profili | 14 |
Testler
| Paket | Denetim |
|---|---|
test_pure.cpp |
361 — i18n tabloları (boyut + sıra), tweak sözleşmeleri, .reg gövdeleri, yetki devri kodlama/çözme, yedek dosyası adı ayrıştırması ve değer adı kapsamı içeren içerik kapısı |
test_modules.cpp |
44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları, shader taraması |
test_license.cpp |
22 — lisans maskesi, HWID, kalıcılık (izole APPDATA) |
test_write_paths.cpp |
83 — temizleyici tersinirliği, yedek kök/listeleme, üretilen gerçek .reg dosyalarının kapıdan geçmesi, kodlama çözümlemesi (UTF-16LE/BOM/UTF-8), içe aktarmayı reddetme yolları |
test_update.cpp |
170 — sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256 |
test_disk.cpp |
258 — $MFT kayıt ayrıştırması, run listesi, $SDS sahip sözlüğü, önbellek gidiş-dönüşü ve red yolları, paralel dilim planı, treemap yerleşimi, UTF-16/UTF-8, canlı yürüyüş (yalnızca %TEMP%) |
Altı paketin hiçbiri gerçek registry'ye yazmıyor ve hiçbiri gerçek $MFT okumuyor.
Yazma yolları testte izole LOCALAPPDATA altına yazıyor ve sonunda siliyor.
Ağ notu
Söz araması bu projede üçüncü bir tarafa içerik taşıyan tek istektir: sorgu
dizesinde o an çalan şarkının sanatçısı, adı, albümü ve süresi gider. HWID, makine adı
ve lisans anahtarı hiçbir isteğe eklenmez. Sözler kapatılınca istek tamamen durur.
Ayrıntı: SECURITY.md ve
README'deki Ağ kullanımı
bölümü.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Yönetici yetkisi yalnızca
ayar uygularken, başlangıç girdisi kaldırırken, hizmet değiştirirken ve Disk
Analizörü'nün MFT yoluyla taraması sırasında istenir; açarken, sistem bilgisi /
başlangıç listesi / hizmet durumu okurken ve Walk ile tararken hiç sorulmaz.
⚠️ UYARI: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, hizmet yapılandırması için
ChangeServiceConfigW kullanıyor, ham disk bölümünden $MFT okuyor ve kendi exe'sini
indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici" zararlı
yazılımın davranış imzasıdır; sezgisel motorlar imzasız çalışanları işaretleyebilir.
Ayrıntı: SECURITY.md
Bilinen sınırlar
- Dosya imzasız. Authenticode yok. Güncelleme akışı indirilen dosyayı bildirilen
SHA-256 ile doğruluyor ve adresigithub.comile sınırlıyor, ama özet ile exe aynı
depodan geldiği için deposu ele geçirilmiş bir yayını yakalamaz. - Lisans ekranı demodur: her anahtar kabul edilir, sunucuya karşı doğrulama yok.
- Medya Adası yalnızca Spotify oturumunu okur; diğer oynatıcılarda kart boş kalır.
- Disk Analizörü MFT yolu yönetici ister ve yalnızca NTFS'te çalışır; ötekiler Walk
yoluna düşer (daha yavaş ama yetkisiz). - Temizleyici kökleri ortam değişkenlerinden çözülüyor; o değişkenleri değiştirebilen
bir program temizlenecek ağacı da değiştirebilir. - Gecikme profili sistem geneli SEHOP'i kapatıyor — belgelediğimiz, kasıtlı ve geri
alınabilir bir davranış. - 1.7.0'dan alınan yedekler değer adı kapsamına uymadığı için geri yüklenemez (yukarıda
gerekçesi).
TENGRI v1.7.0
TENGRİ 1.7.0
Bu sürüm arayüz değiştirmiyor. Yerel girdilerin güven sınırını sağlamlaştırıyor ve
o çalışmalar sırasında bulunan iki veri bütünlüğü hatasını kapatıyor. Bunlardan biri
kullanıcı için görünür bir onarım: registry yedeği alma ve geri alma daha önce hiç
çalışmıyordu.
Rakamlar tahmin değil: yerel derleme 1.814.016 bayt, beş test paketi 608 denetim /
0 hata, registry tablosu 80 anahtar.
Yedek alma ve geri alma ilk kez gerçekten çalışıyor
RegKeyPath kısaltılmış hive adını tam adına çevirirken ayraç çizgisini yutuyordu:
HKCU\Control Panel\Mouse → HKEY_CURRENT_USERSoftware\... değil,
HKEY_CURRENT_USERControl Panel\Mouse. reg.exe böyle bir anahtarı bulamıyor ve dışa
aktarım başarısız oluyordu; ExportForCategories de tek bir anahtar bile
aktarılamadığında boş klasör bırakıp false dönüyordu. Yani uygulama hiçbir sürümde
gerçek bir yedek üretmemişti — geri alma da boşuna bekleyen bir düğmeydi. Makinedeki
%LOCALAPPDATA%\TENGRI\backups klasörünün hiç dolmamış olması bunu doğruluyor.
Düzeltme sonrası testte 32 gerçek yedek dosyası üredi (test kategorileri 0–5, tablodaki
tüm anahtarlar) ve hepsi içerik kapısından geçti; ayrıca ayrı ölçüldü: üretilmiş
tablodaki 54 anahtarın 54'ü bu makinede var ve yükseltilmemiş bir süreçte bile dışa
aktarılabiliyor. Geçen dosya sayısı her derlemede test_write_paths çıktısında satır
olarak görünüyor, böylece "kapı var ama gerçek çıktıya hiç uygulanmadı" ayrımı
ölçülebilir kalıyor.
İkinci hata sessizdi: aynı ayar birden fazla registry anahtarına yazıyorsa hepsi aynı
<kategori>-<sıra>.reg adına dışa aktarılıyordu, yani son anahtar öncekilerin
üzerine yazıp yedeği çöpe atıyordu. Ölçüldü: beş ayar birden fazla anahtara yazıyor.
Tekrar eden anahtarlara artık sıra son eki ekleniyor (3-1-2.reg), böylece ayarın tüm
anahtarları ayrı dosyalarda duruyor ve geri alma hepsini içe aktarıyor.
Ayrıca reg.exe zaman aşımı 30 s → 120 s çıkarıldı: ölçülen en büyük meşru dışa
aktarım 30 MB ve uzun bir içe aktarma yarısında öldürülürse yarı yazılmış bir hive
kalırdı.
Yerel girdilerin güven sınırı
Uygulamanın yükseltilmiş çocuğu, aynı kullanıcının yazabildiği yerleri okuyor. Bu
sürümde o okumaların etki alanı derleme zamanı sabitlerine bağlandı:
- İçerik kapısı (
src/core/regtext.hpp, yeni):backup::Restore()bir.reg
dosyasını içe aktarmadan önce dosya adının üretilmiş tabloda gerçek bir
(kategori, sıra)çifti olduğunu, dosyanın UTF-16LE/BOM ya da geçerli UTF-8 olduğunu,
başlık satırının bulunduğunu ve içindeki tüm anahtar satırlarının o çiftin
anahtarlarından birinin kendisi veya alt anahtarı olduğunu denetliyor. Silme biçimi
([-HKEY...]), başlıksız dosya ve tablo dışı anahtar reddediliyor. Alt anahtar
hoşgörüsü gerekli:reg.exebir anahtarı dışa aktarırken alt anahtarlarını da aynı
dosyaya yazıyor — bu makinede tek bir yedek 14.427 satır alt anahtar taşıyor.
Yabancı bir dosya en fazla uygulamanın zaten yedeklediği alt ağaca dokunabilir; IFEO,
hizmet veyaRungibi rastgele bir HKLM anahtarına yazamaz. Okunan dosya 64 MB ile
sınırlı (ölçülen en büyük meşru yedek 30 MB). - Alt süreçler daima System32 tam yoluyla çağrılıyor (
src/core/syspath.hpp, yeni):
reg.exe,net.exe,netsh.exe,powercfg.exe,sc.exevesrclient.dll. Yalın ad
vermek CreateProcess'in arama sırasını uygulamanın kendi klasöründen başlatır; portable
kurulum%USERPROFILE%altında koştuğu için oraya bırakılmış aynı adlı program
yönetici olarak çalışırdı. Dosya bulunamazsa komut denenmiyor. - Başlangıç girdileri: makine kapsamı yedekler artık HKLM'de kendi hive'ında
duruyor; yükseltilmiş çocuk HKCU'dan okuduğu bir komutu HKLM\Run'a yazmıyor. Eski
sürümlerin HKCU'da bıraktığı makine yedekleri bu nedenle listede görünmez ve geri
açılamaz — komut yerinde durur, silinmez. --applytaşıma biçimi: yetki devrinde gelen geri alma klasör adı yalnızca rakam
ve tire taşıyabilir; yol ayıracı ve nokta kabul edilmez, aksi hâlde klasör adı
saldırı verisi olarak yönetici çocuğa taşınırdı.- Kodlama: argümanlar araç adından ayrı veriliyor, komut satırına tırnak
basılmıyor; tırnak içeren bir yol hiç denemeden reddediliyor.
SECURITY.md'nin "Yerel girdilerin güven sınırı" bölümü artık uygulanan kuralları
anlatıyor; önceki hali manifest ile çelişiyordu (uygulama asInvoker açılıyor, yalnızca
seçili ayar için runas ile kendini yeniden başlatıyor).
Üretilmiş dokümanda düzeltme
tools/make_tweak_table.ps1, RunCmd iki parametreye ayrılınca komut satırının
yalnızca araç adını görmeye başlamıştı: tabloda powercfg /setactive 8c5e7fda-...
yazması gereken satır powercfg.exe olmuştu. Betik artık araç adı ile argümanları
birleştirip gerçek komut satırını yazıyor; docs/tweaks-registry.md yeniden üretildi.
Ölçülen rakamlar
| Değer | |
|---|---|
| Registry anahtarı | 80 (tools\make_tweak_table.ps1 sayıyor, CI üretilmiş tabloyu kaynakla karşılaştırıyor) |
| Yedeklenen anahtar | 54 (üretilmiş tablo; 46 ayar çifti) |
| Test denetimi | 608, 0 hata |
| Gerçek yedek dosyası kapıdan geçen | 32 — test kategorileri 0–5'in tüm anahtarları; tabloda bu kategorilere düşen 32 anahtarın 32'si de dışa aktarıldı |
| exe boyutu | 1.814.016 bayt yerel derleme; yayınlanan CI derlemesinin boyutu ve SHA-256'sı latest.jsonda yazıyor (araç seti yamasına göre birkaç KB oynar) |
| Ekran | 9 |
| Temizlik kategorisi | 10 |
| RAM profili | 14 |
| Ağ çıkışı | 3 — değişmedi, hepsi Ağ kullanımı bölümünde satır satır listelenmiş |
Testler
| Paket | Denetim |
|---|---|
test_pure.cpp |
310 — i18n tabloları (boyut + sıra), tweak sözleşmeleri, .reg gövdeleri, yetki devri kodlama/çözme, yedek dosyası adı ayrıştırması ve içerik kapısı (alt ağaç hoşgörüsü, önek tuzağı, silme biçimi, yanlış başlık) |
test_modules.cpp |
44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları, shader taraması |
test_license.cpp |
22 — lisans maskesi, HWID, kalıcılık (izole APPDATA) |
test_write_paths.cpp |
62 — temizleyici tersinirliği, yedek kök/listeleme, üretilen gerçek .reg dosyalarının kapıdan geçmesi, kodlama çözümlemesi (UTF-16LE/BOM/UTF-8), içe aktarmayı reddetme yolları |
test_update.cpp |
170 — sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256 |
Beş paketin hiçbiri gerçek registry'ye yazmıyor: içe aktarma yolu testte hiç
koşmuyor, dışa aktarma ise yalnızca okuma yaptığı için izole LOCALAPPDATA altına
yazıyor ve test sonunda siliniyor. test_write_paths bundan böyle dışa aktarımın
false dönmesini de hata sayıyor — sessiz "hiçbir şey yapmadım" regresyonu artık
geçemiyor.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Yönetici yetkisi yalnızca
ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken istenir; açarken,
sistem bilgisi / başlangıç listesi / hizmet durumu okurken hiç sorulmaz.
⚠️ UYARI: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak için
reg.exe çağırıyor, hizmet yapılandırması için ChangeServiceConfigW kullanıyor ve
kendi exe'sini indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici"
zararlı yazılımın davranış imzasıdır; sezgisel motorlar imzasız çalışanları
işaretleyebilir. Ayrıntı:
SECURITY.md
Bilinen sınırlar
- Dosya imzasız. Authenticode yok. Güncelleme akışı indirilen dosyayı bildirilen
SHA-256 ile doğruluyor ve adresigithub.comile sınırlıyor, ama özet ile exe aynı
depodan geldiği için deposu ele geçirilmiş bir yayını yakalamaz — bu kapının
garanti kapsamı SECURITY.md'de ayrıca yazılı. - Lisans ekranı demodur: her anahtar kabul edilir, sunucuya karşı doğrulama yok.
- Bildirim tıklamaları (
WM_COPYDATA) aynı kullanıcıdan gelen bir mesaja karşı
doğrulanmıyor; Geri al yazmadan önce ekranda onay istiyor, Yinele istemiyor. - Temizleyici kökleri ortam değişkenlerinden çözülüyor; o değişkenleri değiştirebilen
bir program temizlenecek ağacı da değiştirebilir. - Gecikme profili sistem geneli SEHOP'i kapatıyor — belgelediğimiz, kasıtlı ve
geri alınabilir bir davranış. - Bu sürüm arayüzü değiştirmedi, bu yüzden
docs/screenshots/altındaki görseller
1.6.0 derlemesinden kalma ve hâlâ geçerli.
TENGRI v1.6.0
TENGRİ 1.6.0
Bu sürüm üç şeyi düzeltiyor: Hakkında sayfasının kurulumu, GitHub silüetinin
küçük boyutta okunmaması ve depoya sızmış bozuk Türkçe metin. Rakamlar tahmin
değil: yerel derleme 1.784.832 bayt (yayınlanan CI derlemesi 1.773.056), beş test
paketi 496 denetim / 0 hata, registry tablosu
80 anahtar.
Hakkında sayfası yeniden kuruldu
Önceki sayfa dört yığılmış listeden oluşuyordu: sürüm/lisans satırları, uyarı bloğu,
bağlantı satırı, güncelleme rozeti. Sayfanın kendisi hiçbir iş yapmıyordu — yalnızca
okunuyordu.
Yerleşim şimdi dört blok:
| Blok | İçerik |
|---|---|
| Marka bloğu | Logo, ürün adı ve tagline — tek sanat kaynağı res/tengri-logo.png |
| Meta şeridi | Sürüm (çalışan exe'den okunur), lisans, plan, güncelleme durumu — aralıklar plaka genişliğine göre hesaplanıyor, sabit değil |
| Yetenek ızgarası | Altı tıklanabilir satır: Temizleyici, İnce Ayarlar, Ağ, Hizmetler, Başlatma, Sistem Bilgisi. Tıklamak doğrudan o ekrana götürüyor |
| Bağlantı satırı | Plakanın dibine demirlenmiş tek satır: GitHub, Instagram, kaynak kod |
Izgaranın adları ve açıklamaları yeni yazılmadı: sekme tablolarından (kTabNameKeys /
kTabSubKeys) geliyor. Yani dil değişince Hakkında sayfasındaki satırlar da değişiyor ve iki
yer ayrışamıyor.
Uyarı bloğu kaldırıldı. Demo lisans açıklaması artık yalnızca Ayarlar → Hesap
kartında duruyor; aynı bilgi iki sayfada tekrarlanınca hiçbiri okunmuyor.
Ayarlar sayfasında da bir dağılım düzeltmesi var: Dil, ayrı tek-düğmelik kart olmaktan
çıktı ve Genel kartının başına bölüm olarak taşındı — seçim tüm arayüzü anında
değiştirdiği için davranış anahtarlarının ardından gelmemeli.
GitHub silüeti artık doku olarak çiziliyor
Silüet zaten resmi Invertocat konturuydu (251 nokta, 249 üçgen). Sorun geometride
değil, çizim yolundaydı: ImDrawList çokgen doldurma kenarları yumuşatmıyor. 15 px
boyutunda bu, kenarları diş diş olan bir leke demekti; simge tanınmıyordu.
Çözüm aynı konturdan yumuşatılmış bir alfa maskesi üretip doku olarak çizmek:
tools/make_brand_icons.ps1konturu 8× örneklemeyle rasterize ediyor, sonra alfa
kanalını kutu-ortalamasıyla 32 px'e indiriyor (DX11 dokularında mips yok, maskenin
kendisi yeterince yumuşak olmalı).- Maske PNG olarak
res/github-mark.pngyazılıyor ve baytlarıbrand_icons.cppiçine
gömülüyor — 795 bayt. logo.cppWIC ile 32bppBGRA çözüp doku oluşturuyor;icons.cppGitHub dalında
logo::DrawMarkçağırıyor ve renk mürekkep değerinden veriliyor, böylece satır
vurgulandığında simge de aydınlanıyor.- Üçgen yolu yedek olarak duruyor: doku bir nedenle hazır değilse silüet yine
çiziliyor, yalnızca kenarları sertleşiyor.
Depoya sızmış bozuk Türkçe
docs/tweaks-registry.md ve üretilen kaynak yorumları, üretilirken iki kez
kodlanmış UTF-8 olmuştu: Windows PowerShell 5.1, BOM'suz UTF-8 bir .ps1 dosyasını
sistem ANSI kod sayfasında (bu makinede CP1254) okuyor. Betiğin Türkçe satır sonu
yazıları bozuk doğuyor ve bozuk hâliyle depoya giriyordu.
docs/tweaks-registry.md: 25 satır düzeltildi — başlıktaki ve giriş paragrafındaki
İ, ğ, ü, ş karakterleri çift baytlı bozuk izlere dönmüştü.src/gui/font_data.cpp,src/gui/logo_data.cpp: üretici yorumları düzeltildi.- Depodaki 19
.ps1dosyasının tamamı BOM'lu: 18'ine sonradan eklendi, yeni yazılan
kapı betiği BOM'lu üretildi. BOM artık kural. src/core/lang.cpp:\xkaçışları gerçek UTF-8 karakterlerle değiştirildi (210
satır). Kaçışlar, sonrasındaki onaltılık harfleri ayırmak için dize birleştirmesi
gerektiriyordu; metnin kendisi okunamaz hâle geliyordu.
Bu hatanın tekrar üretilememesi için tools/check_text_encoding.ps1 yazıldı: depodaki
100 metin dosyasını tarıyor, geçerli UTF-8 olmayanı, çift kodlanmış imza karakteri
taşıyanı ve BOM'suz .ps1i raporluyor. CI'da derlemeden hemen sonra çalışıyor, yani
bozuk metin artık üretilmiş olsa bile yayına giremez. Betiğin kendi kodlaması da aynı
denetimden geçiyor.
On görsel 1.6.0'dan yeniden alındı
docs/screenshots/ altındaki on görüntü (giriş dâhil) bu sürümün yerel derlemesiyle,
tools\capture_all.ps1 içinde tek oturumda üretildi; 1.5.0 notlarındaki "ekran
görüntüleri güncel değil" sınırlaması böylece kapandı. Aynı oturumda üretilmeleri
rastgele değil: sayfa sayfasına ayrı çalıştırılan betikler arasında arayüz durumu
kayabildiği için, bir zamanlar aynı dizine iki farklı arayüz düşmüştü.
Gecikme grafiği boş çıkmasın diye Ağ ekranı diğerlerinden uzun bekletiliyor (örnekler
iki saniyede bir düşüyor); görseldeki çizgi bu yüzden dolu.
Görseller makineyi tanıtmıyor. Yakalama TENGRI_SHOT=1 ile açıldığı için HWID,
bilgisayar/oturum adı, işlemci/ekran kartı/ana kart/BIOS, RAM hızı, ağ adaptörünün
adı, yerel IP, Başlatma listesi ve lisans maskesi sabit örnek değerlerle çiziliyor;
CPU yüzdesi, kullanılan bellek, boş disk, sağlık puanı, gecikme ölçümü ve hizmet
durumları ise yakalama anının gerçek okumaları. Bu maskeleme 1.6.0 derlemesinin
değil, onun ardından ana dala düşen davranışın bir parçası — görsellerde görünen
arayüzün kendisi 1.6.0.
Ölçülen rakamlar
| Değer | |
|---|---|
| Registry anahtarı | 80 (tools\make_tweak_table.ps1 sayıyor, CI üretilmiş tabloyu kaynakla karşılaştırıyor) |
| Test denetimi | 496, 0 hata |
| exe boyutu | 1.784.832 bayt yerel derleme; yayınlanan 1.773.056 bayt (araç seti farkı) |
| Ekran | 9 |
| Temizlik kategorisi | 10 |
| RAM profili | 14 |
| Ağ çıkışı | 3 — hepsi Ağ kullanımı bölümünde satır satır listelenmiş |
Testler
| Paket | Denetim |
|---|---|
test_pure.cpp |
231 — i18n tabloları (boyut + sıra), tweak sözleşmeleri, .reg gövdeleri, yetki devri kodlama/çözme |
test_modules.cpp |
44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları, shader taraması |
test_license.cpp |
22 — lisans maskesi, HWID, kalıcılık (izole APPDATA) |
test_write_paths.cpp |
29 — temizleyici tersinirliği, yedek listeleme |
test_update.cpp |
170 — sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256 |
Beş paketin hiçbiri gerçek registry'ye, gerçek %APPDATA%'ye veya kullanıcı
dosyalarına dokunmuyor.
Bilinen sınırlar
- Lisans ekranı demodur: her anahtar kabul edilir, sunucuya karşı doğrulama yok.
- Dosya imzasız. Autogram (Authenticode) yok; bu, antivirüs sezgisellerinin
çalıştırılabilirleri işaretlemesinin ana nedeni. - İkon düzeltmesi bu sürümün görsellerinde doğrulandı:
docs/screenshots/07-about.png
1.6.0 derlemesinden alındı ve bağlantı satırındaki silüet gömülü maskeden çiziliyor.
Doku yolulogo::MarkReadyile ölçüldü; üçgen yedeği yalnızca WIC doku yüklenemezse
devreye girdiği için bu görselde hiç çizilmedi.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Yönetici yetkisi yalnızca
ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken istenir;
açarken, sistem bilgisi / başlangıç listesi / hizmet durumu okurken hiç sorulmaz.
⚠️ UYARI: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak için
reg.exe çağırıyor, hizmet yapılandırması için ChangeServiceConfigW kullanıyor ve
kendi exe'sini indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici"
zararlı yazılımın davranış imzasıdır; sezgisel motorlar imzasız çalışanları
işaretleyebilir. Ayrıntı:
SECURITY.md
Değişimi geri almak
Ayarları uygulamadan önce %LOCALAPPDATA%\TENGRI\backups altına yedek alınıyor;
İnce Ayarlar sayfasındaki Geri al bu yedeği geri içe aktarıyor. Başlatma ve
Hizmetler ekranları ise kendi terslerini taşıyor: değeri silmek yerine taşıyor,
başlangıç türünü yedeğe yazıyor.
TENGRI v1.5.0
TENGRİ 1.5.0
Bu sürüm oyun profillerini ekliyor: İnce Ayarlar sayfası yedi kategoriden ona
çıktı. Valorant, CS2 ve Fortnite için ayrı profiller var; her biri sekiz anahtardan
oluşuyor ve oyunun kendi yayınladığı registry yollarına yazıyor. Test yüzeyi beş pakete
çıktı: 326 denetim, 0 hata (yerel derleme, build.bat) artı 336 denetim oyun
profili gidiş-dönüş sondasında.
Yeni kategoriler
| Kategori | Karakter |
|---|---|
| Valorant | Oyun sürecine IFEO önceliği; Riot istemcisi ve Vanguard arka plana |
| CS2 | cs2.exe yüksek öncelik; Steam ve web yardımcısı arka plana |
| Fortnite | Oyun sürecine IFEO önceliği; Epic launcher ve EOS arka plana |
Her profil oyunun kendi ekran davranışını da düzeltiyor: Valorant ve Fortnite için
DISABLEDXMAXIMIZEDWINDOWEDMODE (kenarlıklı pencerede DWM geçişini kaldırır), CS2 için
Steam'in geç yüklemeyi kapatması.
Güncelleme hiç çalışmamıştı — bu sürümde düzeltildi
İki ayrı hata, ikisi de 1.5.0'ın ilk yayınında bulundu ve ikisi de yayınlandıktan
sonra düzeltildi. StageRoot, geçici klasörü tek CreateDirectoryW çağrısıyla kuruyordu:
CreateDirectoryW(L"%TEMP%\TENGRI\\Update");CreateDirectoryW özyinelemeli değildir. %TEMP%\TENGRI yoksa
ERROR_PATH_NOT_FOUND döner — ve dönüş değeri denetlenmediği için StageRoot yine de
geçerli görünen bir yol döndürüyordu. Sonraki CreateFileW başarısız olup kullanıcıya
"Dosya hatası" diyordu.
Sonucu şu: güncelleme akışının indirme klasörü ilk kez kurulduğunda her zaman böyle
kırılıyor. Yani hiçbir kullanıcı güncelleme indiremiyordu. (1.4.0 ve öncesi de aynı
durumdaydı.)
Düzeltme: iki bileşen ayrı ayrı kuruluyor ve sonuç denetleniyor; kurulamazsa
StageRoot boş döner, Fail::Io yerine anlamlı bir neden yazılır.
Bu sürümde bulunan ve düzeltilen hata
Üç hata bulundu; üçü de regpack kategorilerinin tamamını etkiliyordu. Yani Oyunlar,
FiveM ve Gecikme dahil hiçbir .reg gövdesi uygulamanın tarihi boyunca registry'ye
ulaşmamıştı. Ekran yeşildi, "Uygulandı" yazdı, reg.exe hiç çağrılmadı.
| Hata | Sonuç |
|---|---|
CryptGenRandom(0, ...) — NULL "varsayılan sağlayıcı" değildir, ERROR_INVALID_PARAMETER (87) döner |
Import geçici dosyayı hiç yazmadan false dönüyordu |
CREATE_NEW + FILE_FLAG_OPEN_REPARSE_POINT geçersiz kombinasyon (yine 87) |
Dosya açılmıyor, içe aktarma hiç denenmiyor |
Gecikme[6] geri alma gövdesi IRPStackSize değerini atlıyordu |
Ayar kapatılınca 0x20 geride kalıyordu |
İlk ikisi tek bir eklemekle bulundu: uygulama ayarlarını gerçekten yazıp okumayı deneyen
bir sonda. tools/probe_game_tweaks.cpp her ayar için geliş bölümünü okuyor, ayarlıyor,
her değeri RegQueryValueExW ile gerçekten sorguluyor, geri alıyor, geri almanın
etkisini doğruluyor ve kullanıcının özel ayarlarını aynen geri yüküyor. reg.exe
başarılı olsa bile yanlış anahtara yazılmış bir gövde sessizce geçtiği için sorgu ayrı bir
adım.
FILE_FLAG_OPEN_REPARSE_POINT kaldırıldı — o bayrak yalnızca zaten var olan bir dosyayı
acarken anlamlıdır, CREATE_NEW ile geçersizdir. Güvenlik düşmedi: 128-bit rastgele ad ve
CREATE_NEW zaten iki katmanlı koruma. CREATE_NEW, dosya varsa başarısız olduğu için
saldırgan yolu önceden doldurup bir junction'a yönlendiremez.
Neden oyunun kurulu olması gerekmiyor
IFEO (Image File Execution Options) anahtarları exe'yi adıyla tanır. cs2.exe
diskte yoksa Windows anahtarı yine okur, yalnızca hiçbir süreçle eşleştirmez. Bu yüzden
Valorant/Fortnite/CS2 kurulu olmadan yazma-doğrulama-silme zinciri baştan sona denenebilir
ve sonda da öyle denendi.
Kemiklerdeki değişiklikler
elevate::Pendingkategori dizileri 8'di. Yeni kategorilerle 10 kategori taşıyordu;
UAC devri sessizce 7-9. kategorileri düşürürdü.kMaxCats = 16yapıldı; kodlama,
çözme ve uygulama adımları hepsi buna bağlandı.IsSharedtablosu elle tutulan bir listeydi. Yeni profiller Oyunlar/FiveM ile aynı
Tasks\Games,SystemResponsiveness, GameDVR ve MouseSpeed değerlerini yazıyor; hepsi
işaretlenmedi. Aksi hâlde bir anahtar kapatıldığında diğerinin değerleri sessizce ezilirdi.make_tweak_table.ps1kategori sayısını7olarak biliyordu. Artık
kTweakCatCount'ten okuyor; yedek kapsamı 37 anahtardan 54'e çıktı.
Testler
| Paket | Denetim |
|---|---|
test_pure.cpp |
231 — i18n tabloları, tweak sözleşmeleri, .reg gövdeleri |
test_modules.cpp |
44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları |
test_license.cpp |
22 — lisans maskesi, HWID, kalıcılık |
test_write_paths.cpp |
29 — temizleyici tersinirliği, yedek listeleme |
test_update.cpp |
170 — sürüm karşılaştırma, bildirim, adres kilidi, SHA-256 |
probe_game_tweaks.exe |
336 — gerçek yazma → sorgu → geri alma → doğrulama |
Sonda bulunan hatalar test_pure'un göremediği yerdeydi: testler gövde metnini okuyor,
içe aktarmayı çağırmıyor. Aradaki fark tam olarak iki ölü hatanın saklandığı yerdi.
Bilinen sınırlar
- Oyun profilleri yalnızca Windows tarafını değiştirir. Oyun içi ayarlar (CS2'de
-threads, Valorant'ta Reflex, Fortnite'ta model kalitesi) registry'de değildir. - Source 2 kendi iş parçacıklarını yönetir. Eski CS:GO başlatma seçenekleri
(-threads,-nojoy,-d3d9ex) artık işe yaramıyor; profil yalnızca Windows tarafına
dokunuyor. - IFEO öncelikleri yalnızca süreç başlarken uygulanır. Oyun çalışırken değiştirilirse
bir sonraki açılışa kadar etkisizdir. - Lisans ekranı hâlâ demodur (1.3.0'dan kalma sınırlama).
- Bu sürümün ekran görüntüleri güncel değil (1.3.0'dan kalma sınırlama).
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.
⚠️ UYARI: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak
için reg.exe çağırıyor, hizmet yapılandırması için ChangeServiceConfigW ile
çalışıyor ve kendi exe'sini indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem
iyileştirici" zararlı yazılımın davranış imzasıdır; sezgisel motorlar imzasız
çalışanları işaretleyebilir. Dosya imzasızdır. Ayrıntı:
SECURITY.md
Ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken yönetici yetkisi
istenir; açarken, sistem bilgisi, başlangıç listesi ve hizmet durumu okurken hiç
sorulmaz.
Bilmen gerekenler
- Oyun profilleri de aynı ikinci yazma yüzeyini kullanıyor. Regpack kategorileri gibi
%TEMP%altına.regyazıpreg.exe importile içe aktarıyor; o yüzden bu kategoriler
de yönetici yetkisi ister. - Ayarları uygulamadan önce geri yükleme noktası oluştur — uygulama bunu senin yerine
yapmıyor. - Bazı ayarların etkili olması için yeniden başlatma gerekir.
TENGRI v1.4.0
TENGRİ 1.4.0
Bu sürüm tek bir konuyu genişletiyor: Başlangıç ekranı artık dört anahtarla değil, on
kapsamla çalışıyor. Kayma, politika yolu, iki başlangıç klasörü ve — en önemlisi —
oturum açmanın kendisi olan Winlogon listeleniyor. Test yüzeyi beş pakete çıktı:
387 denetim, 0 hata (yerel derleme, build.bat).
Değişiklik bir özellik eklemesinden ibaret değil, bir kapı eklemesi: Winlogon
kapatılamıyor. Nedeni aşağıda, uzun.
Yeni kapsamlar
| Kapsam | Anahtar / yol | Yetki |
|---|---|---|
| HKCU · Policy · Explorer · Run | ...\CurrentVersion\Policies\Explorer\Run |
istemez |
| HKLM · Policy · Explorer · Run | ...\CurrentVersion\Policies\Explorer\Run |
ister |
| Başlangıç klasörü (kullanıcı) | %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup |
istemez |
| Başlangıç klasörü (tüm kullanıcılar) | %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup |
ister |
| HKCU · Winlogon | Software\Microsoft\Windows NT\CurrentVersion\Winlogon |
salt-okunur |
| HKLM · Winlogon | SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon |
salt-okunur |
Policies\Explorer\Run, GPO'nun uyguladığı Run yolu. 1.3.0'da listelenmiyordu, yani
kurumsal bir makinede GPO ile gelen bir başlangıç öğesi arayüzde hiç görünmüyordu.
Başlangıç klasörleri ise registry'den bağımsız ikinci bir yol; oraya bırakılan
.lnk dosyası önceki sürümlerde görünmezdi.
Devre dışı bırakma mekanizması değişmedi: değer silinmiyor, kendi yedeğimize
taşınıyor. Başlangıç klasörü girdileri için karşılık bir dosya taşıma —
%APPDATA%\TENGRI\startup-disabled\. Aynı adda bir dosya zaten oradaysa işlem
reddediliyor; üstüne yazmak, geri almanın yanlış dosyayı döndürmesine yol açardı.
Neden Winlogon yalnızca listeleniyor
Winlogon\Shell ve Winlogon\Userinit birer başlangıç öğesi değil, oturum
açmanın kendisi. Davranışları birbirinden farklı:
Userinitboşaltılırsa Windows bu değeri kullanıcı oturumunda yeniden yazar.
Yani zararsız görünür — ki bu, onu güvenli yapan bir şey değildir, sadece
görünüşte öyle.Shellboşaltılırsa oturum açılmaz. Ve düzeltmek için başka bir oturum
açmanız gerekir.
Bu yüzden iki kapsam da listeleniyor, düğmeleri kapalı geliyor ve kapı SetEnabled
ile Remove içinde de var. Kapsam listesi elle tutulduğu için "unutulabilir bir
şart" olduğu yorumda yazılı; test de bu yüzden kapsam başına kapatılabilirliği
deniyor.
Sapma tespiti Shell için son bileşeni explorer.exe ile, Userinit için ise
virgül konumunu karşılaştırıyor. Windows userinit.exe, yazar (kendisi virgülle
biter); saldırgan sonuna ikinci bir yol ekler. Virgül konumu kontrol edilmezse her
makinede yanlış alarm çıkar ve kullanıcı işareti görmez hale gelir.
Yalnızca Shell ve Userinit listeleniyor: Winlogon anahtarında Taskman,
GINA, ReportFault gibi kırk değer daha var ve hiçbiri başlangıç öğesi değil.
Diğer değişiklikler
- Filtre dört segment oldu: Tümü / HKCU / HKLM / Sistem. Sonuncusu
registry'de olmayan ve oturumun parçası olan yolları toplar — iki Startup
klasörü ve iki Winlogon anahtarı. - Yetki sorusu işlemden önce soruluyor. Arayüz artık "bu kapsam HKLM mi"
diye elle enum karşılaştırması yapmıyor,startup::NeedsElevation()soruyor.
Bu, kapsam sayısı 4'ten 10'a çıkarken o karşılaştırmanın sessizce yanlış
kalmasını engelliyor. - Kapatılamayan girdide düğme yerine nedeni yazılıyor. Boş bir düğmeden çok
nedeni bilmek işe yarar. make_logo_data.ps1mutlak çıktı yolunda çalışmıyordu. Satır 123
Join-Path (Get-Location) $OutPathkullanıyordu; mutlak bir yol verildiğinde
"Verilen yolun biçimi desteklenmiyor" ile düşüyordu.make_tweak_table.ps1deki
doğruIsPathRootedkontrolü uygulandı.
Testler
Toplam 387 denetim, 0 hata (test_modules 31 → 44):
| Paket | Denetim | Kapsam |
|---|---|---|
test_pure.cpp |
122 | i18n tabloları, RAM ön ayarları, tweak sözleşmeleri, .reg gövdeleri |
test_modules.cpp |
44 | Geri yükleme metinleri, hizmet beyaz listesi, başlangıç sorguları + kapsam kapıları, shader taraması |
test_license.cpp |
22 | Lisans maskesi, HWID determinizması, "beni hatırla" kalıcılığı |
test_write_paths.cpp |
29 | Temizleyici tarama/temizleme tersinirliği, yedek listeleme, içe aktarma reddi |
test_update.cpp |
170 | Sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256, takas planı |
Yeni denetimler kapsam başına kapatılabilirliği ve yetki isteğini deniyor, ayrıca
iki değişmez: Winlogon kapsamında yalnızca Shell/Userinit listeleniyor, ve
sapan bir değer daima "Yüksek" etkiyle işaretleniyor. Kapsam sayısı kontrolü artık
elle yazılmış bir sabit yerine Scope::Count'a bağlı.
Bilinen sınırlar
- Winlogon sapması tespit edip bildiriyor, temizlemiyor. Düğme yok. Bu
bilinçli: temizlik adını taşıyan bir işlem, oturumu açılmaz yapan bir
işlemden ayırt edilemez duruma gelirdi. - Winlogon'daki
Notifyve diğer kırk değer listelenmiyor. Onlar da
değiştirilmiş olabilir, ama başlangıç öğesi değiller ve listeyi kullanılamaz
hâle getirirdiler. - Başlangıç klasörü taraması
FindFirstFileWile yapılıyor, alt klasörlerin
içeriği taranmıyor. Windows da alt klasörleri taramaz, yani davranış eşleşiyor. notify.cppvetray.cppbirim testi yok (1.3.0'dan kalma sınırlama).- Bu sürümün ekran görüntüleri güncel değil (1.3.0'dan kalma sınırlama).
- Lisans ekranı hâlâ bir demodur: her anahtarı kabul eder, sunucuya doğrulama
yapılmaz.
Dışa çıkan istek
Bu sürümde değişiklik yok. Dışa giden isteklerin tamamı 1.3.0 notlarında
listeli: sabit bir latest.json GET'i, yalnızca İndir dendiğinde exe, ve yalnızca
o ekran açıkken gecikme ölçümü.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. latest.json da
yayında — güncelleme denetimi o dosyayı okur.
ÖNEMLİ: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe
aktarmak için reg.exe çağırıyor, hizmet yapılandırması için
ChangeServiceConfigW ile çalışıyor ve kendi exe'sini indirip çalışan
dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici" zararlı yazılımın
davranış imzasıdır; sezgisel motorlar imzasız çalıştırılabilirleri işaretleyebilir.
Dosya imzasızdır. Ayrıntı: SECURITY.md
Ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken yönetici
yetkisi istenir; açarken, sistem bilgisi, başlangıç listesi ve hizmet durumu
okurken hiç sorulmaz.
Bilmen gerekenler
- Ayarları uygulamadan önce geri yükleme noktası oluştur — uygulama bunu
senin yerine yapmıyor. - Başlangıç ekranında
Policies\Explorer\Rungirdileri kurumsal politikadan
geliyorsa devre dışı bırakmak bir sonraki GPO yenilemesinde geri gelebilir. - Winlogon satırları her zaman görünür ama hiçbir işlem yapamaz.
- Bazı ayarların etkili olması için yeniden başlatma gerekir.
Kaynaktan derleme
git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.batLisans: MIT
TENGRI v1.3.0
TENGRİ 1.3.0
Üç şey bu sürümü büyütüyor: uygulama kendi sürümünü denetleyip güncelleyebiliyor,
kapat düğmesi artık arkasında arka plan süreci bırakıyor, ve Windows görev çubuğu ile
bildirimlerindeki simge sorunu kökünden çözüldü. Test yüzeyi beş pakete çıktı:
374 denetim, 0 hata (yerel derleme, build.bat).
Bu sürüm ilk kez dışarıya kendi isteğiyle bağlantı kurduğu için, dışarı giden
isteklerin tam listesi bu notların içinde de tekrarlanıyor.
Güncellemeler: uygulama kendini denetliyor
Ayarlar'ın sağ sütununda yeni kart. Akış tek bir dosyaya dayanıyor: CI her sürüm
yayınlandığında derlenmiş exe'nin SHA-256 ve boyutunu hesaplayıp latest.json
adında ikinci bir varlığı aynı sürüme aslıyor. Uygulama yalnızca o dosyayı okur.
| Öğe | Davranış |
|---|---|
| Otomatik denetim | Açıkken (varsayılan) açılışta bir, sonra pencere açık kaldığı sürece her 24 saatte bir. Zaman damgası HKCU\Software\TENGRI\Update\LastCheck içinde kalıcı — uygulama kapanıp açılınca 24 saati baştan bekler |
| Şimdi denetle | Otomatik denetim kapalıyken de çalışır |
| İndir | Sen demeden başlamaz. %TEMP%\TENGRI\Update\ altına iner, kart yüzde olarak ilerler, Vazgeç yarım dosyayı siler |
| İki kapı | Bildirilen bayt sayısı ve SHA-256. Uyuşmazsa inen parça silinir, hata kartta nedeni ile görünür |
| Kur ve yeniden başlat | Çalışan exe kenara alınır, doğrulanmış dosya yerine taşınır, eskisi silinir, --tengri-relaunch ile yeni örnek açılır |
| Klasör yazılamıyorsa | UAC istenmez. Dosya %TEMP% içinde kalır ve kartta tam yolu gösterilir |
Hash'in önemi şu ki değer kaynakta yazılı bir sabit değil: sürtürülmüş bir exe ile ona
uymayan bir özeti ayrı iki hata üretmeden el ele tutuşturamazsın. indirilen adresin
gönderenin beyan ettiği adres olması da yetmez — https://github.com ve
github.com/Memati8383/Tengri/releases/download/... öneklerinin dışındaki her adres
TrustHost ile reddedilir, https://github.com@baskent/ gibi kullanıcı-adı hileleri de
URL ayrıştırması katmanında duruyor.
Kendiliğinden kurulan hiçbir şey yok. Uygulama kapalıyken ne indirme ne yazma olur;
denetin kendisi de anahtarla tamamen kapatılabilir.
Güven sınırının dürüst tarifi: özeti yayınlayan ile exe'yi yayınlayan aynı yer. Bu
bozuk aktarıma, yarıda kesilen indirmeye ve adres hilesine karşı korur; deposu ele
geçirilmiş bir yayına karşı korumaz. Asimetrik imza (minisign) ayrı bir aşama olarak
duruyor.
Geri dönüş kopyası yok. Takas sonrası eski exe silinir. Kurtarma yolu Releases'tan
aynı dosyayı elle indirip koymak.
1.2.0 ve öncesinde bu kod yoktu; o yayınlarda latest.json varlığının bulunmaması bu
yüzden hiçbir şeyi bozmuyor. 1.3.0'dan itibaren her etiket iki varlıkla çıkıyor.
Kapatınca arka planda çalışmaya devam et
Kapat (X) artık uygulamanı sonlandırmıyor: pencere gizleniyor, süreç sistem
tepsisinde yaşamaya devam ediyor ve Windows bildirimleri gelmeyi sürdürüyor. Yeni anahtar
Ayarlar → Genel altında, açılışta varsayılan olarak açık.
- Anahtar kalıcı değil — her oturumda kapatmanın ne yapacağına o oturumda karar
verilir. Mevcuttepsi simgesine küçülttercihi de kalıcı değil; ikisi aynı kuralı
paylaşıyor. - Tepsi ikonu alınamadıysa (kabuk ikonu reddederse) kapatmak gerçekten çıkar. İkonu
olmayan bir arka plan süreci, sessizce yaşayan bir süreç olurdu ve kullanıcı onu bir
daha kapatamazdı. - Gizli pencere kare üretmiyor. Pencere saklıyken render döngüsü vsync'e kilitli boş
kareler dönmeye devam ediyordu; kare atlama koşuluna görünürlük de eklendi. Tepside
bekleyen uygulama artık kendi karelerini çizmek için GPU kuyruğuna inmiyor.
Sistem tepsisi menüsü yeniden kuruldu
Sağ tıkta çıkan menü tek satırlık "Aç / Çıkış"tı. Şimdi:
TENGRİ v1.3.0
─────────────────────────
Pencereyi aç (varsayılan öğe, kalın)
Sayfaya git ▸ Gösterge Paneli · Temizleyici · İnce Ayarlar · Ağ ·
Sistem Bilgisi · Ayarlar · Hakkında · Başlatma · Hizmetler
Geri al (yedek yoksa gri)
─────────────────────────
☑ Windows bildirimleri
☐ Sessiz mod
☐ Başlangıçta çalıştır
─────────────────────────
Ayarlar
─────────────────────────
Çık
Menü hiçbir durumu kendi içinde tutmuyor: işaretli düğmelerin değerini, hangi
sayfaların erişilebilir olduğunu ve seçilen komutun ne yapacağını uygulamadan soruyor.
Tepsiden "Windows bildirimleri"ni kapatmakla Ayarlar'daki anahtarı kapatmak ayrı
düşemez — ikisi aynı değişkene bakar. "Sayfaya git" pencere gizliyken de işe yarar:
uygulamayı geri getirir ve o sayfaya geçer.
"Yeniden başlat" yok, bilinçli olarak: tek örnek kilidi kapanan süreci bırakırken
yenisini açmak yarış koşulu üretiyor. Onun yerine Çık, sonra çift tık.
Düzeltilenler
- Görev çubuğundaki jenerik Windows simgesi.
IShellLink::SetIconLocation'ın ikinci
parametresi sıfırdan başlayan görev indeksi, kaynak kimliği değil.kIconId
(101) veriliyordu; Explorer o indeksde simge bulamayınca kısayolu simgesiz sayıyor ve
AUMID ile grupladığı görev çubuğu düğmesine kendi simgesini çiziyordu. Doğru değer 0.
Eski sürümlerin yazdığı bozuk kısayol da çalışırken düzeltiliyor: simge kaynağı
karşılaştırılıyor, farklıysa kısayol yeniden yazılıyor — aksi halde düzeltme hiç
uygulanmayan bir yama olarak kalırdı. - Windows bildirimleri simgesiz geliyordu. AUMID'in
IconUrialanı bir görsel
dosyası ister; exe yolu Windows'a göre boş bir simge. Marka simgesi artık çalışma
anında exe'nin kendiRT_GROUP_ICONkaynağından tek bir.icodosyasına
(%APPDATA%\TENGRI\tengri.ico) yeniden birleştiriliyor: bildirim ile görev çubuğu aynı
sanatın kopyasını kullanıyor, ayrı bir görsel bakımı yok. Yazma önce.tmpdosyasına,
sonra taşımada — yarı yazılmış bir.ico, hiç olmayanından daha kötü. - Uygulama içi bildirim kartları baştan çizildi: kelime bazlı satır kırma (uzun
Türkçe metinler karttan taşıyordu), marka logosu çipi, başlık/gövde için ayrı satır
yükseklikleri, imleç kartın üzerindeyken kapanışın duraklaması. - Uyarı simgesi ayrıldı. Çıplak ünlem işaretinin noktası altta, bilgi simgesinin
noktası üstte; ikisi 16 pikselde ayırt edilemiyordu. Uyarı artık üçgen içinde. - Windows bildirimindeki İndir düğmesi uygulamayı Ayarlar'da açıyor ve indirmeyi
başlatıyor (bildirim eylemlerinin geri kalanı gibi tek örnek kilidi üzerinden).
Testler
build.bat derlemenin sonunda beş paket çalıştırır ve biri takılırsa hata koduyla çıkar.
Toplam 374 denetim, 0 hata:
| Paket | Denetim | Kapsam |
|---|---|---|
test_pure.cpp |
122 | i18n tabloları, RAM ön ayarları, tweak sözleşmeleri, .reg gövdeleri |
test_modules.cpp |
31 | Geri yükleme metinleri, hizmet beyaz listesi, başlangıç sorguları, shader taraması |
test_license.cpp |
22 | Lisans maskesi, HWID determinizması, "beni hatırla" kalıcılığı |
test_write_paths.cpp |
29 | Temizleyici tarama/temizleme tersinirliği, yedek listeleme, içe aktarma reddi |
test_update.cpp |
170 | Sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256, takas planı |
Hiçbiri gerçek sistemine dokunmaz ve test_update ağa çıkmaz: denenen şey
kararların kendisi ("1.10.0" > "1.2.0", bozuk JSON, güvenilmeyen host, uyuşmayan özet,
yazılamayan klasör planı). WinHTTP ve indirme akışı elle doğrulandı.
Bilinen sınırlar
notify.cppvetray.cppbirim testi yok. WinRT bildirim kuyruğu ve kabuk tepsi
API'si izole edilebilir arayüzler değil; bu iki dosya yalnızca exe'ye derleniyor ve bu
sürümde gerçek bir makinede elle gezilerek doğrulandı.- Denetim,
latest.jsonyayınlanmışsa anlamlı. CI'sız bir forktan derlersen denetim
404 alır ve kart "bulunamadı" gösterir — uygulama bundan bozulmaz. - Arka plan tercihi kalıcı değil (yukarıda gerekçesi). Tepsi anahtarı da değil.
Geri alonay ister. Bildirimden tek tıkla registry'ye dokunmak, hangi pencereye
baktığını bilmediğin bir durumda veri kaybı demektir.- Sürüm numarasının tek kaynağı
brand.hpp, ama doğrulamanın bir ayağı CI'da.
Üretici betikkVersionMajor/Minor/Patchtoplamı ilekVersionuyuşmazsa derlemeyi
durduruyor; etiket ile exe'in gömülü sürümünü karşılaştıran denetim ise yalnızca CI'da
çalışıyor. Yani etiket attıktan sonra sürüm numarasını değiştirirsen hiçbir şey
yayınlanmaz, bunu yerel derleme sana söylemez. - Bu sürümün ekran görüntüleri 1.2.0 arayüzünden kalma. Yeni Ayarlar anahtarı ve
baştan çizilen bildirim kartları görsellerde değil; anlatılan davranışlar koddan ve
elle gezilen oturumlardan doğrulandı. - Lisans ekranı hâlâ bir demodur: her anahtarı kabul eder, sunucuya doğrulama
yapılmaz. Makine parmak izi hesaplanır, hiçbir yere gönderilmez.
Ağ kullanımı
Bu sürümde dışarı giden isteklerin tamamı:
| İstek | Ne zaman | Taşıdığı |
|---|---|---|
GET .../releases/latest/download/latest.json |
Otomatik denetim açıksa (varsayılan) açılışta bir + her 24 saatte bir; kapalıyken yalnızca Şimdi denetle | Yok — sabit GET. Gövde, başlık, çerez, sorgu parametresi taşınmaz |
GET .../releases/download/<etiket>/TENGRI.exe |
Yalnızca İndir dediğinde | Yok |
| Ağ ekranındaki gecikme ölçümü | Yalnızca o ekran açıkken | Yok |
Kimlik, dosya adı, kurulu program listesi, HWID veya tarama sonucu hiçbir isteğin
içinde değil. Kalıcılık yalnızca kendi registry dalında (HKCU\Software\TENGRI).
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Bu sürümde exe ile birlikte
latest.json da yayında — güncelleme denetimi o dosyayı okur.
ÖNEMLİ: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak
için reg.exe çağırıyor, hizmet yapılandırmasını ChangeServiceConfigW ile
değiştiriyor ve 1.3.0'dan itibaren GitHub'dan kendi exe'sini indirip çalışan dosyanın
yerine koyuyor. Bunlar bir "sistem iyileştirici" zararlı yazılımının davranış
imzasıdır; sezgisel motorlar imzasız çalıştırılabilirleri işaretler. Dosya **i...
TENGRI v1.2.0
TENGRİ 1.2.0
Arayüze iki yeni ekran eklendi: Başlatma ve Hizmetler. Uygulama dokuz
ekrana çıktı, test yüzeyi dört pakete bölündü ve 1.1.0'ın bilinen sınırı
(bildirimdeki "Geri al" düğmesi) kapandı.
56 registry anahtarı ve 10 temizleme kategorisi aynı; yeni olan şey bunların
yanına sistem yönetiminin kendisinin gelmesi.
Başlatma ekranı
Oturum açıldığında çalışan programları listeler ve dört kapsamı okur:
| Kapsam | Anahtar | Yetki |
|---|---|---|
| Kullanıcı | HKCU\...\CurrentVersion\Run |
gerekmez |
| Kullanıcı (bir kez) | HKCU\...\CurrentVersion\RunOnce |
gerekmez |
| Makine | HKLM\...\CurrentVersion\Run |
okumak gerekmez, yazmak yönetici ister |
| Makine (bir kez) | HKLM\...\CurrentVersion\RunOnce |
okumak gerekmez, yazmak yönetici ister |
Makine girdileri yetkisiz çalıştırmada da listelenir, düğmeleri de görünür —
ancak yazma girişimi başarısız olur ve bir uyarı bildirimi düşer. Kendiliğinden
yeni bir UAC istemi başlatılmaz: hangi işlem için yönetici gerektiğini
söyler, kararı sana bırakır.
Devre dışı bırakmak registry'den bir şey silmez. Değer olduğu gibi kalır;
yalnızca HKCU\Software\TENGRI\StartupDisabled\<kapsam> altına taşınır.
Açmak geri taşır. Neden Windows'un kendi StartupApproved anahtarı değil:
Görev Yöneticisi ile aynı anahtarı yazmak, iki aracın birbirinin durumunu
yanlış okumasına yol açar — TENGRİ'nin listesi kendi taşınma kaydından gelir,
bu yüzden her zaman tutarlıdır.
Her kartta yayıncı (imzadan okunur; yoksa dosya yolu), komut satırı ve bir
etki etiketi var. Etki dosya boyutundan sezgisel olarak tahmin edilir:
2 MB altı Düşük, 20 MB altı Orta, üstü Yüksek, dosya okunamıyor ise
Bilinmiyor. Bu bir ölçüm değil işarettir — yanlış sınıflandırabilir.
TENGRİ'nin kendi otobaşlatma girdisi listede görünür ama Kaldır düğmesi o
kartta devre dışıdır: kendini kaldıran bir başlatma yöneticisi bir daha
açılamazdı.
Hizmetler ekranı
Windows arka plan hizmetleri rastgele devre dışı bırakılacak şeyler değildir.
Bu ekran 16 hizmetlik bir beyaz listeyle çalışır; listeye girmemiş hiçbir hizmet
okunmaz, yazılmaz. Her girişin bir şiddeti vardır: Güvenli / Dikkat / Riskli —
ve kartta o hizmetin neden listede olduğunu anlatan bir gerekçe yazar.
Oyun profilini uygula düğmesi hizmetleri kapatmaz, Elle (Manual) başlangıca
çeker; Windows'un hâlâ başlatabileceği ama oturum açılışında seni
beklemeyeceği durum budur. Kapatılması gerçekten gerekenler istisnadır.
Varsayılanlara dön için ilk değişiklikten önceki durum
HKLM\SOFTWARE\TENGRI\ServicesBackup altına yazılır (başlangıç türü + gecikmeli
başlatma bayrağı), böylece profil tek tıkla geri alınır.
Durumu okumak yetki istemez; yazmak ister. Yetkisiz çalıştırırsan ekranı
yine kullanabilirsin — her kartın altında "yönetici yetkisi gerekir" uyarısı
durur ve yazma düğmeleri hiç üretilmez.
Shader önbelleği derinleşti
Temizleyicinin 8. kategorisi 4 yol tarıyordu, artık sabit 10 yol ve üstüne
Steam motor önbellekleri taranabiliyor: D3D, NVIDIA (DXCache/GLCache/NV_Cache —
yerel ve ProgramData), AMD (DxCache/GLCache/VkCache — yerel ve ProgramData),
Intel.
Steam'in derlenmiş shader deposi varsayılan olarak kapsam dışı: silmek
diske yerinde saydırmıyor, oyunu yeniden derletiyor ve ilk açılışı
yavaşlatıyor. Ayrı bir maskeye (Shader_SteamEngine) arkasına alındı; arayüzden
otomatik olarak silinmez.
Düzeltilenler
- Bildirimdeki "Geri al" düğmesi artık çalışıyor (1.1.0'ın bilinen sınırı).
Onay penceresi, ImGui'nin modal'ı yalnızca ait olduğu çizim döngüsü içinde
açabildiği yerde çağrılıyor. Onaysız hâlâ hiçbir registry yazması yok. - Tepsi ikonu Explorer yeniden başlarsa geri geliyor. Kabuk, simgeleri sürece
haber vermeden yok ediyor; TENGRİ artıkTaskbarCreatedbildirisini dinliyor
ve saniyelik bakım döngüsünde simgeyi yeniden ekliyor. Önceden bu bakım
döngüsü, hiç set edilmemiş bir bayrak yüzünden ölüydü. - Üç İngilizce metin kaçağı düzeltildi: Başlatma filtresinde "All",
Hizmetlerde "Running", Başlatma kartında "(disabled)". Filtre
düğmeleristatic const char*dizisiydi;L()tabloyu çizim anında çözdüğü
için dil değişiminde eski tabloda kalıyorlardı — dizi artık her karede
yeniden kuruluyor. - Kenar çubuğundaki İ karakterinin font alt kümesinde eksik olabileceği
şüphesi görsel olarak doğrulandı: doğru çiziliyor. docs\tweaks-registry.mdüretilirken 56 etiketin tamamı iki satır kayıyordu.
Uygulama doğru gösteriyordu; hata üreteçteydi.make_tweak_table.ps1FlatEnd
değerini enum metninden sayıyor, yeni sekmelerin üstüne yazdığımız bir yorum
cümlesi "… FlatEnd'den hemen önce …" diyordu ve sayım o sözcükte duruyordu:
sonradan eklenen 44 anahtar hiç sayılmadı. Artık iki bağımsız sayım yapılıyor
(enum metni +lang.cpp'dekiTweakNamesayracı) ve uyuşmazlıkta betik
hata verip duruyor. CI bunu yakalamadı: denetim adımı dosyayı aynı betikle
yeniden ürettiği için iki taraf birlikte kaymıştı.
Testler
Tek test dosyası dört pakete bölündü: 204 denetim, 0 hata.
| Paket | Denetim | Kapsam |
|---|---|---|
test_pure.cpp |
122 | i18n tabloları, RAM ön ayarları, tweak sözleşmeleri, .reg gövdeleri |
test_modules.cpp |
31 | Geri yükleme metinleri, hizmet beyaz listesi, başlangıç sorguları, shader taraması |
test_license.cpp |
22 | Lisans maskesi, HWID determinizması, "beni hatırla" kalıcılığı |
test_write_paths.cpp |
29 | Temizleyici tarama/temizleme tersinirliği, yedek listeleme, içe aktarma reddi |
Dördü de gerçek sistemine dokunmaz: saf mantık, salt-okunur sorgular ya da
izole ortam. build.bat derlemenin sonunda bu dört paketi çalıştırır ve biri
takılırsa exit /b 1 ile durur — testler derlemeden ayrılmaz.
Bilinen sınırlar
- Sistem geri yükleme noktası arayüze bağlı değil.
src/core/restore.cpp
derleniyor, test ediliyor ve çalışıyor ama şu an hiçbir çağrı yeri yok;
uygulama otomatik geri yükleme noktası oluşturmaz. Toplu tweak
uygulamadan önceki koruma, tweak kapsamındaki.regyedeğidir. - Başlatma yalnızca
Run/RunOnceanahtarlarını görür. Başlangıç Klasörü,
Zamanlanmış Görevler, WMI abonelikleri ve hizmetler listelenmez. Windows'un
kendi "Başlangıç" sekmesi kadar eksik, Görev Yöneticisi kadar güvenilir olmaya
çalışır. - Hizmetler 16 girişle sınırlı ve bu bir tercih: beyaz liste genişleyebilir
ama varsayılan olarak kapalıdır. - Ekran görüntüleri gerçek bir makinede alındı; Başlatma ve Hizmetler görselleri
o sistemde kurulu programları gösterir.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.
ÖNEMLİ: antivirüs uyarısı
TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe
aktarmak için reg.exe çağırıyor ve hizmet yapılandırmasını
ChangeServiceConfigW ile değiştiriyor. Bunlar bir "sistem iyileştirici"
zararlı yazılımının davranış imzasıdır; sezgisel motorlar imzasız
çalıştırılabilirleri işaretler. Dosya imzasızdır. Ayrıntı:
SECURITY.md
Ayar uygularken, başlatma girdisi kaldırırken ve hizmet değiştirirken yönetici
yetkisi istenir; açarken, sistem bilgisi, başlatma listesi ve hizmet durumu
okurken hiç sorulmaz.
Bilmen gerekenler
- Ayarları uygulamadan önce geri yükleme noktası oluştur — uygulama bunu
senin yerine yapmıyor. - Bazı ayarların etkili olması için yeniden başlatma gerekir.
- Lisans ekranı bir demodur: her anahtarı kabul eder, sunucuya hiçbir
doğrulama yapılmaz, hiçbir telemetri yoktur. - Makine parmak izi hesaplanır ama hiçbir yere gönderilmez.
Kaynaktan derleme
git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.batLisans: MIT
TENGRI v1.1.0
TENGRI 1.1.0
Arayüz yenilendi ve Windows bildirimleri geldi. 56 anahtar, 10 temizleme kategorisi
ve geri alma mekanizması aynı.
Windows bildirimleri
Uzun süren işler, yetki hataları ve ayar değişiklikleri artık Eylem Merkezi'ne düşer.
Uygulama kapalıyken de gelir.
Ayarlarda üç anahtar:
- Uygulama içi bildirimler — pencerenin köşesindeki toaster'lar
- Windows bildirimleri — Eylem Merkezi'ne düşen toast'lar
- Sadece hatalar — ikisini birden susturur, yalnızca hata ve uyarılar geçer
Toast düğmeleri:
| Düğme | Davranış |
|---|---|
| Sonuçları gör | Uygulamayı açar, olayın kendi sayfasına gider |
| Geri al | Önce onay ister — onaylanmadan registry'ye yazılmaz |
| Tekrar dene | Yalnızca saklanmış bir iş varsa görünür |
| Tamam | Sistem düğmesi, uygulamayı açmadan kapatır |
Kurulum. İlk çalıştırmada iki kayıt yazılır: HKCU\...\AppUserModelId girdisi ve
Başlat menüsü kısayolu. Ayarı kapatmak kayıtları silmez; kısayol elle silinirse yeniden
kurulur.
Rahatsız Etmeyin ve gece modu Windows'un kararıdır — üzerine yazılmaz.
Arayüz
Yeni marka kimliği: kurt logosu artık pencere simgesi, görev çubuğu, tepsi ikonu,
giriş ekranı, kenar çubuğu ve açılış ekranında kullanılıyor.
Arayüz Inter yazı tipine geçti ve exe içine gömüldü — yanında font dosyası olmadan
da doğru çiziliyor. Üç ağırlık, uygulamanın gerçekten kullandığı karakterlere
(Basic Latin + Türkçe + noktalama) alt kümelenmiş, toplam 75 KB.
Tipografi ölçeği 19 farklı punto yerine 9 adlandırılmış belirteçe (theme::size)
çöktü ve kontrast düzeltmesi yapıldı: birincil metin ve simgeler WCAG AA eşiğine
getirildi.
Gecikme grafiğinde beş hata düzeltildi: eksen ölçeği, sahte sıfırlar, örnekleme hızı,
kayma ve eski ölçüm. Artık yalnızca gerçek ölçümler çiziliyor.
Düzeltilenler
- Uygulama simgesi
.icodosyasındaki başlık bozuktu (biPlanes/biBitCountWORD
olarak yazılıyordu), bazı sistemlerde ikon yüklenmiyordu - Tepsi ikonu
hInstancegeçirilmediği için yanlış kaynak okuyordu - Ekran görüntüsü aracı odağın gerçekten uygulamada olduğunu doğrulamıyordu
- Türkçe metin tablosunda kaçış hatası derlemeyi kırıyordu
Bilinen sınır
Bildirimlerdeki "Geri al" düğmesi şu an tepki vermiyor. Düğmeye basınca
uygulama öne gelir, ancak onay penceresi açılmaz; hiçbir şey değişmez.
Neden güvenli: düğmenin varlık sebebi registry'ye onaysız dokunmamaktı, o koruma
çalışıyor — düğme yanlışlıkla bir şey yazmıyor, yalnızca hiçbir şey yapmıyor.
Ayarlar sayfasındaki Geri al düğmesi ise çalışıyor.
Düzeltme yolda: onay penceresi, ImGui'nin modal pencereyi yalnızca ait olduğu
pencere döngüsü içinde açması gerektiği için yanlış yerde çağrılıyor.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.
ÖNEMLİ: antivirüs uyarısı
TENGRI HKEY_LOCAL_MACHINE altına yazıyor ve geçici .reg dosyalarını içe
aktarmak için reg.exe çağırıyor. Bu ikisi bir "registry temizleyici" zararlı
yazılımının davranış imzasıdır; sezgisel motorlar imzasız çalıştırılabilirleri
işaretler. Dosya imzasızdır. Ayrıntı: SECURITY.md
Ayar uygularken yönetici yetkisi istenir; açarken ve sistem bilgisi okurken hiç
sorulmaz.
Bilmen gerekenler
- Ayarları uygulamadan önce geri yükleme noktası oluştur.
- Bazı ayarların etkili olması için yeniden başlatma gerekir.
- Lisans ekranı bir demodur: her anahtarı kabul eder, sunucuya hiçbir doğrulama
yapılmaz, hiçbir telemetri yoktur. - Makine parmak izi hesaplanır ama hiçbir yere gönderilmez.
Kaynaktan derleme
git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.batLisans: MIT
TENGRI v1.0.0
TENGRI 1.0.0
İlk sürüm. C++ / DirectX 11 üzerinde yazılmış, ~1.4 MB tek dosyalık bir Windows sistem
optimize edici. Kurulum yok, gereksinim yok.
Ne var
Gösterge paneli — canlı CPU / RAM / disk kullanımı, kayan 30 saniyelik gerçek CPU
yükü grafiği, canlı durumdan hesaplanan sağlık puanı, tek tıkla optimizasyon.
Temizleyici — 10 kategoride gerçek dosya taraması ve silme. Geçici dosyalar, tarayıcı
önbelleği, Windows Update önbelleği, Geri Dönüşüm Kutusu, önyükleme verileri, sistem
günlükleri, küçük resim önbelleği, çökme dökümleri, gölgelendirici önbelleği ve teslim
optimizasyonu.
İnce ayarlar — 7 kategori, 56 anahtar. Performans, Oyun, Gizlilik, Görsel, Oyunlar,
FiveM, Gecikme. Her anahtar başlangıçta registry'den okunur, yani arayüz kaydedilmiş bir
ayar dosyası değil gerçekte uygulanan şeyi gösterir. Uygula yalnızca dokunduğun
anahtarları yazar.
Ağ — 1.1.1.1'e karşı gerçek ICMP gecikme ve jitter ölçümü, DNS geçişi (Cloudflare /
Google / Quad9 / Otomatik), bağlantı ayrıntıları, 6 ağ anahtarı.
RAM profili — SvcHostSplitThresholdInKB için 14 hazır profil; kurulu RAM'e en yakın
şablon otomatik önerilir.
Sistem bilgisi — donanım, yazılım ve güvenlik ayrıntıları. RAM hızı ve slot sayısı
N/A bildirir, çünkü bu bilgiler registry'de yok.
Arayüz — İngilizce ve Türkçe, DPI farkındalıklı ölçekleme, tepsi ikonu, gerçek
"başlangıçta çalıştır" girdisi.
Kurulum
TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.
ÖNEMLİ: antivirüs uyarısı
TENGRI açılışta yönetici yetkisi istiyor, HKEY_LOCAL_MACHINE altına yazıyor ve
geçici .reg dosyalarını içe aktarmak için reg.exe çağırıyor. Bu üçü birden, bir
"registry temizleyici / optimizer" zararlı yazılımının davranış imzasıdır; bu yüzden
sezgisel antivirüs motorları imzasız çalıştırılabilirleri işaretler.
Bu TENGRI'ye özgü bir sorun değil, bu tür araçların doğal sonucu. Dosya imzasızdır.
Kaynaktan derleme
Yazdığı her registry anahtarı kaynakta görünür. Güvenmiyorsan kendin derle:
git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.batBilmen gerekenler
- Ayarları uygulamadan önce geri yükleme noktası oluştur.
- Bazı ayarların etkili olması için yeniden başlatma gerekir.
- Lisans ekranı bir demodur: her anahtarı kabul eder, sunucuya hiçbir doğrulama
yapılmaz, hiçbir telemetri yoktur. - Makine parmak izi hesaplanır ama hiçbir yere gönderilmez.
Lisans: MIT