Jalre Time Tracker — Privacy Policy
This policy explains what data the Jalre Time Tracker Chrome extension processes, why, where it is stored, and how it is protected.
1) Single Purpose
The sole purpose of Jalre Time Tracker is to track time spent on Jira issues and save that time as a Jira worklog. All additional features (weekly calendar view, daily reports, work-day configuration, public-holiday display, daily summary notification) exist to support this single purpose.
2) Data We Process
- User-provided data: Worklog comments (optional), JQL preset queries you save, calendar settings (work days, daily goal, autosave interval, max-timer limit, country for public holidays), export column choices, language preference.
- Jira issue context: Issue key, issue summary, parent issue summary, status, issue type, project name, transitions — fetched live from Jira's REST API as needed. Only your own user's worklogs are retrieved (filtered by
worklogAuthor = currentUser()). - Timer state: Issue key, domain, running/paused flag, start timestamp, accumulated seconds, optional comment, optional live-worklog ID, session-only device ID (UUID) used to prevent double auto-save across devices.
- Account identifier: Your Atlassian
accountIdand display name, retrieved from/rest/api/3/myself. Used only to scope worklog queries to you and to read/write your own Jira user properties. Cached in memory for up to 5 minutes. - Avatar URL: Returned by Jira; rendered only if its hostname matches
*.atlassian.net,*.atlassian.comor*.gravatar.com. - Local diagnostics: Up to 500 log entries (timer events, sync results, errors). Hassasiyet için Bearer-style tokens, Atlassian PATs (
ATATT…) ve e-mail addresses are automatically redacted before being written. HTTP request/response bodies are not logged unless you explicitly enable Verbose mode in an unpacked-developer build. - What we do not collect: No passwords, no API tokens, no OAuth tokens, no analytics events, no telemetry, no tracking pixels, no third-party cookies, no advertising identifiers, no browsing history.
3) How We Use Data
- To start, pause, finish, and track time on a per-issue basis.
- To create or update Jira worklogs through your existing browser session.
- To list your worklogs for a chosen date or date range, on your request.
- To generate weekly calendar views and CSV / JSON / HTML reports — entirely client-side.
- To synchronise your own Jalre preferences across your devices via Jira User Properties (described below).
- To show a daily summary notification at 17:00 (if your browser permits notifications).
- To diagnose extension issues by writing local log entries (capped at 500).
Data is not used for advertising, profiling, machine-learning training, or any analytics beyond the stated purpose.
4) Where Your Data Lives
Jalre stores data in three places, all controlled by you:
| Location | What is stored | Notes |
|---|---|---|
chrome.storage.local |
Timer state, settings, JQL presets, status configuration, work-day choices, daily goal, language, local logs. | Stored on this device only. Cleared when the extension is uninstalled. Not synced via Google account. |
chrome.storage.session |
Short-lived cache: Jira status list, issue type list, current-report payload. | Automatically cleared when the browser closes. |
| Jira User Property (cloud) | Two properties on your own Jira account: jalre_settings (your preferences) and jalre_timer (the latest timer state for cross-device continuity). |
Lives inside your Atlassian account, governed by your organisation's Atlassian retention. Deletable in-app via "Delete Jira Configuration". |
Migration note: earlier versions used chrome.storage.sync (Google account sync). Since v1.1.1 this has been removed entirely so project-related data does not transit through Google's sync infrastructure. The broad tabs permission was additionally dropped in v1.1.2.
5) Data Sharing
This extension shares data only with the parties strictly required to perform its function:
- Atlassian (your Jira instance): All worklog reads / writes, status transitions, and user-property reads / writes go to
https://*.atlassian.netusing your existing browser session cookie. - date.nager.at (optional): If — and only if — you enable the "Public Holidays" toggle and choose a country, the calendar fetches that country's public-holiday list from
https://date.nager.at/api/v3/PublicHolidays/<year>/<ISO-country>. No personal data is sent; just the year and two-letter country code. The toggle is off by default. Aggressive caching: Responses are kept inside a singlejalre_holiday_cacheentry inchrome.storage.local, keyed by country + year with an independent 30-day TTL per entry. If you switch from country A to country B and later back to A, the cached A data is reused (no extra API call). Cache hits and misses are recorded in the local log so you can see which country/year was fetched. - Chrome / Google: Only via Chrome Extension APIs (
storage,alarms,notifications,i18n) running on your device. Google does not receive Jalre-specific data.
No data is sold, transferred to data brokers, used for personalised advertising, or used for credit assessment. There is no Jalre server. Note: The broad tabs permission was removed in v1.1.2 — Jalre now relies only on the narrower host_permissions for *.atlassian.net, so the extension can no longer see the URLs or titles of non-Jira tabs.
6) Permissions & Justifications
chrome.storage.local and chrome.storage.session are used.
https://*.atlassian.net/*— your Jira instancehttps://date.nager.at/*— public-holiday list (only contacted when the holiday toggle is on)
7) Authentication
- Jalre does not implement OAuth, password storage, or API-token storage.
- All Jira API calls run inside a content script on a tab where you are already signed in to Jira, and they use that tab's session cookie via standard
fetch(..., { credentials: 'include' }). - When you sign out of Jira in the browser, the extension immediately loses access until you sign back in.
8) Data Retention
- Local storage entries persist on your device until you uninstall the extension, clear extension data via
chrome://extensions, or use the in-app "Delete Jira Configuration" / clear-logs actions. - Local logs are capped at 500 entries; older entries are automatically discarded.
- The
chrome.storage.sessioncache is cleared when the browser closes. - Jira-side worklog data and user properties are retained according to Atlassian's policies and your organisation's configuration. Jalre does not control retention on the Jira side.
9) Remote Code Policy
The extension does not load or execute remote code (no remote JavaScript, no remote WebAssembly, no remote stylesheets injected as code). All executable code is packaged inside the extension and is reviewed by the Chrome Web Store. The Content Security Policy is restricted to script-src 'self', object-src 'none', and connect-src limited to the two host patterns listed above.
10) Security Measures
- Input validation: Issue keys, Jira domains, worklog IDs, JQL queries, and imported settings files are all checked against strict regex / schema validators before any API call.
- Prototype-pollution defence: Settings imported from JSON files are filtered through a key-whitelist into a null-prototype object; dangerous keys (
__proto__,constructor,prototype) are rejected outright. - JQL injection defence: Length-limited and blacklist-checked before any search call.
- API allow-list: Only paths starting with
/rest/api/2/or/rest/api/3/are allowed to reach Jira. - Log sanitisation: Bearer tokens, Atlassian PATs (
ATATT…), and e-mail addresses are stripped from log entries before they are written. Request and response bodies are not logged in published builds. Before exporting logs, you are warned about content-sensitivity. - Origin checks: The content script accepts messages only from this extension; the background service worker accepts messages only from the same extension ID.
- Avatar URL whitelist: Only HTTPS avatar URLs on
*.atlassian.net,*.atlassian.com, or*.gravatar.comare rendered. - Independent audit: A full static-analysis security audit was performed; the report is available alongside the source code as
docs/SECURITY_AUDIT_REPORT.md.
11) User Rights & Choices
You may at any time:
- Uninstall the extension; this removes
chrome.storage.localdata. - Use the in-app Delete Jira Configuration button to wipe the Jira user-property side.
- Clear the local diagnostic log from the Logs page.
- Disable the "Public Holidays" toggle to stop any contact with
date.nager.at. - Revoke browser-level notification permission at any time.
For questions or concerns, contact: mustafa@onderyazilim.com.
12) Policy Changes
This policy may be updated as the extension evolves. The current version is shown above as "Last updated" and "Version".
13) Chrome Web Store User Data Policy
Jalre Time Tracker complies with the Chrome Web Store Limited Use of User Data requirements. All data processed by the extension is used exclusively to fulfil the single purpose stated in section 1, is handled within the user's own browser, and is never transferred to any third party other than the Atlassian instance the user is signed in to. The extension is offered on the Chrome Web Store at this page.
Jalre Time Tracker — Gizlilik Politikası
Bu politika, Jalre Time Tracker Chrome uzantısının hangi verileri işlediğini, neden işlediğini, nerede sakladığını ve nasıl koruduğunu açıklar.
1) Tek Amaç
Jalre Time Tracker'ın tek amacı, Jira issue sayfalarında geçen süreyi ölçmek ve bu süreyi Jira worklog olarak kaydetmektir. Tüm ek özellikler (haftalık takvim, raporlar, çalışma günleri, resmi tatil göstergesi, günlük özet bildirimi) bu tek amacı desteklemek için vardır.
2) Hangi Verileri İşliyoruz
- Kullanıcının girdiği veriler: Worklog yorumu (opsiyonel), kaydettiğiniz JQL preset'leri, takvim ayarları (çalışma günleri, günlük hedef, otomatik kayıt aralığı, maks. zamanlayıcı süresi, resmi tatil için ülke), rapor sütun seçimi, dil tercihi.
- Jira issue bağlamı: Issue anahtarı, özeti, üst görev özeti, statü, issue type'ı, proje adı, transitions — gerektiğinde Jira REST API'sinden anlık olarak çekilir. Yalnızca kendi kullanıcınızın worklog'ları sorgulanır (
worklogAuthor = currentUser()filtresi). - Zamanlayıcı durumu: Issue anahtarı, domain, çalışıyor/duruyor durumu, başlangıç zaman damgası, biriken saniyeler, opsiyonel yorum, opsiyonel canlı-worklog ID'si ve çoklu cihazda çift kayıt önlemek için kullanılan oturum-içi UUID.
- Hesap tanımlayıcı:
/rest/api/3/myselfüzerinden AtlassianaccountIdve görünen ad. Yalnızca kendi worklog'larınıza filtre uygulamak ve kendi Jira user property'lerinizi okumak/yazmak için kullanılır. Bellekte en fazla 5 dakika önbelleklenir. - Avatar URL'si: Jira'dan döner; yalnızca
*.atlassian.net,*.atlassian.comveya*.gravatar.comhostname'lerine uyarsa gösterilir. - Yerel tanılama: En fazla 500 log girişi (zamanlayıcı olayları, sync sonuçları, hatalar). Bearer-style token'lar, Atlassian PAT'leri (
ATATT…) ve e-mail adresleri yazılmadan önce otomatik olarak gizlenir. HTTP request/response gövdeleri yayınlanmış sürümde loglanmaz; yalnızca paketlenmemiş geliştirici sürümünde Verbose mod açılırsa kaydedilir. - Toplamadığımız veriler: Parola, API token, OAuth token, analytics olayları, telemetri, tracking piksel, üçüncü taraf çerez, reklam tanımlayıcısı veya tarama geçmişi yok.
3) Verileri Nasıl Kullanıyoruz
- Zamanlayıcıyı başlatmak, duraklatmak, bitirmek ve issue bazında süre tutmak için.
- Jira worklog oluşturmak veya güncellemek için (mevcut tarayıcı oturumunuz kullanılır).
- Sizin talebinizle, seçilen tarih veya tarih aralığındaki worklog'larınızı listelemek için.
- Haftalık takvim görünümü ve CSV / JSON / HTML raporları üretmek için — tamamen istemci tarafında.
- Kendi cihazlarınız arasında ayarlarınızı Jira User Property üzerinden eşitlemek için (aşağıda anlatılıyor).
- Tarayıcı izin verirse her gün 17:00'da günlük özet bildirimi göstermek için.
- Uzantı sorunlarını tanılamak amacıyla yerel log yazmak için (en fazla 500 giriş).
Veriler; reklam, profilleme, makine öğrenmesi eğitimi veya açıklanan amaç dışı analytics için kullanılmaz.
4) Veriler Nerede Tutulur
Jalre, verileri tamamen sizin kontrolünüzde olan üç yerde saklar:
| Yer | İçerik | Notlar |
|---|---|---|
chrome.storage.local |
Zamanlayıcı durumu, ayarlar, JQL preset'leri, statü konfigürasyonu, çalışma günleri, günlük hedef, dil, yerel loglar. | Yalnızca bu cihazda saklanır. Uzantı kaldırıldığında silinir. Google hesabı üzerinden sync edilmez. |
chrome.storage.session |
Kısa ömürlü önbellek: Jira statü listesi, issue type listesi, geçici rapor verisi. | Tarayıcı kapanınca otomatik silinir. |
| Jira User Property (bulut) | Kendi Jira hesabınızda iki property: jalre_settings (tercihleriniz) ve jalre_timer (cihazlar arası süreklilik için en son zamanlayıcı durumu). |
Atlassian hesabınızın içindedir; kuruluşunuzun Atlassian saklama politikalarına tabidir. Uygulama içinden "Jira Konfigürasyonunu Sil" ile kaldırılabilir. |
Geçiş notu: Önceki sürümler chrome.storage.sync (Google hesap senkronizasyonu) kullanıyordu. v1.1.1 itibarıyla bu tamamen kaldırıldı; böylece projeye ait veriler Google'ın sync altyapısından geçmiyor. Geniş kapsamlı tabs izni de v1.1.2'de kaldırıldı.
5) Verileri Kimlerle Paylaşıyoruz
Uzantı, verileri yalnızca işlevini gerçekleştirmek için gereken taraflarla paylaşır:
- Atlassian (sizin Jira ortamınız): Tüm worklog okuma / yazma, statü transition'ları ve user-property okuma / yazma işlemleri, mevcut tarayıcı oturum çerezinizi kullanarak
https://*.atlassian.net'e gider. - date.nager.at (opsiyonel): Yalnızca "Resmi Tatil" anahtarını açıp bir ülke seçerseniz, takvim o ülkenin resmi tatil listesini
https://date.nager.at/api/v3/PublicHolidays/<yıl>/<ISO-ülke>adresinden çeker. Kişisel veri gönderilmez; yalnızca yıl ve iki harfli ülke kodu gider. Anahtar varsayılan olarak kapalıdır. Agresif önbellekleme: Yanıtlarchrome.storage.localiçinde tek birjalre_holiday_cachegirişi altında, ülke + yıl anahtarlı ve her giriş için bağımsız 30 gün TTL ile saklanır. A ülkesinden B'ye geçip tekrar A'ya dönerseniz A için önbelleğe alınan veriler yeniden kullanılır (ekstra API çağrısı yok). Cache HIT/MISS olayları yerel log'a düşer, böylece hangi ülke/yıl için API'ye gidildiği görülebilir. - Chrome / Google: Yalnızca cihazınızda çalışan Chrome Extension API'leri (
storage,alarms,notifications,i18n) aracılığıyla. Google'a Jalre'ye özel veri gönderilmez.
Hiçbir veri satılmaz, veri brokerlarına aktarılmaz, kişiye özel reklam veya kredi değerlendirmesi için kullanılmaz. Jalre'ye ait bir sunucu yoktur. Not: Geniş kapsamlı tabs izni v1.1.2'de kaldırıldı — Jalre artık yalnızca *.atlassian.net için tanımlı host_permissions ile çalışır, dolayısıyla Jira dışı sekmelerin URL veya başlıklarını görme yetkisi yoktur.
6) İzinler ve Gerekçeleri
chrome.storage.local hem de chrome.storage.session kullanılır.
https://*.atlassian.net/*— Jira ortamınızhttps://date.nager.at/*— resmi tatil listesi (yalnızca tatil anahtarı açıkken erişilir)
7) Kimlik Doğrulama
- Jalre OAuth, parola saklama veya API-token saklama uygulamaz.
- Tüm Jira API çağrıları, sizin zaten Jira'ya giriş yaptığınız bir sekmedeki content script içinde çalışır ve standart
fetch(..., { credentials: 'include' })ile o sekmenin oturum çerezini kullanır. - Tarayıcıda Jira'dan çıkış yaptığınız anda, tekrar giriş yapana kadar uzantı erişimi kaybeder.
8) Veri Saklama Süreleri
- Yerel depolama girişleri; uzantıyı kaldırana,
chrome://extensionsüzerinden uzantı verisini temizleyene veya uygulama içi "Jira Konfigürasyonunu Sil" / "Logları Temizle" eylemlerini kullanana kadar saklanır. - Yerel loglar en fazla 500 giriş ile sınırlıdır; eski girişler otomatik düşer.
chrome.storage.sessionönbelleği tarayıcı kapanınca silinir.- Jira tarafındaki worklog verisi ve user property'ler, Atlassian politikalarına ve kuruluşunuzun konfigürasyonuna göre saklanır. Jalre, Jira tarafındaki saklama sürelerini kontrol etmez.
9) Uzak Kod Politikası
Uzantı uzaktan kod yükleyip çalıştırmaz (uzaktan JavaScript, uzaktan WebAssembly veya kod olarak enjekte edilen uzak stil yok). Tüm çalıştırılabilir kod uzantı paketinin içindedir ve Chrome Web Store tarafından incelenir. Content Security Policy script-src 'self', object-src 'none' ve connect-src yalnızca yukarıdaki iki host kalıbı ile sınırlıdır.
10) Güvenlik Önlemleri
- Girdi doğrulama: Issue anahtarları, Jira domain'leri, worklog ID'leri, JQL sorguları ve içe aktarılan ayar dosyaları, herhangi bir API çağrısından önce katı regex / şema doğrulayıcılarından geçer.
- Prototype-pollution savunması: JSON dosyalarından içe aktarılan ayarlar, anahtar whitelist'i ve null-prototype hedef objesi üzerinden filtrelenir; tehlikeli anahtarlar (
__proto__,constructor,prototype) doğrudan reddedilir. - JQL injection savunması: Tüm arama çağrılarından önce uzunluk sınırı ve blacklist kontrolü uygulanır.
- API allow-list: Jira'ya yalnızca
/rest/api/2/veya/rest/api/3/ile başlayan path'lere izin verilir. - Log temizleme: Bearer token'lar, Atlassian PAT'leri (
ATATT…) ve e-mail adresleri, log girişlerine yazılmadan önce maskelenir. Yayınlanan sürümlerde request / response gövdeleri loglanmaz. Logları dışa aktarmadan önce içerik hassasiyeti hakkında uyarılırsınız. - Origin kontrolleri: Content script yalnızca bu uzantıdan gelen mesajları kabul eder; background service worker yalnızca aynı uzantı kimliğinden gelen mesajları kabul eder.
- Avatar URL whitelist: Yalnızca
*.atlassian.net,*.atlassian.comveya*.gravatar.comüzerindeki HTTPS avatar URL'leri görüntülenir. - Bağımsız audit: Tam statik-analiz güvenlik denetimi gerçekleştirilmiştir; rapor kaynak kodla birlikte
docs/SECURITY_AUDIT_REPORT.mddosyasında yayınlanmıştır.
11) Kullanıcı Hakları ve Seçimler
İstediğiniz zaman şunları yapabilirsiniz:
- Uzantıyı kaldırın; bu,
chrome.storage.localverisini siler. - Uygulama içindeki Jira Konfigürasyonunu Sil butonu ile Jira user-property tarafını temizleyin.
- Loglar sayfasından yerel tanılama loglarını temizleyin.
date.nager.atile herhangi bir iletişimi durdurmak için "Resmi Tatil" anahtarını kapatın.- Tarayıcı düzeyinde bildirim iznini istediğiniz an iptal edin.
Sorularınız veya itirazlarınız için: mustafa@onderyazilim.com.
12) Politika Değişiklikleri
Bu politika, uzantı geliştikçe güncellenebilir. Geçerli sürüm yukarıdaki "Son güncelleme" ve "Sürüm" alanlarında gösterilir.
13) Chrome Web Store User Data Policy Beyanı
Jalre Time Tracker, Chrome Web Store Limited Use of User Data gereksinimlerine uygundur. Uzantının işlediği tüm veriler, yalnızca 1. bölümde belirtilen tek amacı yerine getirmek için kullanılır, kullanıcının kendi tarayıcısında işlenir ve kullanıcının giriş yaptığı Atlassian ortamı dışında hiçbir üçüncü tarafa aktarılmaz. Uzantı, Chrome Web Store'da bu sayfada yayınlanmaktadır.