Mobile UX: Schema sayfasında parça listesine ulaşılamıyor — 1-parmak touch sayfa scroll'unu çalıyor (P2) #76
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
TL;DR
Mobil (iOS Safari) kullanıcı kategori detay (schema) sayfasında parça listesine ulaşamıyor. Şema viewport'unun 1-parmak
touchmovehandler'ı dikey scroll gesture'ını yakalayıp resim pan'ı olarak yorumluyor → sayfa kaymıyor → kullanıcı "schema üstte kalıyor, kodları göremiyorum" deneyimi yaşıyor. Üstüne hotspot'a dokunulduğunda satır seçimi yalnızca parts-panel'in inner scroll container'ını kaydırıyor; parts panel zaten fold altında olduğu için seçim kullanıcıya görünmüyor.Sonuç: gerçek bir trial kullanıcı (Celik,
celikccccc@hotmail.com) 5 farklı leaf kategoride 4 dk 44 sn dolaştı, 16 rage click yaptı, tek bir OEM kodu kopyalayamadı, ödemedi. Aynı pattern başka bir mevcut insight'ta da var (cmpclg7b9000dflajkg27hxvt, 2026-05-19).Kanıt — gerçek session
019e720e-eaf3-72aa-b5a9-0000b8b84189celikccccc@hotmail.com), authenticated, trialoem_code_copiedux_friction,frustrated_sessionauth_user,event:trial_no_paycmpclg7b9000dflajkg27hxvt(P2, ux_friction, conf 0.85, 2026-05-19)Sayfa zaman çizelgesi
vin_decode_succeededWVWZZZ6RZDY231016/categories/16768065…(leaf 1)/categories/f8029c9b…(leaf 2)/categories/97232320…(leaf 3)/categories/55491841…(parent gibi)/categories/77c9ec73…(leaf 4)parts_panel_viewed/categories/29d41a1b…(leaf 5)parts_panel_viewed/categories/224cd399…(leaf 6)parts_panel_viewed224cd399…tekrar (geri dönüş)parts_panel_viewed/categories/246ef48e…(leaf 7)parts_panel_viewedYorum: kullanıcı 5 dakikada 7 leaf kategoride kayboldu, aynı kategoriye (
224cd399…) iki kez geri döndü. Parçalar zaten yüklüydü ama görünmüyordu.oem_code_copied= 0 → temel kullanıcı eylemi (kod kopyalama) bir kez bile gerçekleşmedi.Kök sebep — kod analizi
Mobil viewport (
<md) içinschema-viewer.tsxlayout şu:390×777 iPhone viewport'ta safe area + URL bar sonrası ~657px usable. 150 + 400 = 550px üstte → parts panel'in tamamı görünmez.
Problem #1 (KRİTİK) — schema 1-parmak touch'u page scroll'u çalıyor
apps/web/src/hooks/use-schema-interaction.ts:82-90:setPan(...)çağrılıyor.e.preventDefault()çağrılmasa bile iOS Safari touch handler'ın "anlamlı iş yaptığını" görüp page scroll'u baskılıyor.touch-action: none/touch-action: pan-yCSS'i yok — explicit scroll affordance da yok.Kullanıcının "schema görseliyle problem yaşıyorum, parça kodları üstte kalıyor" cümlesi tam olarak bu davranışı tarif ediyor: parmak schema üzerindeyken yukarı kaydırma yapıyor, resim hafifçe oynuyor veya hiç oynamıyor, sayfa kaymıyor → parça listesine ulaşamıyor → 16 rage click.
Problem #2 — hotspot tap → row seçilse bile görünmez
apps/web/src/components/schema/parts-panel.tsx:82-89:scrollIntoViewen yakın scroll'lanabilir parent'ı kaydırır → parts panel'in inneroverflow-y-autocontainer'ı (max-h-[500px]).Problem #3 — üçlü scroll trap
Tek bir mobil sayfada 3 ayrı scroll yüzeyi üst üste:
overflow-hidden+ pan-zoom touch handler'lar)overflow-y-auto, max-h-[500px])iOS scroll chaining bazen yardımcı oluyor, ama touch handler'lı parent ortadayken çuvallıyor. Gesture'ın hangi yüzeye gideceği belirsiz → kullanıcı için kestirilemez davranış.
Problem #4 — mobile'de schema yüksekliği sabit ve büyük
apps/web/src/components/schema/schema-viewer.tsx:119:400px sabit yükseklik. Hiçbir collapsible/peek state yok. Parts panel'in ilk satırlarının fold içine sızması (peek) olası değil → kullanıcıya "aşağıda devamı var" sinyali verilmiyor.
Problem #5 — kullanıcı
categoryViewMode = grid/tree/columnsile geliyor olabilir ama leaf'e ulaştığında schema'da kaybediyorBu, doğrudan bu issue'nun konusu değil ama issue #73 ile birleşik bir hikaye: önce kategori navigasyonunda kayboluyor, sonra schema sayfasında kaybediyor → toplam 2× friction önce parça kodunu görüyor.
Quick fix (~1-2 saat)
1. Schema pan'ı zoom>1 ile gate'le (KRİTİK)
apps/web/src/hooks/use-schema-interaction.ts:Ek CSS — viewport div'ine zoom seviyesine göre touch-action:
2. Hotspot tap sonrası mobil page scroll
apps/web/src/components/schema/parts-panel.tsx:3. Mobile schema yüksekliğini küçült (peek affordance)
apps/web/src/components/schema/schema-viewer.tsx:280px → parts panel'in ilk 2-3 satırı fold içine sızar; kullanıcı "aşağıda devamı var" sinyalini görür. Schema zaten fullscreen butonu var (
SchemaToolbar).4.
aria-busy, scroll prompt CTA, ya da inline "Parçalar (n)" badge'iSchema toolbar'ın yanına küçük bir "📋 18 parça aşağıda" pill ekle, tıklayınca parts panel'e smooth scroll yapsın. Discoverability sıçraması.
Uzun vadeli fix
A. Hotspot tap → inline OEM kodu popover (killer feature)
Hotspot'a dokunulduğunda schema'nın üzerinde küçük bir kart popover olarak açılsın: parça adı + OEM kodu + büyük Copy butonu. Kullanıcı scroll bile etmesin — kodu doğrudan oradan kopyalasın. Bu, çoğu mobil kullanım için (tek parça arama) optimum UX.
B. Mobile'de parts panel'i schema'nın ÜSTÜNE veya tab toggle
Çoğu mobil kullanıcı kod arıyor, schema teknik resim okumak için değil. Layout'u flip et: parts list mobil default, schema "Şemayı göster" CTA'sı ile collapsible.
Alternatif: shadcn
Tabsile Parçalar / Şema toggle — kullanıcı modunu seçer.C. Schema viewport için ayrı bir route veya sheet
Tap-to-open: hotspot'a tap → tam ekran sheet açılsın (image + part info + copy). Halihazırdaki fullscreen butonu zaten benzer iş yapıyor, ama tap ile değil button ile tetikleniyor.
D.
parts_panel_viewedevent'ini "panel actually visible" detection ile birleştirŞu an
parts_panel_viewed,PartsPanelcomponent'i mount olduğunda fırlatılıyor — kullanıcının panel'i gerçekten görüp görmediğine bakılmıyor.IntersectionObserverile sadece >50% görünür olduğunda emit et. Aksi halde "panel görüntülendi" event'i aldatıcı (bu session'da 5x emit edildi, kullanıcı muhtemelen hiçbirini görmedi).E. Touch-action CSS audit
Tüm pan-zoom yüzeylerine explicit
touch-actionset et:touch-action: pan-y pinch-zoom(scroll OK, pinch OK)touch-action: none(pan consume)touch-action: manipulationAcceptance criteria
window.scrollYartmış olmalı.Validation plan
Mevcut insight
cmpclg7b9000dflajkg27hxvtpanel'de 14 gün validation window'una sokulabilir. Acceptance:sessions_meta WHERE projectKey='sase' AND tags @> '{frustrated_session}' AND startUrl ILIKE '%/categories/%' AND viewport_width<500filtresinde rage-click oranı %50+ düşmeli.oem_code_copiedper session (mobile, leaf category page) baseline ölçülecek; fix sonrası en az %2× artış hedefi.parts_panel_viewedevent'iIntersectionObserverile gate'lendiğinde toplam emit sayısının düşmesi normal — gerçek görünme yüzdesi metriği olarak kullanılacak.Etkilenen segment
Bağlantılı
cmpclg7b9000dflajkg27hxvt(2026-05-19 üretilmiş, P2 ux_friction, conf 0.85, "VIN sorgulama sonrası parça panelinde sürekli tıklama ve rage click") — aynı kök sebep, daha eski. Bu issue ile birleştirilebilir.cmpv9q3ms004dfcphluw0z8bh(parts panel affordance).Dosyalar
apps/web/src/hooks/use-schema-interaction.ts(L82-90 — touch pan guard)apps/web/src/components/schema/parts-panel.tsx(L82-89 — scrollIntoView block)apps/web/src/components/schema/schema-viewer.tsx(L119 — schema height, L127-136 — touch handler attachment + touch-action CSS)apps/web/src/components/schema/hotspot-overlay.tsx(uzun vade — inline popover için)🤖 Generated from behavioral insight investigation of session
019e720e-eaf3-72aa-b5a9-0000b8b84189+ code analysis ofapps/web/src/components/schema/*.🤖 Fusion task opened:
FN-422Triage queue: https://fusion.semih.ai/tasks/FN-422
This comment was posted automatically by the
fusion-plugin-gitea-issuesbridge. A Fusion agent will update this issue when the task moves to in-progress, in-review, or done.