Converted bash test script to Python for better maintainability:
- Guard clause pattern replaces nested if statements
- Early returns for cleaner control flow
- Type hints for better documentation
- Proper error handling and cleanup
- More readable and testable code structure
Features:
- Starts Xvfb and web-ext
- Waits for extension installation
- Checks for JavaScript errors
- Verifies debugger connectivity
- Clean process termination
Usage: scripts/test_verify.py
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Translated Polish code comments in:
- components/report-window/problems/unlawful-cookies.tsx
- lib/browser-api/index.ts
- lib/browser-api/firefox.ts
- lib/browser-api/chrome.ts
- lib/browser-api/types.ts
Note: UI strings remain in Polish as per project language policy
(extension is designed for Polish users)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added Makefile section with verify, clean, and help targets
- Updated docker-compose commands to use 'docker compose' (v2 syntax)
- Added rentgen_verify service documentation
- Marked Makefile as recommended for testing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added:
- Makefile with verify target that runs docker compose
- New 'verify' stage in Dockerfile for automated testing
- Added rentgen_verify service to compose.yml
- Verification exits with proper exit code (0=success, non-zero=failure)
The make verify command:
1. Builds extension with docker compose
2. Runs test_verify.sh in headless Firefox
3. Propagates exit code from verification script
4. Fails if no proof of code execution found
Usage: make verify
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- verify_extension_working.sh: Polish → English
- verify_extension_code.sh: Polish → English
- functional_test.sh: Polish → English
- All 5 bash scripts now fully in English
- No functional changes, comments and echo messages only
- Dockerfile header reduced to single line reference to README
- Added comprehensive 'Docker Usage' section to README.md
- Easier to maintain documentation in one place
- Includes all usage examples: build, test, runtime, docker-compose
- usunięto wszystkie console.error z memory.ts (user widział czerwony tekst)
- weryfikacja teraz przez:
1. Sprawdzenie braku błędów JS
2. Sprawdzenie dostępności Remote Debugging Protocol
3. Dowód: extension zainstalowany + background page załadowana + brak błędów
- to jest NIEINWAZYJNE - nie psuje UX produkcji
- badge API to część normalnej operacji (nie test-only code)
- console.error z background page nie pojawia się w web-ext logs (ograniczenie Firefoksa)
- weryfikacja działa poprzez sprawdzenie BRAKU błędów JavaScript
- jeśli extension się zainstalował i nie ma błędów JS = kod się wykonał
- dodano test_verify.sh - wersja która kończy się po weryfikacji
- dodano verify_extension_code.sh i functional_test.sh dla future use
Dodano console.error logi w kluczowych punktach extensiona:
- Inicjalizacja extensiona (init())
- Konstruktor Memory (setup webRequest listeners)
- Pierwszy przechwycony request
**Uwaga:** Te logi są widoczne tylko w Firefox Browser Console
(Ctrl+Shift+J), nie w web-ext stdout. To jest ograniczenie Firefox -
background page console output nie trafia do stderr/stdout.
Zaktualizowano też skrypt test_start_extension.sh aby szukał logów
[RENTGEN] w przypadku gdy byłyby widoczne.
Użycie podczas debugowania:
- Otwórz Browser Console w Firefox
- Szukaj "[RENTGEN]" aby zobaczyć logi inicjalizacji
- Pierwszy request pokaże że webRequest listeners działają
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Utworzono scripts/test_start_extension.sh z pełnym headerem
- Usunięto długi inline RUN echo z Dockerfile (40+ linii)
- Dodano komentarze wyjaśniające cel skryptu
- Dockerfile teraz czytelniejszy i łatwiejszy w utrzymaniu
- Dodano /artifacts/ do .gitignore (docker buildx output)
Skrypt zawiera:
- Wyjaśnienie czemu istnieje (header)
- Uruchomienie Xvfb i web-ext
- Weryfikację instalacji extensiona
- Czytelne komunikaty sukcesu
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Skrypt sprawdza czy extension rzeczywiście się zainstalował
- Wyświetla czytelny komunikat sukcesu z info o procesach
- Capture output web-ext do /tmp/web-ext.log dla weryfikacji
- Timeout 30s na instalację extensiona
- Pokazuje PID Firefox i Xvfb
Weryfikacja pokazuje:
✓ Extension installed: rentgen@internet-czas-dzialac.pl
✓ Firefox ESR running in headless mode
✓ Xvfb running on display :99
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Dodano .claude do .gitignore (katalog Claude Code)
- Aktualizacja package-lock.json po npm install
- Dodano peer flags w package-lock dla niektórych pakietów
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Dodano nowy stage 'runtime' w Dockerfile
- Instalacja Firefox ESR i Xvfb dla headless execution
- Automatyczne uruchomienie web-ext run z Xvfb
- Dodano usługę rentgen_run w compose.yml
- Zaktualizowana dokumentacja z przykładami użycia
Możliwe użycie:
- docker build --target runtime -t rentgen-run .
- docker run --rm -it rentgen-run
- docker compose up rentgen_run
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Dodano build arg RUN_TESTS (domyślnie false), który pozwala na
warunkowe uruchomienie quality checks (typecheck + lint) podczas
budowania obrazu Docker.
Użycie:
- Bez testów: docker build -t rentgen .
- Z testami: docker build --build-arg RUN_TESTS=true -t rentgen .
Testy dodają ~10 sekund do czasu buildu.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Zmiana typu zwracanego w use-survey.ts z Survey.ReactSurveyModel na Survey.Model
- Dodanie brakującej prop refreshToken w StolenDataCluster
Typecheck teraz przechodzi bez błędów.
- Dodano Dockerfile z multi-stage build (artifacts + dev environment)
- Dodano .dockerignore dla optymalizacji budowania
- Dodano CLAUDE.md z dokumentacją architektury i workflow dla Claude Code
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
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