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
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
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
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