298 Commits

Author SHA1 Message Date
am0
3512386b2b refactor: migracja wywołań API przeglądarki do abstrakcji browserAPI
Zmigrowano wszystkie bezpośrednie wywołania browser.* API do zunifikowanej abstrakcji browserAPI, umożliwiając budowanie rozszerzenia zarówno dla Firefox (browser.browserAction) jak i Chrome (chrome.action) z jednego kodu źródłowego.

## Zmigrowane pliki aplikacji (4):

### 1. memory.ts
Dodano import:
- import browserAPI from ./lib/browser-api

Zastąpiono wywołania API:
- browser.browserAction.setBadgeText → browserAPI.badge.setBadgeText
- browser.browserAction.setTitle → browserAPI.badge.setTitle
- browser.browserAction.setBadgeBackgroundColor → browserAPI.badge.setBadgeBackgroundColor
- browser.webRequest.onBeforeRequest.addListener → browserAPI.webRequest.onBeforeRequest.addListener
- browser.webRequest.onBeforeSendHeaders.addListener → browserAPI.webRequest.onBeforeSendHeaders.addListener
- browser.cookies.getAll → browserAPI.cookies.getAll
- browser.cookies.remove → browserAPI.cookies.remove
- browser.extension.getBackgroundPage() → browserAPI.extension.getBackgroundPage()

Dodano obsługę null:
- Funkcja getMemory() sprawdza teraz czy getBackgroundPage() nie zwraca null

### 2. components/toolbar/toolbar.tsx
Dodano import:
- import browserAPI from ../../lib/browser-api

Zastąpiono wywołania API:
- browser.tabs.query → browserAPI.tabs.query
- browser.windows.WINDOW_ID_CURRENT → browserAPI.windows.WINDOW_ID_CURRENT
- browser.tabs.onUpdated.addListener → browserAPI.tabs.onUpdated.addListener
- browser.tabs.onUpdated.removeListener → browserAPI.tabs.onUpdated.removeListener

Zachowano całą funkcjonalność:
- Wszystkie sekcje UI (header, summary z licznikami, details, about, actions)
- Wszystkie hooki React i logika biznesowa
- Funkcje pomocnicze (getCurrentTab, isDomainHighlySuspicious, autoMark)

### 3. components/tab-dropdown.tsx
Zmieniono importy:
- Usunięto: import { Tab } from ../../util
- Dodano: import browserAPI, { Tab } from ../../lib/browser-api

Zastąpiono wywołania API:
- browser.tabs.query({ currentWindow: true }) → browserAPI.tabs.query({ currentWindow: true })

Poprawka typów:
- Typ Tab teraz pochodzi z browserAPI, zapewniając zgodność typów

### 4. util.ts
Dodano import:
- import browserAPI from ./lib/browser-api

Zastąpiono wywołania API:
- Typ Tab pochodzi teraz z browserAPI.tabs.query zamiast browser.tabs.query
- browser.tabs.query({ currentWindow: true }) → browserAPI.tabs.query({ currentWindow: true }) w funkcji getTabByID

Zachowano wszystkie funkcje:
- getshorthost, useEmitter, parseCookie, getTabByID
- parseToObject, isJSONObject, isURL, hyphenate, unique
- allSubhosts, reduceConcat, getDate, toBase64, makeThrottle
- isSameURL, isBase64, isBase64JSON
- flattenObject, flattenObjectEntries
- maskString, safeDecodeURIComponent, normalizeForClassname
- wordlist, dataLocationToText, downloadText

## Rozszerzenie abstrakcji browserAPI:

### lib/browser-api/types.ts
Dlaczego rozszerzono:
Początkowy minimalny interfejs RequestDetails był niewystarczający, ponieważ brakowało kluczowych właściwości wymaganych przez konstruktor ExtendedRequest. Gdy listenery webRequest są wywoływane, przekazują kompletny obiekt Request do ExtendedRequest, a nie tylko podstawowe szczegóły.

Co zostało dodane:
Pełny typ Request z util.ts, zawierający:
- Właściwości główne: requestId, tabId, url, method, type
- Nawigacja ramek: frameId, parentFrameId, documentUrl, originUrl
- Opcjonalne metadane: cookieStoreId, incognito, thirdParty, timeStamp
- Szczegóły żądania: requestHeaders, urlClassification, proxyInfo

Przyczyna źródłowa błędów TypeScript:
Konstruktor ExtendedRequest oczekiwał właściwości takich jak frameId, method,
originUrl, parentFrameId, documentUrl, urlClassification, etc. Minimalny
interfejs powodował błędy:
- Argument of type RequestDetails is not assignable to parameter of type Request
- Type RequestDetails is missing properties: frameId, method, originUrl, parentFrameId, and 4 more

Rozwiązanie:
Używając pełnej definicji typu Request, abstrakcja browserAPI poprawnie typuje callbacki webRequest, zapewniając bezpieczeństwo typów zarówno dla buildu Firefox jak i Chrome, przy zachowaniu kompatybilności z istniejącą implementacją ExtendedRequest.

