feat(status-bar): OEM Vehicle Status Bar — OBD/GPS/AI göstergeleri#90
Open
selimmujdeci wants to merge 2 commits into
Open
feat(status-bar): OEM Vehicle Status Bar — OBD/GPS/AI göstergeleri#90selimmujdeci wants to merge 2 commits into
selimmujdeci wants to merge 2 commits into
Conversation
…af türetme, sıfır yeni state) Ana ekran status bar'ına (Wi-Fi/BT yanı, ses'ten önce) OEM seviyesinde OBD/GPS/AI göstergeleri ekler. Mevcut kaynaklardan bounded metadata türetir; yeni state/polling/ timer/rAF/health-ping YOK, animasyon CSS-only (motion-safe + reduced-motion). - vehicleStatusModel.ts: PURE türetme (now dışarıdan; clock-jump/test güvenli) - OBD sahte-connected koruması: connected = transport connected + source=real + fresh (0-3s healthy / 3-10s stale / >10s disconnected); mock/none asla bağlı sayılmaz - AI sıkı görünürlük: yapılandırılmış sağlayıcı yok/kapalı → ikon render edilmez; yalnız sensitiveKeyStore.has() boolean okunur, secret state/DOM/log'a taşınmaz - OEM tasarım: monokrom ikon + küçük durum noktası (ok/warn/error/muted), bounded popover - StatusControls entegrasyonu minimal (+4 satır: import + render) Kapsam dışı korundu: OBD/BT/GPS/AI servis davranışı, PR #88 parser/handshake, Event Bus, diagnostics payload, SQL, native — DEĞİŞMEDİ. Doğrulama: 41 yeni test + tam suite 3905 yeşil (213 dosya), tsc -b temiz, lint 0, production build OK. Ledger: 🔴 #67 (cihazda doğrulanmadı). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019s53JVK4gGqdZfmJz8aZc6
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Taze APK zircon'a (Xiaomi 23090RA98I) yüklendi + başlatıldı; ekran görüntüsüyle: OBD/GPS ikonları Wi-Fi/BT ile aynı hizada (layout taşması yok), AI ikonu gizli (sağlayıcı yok → sıkı görünürlük cihazda kanıtlandı), OBD sahte-connected üretmedi. Kalan (araç şart): gerçek OBD freshness geçişi + Mali-400/K24 layout. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019s53JVK4gGqdZfmJz8aZc6
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.
Özet
Ana ekran status bar'ına (Wi-Fi/BT'nin yanı, ses'ten önce) OEM seviyesinde OBD / GPS / AI göstergeleri ekler. Mevcut kaynaklardan bounded metadata türetir — yeni state/polling/timer/rAF/health-ping YOK, animasyon CSS-only (
motion-safe+prefers-reduced-motion).Değişen dosyalar (5)
src/platform/vehicleStatusModel.ts(yeni)nowdışarıdan → clock-jump/test güvenli)src/components/common/VehicleStatusIndicators.tsx(yeni)src/components/common/StatusControls.tsx(+4)src/__tests__/vehicleStatusModel.test.ts(yeni)docs/DEVICE_VALIDATION_LEDGER.mdKullanılan mevcut state kaynakları (yeni paralel state yok)
useDeviceStatus().wifiConnected+navigator.onLineuseOBDState()→connectionState/source/lastSeenMsuseGPSState()→location.accuracy/location.timestamp/isTracking/unavailable/errorsensitiveKeyStore.has()(yalnız boolean) +getAiHealthSnapshot().healthy(circuit breaker)OBD freshness modeli
connectedYALNIZ: transport connected + source === 'real' + son gerçek paket freshness içinde.0–3s → healthy·3–10s → stale·>10s → disconnected. Mock/none asla bağlı sayılmaz; saat-atlaması (negatif yaş) son bilineni korur.AI görünürlük + health modeli
hidden)has()boolean okunur — secret state/DOM/log'a taşınmazchecking→healthy(≥1 provider ready) →fallback(ana down, yedek ready) →error(hepsi down)OEM tasarım
Monokrom Lucide ikon + küçük durum noktası (ok=accent/yeşil · warn=amber · error=kırmızı · muted=düşük opaklık) — büyük rozet yok, aynı boyut/stroke/spacing. Tıklayınca bounded popover (yalnız kısa durum metni; yeni polling yok, gizli veri yok).
Kapsam dışı (dokunulmadı)
OBD/BT/GPS/AI servis davranışı · PR #88 parser/handshake · Event Bus · diagnostics payload · SQL/Supabase · native kod.
Test & CI
tsc -b --noEmittemiz · ESLint 0 error · production build OKLedger
🔴 #67 — cihazda doğrulanmadı. Kabul kriteri gerçek head unit'te (Xiaomi + low-tier K24/Mali-400/T507): Wi-Fi ile aynı hiza, OBD yalnız gerçek+fresh veride healthy + stale geçişi, AI yapılandırma yokken görünmez, secret sızıntısı yok, statik ekranda ek jank yok.
Bilinen riskler
readyProviderCountcoarse; fallback ayrımı ana provider ready boolean'ına dayanıyor.🤖 Generated with Claude Code