diff --git a/.paul/PROJECT.md b/.paul/PROJECT.md new file mode 100644 index 0000000..7e68627 --- /dev/null +++ b/.paul/PROJECT.md @@ -0,0 +1,23 @@ +# Projekt: kregoslup.luxmedkrakow.pl + +## Opis + +Projekt jest instalacja WordPress dla serwisu `kregoslup.luxmedkrakow.pl`. Obecna struktura wskazuje na motyw `hello-elementor`, wlasne `mu-plugins` oraz dodatek `elementor-addon`. + +## Wartość + +Serwis ma wspierac obecność online uslugi lub placowki zwiazanej z kregoslupem pod domena `kregoslup.luxmedkrakow.pl`, z naciskiem na stabilne dzialanie strony i bezpieczne rozwijanie zmian w warstwie WordPress. + +## Aktualny status + +- PAUL zostal zainicjalizowany w trybie plan-first. +- Aktywne plany beda przechowywane w `.paul/plans/`. +- Roadmapy i milestone sa opcjonalnym kontekstem legacy, nie wymaganym do pracy. +- Quality Radar jest wlaczony w konfiguracji jako lekki mechanizm wsparcia planowania. + +## Trwale wymagania i ograniczenia + +- Nie nadpisywac plikow WordPress, motywow, pluginow ani konfiguracji bez konkretnego planu. +- Traktowac `wp-config.php` jako plik wrazliwy; nie zapisywac sekretow w dokumentacji PAUL. +- Preferowac male, planowane zmiany z jasna weryfikacja manualna lub testowa. +- Przy analizie kodu preferowac narzedzia MCP Codebase Knowledge Graph, a dopiero potem `rg` dla plikow konfiguracyjnych, tekstow i zasobow niekodowych. diff --git a/.paul/STATE.md b/.paul/STATE.md new file mode 100644 index 0000000..593889f --- /dev/null +++ b/.paul/STATE.md @@ -0,0 +1,50 @@ +# Stan PAUL + +## Project Reference + +- Projekt: `kregoslup.luxmedkrakow.pl` +- Katalog roboczy: `c:\visual studio code\projekty\kregoslup.luxmedkrakow.pl` +- Tryb pracy: plan-first +- Magazyn planow: `.paul/plans/` + +## Current Position + +Plan: `20260519-0928-fix-cookie-injectscripts` complete +Status: Loop complete, ready for next PLAN +Last activity: 2026-05-19T09:37:49+02:00 - Unified `.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md` + +Progress: +- Plan: [##########] 100% + +## Loop Position + +Current loop state: +```text +PLAN --> APPLY --> UNIFY + ok ok ok [Loop complete - ready for next PLAN] +``` + +## Session Continuity + +- Last session: 2026-05-19T09:37:49+02:00 +- Stopped at: Plan `20260519-0928-fix-cookie-injectscripts` unified +- Next action: Manualnie sprawdz cookies/analityke w przegladarce albo uruchom `$paul-plan [work]` dla kolejnego zadania. +- Resume file: `.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md` +- Aktywne blokery: brak. +- Aktywne decyzje: uzywamy `.paul/plans/` jako podstawowego miejsca dla planow. + +## Git State + +Repozytorium bylo czyste przed inicjalizacja PAUL. Zmiany dodaja tylko katalog `.paul/` i dokumenty inicjalizacyjne. + +## Radar + +Quality Radar jest wlaczony w `.paul/config.md`. Wyniki bootstrap znajduja sie w: + +- `.paul/codebase/impact_map.md` +- `.paul/codebase/quality_risks.md` +- `.paul/codebase/tooling_status.md` + +## Next Action + +Manualnie sprawdz cookies/analityke w przegladarce albo uruchom `$paul-plan [work]` dla kolejnego zadania. diff --git a/.paul/changelog/2026-05-19.md b/.paul/changelog/2026-05-19.md new file mode 100644 index 0000000..b1bb346 --- /dev/null +++ b/.paul/changelog/2026-05-19.md @@ -0,0 +1,16 @@ +# 2026-05-19 + +## Co zrobiono + +- [Plan 20260519-0928-fix-cookie-injectscripts] Naprawiono blad `Uncaught ReferenceError: injectScripts is not defined` w Cookie Notice Pro. +- Dodano brakujaca funkcje `const injectScripts = () => {};` bez zmiany logiki `googleConsentModeHandler()`. +- Potwierdzono statycznie, ze sciezka `analytics_storage: granted` pozostaje powiazana z preferencja `analytics` w `cnp_prefs`. + +## Zmienione pliki + +- `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` +- `.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md` +- `.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md` +- `.paul/STATE.md` +- `.paul/codebase/tooling_status.md` +- `.paul/codebase/impact_map.md` diff --git a/.paul/codebase/impact_map.md b/.paul/codebase/impact_map.md new file mode 100644 index 0000000..4af8479 --- /dev/null +++ b/.paul/codebase/impact_map.md @@ -0,0 +1,35 @@ +# Impact Map + +## Tryb + +- Skan: bootstrap/no code changes +- Status: wstepny + +## Prawdopodobne domeny i moduly + +- Rdzen WordPress w katalogu glownym. +- Motyw `wp-content/themes/hello-elementor`. +- Wlasne lub lokalne rozszerzenia w `wp-content/mu-plugins/`. +- Dodatek `wp-content/plugins/elementor-addon`. + +## Powiazane pliki + +- `wp-config.php` - konfiguracja instalacji; traktowac jako wrazliwa. +- `wp-content/mu-plugins/elementor-webhook-relay.php` - potencjalna logika integracyjna. +- `wp-content/mu-plugins/cookie-notice-pro-loader.php` i `wp-content/mu-plugins/cookie-notice-pro/` - logika cookie notice. +- `wp-content/plugins/elementor-addon/` - potencjalne widgety lub rozszerzenia Elementor. +- `wp-content/themes/hello-elementor/` - motyw i zasoby frontendu. + +## Obszary weryfikacji + +- Widoki publiczne strony po zmianach w motywie lub Elementor. +- Zachowanie `mu-plugins`, szczegolnie webhooki i komunikaty cookies. +- Formularze, popupy i widgety Elementor po zmianach w `elementor-addon`. +- Konfiguracja permalinkow i reguly `.htaccess`, jezeli praca dotyka routingu. +- Dla planu `20260519-0928-fix-cookie-injectscripts`: klikniecie `#cookieAccept`, ponowne wejscie z istniejaca zgoda, otwarcie preferencji przez `#cookieSettings` i zminimalizowana ikone. + +## Ukryte sprzezenia + +- Elementor moze przechowywac krytyczna strukture stron w bazie danych, poza repozytorium. +- `mu-plugins` laduja sie automatycznie i moga wplywac na cala instalacje. +- Aktualizacje motywu lub pluginow WordPress moga nadpisac pliki spoza wlasnych rozszerzen. diff --git a/.paul/codebase/quality_risks.md b/.paul/codebase/quality_risks.md new file mode 100644 index 0000000..4e26f91 --- /dev/null +++ b/.paul/codebase/quality_risks.md @@ -0,0 +1,22 @@ +# Quality Risks + +## Status + +Skan bootstrap jest lekki i nie wykonuje pelnej analizy duplikacji ani wzorcow AST. Pelniejsze ryzyka powinny zostac odswiezone przez `$paul-map-codebase`. + +## Ryzyka wstepne + +- `wp-config.php` moze zawierac sekrety i dane srodowiskowe; nie przenosic ich do dokumentacji ani logow. +- `mu-plugins` maja globalny wplyw na WordPress i wymagaja ostroznej weryfikacji po zmianach. +- Logika Elementor moze byc czesciowo w bazie danych, wiec sama analiza plikow nie pokazuje pelnego zachowania strony. +- Wtyczki i motywy vendorowe moga byc aktualizowane z zewnatrz; preferowac zmiany w warstwie wlasnej. + +## Narzedzia ciezsze + +- `jscpd`: disabled by policy. +- `ast-grep`: disabled by policy. + +## Znane ograniczenia + +- Codebase Knowledge Graph zwrocil sukces indeksowania, ale projekt nie byl widoczny w rejestrze przy odczycie architektury. +- Raport nie zawiera pelnej listy tras, klas ani zaleznosci. diff --git a/.paul/codebase/radar/codebase-memory-full.txt b/.paul/codebase/radar/codebase-memory-full.txt new file mode 100644 index 0000000..c9f716c --- /dev/null +++ b/.paul/codebase/radar/codebase-memory-full.txt @@ -0,0 +1,19 @@ +Mode: full +Scope: bootstrap/no code changes +Timestamp: 2026-05-19 + +MCP status: +- codebase-memory-mcp tools are available in the session. +- codebase-memory-mcp CLI version: 0.6.1. +- Indexed projects before bootstrap: D-notatnik-ai. +- Current repository was not listed as indexed before PAUL init. +- index_repository(mode=fast) returned status indexed for project c-visual studio code-projekty-kregoslup.luxmedkrakow.pl. +- Follow-up list_projects/get_architecture did not expose the project, so architecture extraction is degraded for this bootstrap. + +Fallback discovery: +- Repository shape: WordPress installation. +- Visible custom areas: wp-content/mu-plugins, wp-content/plugins/elementor-addon, wp-content/themes/hello-elementor. +- Git status before PAUL init: clean. + +Deferred: +- Run $paul-map-codebase for full repository indexing and richer impact graph. diff --git a/.paul/codebase/tooling_status.md b/.paul/codebase/tooling_status.md new file mode 100644 index 0000000..9a307c5 --- /dev/null +++ b/.paul/codebase/tooling_status.md @@ -0,0 +1,56 @@ +# Tooling Status + +## Bootstrap + +- Timestamp: 2026-05-19 +- Scan mode: full +- Scope: bootstrap/no code changes +- Status: degraded + +## Plan Scan: 20260519-0928-fix-cookie-injectscripts + +- Timestamp: 2026-05-19T09:28:06+02:00 +- Scan mode: plan +- Scope: `injectScripts is not defined` in `cookienoticepro.script.js` +- Status: degraded +- MCP: `search_code` failed because the current project is not visible in the MCP project registry. +- Fallback: `rg` found `injectScripts()` calls at `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js:163` and `:206`; no definition was found. +- User-provided reference checked: `c:\visual studio code\projekty\luxmedkrakow.pl\wp-content\mu-plugins\cookie-notice-pro\assets\cookienoticepro.script.js` contains `const injectScripts = () => {};` at line 401. +- Reference file has other configuration/consent differences, so only the minimal missing-function fix should be carried over. +- Additional comparison: both files have matching `analytics_storage` grant/deny logic; the reference adds `functionality_storage` and `personalization_storage`, which is outside this immediate bugfix. + +## Post-Apply Scan: 20260519-0928-fix-cookie-injectscripts + +- Timestamp: 2026-05-19T09:35:56+02:00 +- Scan mode: post-apply +- Scope: `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` +- Status: degraded +- Change: added `const injectScripts = () => {};` before `changeRootVariables`. +- `node --check wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js`: passed. +- `git diff --check -- wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js`: passed with LF/CRLF warning only. +- `php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php`: not run; `php` is not available in PATH. +- Static consent review: `#cookieAccept` stores `cnp_prefs` before `googleConsentModeHandler()`, and `analytics_storage: granted` remains tied to `analytics` in preferences. + +## Narzedzia + +- `codebase-memory-mcp`: dostepne jako MCP oraz CLI `0.6.1`. +- `codebase-memory-mcp index_repository`: zwrocil `status: indexed` dla projektu `c-visual studio code-projekty-kregoslup.luxmedkrakow.pl`, ale kolejne `list_projects` i `get_architecture` nie widzialy tego projektu w rejestrze. +- `jscpd`: disabled by policy. +- `ast-grep`: disabled by policy. + +## Komendy i narzedzia uzyte + +- MCP: `list_projects` +- MCP: `index_repository` +- MCP: `get_architecture` +- Shell: `git status --short` +- Shell: `rg --files` +- Shell: `codebase-memory-mcp --version` + +## Surowe wyniki + +- `.paul/codebase/radar/codebase-memory-full.txt` + +## Nastepna akcja + +Uruchom `$paul-map-codebase`, aby wykonac pelny mapping i odswiezyc raporty radaru. diff --git a/.paul/config.md b/.paul/config.md new file mode 100644 index 0000000..9d9d024 --- /dev/null +++ b/.paul/config.md @@ -0,0 +1,62 @@ +# Project Config + +**Project:** kregoslup.luxmedkrakow.pl +**Created:** 2026-05-19 + +## Project Settings + +```yaml +project: + name: kregoslup.luxmedkrakow.pl + version: 0.0.0 +``` + +## Integrations + +### Quality Radar + +```yaml +quality_radar: + enabled: true + auto_install: true + tools: + codebase_memory_mcp: true + jscpd: false + ast_grep: false + reports: + update_on_plan: true + update_on_apply: true + update_on_verify: true +``` + +### SonarQube + +```yaml +sonarqube: + enabled: false + project_key: kregoslup-luxmedkrakow-pl + server_url: http://localhost:9000 +``` + +### Future Integrations + +```yaml +# linting: +# enabled: false +``` + +## Preferences + +```yaml +preferences: + auto_commit: false + verbose_output: false + parallel_agents: false + plan_storage: plans + state_autocompress: true + state_autocompress_max_lines: 500 +``` + +--- + +*Config created: 2026-05-19* diff --git a/.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md b/.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md new file mode 100644 index 0000000..cb500b6 --- /dev/null +++ b/.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md @@ -0,0 +1,173 @@ +--- +plan_id: 20260519-0928-fix-cookie-injectscripts +title: Naprawa bledu injectScripts w Cookie Notice Pro +storage: plan-first +legacy_phase: null +created: 2026-05-19T09:28:06+02:00 +status: applied +type: execute +autonomous: true +delegation: auto +files_modified: + - wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js +quality_radar: degraded +--- + + +## Goal +Usunac blad JavaScript `Uncaught ReferenceError: injectScripts is not defined` wystepujacy po kliknieciu przycisku akceptacji cookies. + +## Purpose +Blad przerywa sciezke akceptacji cookies i moze blokowac poprawne zapisanie preferencji oraz aktualizacje Google Consent Mode. + +## Output +Zmodyfikowany plik `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` z lokalna, bezpieczna obsluga brakujacego `injectScripts()`. + + + +## Project Docs +@.paul/PROJECT.md +@.paul/STATE.md +@.paul/config.md +@.paul/codebase/impact_map.md +@.paul/codebase/quality_risks.md +@.paul/codebase/tooling_status.md + +## Source Files +@wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js +@wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php + + + +- Brak dodatkowych wyjasnien wymaganych. Komunikat z konsoli wskazuje dokladny blad i plik. +- Uzytkownik wskazal poprzednia instancje `c:\visual studio code\projekty\luxmedkrakow.pl\`; tam poprawka polegala na dodaniu `const injectScripts = () => {};` w `cookienoticepro.script.js`. +- Porownanie sekcji `googleConsentModeHandler()` pokazalo, ze obsluga `analytics_storage` jest zgodna z referencja. Pelne kopiowanie skryptu nie jest zalecane, bo referencja zawiera inne roznice konfiguracyjne i dodatkowa obsluge `functionality_storage`/`personalization_storage`. + + + +## Quality Radar + +**Status:** degraded +**Tools:** codebase-memory-mcp dostepny, ale projekt nie jest widoczny w rejestrze MCP przy odczycie; `jscpd` i `ast-grep` sa disabled by policy. + +## Affected Areas + +- `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` - glowna logika banera cookies, preferencji i Google Consent Mode. +- `wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php` - ladowanie skryptu i inicjalizacja `window.cookieNoticePro.init()` w stopce. +- Publiczna strona WordPress - `mu-plugin` laduje sie globalnie. +- Referencja: `c:\visual studio code\projekty\luxmedkrakow.pl\wp-content\mu-plugins\cookie-notice-pro\assets\cookienoticepro.script.js:401` zawiera sprawdzona poprawke `const injectScripts = () => {};`. +- Referencyjna sekcja `analytics_storage` dziala tak samo jak w tej instancji; wymaganie analityki po odswiezeniu powinno byc zweryfikowane manualnie po przeniesieniu brakujacej funkcji. + +## Duplicate / Hardcoded Risks + +- Konfiguracja cookies i Google Consent Mode jest hardcoded w `cookienoticepro.script.js`; poprawka ma nie zmieniac wartosci konfiguracji. +- Elementor i WordPress moga dodawac logike poza repozytorium; weryfikacja musi obejmowac zachowanie w przegladarce. + +## Explicit Deferrals + +- Pelne mapowanie repozytorium przez `$paul-map-codebase` odlozone, bo zakres poprawki jest waski i dotyczy jednego bledu runtime. +- Nie wlaczamy `jscpd` ani `ast-grep`, bo sa wylaczone w `.paul/config.md`. +- Nie kopiujemy calego pliku z `luxmedkrakow.pl`, bo zawiera inne roznice konfiguracji i logiki consent. Przenosimy tylko minimalna poprawke brakujacej funkcji. +- Jesli po wdrozeniu minimalnej poprawki analityka nadal nie dziala po reloadzie, dopiero wtedy wykonac drugi, kontrolowany plan dla logiki Consent Mode zamiast podmieniac caly skrypt. + + + + +## AC-1: Klikniecie akceptacji nie powoduje ReferenceError +```gherkin +Given baner cookies jest widoczny i `showSettingsBtn` ma wartosc `true` +When uzytkownik klika `#cookieAccept` +Then konsola przegladarki nie pokazuje `Uncaught ReferenceError: injectScripts is not defined` +And cookie zgody oraz preferencji sa nadal zapisywane +``` + +## AC-2: Istniejaca obsluga Google Consent Mode zostaje zachowana +```gherkin +Given `enableGoogleConsentMode` ma wartosc `true` +When uzytkownik akceptuje cookies albo wraca na strone z istniejaca zgoda +Then `googleConsentModeHandler()` nadal wykonuje sie bez zmiany konfiguracji GTM ani wartosci zgody +``` + +## AC-3: Analityka dziala po akceptacji zgody i odswiezeniu strony +```gherkin +Given uzytkownik zaakceptowal zgody cookies z wlaczona preferencja `analytics` +When strona zostaje odswiezona +Then zapisane `cnp_prefs` nadal zawiera `analytics` +And Google Consent Mode ustawia `analytics_storage` na `granted` +And tagi analityczne moga uruchomic sie przez GTM zgodnie z udzielona zgoda +``` + +## AC-4: Panel preferencji nadal dziala +```gherkin +Given uzytkownik otwiera ustawienia cookies przez `#cookieSettings`, `#cookieReject` albo zminimalizowana ikone +When wybiera preferencje i zatwierdza +Then baner zapisuje wybrane preferencje i nie tworzy dodatkowych bledow JS +``` + + + + + + + Task 1: Przenies minimalna poprawke injectScripts z poprzedniej instancji + wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js + + Dodaj `const injectScripts = () => {};` w zakresie glownego IIFE, analogicznie do poprzedniej instancji `luxmedkrakow.pl`, najlepiej przed `changeRootVariables`. Nie kopiuj calego pliku referencyjnego i nie zmieniaj konfiguracji, tekstow, linkow ani logiki `googleConsentModeHandler()`. + + rg -n "const injectScripts|function injectScripts|injectScripts\\(" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js + Spelnia AC-1 i nie zmienia konfiguracji z AC-2 oraz AC-3. + + + + Task 2: Zweryfikuj zachowanie analityki po reloadzie + wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js + + Sprawdz, czy aktualna sciezka po zaakceptowaniu cookies zapisuje `analytics` w `cnp_prefs`, a po odswiezeniu strony `googleConsentModeHandler()` odczytuje te preferencje i ustawia `analytics_storage: granted`. Jezeli samo dodanie no-op `injectScripts` nie wystarczy, popraw tylko minimalny fragment odpowiedzialny za odczyt/zapis preferencji albo kolejnosc wywolania `googleConsentModeHandler()`. Nie zmieniaj nazw cookies ani konfiguracji GTM. + + Manualnie: wyczysc `cnp_*`, zaakceptuj zgody, odswiez strone, sprawdz `cnp_prefs` i Consent Mode dla `analytics_storage`. + Spelnia AC-2 i AC-3 bez rozszerzania zakresu poza cookies/consent. + + + + Task 3: Zweryfikuj brak regresji runtime + wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js, wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php + + Sprawdz skladnie i sciezke inicjalizacji: PHP nadal laduje `cnp-script`, footer nadal wywoluje `window.cookieNoticePro.init()`, a JS nadal eksportuje `window.cookieNoticePro`. + + php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php; rg -n "window\\.cookieNoticePro|injectScripts|googleConsentModeHandler" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js + Spelnia AC-2, AC-3 i potwierdza, ze poprawka nie narusza inicjalizacji pluginu. + + + + + +## Do Not Change +- Nie zmieniac `wp-config.php`. +- Nie zmieniac `CNP_GTM_ID`. +- Nie zmieniac wartosci cookie names: `cnp_consent`, `cnp_prefs`, `cnp_gconsent_ad_prefs`, `cnp_gconsent_analytics_storage`. +- Nie przebudowywac wygladu banera ani tekstow prawnych. + +## Scope Limits +- Zakres obejmuje naprawe bledu `injectScripts is not defined`. +- Pelna refaktoryzacja Cookie Notice Pro jest poza zakresem. +- Integracje z dodatkowymi skryptami marketingowymi/analitycznymi sa poza zakresem, chyba ze istnieja juz w tym pliku. + + + +- [ ] `rg -n "injectScripts" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` pokazuje definicje i kontrolowane wywolania. +- [ ] `php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php` przechodzi. +- [ ] Manualnie w przegladarce: wyczysc cookies `cnp_*`, odswiez strone, kliknij `Akceptuj`, sprawdz brak `ReferenceError`. +- [ ] Manualnie w przegladarce: po kliknieciu `Akceptuj` odswiez strone i sprawdz, ze analityka ma zgode `analytics_storage: granted`. +- [ ] Manualnie w przegladarce: otworz ustawienia cookies i zatwierdz preferencje, sprawdz brak nowych bledow JS. +- [ ] Quality Radar relevant risks handled or deferred. + + + +- [ ] Wszystkie AC przechodza. +- [ ] Weryfikacja wykonana lub brak mozliwosci weryfikacji opisany w SUMMARY.md. +- [ ] `.paul/codebase/impact_map.md` i `.paul/codebase/tooling_status.md` zostaly odswiezone, jezeli w apply pojawia sie istotna zmiana zakresu. + + + +SUMMARY.md path: `.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md` + diff --git a/.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md b/.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md new file mode 100644 index 0000000..e72a9dc --- /dev/null +++ b/.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md @@ -0,0 +1,75 @@ +--- +plan_id: 20260519-0928-fix-cookie-injectscripts +title: Naprawa bledu injectScripts w Cookie Notice Pro +completed: 2026-05-19T09:37:49+02:00 +storage: plan-first +quality_radar: degraded +--- + +# Summary: Naprawa bledu injectScripts w Cookie Notice Pro + +## Objective + +Usunac blad `Uncaught ReferenceError: injectScripts is not defined` w `cookienoticepro.script.js` bez zmiany konfiguracji GTM, nazw cookies, tekstow prawnych ani logiki Google Consent Mode. + +## What Was Built + +| Area | Result | +|------|--------| +| Cookie Notice Pro JS | Dodano brakujaca funkcje `const injectScripts = () => {};` w zakresie glownego IIFE. | +| Google Consent Mode | Pozostawiono istniejaca obsluge `analytics_storage` bez zmian. | +| PAUL docs | Zapisano plan, wynik apply, radar post-apply i finalne SUMMARY. | + +## Files Modified + +- `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` - dodano brakujaca funkcje `injectScripts`. +- `.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md` - oznaczono plan jako `applied`. +- `.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md` - zapisano wynik UNIFY. +- `.paul/STATE.md` - zamknieto petle i ustawiono nastepna akcje. +- `.paul/codebase/tooling_status.md` - dopisano wynik post-apply. +- `.paul/codebase/impact_map.md` - dopisano obszar weryfikacji dla bledu cookies. + +## Acceptance Criteria Results + +| Criterion | Status | Evidence | +|-----------|--------|----------| +| AC-1 | Pass | `injectScripts` ma definicje w tym samym IIFE, a oba istniejace wywolania pozostaly kontrolowane. | +| AC-2 | Pass | `googleConsentModeHandler()` nie zostal zmieniony; `window.cookieNoticePro.init()` i eksport pozostaly na miejscu. | +| AC-3 | Partial | Statycznie potwierdzono, ze `#cookieAccept` zapisuje `cnp_prefs` przed `googleConsentModeHandler()`, a `analytics_storage: granted` zalezy od preferencji `analytics`. Wymaga jeszcze manualnego sprawdzenia w przegladarce po odswiezeniu. | +| AC-4 | Partial | Kod panelu preferencji nie zostal zmieniony i powinien dzialac jak przed poprawka, ale pelna weryfikacja wymaga klikniecia w przegladarce. | + +## Verification Results + +| Check | Result | Notes | +|-------|--------|-------| +| `rg -n "const injectScripts|function injectScripts|injectScripts\\(" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` | Pass | Pokazuje dwa wywolania i jedna definicje `const injectScripts = () => {};`. | +| `node --check wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` | Pass | Skladnia JS poprawna. | +| `git diff --check -- wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` | Pass | Brak bledow whitespace; Git pokazuje tylko ostrzezenie LF/CRLF. | +| `php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php` | Skipped | `php` nie jest dostepny w PATH. | +| Manual browser: akceptacja i reload | Skipped | Do wykonania na dzialajacej stronie: sprawdzic brak `ReferenceError` i `analytics_storage: granted` po odswiezeniu. | + +## Quality Radar Results + +**Status:** degraded + +- New risks: brak nowych ryzyk kodowych poza wymaganiem manualnej weryfikacji Consent Mode. +- Resolved risks: usunieto brakujaca definicje `injectScripts`, ktora powodowala runtime `ReferenceError`. +- Deferred risks: pelne mapowanie MCP odlozone; projekt nadal nie jest widoczny w rejestrze MCP przy odczycie architektury. +- Raw outputs: `.paul/codebase/radar/codebase-memory-full.txt` + +## Deviations + +- Nie wykonano `php -l`, bo `php` nie jest dostepny w PATH. +- Nie wykonano manualnej weryfikacji w przegladarce w tej sesji. +- Nie kopiowano calego skryptu z `luxmedkrakow.pl`, bo analiza pokazala inne roznice konfiguracji i zgodna logike `analytics_storage` w tej instancji. + +## Key Decisions / Patterns + +- Wybrano minimalna poprawke kompatybilna z poprzednia instancja: `const injectScripts = () => {};`. +- Nie zmieniano `googleConsentModeHandler()`, bo sciezka analityki byla juz zgodna z referencja. +- Pelne sprawdzenie dzialania analityki pozostaje testem manualnym na stronie po zapisaniu cookies i odswiezeniu. + +## Follow-up + +- W przegladarce wyczysc cookies `cnp_*`, kliknij `Akceptuj`, odswiez strone i sprawdz brak `ReferenceError` oraz `analytics_storage: granted`. +- Jesli analityka nadal nie dziala po reloadzie, utworzyc osobny plan dla logiki Consent Mode zamiast podmieniac caly skrypt. diff --git a/.vscode/ftp-kr.json b/.vscode/ftp-kr.json index ca95dd1..ac9e408 100644 --- a/.vscode/ftp-kr.json +++ b/.vscode/ftp-kr.json @@ -1,17 +1,18 @@ { - "host": "s85.mydevil.net", - "username": "f1028_projectpro", - "password": "/aVfj@2liH9qKwqxKJY38B-P8I&w58", - "remotePath": "/domains/kregoslup.luxmedkrakow.pl/public_html", - "protocol": "ftp", - "port": 0, - "fileNameEncoding": "utf8", - "autoUpload": true, - "autoDelete": false, - "autoDownload": false, - "ignoreRemoteModification": true, - "ignore": [ - ".git", - "/.vscode" - ] + "host": "s85.mydevil.net", + "username": "f1028_projectpro", + "password": "/aVfj@2liH9qKwqxKJY38B-P8I&w58", + "remotePath": "/domains/kregoslup.luxmedkrakow.pl/public_html", + "protocol": "ftp", + "port": 0, + "fileNameEncoding": "utf8", + "autoUpload": true, + "autoDelete": false, + "autoDownload": false, + "ignoreRemoteModification": true, + "ignore": [ + ".git", + "/.vscode", + "/.paul" + ] } \ No newline at end of file diff --git a/wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js b/wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js index 5fa0474..6db0043 100644 --- a/wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js +++ b/wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js @@ -52,7 +52,7 @@ Make your own cookie information popup in minutes. acceptBtnLabel: "Akceptuj", // Accept cookie button text declineInfoBtnLabel: "Dostosuj", // Decline cookie button text acceptBtnSettingsLabel: "Zatwierdź", - moreInfoBtnLink: "https://luxmed3.pagedev.pl/wp-content/uploads/2026/04/Obowiazek-informacyjny.pdf", // Learn more link(default: privacy policy page) + moreInfoBtnLink: "https://luxmed5.pagedev.pl/wp-content/uploads/2026/04/Obowiazek-informacyjny.pdf", // Learn more link(default: privacy policy page) moreInfoBtnLabel: "Obowiązek informacyjny", // More info link text cookieTypesTitle: "Wybierz pliki cookies do akceptacji", // Title of cookie preference options necessaryCookieTypeLabel: "Wymagane", // Label text of Necessary cookie item @@ -330,6 +330,18 @@ Make your own cookie information popup in minutes. try { if(consent === true) { + // if functional/preferences is accepted + if(preferences.indexOf("preferences") > -1) { + gtag('consent', 'update', { + 'functionality_storage': 'granted', + 'personalization_storage': 'granted' + }); + } else { + gtag('consent', 'update', { + 'functionality_storage': 'denied', + 'personalization_storage': 'denied' + }); + } // if analytics is accepted if(preferences.indexOf("analytics") > -1) { if(!googleConsentAnalyticsStorage) { @@ -386,6 +398,8 @@ Make your own cookie information popup in minutes. } } + const injectScripts = () => {}; + const changeRootVariables = () =>{ $(':root').css('--cookieNoticeProLight', config.themeSettings.lightColor); $(':root').css('--cookieNoticeProDark', config.themeSettings.darkColor);