Zmiana w RequestListener:
- Było: (details: RequestDetails) => void
- Jest: (details: Request) => void

## Wpływ zmian:
- memory.ts, toolbar.tsx, tab-dropdown.tsx, util.ts działają z TARGET=firefox i TARGET=chrome
- Zachowano bezpieczeństwo typów w całym kodzie
- Brak zmian funkcjonalnych - tylko warstwa abstrakcji
- Gotowość do kompatybilności z Chrome Manifest V3 (chrome.action vs browser.browserAction)

## Następne kroki:
- Aktualizacja esbuild.config.js dla budowania z TARGET=chrome do dist-chrome/
- Aktualizacja manifestu Chrome zgodnie z regułami Manifest v3
- Skrypt konwertujący SVG na PNG dla Chrome
- Testowanie rozszerzenia w przeglądarce Chrome
2025-09-30 12:17:18 +02:00
am0
e1d9b8c874 feat(lib/browser-api): dodaj warstwę abstrakcji Browser API dla wsparcia Chrome i Firefox
Wprowadza infrastrukturę umożliwiającą budowanie rozszerzenia dla Chrome i Firefox z jednej bazy kodu. Mapuje różnice w API między przeglądarkami na ujednolicone interfejsy.

ZMIANY:
* lib/browser-api/types.ts - typy oparte na analizie rzeczywistego użycia API w kodzie
* lib/browser-api/firefox.ts - adapter mapujący browser.* na BrowserAPI
* lib/browser-api/chrome.ts - adapter mapujący chrome.* na BrowserAPI
* lib/browser-api/index.ts - build-time selection adaptera na podstawie TARGET

KLUCZOWE RÓŻNICE OBSŁUŻONE:
- Firefox: browser.browserAction.* vs Chrome: chrome.action.*
- Firefox: browser.tabs.* vs Chrome: chrome.tabs.*
- Firefox: browser.cookies.* vs Chrome: chrome.cookies.*
- Firefox: browser.webRequest.* vs Chrome: chrome.webRequest.*

TYPY OPARTE NA FAKTYCZNYM UŻYCIU:
Przeanalizowano 4 pliki używające browser API:
- memory.ts: badge, webRequest, cookies, extension API
- toolbar.tsx: tabs.query, tabs.onUpdated, windows.WINDOW_ID_CURRENT
- tab-dropdown.tsx: tabs.query
- util.ts: tabs.query

STATUS: Preparatory change - istniejący kod pozostaje niezmieniony.
Kolejne commity będą refaktorować pliki do używania nowej abstrakcji.

TARGET: Umożliwienie
> rentgen@0.1.10 build:firefox
> TARGET=firefox node esbuild.config.js

Add-on was built i
> rentgen@0.1.10 build:chrome
> TARGET=chrome node esbuild.config.js

Add-on was built
2025-09-08 10:50:09 +02:00
am0
95bb5248ef fix(ikony png): W repo będziemy trzymać tylko oryginalne ikony svg, a skalować i konwertować przy buildzie 2025-09-07 15:38:51 +02:00
d167a2138c style(icons): konwersja ikon svg na png kompatybilne z Chrome
Wygenerowanie wersji PNG (16px, 20px i 24px) wszystkich ikon SVG przy użyciu komendy Inkscape z wiersza poleceń

Główna ikona wtyczki (dla manifest.json) Chrome oczekuje konkretnych rozmiarów, stadndardowych dla Chrome (16, 32, 48, 128), ale ikony interfejsu (używane wewnątrz stron rozszerzenia) Chrome mogą mieć dowolny rozmiar, ponieważ to zwykłe obrazy w HTML. Ustawiłem je zgodnie z naszymi obecnymi rozmiarami (16, 20, 24px)

