Privacy policy Gizlilik politikası
Hindsight stores your captures on your own device. There is no Hindsight server. The extension has no telemetry, no analytics SDKs, and makes zero outbound network requests until you explicitly click a Send button. Authorization tokens, cookies, passwords, credit cards and Turkish national IDs are masked at capture time — the original values are never written to your local storage. Hindsight yakaladıklarını sadece kendi cihazında tutar. Hindsight sunucusu yoktur. Eklenti telemetri toplamaz, analytics SDK içermez, sen bir Gönder butonuna açıkça basana kadar tek bir dış istek bile yapmaz. Authorization token'ları, çerezler, şifreler, kredi kartları ve TCKN'ler yakalama anında maskelenir — orijinal değerler yerel depolamana asla yazılmaz.
1. What we collect 1. Ne topluyoruz
When Hindsight is installed and enabled, content scripts inside the pages you visit and a service worker observe browser activity. Captures are categorised by tier: Hindsight yüklü ve aktifken, ziyaret ettiğin sayfalarda çalışan content script'ler ve bir service worker tarayıcı etkinliğini gözlemler. Yakalananlar katman katman ayrılır:
| Category | Kategori | Default | Varsayılan | Detail | Detay |
|---|---|---|---|---|---|
| Network requests | Ağ istekleri | On | Açık | Method, URL, headers, body, status, response. Sensitive fields masked at capture time (§3). | Method, URL, başlıklar, gövde, durum, yanıt. Hassas alanlar yakalama anında maskelenir (§3). |
| Console messages | Konsol mesajları | On | Açık | Level, message, stack trace. | Seviye, mesaj, stack trace. |
| Navigation events | Yönlendirme olayları | On | Açık | From-URL, to-URL, transition type. | Önceki URL, sonraki URL, geçiş tipi. |
| Clicks | Tıklamalar | On (Tier 2) | Açık (Tier 2) | Element tag, accessible name, position. | Element tag'i, erişilebilir ad, konum. |
| Form input changes | Form girdi değişiklikleri | On (Tier 2) | Açık (Tier 2) | Field name and type. Password / credit-card fields always masked. | Alan adı ve tipi. Şifre / kredi kartı alanları her zaman maskeli. |
| Screenshots on error | Hatada ekran görüntüsü | On (Tier 3) | Açık (Tier 3) | JPEG of visible tab at error moment; throttled to one per tab per 2s. | Hata anında görünür sekmenin JPEG'i; sekme başına 2 sn'de bir. |
| Performance signals | Performans sinyalleri | On (Tier 3) | Açık (Tier 3) | Long tasks > 100 ms, cumulative layout shift. | 100 ms üstü long task'lar, cumulative layout shift. |
| Cursor / scroll trail | İmleç / kaydırma izi | Off (Tier 4) | Kapalı (Tier 4) | Only while Recording Mode is explicitly active. | Sadece Kayıt Modu açıkken. |
| Periodic screenshots | Periyodik ekran görüntüleri | Off (Tier 4) | Kapalı (Tier 4) | 2-second JPEGs, recording mode only. | 2 saniyelik JPEG'ler, sadece kayıt modunda. |
Each tier is toggleable in Settings → Capture (except Tier 1, the bare minimum). Her katman Ayarlar → Capture'den açılıp kapatılır (Tier 1 hariç — eklentinin çalışması için zorunlu minimum).
2. Where it goes 2. Nereye gidiyor
Everything is stored in chrome.storage.local on your own device. There is no
Hindsight server. The repository that builds the extension is public and every line of
code that touches fetch() or chrome.runtime.sendMessage is
verifiable.
Her şey kendi cihazında chrome.storage.local'da saklanır. Hindsight sunucusu
yoktur. Eklentiyi üreten kod deposu herkese açıktır; fetch() veya
chrome.runtime.sendMessage çağıran her satır doğrulanabilir.
The service worker makes zero outbound HTTP requests of its own. The only fetches are: Service worker kendi başına tek bir dış HTTP isteği yapmaz. Fetch yapılan tek durumlar:
- A configured Slack / Discord / Teams webhook URL when you click Send on a captured event; Yakalanmış bir olayda Gönder'e bastığında, ayarladığın Slack / Discord / Teams webhook URL'sine yapılan istek;
- The "↻ Replay this request" button in the side panel, which re-fires a specific captured request from the extension context (without your real cookies — see §6). Yan paneldeki "↻ Replay this request" butonu — eklentinin context'inden belirli bir yakalanmış isteği yeniden gönderir (gerçek çerezlerin olmadan — bkz. §6).
3. Sensitive data — capture-time masking 3. Hassas veri — yakalama anında maskeleme
Sensitive values are masked at capture time, before the event is written to storage: Hassas değerler yakalama anında, olay depolamaya yazılmadan önce maskelenir:
-
Built-in header masking:
Authorization,Cookie,Set-Cookie,X-API-Key,X-Auth-Token,Proxy-Authorization. Yerleşik başlık maskeleme:Authorization,Cookie,Set-Cookie,X-API-Key,X-Auth-Token,Proxy-Authorization. - Built-in body pattern masking: Turkish national ID (TCKN, with checksum), credit cards (Luhn-validated 13–19 digits). Yerleşik gövde desen maskeleme: TCKN (kontrol haneli), kredi kartları (Luhn ile doğrulanmış 13–19 hane).
-
Built-in form masking:
<input type="password">, credit-card autocomplete fields, fields namedpassword/secret/token/ssn/pin. Yerleşik form maskeleme:<input type="password">, kredi kartı autocomplete alanları,password/secret/token/ssn/pinadlı alanlar. - User-defined body patterns — any regex you add in Settings → Privacy. Kullanıcı tanımlı gövde desenleri — Ayarlar → Privacy'den eklediğin her regex.
Matching values are replaced with the literal string ***MASKED*** before
persistence. The original is never written down, never embedded in the
screenshot, never copied to the HAR export, never included in any share payload. Mask
cannot be reversed — there is nothing to reverse to.
Eşleşen değerler kalıcı hale gelmeden ***MASKED*** string'i ile
değiştirilir. Orijinal değer asla yazılmaz; ekran görüntüsüne gömülmez,
HAR export'una kopyalanmaz, hiçbir paylaşım yüküne dahil edilmez. Maskelemenin tersine
dönmesi mümkün değildir — geri dönülecek bir kaynak yoktur.
You can disable individual rules in Settings → Privacy if you need raw values in your own captures. The disable is per-rule, per-future-capture, and the Settings page warns explicitly that captures recorded with a rule disabled will store the matched value verbatim on your machine. Kendi yakalamalarında ham değerleri görmen gerekiyorsa Ayarlar → Privacy'den belirli kuralları kapatabilirsin. Kapatma kural başına ve gelecek yakalamalar içindir; Ayarlar sayfası, bir kural kapalıyken yapılan yakalamaların eşleşen değeri olduğu gibi makinende saklayacağını açıkça uyarır.
4. The 7-day archive 4. 7 günlük arşiv
Closing a tab does not delete its captures — they move into a 7-day rolling archive in
chrome.storage.local. Entries older than 7 days are swept at service-worker
startup. You can also manually clear the archive (sidepanel → recents → Clear archive) or
reset everything (Settings → Advanced → Reset everything).
Bir sekmeyi kapatmak yakalananları silmez — 7 günlük bir arşive
(chrome.storage.local) taşır. 7 günden eski girişler service worker
başlangıcında temizlenir. Arşivi elle de boşaltabilirsin (yan panel → recents → Clear
archive) ya da her şeyi sıfırlayabilirsin (Ayarlar → Advanced → Reset everything).
5. Sharing — what we send when you click Send 5. Paylaşım — Gönder'e bastığında ne gönderiyoruz
- Webhook destinations (Slack / Discord / Teams): an HTTPS POST to the URL you configured, with the formatted bug report. Payload is the already-masked event from local storage. Webhook hedefleri (Slack / Discord / Teams): ayarladığın URL'ye formatlı hata raporuyla bir HTTPS POST. Yük, yerel depolamadaki zaten maskelenmiş olaydır.
- Web intents (GitHub Issue, mailto): a new browser tab is opened with a pre-filled body. The browser navigates; Hindsight does not POST anything itself. Web intent'ler (GitHub Issue, mailto): önceden doldurulmuş bir gövdeyle yeni bir tarayıcı sekmesi açılır. Yönlendirmeyi tarayıcı yapar; Hindsight kendisi bir şey POST etmez.
-
Replay bundle download: a single
.htmlfile is written to your computer viachrome.downloads. Nothing is uploaded. Replay paketi indirme:chrome.downloadsüzerinden bilgisayarına tek bir.htmldosya yazılır. Hiçbir şey yüklenmez. - ZIP export: same — local file write only. ZIP export: aynı — sadece yerel dosya yazımı.
- Copy to clipboard: the report is placed on your system clipboard. Nothing leaves until you paste. Panoya kopyala: rapor sistem panosuna konur. Sen yapıştırana kadar hiçbir şey ayrılmaz.
A confirmation dialog ("Privacy preview modal") shows the exact event count, redaction summary, and destination identity before every send. Her gönderim öncesinde bir onay diyaloğu ("Privacy preview modal") tam olay sayısını, maskeleme özetini ve hedef kimliğini gösterir.
6. Replay requests 6. Replay istekleri
The "↻ Replay this request" button re-fires a captured request from the extension's own
context. The fetch explicitly uses credentials: 'omit' and skips any header
whose stored value is ***MASKED***. Replayed auth-bound requests typically
return 401 / 403 — that's expected, the result panel labels it.
"↻ Replay this request" butonu yakalanmış bir isteği eklentinin kendi context'inden
yeniden gönderir. Fetch çağrısı açıkça credentials: 'omit' kullanır ve
depolanan değeri ***MASKED*** olan başlıkları atlar. Yeniden gönderilen auth
gerektiren istekler genellikle 401 / 403 döner — bu beklenen davranıştır ve sonuç paneli
bunu açıkça belirtir.
7. Permissions — why we ask for each 7. İzinler — neden istiyoruz
| Permission | İzin | Reason | Sebep |
|---|---|---|---|
storage |
Read and write the local capture buffer. | Yerel yakalama tamponunu okur ve yazar. | |
unlimitedStorage |
Allow buffers larger than 5 MB on heavy-browsing days. | Yoğun gezinme günlerinde 5 MB üstü tamponlara izin verir. | |
activeTab |
Inspect the tab the user is actively looking at. | Aktif olarak baktığın sekmeyi inceler. | |
scripting |
Inject content scripts that observe fetch / XHR / console. | fetch / XHR / console'u gözlemleyen content script'leri enjekte eder. | |
sidePanel |
Open the primary inspection UI. | Ana inceleme arayüzünü açar. | |
notifications
(opt-in) (opsiyonel)
|
Failure-cascade desktop notifications. Requested only when enabled. | Hata zinciri masaüstü bildirimleri. Sadece etkinleştirildiğinde istenir. | |
downloads
(opt-in) (opsiyonel)
|
Save replay-bundle HTML and ZIP exports. | Replay paketi HTML ve ZIP export'larını kaydeder. | |
tabs
(opt-in) (opsiyonel)
|
Read tab metadata for sidepanel + popup display. | Yan panel ve popup gösterimi için sekme metaverisi okur. | |
webNavigation
(opt-in) (opsiyonel)
|
Detect SPA route changes and reload events. | SPA yönlendirme değişiklikleri ve reload olaylarını tespit eder. | |
<all_urls>
(opt-in) (opsiyonel)
|
Run the content script on user pages so request interception works. | İstek yakalamanın çalışması için content script'i kullanıcı sayfalarında çalıştırır. |
8. Telemetry — none 8. Telemetri — yok
Hindsight collects no usage data, no error reports, no diagnostic pings. No Sentry, no
Google Analytics, no Mixpanel, no Amplitude, no Segment. Zero fetch() calls
to any Hindsight-owned domain. If this ever changes, it will require explicit opt-in via a
Settings checkbox before any data leaves your device, and this policy will be updated
first.
Hindsight kullanım verisi toplamaz, hata raporu toplamaz, teşhis pingi yapmaz. Sentry
yok, Google Analytics yok, Mixpanel yok, Amplitude yok, Segment yok. Hindsight'a ait
herhangi bir alana tek bir fetch() çağrısı yok. Bu durum bir gün değişirse,
herhangi bir veri cihazından ayrılmadan önce Ayarlar'da açık bir opt-in checkbox gerekir
ve bu politika önce güncellenir.
9. Cookies — none 9. Çerezler — yok
Hindsight does not set cookies. It does not store cookies on any external site. It reads
the Cookie request header of pages you visit only to mask its value before
persisting the network event locally.
Hindsight çerez oluşturmaz. Hiçbir dış sitede çerez tutmaz. Ziyaret ettiğin sayfaların
Cookie istek başlığını sadece — ağ olayını yerelde kalıcı hale getirmeden
önce — değerini maskelemek için okur.
10. Third-party services 10. Üçüncü taraf hizmetler
The extension itself ships with no third-party services bundled. At runtime, optional
features touch URLs you configure (your webhook, your mailto: URI). Hindsight
does not share these with anyone; they live in your local storage.
Eklenti üçüncü taraf hizmetlerle birlikte paketlenmez. Çalışma zamanında, opsiyonel
özellikler senin ayarladığın URL'lere ulaşır (webhook'un, mailto: URI'n).
Hindsight bunları kimseyle paylaşmaz; yerel depolamanda kalır.
11. Children's privacy 11. Çocukların gizliliği
Hindsight is a developer tool. It is not marketed to children and does not knowingly capture data from children. Hindsight bir geliştirici aracıdır. Çocuklara pazarlanmaz ve bilerek çocuklardan veri toplamaz.
12. Changes to this policy 12. Bu politikada değişiklikler
Material changes will be reflected in this document and called out in the extension's CHANGELOG. Önemli değişiklikler bu belgeye yansıtılır ve eklentinin CHANGELOG'unda özellikle belirtilir.
13. Contact 13. İletişim
Hindsight is open source. Bug reports, privacy questions, and vulnerability disclosures should go to the project's GitHub repository. Hindsight açık kaynaktır. Hata raporları, gizlilik soruları ve güvenlik açığı bildirimleri için projenin GitHub deposunu kullanın.
Hindsight is published under the MIT license. The source code is the canonical proof of what the extension does — every claim in this policy is verifiable by reading it. Hindsight MIT lisansıyla yayınlanmıştır. Kaynak kod, eklentinin ne yaptığının kanonik kanıtıdır — bu politikadaki her iddiayı okuyarak doğrulayabilirsin.