Files
cmsPRO/.paul/STATE.md
Jacek Pyziak a3caeb9a9a feat(06-admin-base): Admin\ base infrastructure — Form Edit System + Support layer (Phase 6)
Phase 6 zamknięta po 2 planach. Pełny fundament dla Phase 7-13 (migracja
17 admin controllers do Admin\ namespace).

06-01 (Forms infrastructure):
- Admin\ViewModels\Forms\* — 5 ViewModeli (687 L)
- Admin\Validation\FormValidator (196 L)
- composer.json: php >=7.4, PSR-4 paths cross-platform safe
  (Admin\ → autoload/admin/, Frontend\ → autoload/front/)

06-02 (Support layer):
- Admin\Support\TableListRequestFactory (99 L) — parser list z $_GET
- Admin\Support\Forms\FormRequestHandler (159 L) — POST + CSRF + walidacja + persist
- Admin\Support\Forms\FormFieldRenderer (494 L) — renderer HTML pól

Decyzje:
- Brak BaseController — Phase 7+ kontrolery jako POJOs z DI (jak shopPRO)
- PSR-4 filename fix: TableListRequestFactory.php (bez shopPRO 'class.' prefix)
- PascalCase namespace (Admin\Support) na lowercase folder admin/
  ze względu na Windows fs case-insensitivity vs legacy admin/controls/

Pliki: 8 nowych klas, 1635 L kodu PHP 7.4-kompatybilnego, zero regresji.
Smoke test: walidacja e-maila zwraca PL komunikat, factory parsuje
?page=&per_page=&sort=&filter=, Domain/Shared nadal ładują się.

PHPUnit: 37/37 OK.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 23:32:26 +02:00

3.7 KiB

Project State

Project Reference

See: .paul/PROJECT.md (updated 2026-04-26)

Core value: Autorski system CMS umożliwiający zarządzanie treściami i stronami internetowymi. Current focus: Phase 6 — Plan 06-01 (Forms infrastructure) created, awaiting approval

Current Position

Milestone: v0.1 Refaktoryzacja Phase: 6 of 19 (Admin: Base Infrastructure) — Complete Plan: All plans complete (06-01, 06-02) Status: Phase 6 closed — ready to plan Phase 7 Last activity: 2026-04-30 — UNIFY 06-02 closed Phase 6 (Admin Base Infrastructure shipped)

Progress:

  • Milestone: [▓▓▓▓░░░░░░] 32% (6 of 19 phases)
  • Phase 6: [▓▓▓▓▓▓▓▓▓▓] 100% complete

Loop Position

Current loop state:

PLAN ──▶ APPLY ──▶ UNIFY
  ✓        ✓        ✓     [Phase 6 complete — ready for Phase 7 PLAN]

Performance Metrics

Velocity:

  • Total plans completed: 7
  • Total execution time: ~39min

By Phase:

Phase Plans Total Time Avg/Plan
01-infrastructure 1/1 ~10min ~10min
02-shared-email-security 1/1 ~8min ~8min
03-domain-scontainers-banners 1/1 ~2min ~2min
04-domain-authors-newsletter 1/1 ~2min ~2min
04h-hotfix-https-updates 1/1 ~90min ~90min
05-domain-seoadditional-cron-releases 1/1 ~5min ~5min
06-admin-base 2/2 ~12min ~6min

Accumulated Context

Decisions

  • 2026-04-30: Phase 6/06-02 — Brak BaseController. Phase 7+ kontrolery będą POJOs z DI w konstruktorze (jak shopPRO BannerController). Powtórzony kod (np. requirePrivilege()) zostanie wyabstrahowany dopiero gdy zaobserwujemy realny pattern w 2-3 kontrolerach.
  • 2026-04-30: Phase 6/06-02 — Filename TableListRequestFactory.php (PSR-4 czyste) zamiast shopPRO class.TableListRequestFactory.php (lamie PSR-4). Naprawia bug shopPRO.
  • 2026-04-30: Phase 6/06-01 — composer.json PSR-4 mapuje Admin\autoload/admin/ (lowercase folder), bo Windows fs case-insensitive zlał admin/ legacy z planowanym Admin/. Cross-platform safe na Linux. Bonus: Frontend\autoload/front/ (preventive dla Phase 14+).
  • 2026-04-30: Phase 6/06-01 — Form VMs i FormValidator skopiowane 1:1 z shopPRO; jedyne zmiany to namespace admin\Admin\ (PascalCase per decyzja użytkownika). PROJECT.md mylnie deklarował, że Form Edit System już istnieje — w cmsPRO go nie było.
  • 2026-04-26: Phase 5 — UpdateRepository przyjmuje ($db, $settings) w konstruktorze — settings potrzebny do update_key i wersji.
  • 2026-04-26: Phase 5 — Cron helper methods (get_site_meta_*) stały się private w CronRepository — były wywoływane tylko wewnętrznie.
  • 2026-04-26: Phase 5 — class.Cron.php zachowuje brak namespace (klasa globalna) — cron.php używa bezpośrednio.
  • 2026-04-26: Hotfix 04h — full-patch wszystkich 121 paczek (zamiast minimal-patch). Powód: paczki nadpisują class.S.php w różnych wersjach, częściowy patch ryzykuje regresję podczas chain-update.
  • Centralny autoloader zamiast duplikatów
  • CsrfToken: single token per session (shopPRO pattern)
  • Email: PHPMailer require via DIR absolute paths
  • Shared layer kompletny: Cache, Helpers, Html, Image, Tpl, Email, Security
  • Wrapper delegation: factory creates new repo per call (no singleton)
  • Front repos: $lang[0] passed explicitly, repos don't use globals
  • Newsletter: globals ($settings, $lang) passed as explicit params to repo methods

Deferred Issues

None.

Blockers/Concerns

None.

Session Continuity

Last session: 2026-04-30 Stopped at: Phase 6 complete (loop closed) Next action: /paul:plan dla Phase 7 (Admin: Articles + ArticlesArchive) Resume file: .paul/ROADMAP.md


STATE.md — Updated after every significant action