v0.43.5: Satış panelinin payı ve dar ekranda okunan kural - #112
Merged
Merged
Conversation
411 dp'de beşinci kuralın adı kırpılıyordu: panel tepsiden artanı alıyor ve tepsi ürün adları sarınca üç sıraya çıkınca panele 208 dp kalıyordu. trayHeight artık bir panelWant alıyor; Satış 240 dp istiyor (v0.43.2'de tepsinin iki sıra kaldığı turlarda ölçülen, beş kuralın göründüğü boy). Pay ancak tepsiye TRAY_KEEP (168 dp = başlık + iki sıra) kalıyorsa yükseliyor, yani ayrım rest 308 dp'yi geçince başlıyor ve kısa ekran hiç etkilenmiyor. Varsayılan panelWant = PANEL_MIN olduğu için Diziliş ile Sipariş'in kolu da değişmedi. Cihazda: 411 dp'de üç turda da panel 232,4 dp ve beş kural tam. Bedeli tepsinin son sırasının bir sürükleme uzağa gitmesi; ölçüldü, sürükleyince tam geliyor ve dokunuş seçimi alıyor. 360×640 dp'deki sayılar birebir aynı kaldı. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Cihaz oturumunun a28aa7a'sı: 411 dp'de panele beş kuralı bırakan tavan, saf işlev testi ve cihaz kütüğü. Üstüne kalibrasyonsuz hâli yazılacak. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
Denemenin kolu doğruydu ama tavanı sabit bir PANEL_WANT = 240 dp'ye bağlıydı ve
o sayı ölçülen bir metnin boyuydu: cihazda beş kural 232,4 dp tuttu, yani payı
7,6 dp. Kural satırı ad (17,7 dp) + gövde (1–2 satır × 17,7 dp) olduğu için tek
bir fazladan sarma payı yiyor ve beşinci kuralın adı yine kırpılırdı. Bunu iki
şey tetikler, ikisi de sahada var: daha uzun bir dil ve kullanıcının büyüttüğü
yazı ölçeği (gövde sp, tavan dp).
Kol aynı, kalibrasyon kalktı: Satış'ta panel ağırlıksız olduğu için önce
ölçülüyor ve kendi içeriği kadar yer alıyor; tavan yalnız tepsinin payını
koruyor.
panelCap(rest) = min(max(PANEL_MIN, rest - TRAY_KEEP), rest - TRAY_MIN)
İki sınır da gerekli. maxOf kısa ekranda tavanı tabana çekiyor. minOf tepsinin
tabanını koruyor: panel önce ölçüldüğü için sınırlanmazsa çok kısa ekranda
tepsiye yer kalmaz — 480 dp'lik uygulama alanında kalan 177,5 dp ve maxOf tek
başına 140 dp der, tepsiye 37,5 dp bırakırdı; ürün seçilemeyen tepsi bulmacayı
çözülemez yapar. Denemenin ilk hâlinde bu sınır yoktu.
İkisi birlikte, rest 308 dp'nin altında eski kolun birebir aynısı:
panelCap(rest) == rest - trayHeight(rest). Test bunu 72–308 dp aralığının her
değerinde doğruluyor, yani "kısa ekran etkilenmiyor" tahmin değil. Diziliş'in
kolu (trayHeight) hiç değişmedi; Sipariş'te tepsi yok.
Tur bitince tepsi çizilmediği için tavan da kalkıyor, yoksa panelin altında
boşluk kalırdı.
Beklenen ölçüm: 411 dp'de panel yine 232,4 dp (panel zaten içeriği kadar yer
alıyordu), tepsiye 186 yerine 193,6 dp; 360×640 dp'de hiçbir sayı değişmemeli.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
theCapNeverDropsBelowTheFloor, panelCap'in ilk (yalnız maxOf'lu) hâline göre yazılmıştı ve 100 dp'lik kalanda 140 bekliyordu. Tepsinin tabanını koruyan sınır eklenince doğru değer 28: tepsi 72 dp'sini alıyor, panele kalan düşüyor. Eski kolun aynı kalanda yaptığı da bu (rest - trayHeight(rest) = 28), yani kırılan şey kural değil savın kendisiydi — PANEL_MIN bir hedef, dokunulmaz bir taban değil; belgedeki ölçülmüş örnek de öyle diyor (480 dp'lik uygulama alanında panel 105,5 dp). Sav yerine gerçek değişmez yazıldı ve dosyadaki bütün sayılar yeniden hesaplandı. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
411 dp'de panel üç turda da 232,4 dp ve beş kural tam; 360×640 dp'de hiçbir sayı değişmedi; 480 dp'lik uygulama alanında tepsi tabanını koruyor ve seçim çalışıyor. Kalibrasyonun kaldırılması ölçülebilir: yazı ölçeği 1,3'te sabit PANEL_WANT=240 yapısı paneli 240,0 dp'ye çakılı tutup Marka bloğu'nu 14,1 dp'ye indiriyor, yeni kol 254,1 dp alıp beş kuralı tam tutuyor. Açık: tavan st.finished'a bağlı, ama ürünler bitince tepsi yalnız "Tüm ürünler rafta" notunu çiziyor ve st.finished hâlâ false. 480 dp'de panel ~105 dp'de kalıyor — iki kural, Tamamlayıcı'nın gövdesi ortadan kesik, altında ~83 dp boşluk. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Eksik kalan ölçümler tamamlandı ve hepsi tek bölümde toplandı. Bulgu 1: G4'ün "en az üç kural" hedefi kısa ekranda yalnız Türkçe'de tutuyor. Almanca ve Fince'de ikinci kuralın gövdesi de iki satıra sarıyor ve üçüncü kuralın adı 5,3 dp'ye iniyor — planın 2 dp'lik payı dilde tükeniyor. Ok doğru yerde çıkıyor, dokununca gövde açılıyor, yani içerik ulaşılabilir. Bulgu 2: tepsi boşalınca tavan kalkmıyor. st.finished false kalırken tepsi yalnız reyon_tray_empty notunu çiziyor; panel 563 dp'de ~128,7 dp'de, 480 dp'de ~105 dp'de kalıyor ve altında ~83 dp boşluk duruyor. Araç: reyon --olcek 2.0 üç türde de "Reyon açılamadı" veriyordu. oyunu_ac'taki 250 pikselllik yakınlık eşiği 320 dpi'de 125 dp ediyor ve son oynananlar şeridindeki adla ilk kartın Oyna düğmesini aynı satır sayıyordu; tarama Blok'a girip duraklatma katmanında sıkışıyordu. Eşik 95 dp'ye çevrildi. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Cihaz bulgusu: bütün ürünler rafa konunca tepsi yalnız tek satırlık "Tüm
ürünler rafta" notunu çiziyor, ama st.finished hâlâ false olduğu için panele
konan tavan tepsiye TRAY_KEEP ayırmayı sürdürüyordu. Ölçülen: 563 dp'lik
uygulama alanında panel ~128,7 dp'de kalıyor ve altında ~83 dp boşluk duruyor;
480 dp'de beş kuralın yalnız ikisi okunuyor ve Tamamlayıcı'nın gövdesi satırın
ortasından kesiliyor. Oyuncunun kuralları okumak için en çok durduğu an tam o
an: ürünler yerleşmiş, puan oluşmuş, karar veriliyor.
Hata benim koyduğum koşulda: "tepsi çizilmiyor" ile "tur bitti"yi aynı şey
saymıştım. Kol artık tepsinin çizdiği şeye bakıyor — tepside yerleştirilecek
ürün kalıp kalmadığına:
val trayPending = st.sales.products.any { !st.isPlaced(it.id) }
Ürün varken panel ağırlıksız (önce ölçülüyor, tavanı panelCap), tepsi kalanı
alıyor. Ürün kalmayınca kol Diziliş'inkine dönüyor: not doğal boyunu alıyor,
panel kalanın hepsini kullanabiliyor. Tur bitmiş hâl de bu kola düştüğü için
eski st.finished özel durumu gerekmiyor.
CI bunu sınamıyor: bütün ürünleri rafa koymak tuvale koordinat koordinat
dokunmayı gerektiriyor ve o dokunuşlar raf geometrisine bağlı olduğu için
kırılgan bir test olurdu. Doğrulaması cihazda.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
Cihaz bulgusu: G4'ün "en az üç kural" hedefi 360×640 dp'de yalnız Türkçe'de tutuyordu. Almanca ve Fince'de ikinci kuralın gövdesi de iki satıra sarıyor (Paare wie Chips und Dip nebeneinander +6, / übereinander +3) ve üçüncü kuralın adı 5,3 dp'ye iniyordu; 140 dp'lik tabanın 2 dp'lik payı dilde tükeniyor. Gövdenin satır sayısı artık panelin payına bağlı: tavan tabana çakılıysa (rulesAreCompact, yani rest ≤ 308 dp) gövde tek satır. Eşik ayrı bir sayı değil, panelCap'in kendisi — uzun ekranda tavan yükseldiği için gövdeler iki satır kalıyor ve 411 dp'de hiçbir şey değişmiyor. Cihazın ölçtüğü satır boylarıyla beklenen: gövdesi iki satır olan kural 50,7 yerine 35,2 dp, başlık ~36 dp, üçüncü kuralın adı 106-124 dp'ye düşüyor, yani dile bakmadan tabanın içinde. Bedeli kısa ekranda her açıklamanın tek satıra inmesi; ok o satırlarda da çıkıyor ve dokunmak gövdeyi tam açıyor, metin kaybolmuyor. Tepsi boşalınca sıkışma kalkıyor: panel kalanın hepsini aldığı için gövdeler iki satıra dönüyor ve kuralların en çok okunduğu an orada daha çok metin görünüyor. Eşiğin beş noktası testte: 177,5 / 226 / 308 sıkışıyor, 309 ve 426 sıkışmıyor. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
Play Console'daki "Developer name" alanı aripdcom diyor; kullanıcının mağazada gördüğü ad bu. Gizlilik politikası aripdcem yazıyordu — depo taşınırken bilerek dokunmamıştım, çünkü o alan depo adresi değil, yayımcının kimliği ve Play'deki adla birebir aynı olmak zorunda. 14 dilin künye satırı da metni üreten betikten geçti (tools/gen_privacy.py), site/gizlilik.html yeniden üretildi. Değişen tek şey ad: dosyada 14 satır, başka fark yok. check_site.py geçiyor. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
weight bir ColumnScope uzantısı; modifier'ı sütunun dışında hazırlayınca örtük
alıcı bulunamıyor ("cannot be called in this context with an implicit receiver").
Kapsam kuralı iki yönlü işliyor ve bu dosyada ikisi de var: maxHeight sütunun
DIŞINDA okunmalı (ColumnScope da @LayoutScopeMarker taşıdığı için içeride
BoxWithConstraintsScope örtülüyor), weight ise İÇERİDE çağrılmalı.
O yüzden maxHeight'a bağlı iki değer (panelMax, compactRules) dışarıda, modifier
seçimi içeride. Aynı sebeple compact bayrağı da çağrı yerinde hesaplanamazdı.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
e65c028 kuruldu (sha256 doğrulandı). Kısa ekranda hedef artık üç dilde de tutuyor: tr/de/fi hepsinde 3/5 ve sayılar birebir aynı (gövde 13,3 dp tek satır, dördüncü kuralın adı 3,3 dp). 411 dp'de hiçbir sayı değişmedi (panel 232,4 dp, gövde 32,0 dp, 5/5). Tepsi boşalınca panel 128,7 → 198,0 dp'ye çıkıyor, gövdeler iki satıra dönüyor, 4/5 kural tam okunuyor ve ~83 dp boşluk kalmıyor; 480 dp'de de panel ~105 → 128,7 dp ve 2 → 3/5. Not: dalın önceki tepesi 0eb9e5b derlenmiyordu (weight ColumnScope'ta, maxHeight sütunun dışında). Ayrıca ilk derleme Gradle'da up-to-date deyip eski APK'yi bıraktı; kurulu APK özeti karşılaştırılmasa eski yapı ölçülmüş olacaktı. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sürüm 0.43.4 → 0.43.5; CHANGELOG, uygulama içi sürüm notu (14 dil, üç satır) ve Play sürüm notu. Kod değişiklikleri 8862294, a7fec39, f756fd8, 0eb9e5b, e65c028. Kullanıcının gördüğü üç şey: uzun telefonda beş puan kuralının beşi de görünüyor, dar ekranda üçüncü kural her dilde okunuyor, bütün ürünler rafa konunca panel boşalan yeri kullanıyor. Üçü de cihazda ölçüldü (PR #111). Dördüncü madde yalnız CHANGELOG'da: gizlilik politikasındaki geliştirici adı aripdcom oldu. Oyuncunun uygulamada gördüğü bir şey değil, sayfa sitede duruyor. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reyon Satış'ın puan kuralları paneli üç ayrı yerde açıldı; üçü de cihazda ölçüldü.
1 — Uzun telefonda beş kuralın beşi
Panelin payı tepsiden artana bağlıydı: tepsi ürün adları sarınca iki sıra yerine üç sıra oluyor (167 ↔ 219 dp) ve panel onunla 240 ↔ 208 dp arasında gidip geliyordu; 208 dp'de beşinci kuralın adı kırpılıyordu. Kol ters çevrildi — panel ağırlıksız, yani önce ölçülüyor ve kendi içeriği kadar yer alıyor; tavan yalnız tepsinin payını koruyor.
İki sınır da gerekli:
maxOfkısa ekranda tavanı tabana çekiyor,minOftepsinin tabanını koruyor (480 dp'lik uygulama alanındamaxOftek başına panele 140 dp verip tepsiye 37,5 dp bırakırdı). İkisi birlikterest≤ 308 dp'de eski kolun birebir aynısı:panelCap(rest) == rest - trayHeight(rest), test bunu 72–308 dp aralığının her değerinde doğruluyor.Sabit bir "istenen boy" (
PANEL_WANT= 240 dp) denendi ve bilerek bırakıldı — o sayı ölçülen bir metnin boyu olurdu. Yazı ölçeği 1,3'te cihazda ölçülen fark:Marka bloğuadı2 — Dar ekranda üçüncü kural her dilde
Hedef yalnız Türkçe'de tutuyordu: Almanca ve Fince'de ikinci kuralın gövdesi de iki satıra sarıp 140 dp'lik tabanın 2 dp'lik payını bitiriyordu. Panel tabanına sıkışmışken gövdeler tek satıra iniyor (
rulesAreCompact(rest) = panelCap(rest) <= PANEL_MIN); eşik ayrı bir sayı değil, tavanın kendisi.Üç dilde sayılar birebir aynı — dil artık sonucu değiştirmiyor. 411 dp'de hiçbir şey değişmedi (panel 232,4 dp, gövdeler iki satır, 5/5).
3 — Ürünler bitince panel boşalan yeri kullanıyor
Tavan
st.finished'a bağlıydı, oysa bütün ürünler rafa konunca tepsi hâlâ çiziliyor — yalnız "Tüm ürünler rafta" notunu. Koşul artık tepsinin çizdiği şeye bakıyor (trayPending).480 dp'de panel ~105 → 128,7 dp, 2 → 3/5. Oyuncunun kuralları okumak için durduğu an tam orası.
Yanında
base.apkSHA256) ve bir oyun açılamadığında gördüğü etiketleri yazıyor. Parmak izi iki kez işe yaradı: bir ölçüm yanlış daldan kurulmuş yapıyla alınmıştı, bir kez de Gradle "84 up-to-date" deyip eski APK'yi bırakmıştı.reyon --olcek 2.0düzeldi:oyunu_ac'taki yakınlık eşiği pikseldi, 320 dpi'de 125 dp edip yanlış oyunu açıyordu; dp'ye çevrildi.Cihaz kütükleri
docs/oyun-testi.md'de; ölçümleri yapan üç dal (#106, #111 ve tepsi tavanı denemesi) bu dalda birleşik.🤖 Generated with Claude Code
https://claude.ai/code/session_014qCsJLxcGnpqjkKgXRiLC2
Generated by Claude Code