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.

Last updated: - Version: 1.1.2 Chrome Web Store ↗ Contact: mustafa@onderyazilim.com
The short version. Jalre runs entirely in your browser. It does not have its own server. It does not collect or sell your data. It does not store API tokens or passwords. All time tracking happens locally and is written directly to your own Jira instance using your existing browser session.

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 accountId and 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.com or *.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:

LocationWhat is storedNotes
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.net using 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 single jalre_holiday_cache entry in chrome.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

Used to store timer state, preferences, the holiday cache, and local diagnostic logs on this device. Both chrome.storage.local and chrome.storage.session are used.
Used to schedule (1) the periodic auto-save of the live worklog, (2) the keep-alive ping that prevents the Manifest V3 service worker from sleeping while a timer is running, (3) the daily 17:00 summary, and (4) the max-timer auto-stop.
Used exclusively for the daily 17:00 summary notification showing today's total tracked time. No other notifications are ever sent. You may revoke this permission in Chrome at any time.
The extension only declares access to the following hosts:
  • https://*.atlassian.net/* — your Jira instance
  • https://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.session cache 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.com are 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.local data.
  • 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.

Son güncelleme: - Sürüm: 1.1.2 Chrome Web Store ↗ İletişim: mustafa@onderyazilim.com
Özetle. Jalre tamamen tarayıcınızda çalışır. Kendi sunucusu yoktur. Verilerinizi toplamaz veya satmaz. API token veya parola saklamaz. Tüm zaman takibi yerel olarak yapılır ve mevcut tarayıcı oturumunuz kullanılarak doğrudan kendi Jira ortamınıza yazılır.

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 Atlassian accountId ve 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.com veya *.gravatar.com hostname'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İçerikNotlar
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ıtlar chrome.storage.local içinde tek bir jalre_holiday_cache giriş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

Zamanlayıcı durumu, tercihler, resmi tatil önbelleği ve yerel tanılama loglarını cihazda saklamak için. Hem chrome.storage.local hem de chrome.storage.session kullanılır.
Şunları planlamak için: (1) canlı worklog'un periyodik otomatik kaydı, (2) zamanlayıcı çalışırken Manifest V3 service worker'ın uykuya geçmesini engelleyen keep-alive sinyali, (3) günlük 17:00 özeti, (4) maksimum zamanlayıcı otomatik durdurma.
Yalnızca günlük 17:00 özet bildirimi (bugün toplam takip edilen süreyi gösterir) için kullanılır. Başka hiçbir bildirim gönderilmez. Bu izni Chrome içinden istediğiniz an iptal edebilirsiniz.
Uzantı yalnızca aşağıdaki host'lara erişim talep eder:
  • https://*.atlassian.net/* — Jira ortamınız
  • https://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.com veya *.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.md dosyası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.local verisini 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.at ile 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.