diff --git a/.paul/PROJECT.md b/.paul/PROJECT.md
new file mode 100644
index 0000000..e88e30a
--- /dev/null
+++ b/.paul/PROJECT.md
@@ -0,0 +1,16 @@
+# PROJECT: idpan.poznan.pl
+
+## Description
+Strona internetowa Instytutu Dendrologii PAN w Kórniku. Oparta na Joomla CMS z własnym szablonem `instytut_dendrologii_`.
+
+## Tech Stack
+- Joomla CMS (PHP)
+- Custom template: `instytut_dendrologii_`
+- JavaScript (vanilla + jQuery)
+- CSS
+- FTP deployment (ftp-kr VS Code extension)
+
+## Key Constraints
+- Pliki core Joomla są nadpisywane przy aktualizacjach — customizacje muszą iść przez template overrides
+- Przed edycją plików — pobierz aktualną wersję z serwera (FTP sync)
+- Strona BIP wymaga metryczek artykułów (wymóg prawny)
diff --git a/.paul/ROADMAP.md b/.paul/ROADMAP.md
new file mode 100644
index 0000000..1ede935
--- /dev/null
+++ b/.paul/ROADMAP.md
@@ -0,0 +1,13 @@
+# ROADMAP — idpan.poznan.pl
+
+## Milestone: v1.0 — Naprawa metryczek po aktualizacji Joomla ✓ (2026-04-10)
+
+### Phase 1: Fix article-info metryczki (hotfix)
+- **Goal:** Przywrócić prawidłowe wyświetlanie metryczek artykułów (klasa `article-info text-muted`)
+- **Status:** Complete
+- **Priority:** Critical — zgłoszenie klienta
+- **Completed:** 2026-04-10
+
+### Phase 2: Template overrides (hardening) — optional
+- **Goal:** Przenieść customizacje z plików core do template overrides, aby przetrwały przyszłe aktualizacje
+- **Status:** Not started
diff --git a/.paul/STATE.md b/.paul/STATE.md
new file mode 100644
index 0000000..dde3c09
--- /dev/null
+++ b/.paul/STATE.md
@@ -0,0 +1,25 @@
+## Current Position
+
+Milestone: v1.0 Naprawa metryczek po aktualizacji Joomla
+Phase: 1 of 2 (Fix article-info metryczki) — Complete
+Plan: 01-01 complete
+Status: Milestone v1.0 complete
+Last activity: 2026-04-10 — Milestone closed
+
+Progress:
+- Milestone: [██████████] 100% ✓
+
+## Loop Position
+
+Current loop state:
+```
+PLAN ──▶ APPLY ──▶ UNIFY
+ ✓ ✓ ✓ [Loop complete - Phase 1 done]
+```
+
+## Session Continuity
+
+Last session: 2026-04-10
+Stopped at: Phase 1 complete
+Next action: Milestone complete. Phase 2 (template overrides) odłożona.
+Resume file: .paul/phases/01-fix-article-info-metryczki/01-01-SUMMARY.md
diff --git a/.paul/changelog/2026-04-10.md b/.paul/changelog/2026-04-10.md
new file mode 100644
index 0000000..a712a11
--- /dev/null
+++ b/.paul/changelog/2026-04-10.md
@@ -0,0 +1,14 @@
+# 2026-04-10
+
+## Co zrobiono
+
+- [Phase 1, Plan 01] Naprawa metryczek artykułów BIP po aktualizacji Joomla
+- Przywrócono atrybuty itemprop (dateCreated, datePublished, dateModified) w sublayoutach info_block
+- Przywrócono atrybuty schema.org (author, name, url) w author.php
+
+## Zmienione pliki
+
+- `layouts/joomla/content/info_block/create_date.php`
+- `layouts/joomla/content/info_block/publish_date.php`
+- `layouts/joomla/content/info_block/modify_date.php`
+- `layouts/joomla/content/info_block/author.php`
diff --git a/.paul/governance/governance_2026-04-10.jsonl b/.paul/governance/governance_2026-04-10.jsonl
new file mode 100644
index 0000000..a4057fd
--- /dev/null
+++ b/.paul/governance/governance_2026-04-10.jsonl
@@ -0,0 +1,23 @@
+{"ts":"2026-04-10T19:10:32Z","tool":"Bash","cmd":"mkdir -p \"/c/visual studio code/projekty/idpan.poznan.pl/.paul/phases/01-fix-article-info-metryczki\"\",\"description\":\"Create PAUL phase directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:10:42Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:10:46Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:10:53Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:11:52Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\phases\\\\01-fix-article-info-metryczki\\\\01-01-PLAN.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:13:54Z","tool":"Bash","cmd":"mkdir -p \"/c/Users/jacek/.claude/projects/C--visual-studio-code-projekty-idpan-poznan-pl/memory\"\",\"description\":\"Ensure memory directory exists\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:14:07Z","tool":"Write","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\projects\\\\C--visual-studio-code-projekty-idpan-poznan-pl\\\\memory\\\\project_metryczki_issue.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:14:09Z","tool":"Write","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\projects\\\\C--visual-studio-code-projekty-idpan-poznan-pl\\\\memory\\\\MEMORY.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:33Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\create_date.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:34Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\publish_date.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:36Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\modify_date.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:37Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:41Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:44Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:18:45Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:20:59Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\phases\\\\01-fix-article-info-metryczki\\\\01-01-SUMMARY.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:21:16Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:21:17Z","tool":"Bash","cmd":"mkdir -p \"/c/visual studio code/projekty/idpan.poznan.pl/.paul/changelog\"\",\"description\":\"Create changelog directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:21:25Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\changelog\\\\2026-04-10.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:21:30Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:23:00Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:23:03Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
+{"ts":"2026-04-10T19:23:05Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
diff --git a/.paul/phases/01-fix-article-info-metryczki/01-01-PLAN.md b/.paul/phases/01-fix-article-info-metryczki/01-01-PLAN.md
new file mode 100644
index 0000000..05809f5
--- /dev/null
+++ b/.paul/phases/01-fix-article-info-metryczki/01-01-PLAN.md
@@ -0,0 +1,193 @@
+---
+phase: 01-fix-article-info-metryczki
+plan: 01
+type: execute
+wave: 1
+depends_on: []
+files_modified:
+ - layouts/joomla/content/info_block.php
+ - layouts/joomla/content/info_block/create_date.php
+ - layouts/joomla/content/info_block/publish_date.php
+ - layouts/joomla/content/info_block/modify_date.php
+ - layouts/joomla/content/info_block/author.php
+autonomous: false
+delegation: off
+---
+
+
+## Goal
+Przywrócić prawidłowe wyświetlanie metryczek artykułów na stronie BIP po aktualizacji Joomla i rozszerzeń. Elementy z klasą `article-info text-muted` muszą renderować się z prawidłową strukturą HTML, którą oczekują skrypty JS (`dodajmetryczke.js`, `metryczka.js`).
+
+## Purpose
+Metryczki artykułów BIP to wymóg prawny. Klient zgłasza, że po aktualizacji przestały się wyświetlać. Problem jest powtarzalny — aktualizacja Joomla nadpisuje pliki core layouts.
+
+## Output
+Pliki layout przywrócone do stanu kompatybilnego z JS metryczek. Metryczki widoczne na stronie.
+
+
+
+## Project Context
+@.paul/PROJECT.md
+@.paul/ROADMAP.md
+
+## Source Files
+@layouts/joomla/content/info_block.php
+@layouts/joomla/content/info_block/create_date.php
+@layouts/joomla/content/info_block/publish_date.php
+@layouts/joomla/content/info_block/modify_date.php
+@layouts/joomla/content/info_block/author.php
+@templates/instytut_dendrologii_/js/metryczka.js
+@templates/instytut_dendrologii_/js/dodajmetryczke.js
+
+## Analiza problemu
+Skrypty JS metryczek (`metryczka.js`, `dodajmetryczke.js`) polegają na konkretnych selektorach CSS:
+- `.grid-bip .article-info` — wrapper metryczki (dodajmetryczke.js:8)
+- `.create [itemprop="dateCreated"]` — data wytworzenia (metryczka.js:41)
+- `.published [itemprop="datePublished"]` — data udostępnienia (metryczka.js:45)
+- `.modified [itemprop="dateModified"]` — data modyfikacji (metryczka.js:49)
+- `.metryczka` → `.closest('.article-info').lastChild` — toggle visibility (dodajmetryczke.js:21)
+
+Aktualizacja Joomla mogła:
+1. Zmienić strukturę HTML sublayoutów (inne klasy, brak itemprop)
+2. Zmienić format tekstu (np. "Utworzono:" → "Created on")
+3. Zmienić typ elementów (dd→div, time→span)
+
+Obecna lokalna wersja plików może nie odpowiadać stanowi na serwerze po aktualizacji.
+
+
+
+
+## AC-1: Metryczka BIP widoczna na stronie artykułu
+```gherkin
+Given artykuł w sekcji BIP (klasa .grid-bip)
+When użytkownik otwiera stronę artykułu
+Then element .article-info text-muted jest obecny w DOM
+And zawiera przycisk "METRYCZKA" (klasa .infometryczka)
+And po kliknięciu "METRYCZKA" pojawia się blok z danymi
+```
+
+## AC-2: Dane metryczki poprawnie wypełnione
+```gherkin
+Given artykuł BIP z uzupełnionymi polami (autor, daty)
+When skrypt metryczka.js wypełnia dane
+Then metryczka zawiera: Podmiot udostępniający, Wytwarzający, Data wytworzenia, Data udostępnienia
+And daty są w poprawnym formacie (nie "undefined" ani puste)
+```
+
+## AC-3: Selektory JS pasują do struktury HTML
+```gherkin
+Given pliki info_block.php i sublayouty na serwerze
+When przeglądarka renderuje stronę
+Then selektory .create [itemprop="dateCreated"], .published [itemprop="datePublished"], .modified [itemprop="dateModified"] znajdują elementy
+And dodajmetryczke.js poprawnie wstrzykuje HTML metryczki
+```
+
+
+
+
+
+
+ Synchronizacja plików z serwera
+
+ 1. W VS Code użyj ftp-kr: pobierz aktualną wersję plików z serwera
+ 2. Pliki do pobrania:
+ - `layouts/joomla/content/info_block.php`
+ - `layouts/joomla/content/info_block/create_date.php`
+ - `layouts/joomla/content/info_block/publish_date.php`
+ - `layouts/joomla/content/info_block/modify_date.php`
+ - `layouts/joomla/content/info_block/author.php`
+ - `layouts/joomla/content/info_block/category.php`
+ - `layouts/joomla/content/info_block/hits.php`
+ 3. Opcjonalnie: pobierz cały folder `layouts/joomla/content/` rekursywnie
+
+ Wpisz "pobrane" gdy pliki zostaną zsynchronizowane z serwera
+
+
+
+ Task 1: Diagnoza różnic po aktualizacji
+ layouts/joomla/content/info_block.php, layouts/joomla/content/info_block/create_date.php, layouts/joomla/content/info_block/publish_date.php, layouts/joomla/content/info_block/modify_date.php, layouts/joomla/content/info_block/author.php
+
+ Po pobraniu plików z serwera:
+ 1. Przeczytaj zaktualizowane pliki layoutów
+ 2. Sprawdź czy struktura HTML pasuje do selektorów JS:
+ - `
` — wrapper
+ - `
` z `
+ Lista zidentyfikowanych różnic między oczekiwaną a aktualną strukturą HTML
+ AC-3 częściowo: Wiadomo co wymaga poprawy
+
+
+
+ Task 2: Naprawa plików layout — przywrócenie kompatybilności z JS
+ layouts/joomla/content/info_block.php, layouts/joomla/content/info_block/create_date.php, layouts/joomla/content/info_block/publish_date.php, layouts/joomla/content/info_block/modify_date.php, layouts/joomla/content/info_block/author.php
+
+ Na podstawie diagnozy z Task 1:
+ 1. Edytuj pliki sublayoutów, aby przywrócić oczekiwaną strukturę HTML
+ 2. Upewnij się, że:
+ - Wrapper ma klasę `article-info text-muted` (tag `
`)
+ - create_date.php: `
` + ``
+ - publish_date.php: `
` + ``
+ - modify_date.php: `
` + ``
+ - Tekst dat zawiera polskie frazy: "Utworzono", "Opublikowano:", "Poprawiono:"
+ (metryczka.js robi .replace() tych fraz)
+ 3. NIE zmieniaj plików JS — one działają poprawnie, problem jest w HTML
+ 4. NIE modyfikuj plików CSS szablonu
+
+ Przejrzyj zmodyfikowane pliki i porównaj selektory JS z wygenerowanym HTML
+ AC-3 satisfied: Selektory JS pasują do struktury HTML
+
+
+
+ Naprawione pliki layout metryczek
+
+ 1. Wgraj poprawione pliki na serwer (ftp-kr upload)
+ 2. Otwórz stronę artykułu BIP na idpan.poznan.pl
+ 3. Sprawdź w DevTools (F12 → Elements):
+ - Czy jest element `
`
+ - Czy wewnątrz są `
`, `
`, `
`
+ 4. Kliknij przycisk "METRYCZKA"
+ 5. Sprawdź czy pojawiają się dane: Podmiot udostępniający, Wytwarzający, daty
+ 6. Sprawdź konsolę (F12 → Console) pod kątem błędów JS
+
+ Wpisz "approved" jeśli metryczki działają, lub opisz problemy
+
+
+
+
+
+
+## DO NOT CHANGE
+- templates/instytut_dendrologii_/js/metryczka.js (JS działa poprawnie)
+- templates/instytut_dendrologii_/js/dodajmetryczke.js (JS działa poprawnie)
+- templates/instytut_dendrologii_/js/mod64.js
+- templates/instytut_dendrologii_/css/*.css (style niezmienione)
+
+## SCOPE LIMITS
+- Tylko naprawa kompatybilności HTML z istniejącymi skryptami JS
+- Nie dodajemy nowych funkcji do metryczek
+- Nie przenosimy jeszcze do template overrides (to Phase 2)
+- Nie modyfikujemy żadnych innych layoutów poza info_block
+
+
+
+
+Before declaring plan complete:
+- [ ] Pliki layout mają strukturę HTML kompatybilną z selektorami JS
+- [ ] Metryczka BIP wyświetla się na stronie po kliknięciu
+- [ ] Dane metryczki (podmiot, wytwarzający, daty) są poprawnie wypełnione
+- [ ] Brak błędów JS w konsoli przeglądarki
+
+
+
+- Metryczki artykułów BIP widoczne i funkcjonalne na stronie
+- Klient potwierdza naprawę
+- Pliki layout kompatybilne z istniejącym kodem JS
+
+
+
diff --git a/.paul/phases/01-fix-article-info-metryczki/01-01-SUMMARY.md b/.paul/phases/01-fix-article-info-metryczki/01-01-SUMMARY.md
new file mode 100644
index 0000000..9d2a2b2
--- /dev/null
+++ b/.paul/phases/01-fix-article-info-metryczki/01-01-SUMMARY.md
@@ -0,0 +1,115 @@
+---
+phase: 01-fix-article-info-metryczki
+plan: 01
+subsystem: layouts
+tags: [joomla, info_block, itemprop, metryczki, bip]
+
+requires:
+ - phase: none
+ provides: n/a
+provides:
+ - Przywrócone atrybuty itemprop w sublayoutach info_block
+ - Działające metryczki BIP na stronie
+affects: []
+
+tech-stack:
+ added: []
+ patterns: []
+
+key-files:
+ created: []
+ modified:
+ - layouts/joomla/content/info_block/create_date.php
+ - layouts/joomla/content/info_block/publish_date.php
+ - layouts/joomla/content/info_block/modify_date.php
+ - layouts/joomla/content/info_block/author.php
+
+key-decisions:
+ - "Naprawa w plikach core zamiast template overrides (hotfix, Phase 2 na hardening)"
+
+patterns-established:
+ - "Aktualizacja Joomla usuwa atrybuty itemprop z sublayoutów info_block"
+
+duration: ~15min
+started: 2026-04-10
+completed: 2026-04-10
+---
+
+# Phase 1 Plan 01: Fix article-info metryczki Summary
+
+**Przywrócono atrybuty itemprop w sublayoutach info_block po aktualizacji Joomla — metryczki BIP znów działają.**
+
+## Performance
+
+| Metric | Value |
+|--------|-------|
+| Duration | ~15min |
+| Started | 2026-04-10 |
+| Completed | 2026-04-10 |
+| Tasks | 4 completed (1 checkpoint:human-action, 2 auto, 1 checkpoint:human-verify) |
+| Files modified | 4 |
+
+## Acceptance Criteria Results
+
+| Criterion | Status | Notes |
+|-----------|--------|-------|
+| AC-1: Metryczka BIP widoczna na stronie | Pass | Przycisk METRYCZKA renderuje się, dane wyświetlają po kliknięciu |
+| AC-2: Dane metryczki poprawnie wypełnione | Pass | Podmiot, Wytwarzający, daty wypełnione przez metryczka.js |
+| AC-3: Selektory JS pasują do HTML | Pass | itemprop przywrócone, selektory .create [itemprop=dateCreated] etc. działają |
+
+## Accomplishments
+
+- Zdiagnozowano przyczynę: aktualizacja Joomla usunęła atrybuty `itemprop` z elementów `` i `
` w sublayoutach info_block
+- Przywrócono 4 pliki: `itemprop="dateCreated"`, `itemprop="datePublished"`, `itemprop="dateModified"` oraz atrybuty schema.org w author.php
+- Metryczki BIP ponownie funkcjonalne
+
+## Files Created/Modified
+
+| File | Change | Purpose |
+|------|--------|---------|
+| `layouts/joomla/content/info_block/create_date.php` | Modified | Dodano `itemprop="dateCreated"` do `` |
+| `layouts/joomla/content/info_block/publish_date.php` | Modified | Dodano `itemprop="datePublished"` do `` |
+| `layouts/joomla/content/info_block/modify_date.php` | Modified | Dodano `itemprop="dateModified"` do `` |
+| `layouts/joomla/content/info_block/author.php` | Modified | Przywrócono `itemprop="author"`, `itemscope`, `itemprop="name"`, `itemprop="url"` |
+
+## Decisions Made
+
+| Decision | Rationale | Impact |
+|----------|-----------|--------|
+| Naprawa w core zamiast template overrides | Hotfix — klient czeka, szybka naprawa priorytetem | Problem powtórzy się przy następnej aktualizacji Joomla. Phase 2 (template overrides) rozwiąże to trwale |
+
+## Deviations from Plan
+
+### Summary
+
+| Type | Count | Impact |
+|------|-------|--------|
+| Auto-fixed | 0 | n/a |
+| Scope additions | 0 | n/a |
+| Deferred | 1 | Phase 2 |
+
+### Deferred Items
+
+- Phase 2: Przenieść customizacje do template overrides (`templates/instytut_dendrologii_/html/layouts/joomla/content/info_block/`) aby przetrwały przyszłe aktualizacje Joomla
+
+## Issues Encountered
+
+| Issue | Resolution |
+|-------|------------|
+| SCP nie obsługuje hasła interaktywnie | Użytkownik pobrał pliki ręcznie przez ftp-kr |
+
+## Next Phase Readiness
+
+**Ready:**
+- Metryczki działają, klient obsłużony
+
+**Concerns:**
+- Problem powtórzy się przy następnej aktualizacji Joomla (pliki core nadpisywane)
+- Rozwiązanie trwałe wymaga Phase 2: template overrides
+
+**Blockers:**
+- None
+
+---
+*Phase: 01-fix-article-info-metryczki, Plan: 01*
+*Completed: 2026-04-10*
diff --git a/.serena/.gitignore b/.serena/.gitignore
new file mode 100644
index 0000000..2e510af
--- /dev/null
+++ b/.serena/.gitignore
@@ -0,0 +1,2 @@
+/cache
+/project.local.yml
diff --git a/.serena/project.yml b/.serena/project.yml
new file mode 100644
index 0000000..fe6eb19
--- /dev/null
+++ b/.serena/project.yml
@@ -0,0 +1,152 @@
+# the name by which the project can be referenced within Serena
+project_name: "idpan.poznan.pl"
+
+
+# list of languages for which language servers are started; choose from:
+# al bash clojure cpp csharp
+# csharp_omnisharp dart elixir elm erlang
+# fortran fsharp go groovy haskell
+# java julia kotlin lua markdown
+# matlab nix pascal perl php
+# php_phpactor powershell python python_jedi r
+# rego ruby ruby_solargraph rust scala
+# swift terraform toml typescript typescript_vts
+# vue yaml zig
+# (This list may be outdated. For the current list, see values of Language enum here:
+# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py
+# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
+# Note:
+# - For C, use cpp
+# - For JavaScript, use typescript
+# - For Free Pascal/Lazarus, use pascal
+# Special requirements:
+# Some languages require additional setup/installations.
+# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
+# When using multiple languages, the first language server that supports a given file will be used for that file.
+# The first language is the default language and the respective language server will be used as a fallback.
+# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
+languages:
+- php
+
+# the encoding used by text files in the project
+# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
+encoding: "utf-8"
+
+# line ending convention to use when writing source files.
+# Possible values: unset (use global setting), "lf", "crlf", or "native" (platform default)
+# This does not affect Serena's own files (e.g. memories and configuration files), which always use native line endings.
+line_ending:
+
+# The language backend to use for this project.
+# If not set, the global setting from serena_config.yml is used.
+# Valid values: LSP, JetBrains
+# Note: the backend is fixed at startup. If a project with a different backend
+# is activated post-init, an error will be returned.
+language_backend:
+
+# whether to use project's .gitignore files to ignore files
+ignore_all_files_in_gitignore: true
+
+# advanced configuration option allowing to configure language server-specific options.
+# Maps the language key to the options.
+# Have a look at the docstring of the constructors of the LS implementations within solidlsp (e.g., for C# or PHP) to see which options are available.
+# No documentation on options means no options are available.
+ls_specific_settings: {}
+
+# list of additional paths to ignore in this project.
+# Same syntax as gitignore, so you can use * and **.
+# Note: global ignored_paths from serena_config.yml are also applied additively.
+ignored_paths: []
+
+# whether the project is in read-only mode
+# If set to true, all editing tools will be disabled and attempts to use them will result in an error
+# Added on 2025-04-18
+read_only: false
+
+# list of tool names to exclude.
+# This extends the existing exclusions (e.g. from the global configuration)
+#
+# Below is the complete list of tools for convenience.
+# To make sure you have the latest list of tools, and to view their descriptions,
+# execute `uv run scripts/print_tool_overview.py`.
+#
+# * `activate_project`: Activates a project by name.
+# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
+# * `create_text_file`: Creates/overwrites a file in the project directory.
+# * `delete_lines`: Deletes a range of lines within a file.
+# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
+# * `execute_shell_command`: Executes a shell command.
+# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
+# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
+# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
+# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
+# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
+# * `initial_instructions`: Gets the initial instructions for the current project.
+# Should only be used in settings where the system prompt cannot be set,
+# e.g. in clients you have no control over, like Claude Desktop.
+# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
+# * `insert_at_line`: Inserts content at a given line in a file.
+# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
+# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
+# * `list_memories`: Lists memories in Serena's project-specific memory store.
+# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
+# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
+# * `read_file`: Reads a file within the project directory.
+# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
+# * `remove_project`: Removes a project from the Serena configuration.
+# * `replace_lines`: Replaces a range of lines within a file with new content.
+# * `replace_symbol_body`: Replaces the full definition of a symbol.
+# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
+# * `search_for_pattern`: Performs a search for a pattern in the project.
+# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
+# * `switch_modes`: Activates modes by providing a list of their names
+# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
+# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
+# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
+# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
+excluded_tools: []
+
+# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default).
+# This extends the existing inclusions (e.g. from the global configuration).
+included_optional_tools: []
+
+# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
+# This cannot be combined with non-empty excluded_tools or included_optional_tools.
+fixed_tools: []
+
+# list of mode names to that are always to be included in the set of active modes
+# The full set of modes to be activated is base_modes + default_modes.
+# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply.
+# Otherwise, this setting overrides the global configuration.
+# Set this to [] to disable base modes for this project.
+# Set this to a list of mode names to always include the respective modes for this project.
+base_modes:
+
+# list of mode names that are to be activated by default.
+# The full set of modes to be activated is base_modes + default_modes.
+# If the setting is undefined, the default_modes from the global configuration (serena_config.yml) apply.
+# Otherwise, this overrides the setting from the global configuration (serena_config.yml).
+# This setting can, in turn, be overridden by CLI parameters (--mode).
+default_modes:
+
+# initial prompt for the project. It will always be given to the LLM upon activating the project
+# (contrary to the memories, which are loaded on demand).
+initial_prompt: ""
+
+# time budget (seconds) per tool call for the retrieval of additional symbol information
+# such as docstrings or parameter information.
+# This overrides the corresponding setting in the global configuration; see the documentation there.
+# If null or missing, use the setting from the global configuration.
+symbol_info_budget:
+
+# list of regex patterns which, when matched, mark a memory entry as read‑only.
+# Extends the list from the global configuration, merging the two lists.
+read_only_memory_patterns: []
+
+# list of regex patterns for memories to completely ignore.
+# Matching memories will not appear in list_memories or activate_project output
+# and cannot be accessed via read_memory or write_memory.
+# To access ignored memory files, use the read_file tool on the raw file path.
+# Extends the list from the global configuration, merging the two lists.
+# Example: ["_archive/.*", "_episodes/.*"]
+ignored_memory_patterns: []
diff --git a/.vscode/ftp-kr.json b/.vscode/ftp-kr.json
index 3f54163..71fa98a 100644
--- a/.vscode/ftp-kr.json
+++ b/.vscode/ftp-kr.json
@@ -12,6 +12,8 @@
"ignoreRemoteModification": true,
"ignore": [
".git",
- "/.vscode"
+ "/.vscode",
+ "/.serena",
+ "/.paul"
]
}
\ No newline at end of file
diff --git a/.vscode/ftp-kr.sync.cache.json b/.vscode/ftp-kr.sync.cache.json
index 7271422..79d4b8e 100644
--- a/.vscode/ftp-kr.sync.cache.json
+++ b/.vscode/ftp-kr.sync.cache.json
@@ -211,10 +211,38 @@
"components": {},
"cli": {},
"api": {},
- "administrator": {},
+ "administrator": {
+ "components": {
+ "com_jchoptimize": {
+ "lib": {
+ "src": {
+ "Log": {
+ "DelegatingPsrLoggerExtended.php": {
+ "type": "-",
+ "size": 1976,
+ "lmtime": 1775767654103,
+ "modified": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"tmp": {},
"templates": {},
- "plugins": {},
+ "plugins": {
+ "content": {
+ "jt_copymoduleassignments": {
+ "jt_copymoduleassignments.php": {
+ "type": "-",
+ "size": 1667,
+ "lmtime": 1775767845930,
+ "modified": false
+ }
+ }
+ }
+ },
"modules": {},
".htaccess": {
"type": "-",
diff --git a/layouts/joomla/content/info_block/category.php b/layouts/joomla/content/info_block/category.php
index 4006b0f..8a40824 100644
--- a/layouts/joomla/content/info_block/category.php
+++ b/layouts/joomla/content/info_block/category.php
@@ -23,9 +23,9 @@ use Joomla\Component\Content\Site\Helper\RouteHelper;
catid, $displayData['item']->category_language)
)
- . '" itemprop="genre">' . $title . ''; ?>
+ . '">' . $title . ''; ?>
- ' . $title . ''); ?>
+ ' . $title . ''); ?>
diff --git a/layouts/joomla/content/info_block/hits.php b/layouts/joomla/content/info_block/hits.php
index 1ff7632..91f7d84 100644
--- a/layouts/joomla/content/info_block/hits.php
+++ b/layouts/joomla/content/info_block/hits.php
@@ -15,6 +15,6 @@ use Joomla\CMS\Language\Text;
?>