- 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