użyta komenda for svg in assets/icons/*.svg; do basename=$(basename "$svg" .svg); for size in 16 20 24; do inkscape --export-type=png --export-width=$size --export-height=$size --export-background-opacity=0 "$svg" --export-filename="assets/icons/${basename}-${size}.png"; done; done
2025-08-29 11:04:16 +02:00
am0
a617d82716 chore(package.json): początek dodawania abstrakcji w build-time
- wprowadzenie rozróżnienia w buildach dla firefox i chrome
- dodanie @types/chrome do rozpoznania przez typescript
2025-08-11 17:58:30 +02:00
546233e093 Prawo telekomunikacyjne → Prawo Komunikacji Elektronicznej
Dzięki @kayo77@pol.social za sygnał, aby to poprawić
2025-07-19 15:31:46 +02:00
ea70d26a38 Update 'README.md' 2023-09-26 23:05:42 +02:00
1680026bc4 Typos 2023-06-21 17:14:40 +02:00
d5a8172759 Fix typos 2023-06-21 17:14:07 +02:00
039698264a Bardziej podejrzane domeny dawaj na początku w toolbarze 2023-03-22 15:51:07 +01:00
7cf1b95461 Update 'README.md' 2023-02-17 10:37:40 +01:00
799f17eac8 Add mozilla addons link 2023-02-14 20:34:21 +01:00
5c96a7f4cb Bump version 0.1.10 2022-09-25 14:04:51 +02:00
32107f0ebc Dodanie explainerów dot. cookies na podstawie komentarzy, od których
odwołał się WSA w uzasadnieniu wyroku w sprawie z iSecure
2022-09-25 14:03:06 +02:00
3910b5c67e Update version 0.1.9 2022-09-12 11:44:29 +02:00
b2487c0511 Merge pull request 'Fix sometimes not being able to uncheck a domain - Fixes #92' (#101) from fix-checkbox into develop
Reviewed-on: #101
2022-09-12 09:48:04 +02:00
1106e86b41 Merge pull request 'Problem: nieznany cel. Dodanie narzędzi diagnostycznych' (#99) from unknown-purpose into develop
Reviewed-on: #99
2022-09-12 09:47:52 +02:00
c16e8f3d7c Merge pull request 'Poprawa zaznaczania kawałków danych - teraz nie trzeba klikać na' (#95) from #64 into develop
Reviewed-on: #95
2022-09-12 09:47:11 +02:00
aae1a7e970 HOTFIX: nie działały URL-e, które mają '#' 2022-09-02 22:07:04 +02:00
3a32456534 Fix $ typo 2022-09-01 07:47:16 +02:00
67544a4bff Finish broken sentence 2022-08-31 21:23:35 +02:00
e3f4f8858d Fix rentgen being fooled with a "=" in cookie value (e.g. the NID cookie on google.com) 2022-08-31 09:50:37 +02:00
e3d6e6b83c Ikonka cookiesów przy tych domenach, które mają entriesy z cookiesami 2022-08-16 14:08:13 +02:00
cc713004b0 Fix sometimes not being able to uncheck a domain - Fixes #92 2022-08-14 12:55:21 +02:00
ea59a506f8 Problem: nieznany cel. Fixes #68 #97 2022-08-13 22:42:50 +02:00
65e1ab2ecc Poprawa zaznaczania kawałków danych - teraz nie trzeba klikać na
checkbox, wystarczy klikać na labelkę
2022-07-31 16:05:48 +02:00
5f29730613 Zmiana wordingu w problemie z administratorem. Wyświetlanie pytania o
konieczność w większej ilości przypadków
2022-07-31 16:01:01 +02:00
8fe2083d8d Update 'README.md' 2022-07-16 23:59:21 +02:00
Arkadiusz Wieczorek
45d87bc2a7 Bump version 0.1.8 2022-07-15 14:15:19 +02:00
09dfe8d63a Change domain of screenshot service 2022-07-15 14:14:42 +02:00
Arkadiusz Wieczorek
6ec2722e59 Update package-lock.json 0.1.7 2022-07-15 14:10:31 +02:00
Arkadiusz Wieczorek
78f6dbb7a6 Bump version 2022-07-15 14:09:45 +02:00
Arkadiusz Wieczorek
3d9711b605 Fix typo 2022-07-15 14:06:28 +02:00
Arkadiusz Wieczorek
2e136a7ad5 Bump version 2022-07-15 12:34:38 +02:00
Arkadiusz Wieczorek
09cab7dee3 Bump version 0.1.6 2022-07-15 12:32:56 +02:00
adf82b3dd6 Send to screenshot service only the domains that are marked 2022-07-15 12:11:24 +02:00
520a26923e Reduce live preview flicker. Make the preview the first item 2022-07-15 12:11:11 +02:00
7c4de6fc5c Use thumnbails instead of full screenshots for previews 2022-07-15 12:10:10 +02:00
4163bf3cf7 Change preview width so it fits the entire screenshot 2022-07-15 12:09:29 +02:00
Arkadiusz Wieczorek
4f17c5164a Fix address bar animation 2022-07-15 10:53:26 +02:00
Arkadiusz Wieczorek
1c773becf3 Add live preview 0.1.5 2022-07-15 10:25:20 +02:00
8dc9953818 Delete file 2022-07-14 23:52:19 +02:00
0cebdd78f5 Update 'README.md' 2022-07-14 23:20:25 +02:00
9d711ccdbb Upload files to 'assets/screenshots' 2022-07-14 23:18:44 +02:00
Arkadiusz Wieczorek
fddf8b4de1 Adjust css styles 0.1.4 2022-07-14 23:05:45 +02:00
388f512a1e Podmiana linku do addona 2022-07-14 22:43:46 +02:00
10038467ae Notka informacyjna o screenshotach 2022-07-14 22:43:33 +02:00
057beb3ecd Mention github 2022-07-11 17:07:01 +02:00
d306565376 Wspomnienie o Prawie Telekomunikacyjnym w dropdownie - bo badamy nie
tylko zgodnośc z samym RODO
2022-07-11 15:29:43 +02:00
Arkadiusz Wieczorek
0d9226ad1f Survey fixes 0.1.3 2022-07-10 13:52:48 +02:00