chore: reconcile main deployment and agent docs
Squash merge of the validated main reconciliation changes.
This commit is contained in:
@@ -42,6 +42,10 @@ History follows Conventional Commit-style subjects, for example `feat: Fase 0
|
|||||||
|
|
||||||
Copy `.env.example`; never commit secrets or production credentials. Development seed credentials are local-only. Validate uploads and authorization through Laravel policies, and run `composer security-audit` after dependency changes.
|
Copy `.env.example`; never commit secrets or production credentials. Development seed credentials are local-only. Validate uploads and authorization through Laravel policies, and run `composer security-audit` after dependency changes.
|
||||||
|
|
||||||
|
## Design Context
|
||||||
|
|
||||||
|
Amare: refined, humane, precise — Heritage Editorial (see `.impeccable.md`). Trust-first, both private + corporate audiences. Never generic wedding decor (hearts/gold/script) or AI-slop. Real proof only. For design skills, read `.impeccable.md` at project root.
|
||||||
|
|
||||||
## Agent skills
|
## Agent skills
|
||||||
|
|
||||||
### Issue tracker
|
### Issue tracker
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ services:
|
|||||||
restart: "no"
|
restart: "no"
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
command: ["sh", "-c", "php artisan migrate --force --no-interaction && php artisan db:seed --class=ContentSeeder --force; php artisan media:generate-variants --force; true"]
|
command: >
|
||||||
|
sh -c
|
||||||
|
"php artisan migrate --force --no-interaction
|
||||||
|
&& php artisan db:seed --class=ContentSeeder --force --no-interaction
|
||||||
|
&& php artisan media:generate-variants --force"
|
||||||
networks:
|
networks:
|
||||||
- dokploy-network
|
- dokploy-network
|
||||||
|
|
||||||
|
|||||||
92
tasks.md
92
tasks.md
@@ -1,79 +1,19 @@
|
|||||||
# Frontend Audit — Amare site
|
# Fix visual regression baselines (CI-parity)
|
||||||
|
|
||||||
## T0 — Baseline
|
- [x] 1. Worktree `fix/visual-baselines-ci` a partir de `origin/main` (.worktrees/visual-baselines-ci @ 0aee15e)
|
||||||
- [x] Rodar `composer quality` p/ registrar estado verde atual (110 passed após composer install)
|
- [x] 2. Postgres `amare_test` up (amare-postgres reutilizado, DB criado)
|
||||||
- [x] Registrado estado baseline; Lighthouse final consolidado no T6
|
- [x] 3. Build `amare-app:ci` + container amare-web com env idêntica ao job browser (APP_FROZEN_NOW etc.) — /up ok
|
||||||
- [x] Registrar achados baseline (audit completo em frontend-audit.md + relatório subagent)
|
- [x] 4. Build imagem amare-ci-runner (ubuntu:24.04 + PHP 8.4 + node 22 + playwright deps)
|
||||||
|
- [x] 5. Regenerar 16 snapshots via `php artisan test --testsuite=Browser --update-snapshots` dentro do ci-runner (network host)
|
||||||
|
- [x] 6. Verificar: re-run Browser suite verde (35/35)
|
||||||
|
- [x] 7. Commit .snap, push, PR #24, CI verde; bump commonmark 2.9.0 p/ auditoria; merged
|
||||||
|
|
||||||
## T1 — Formulário de contato (e-mail, sem CRM)
|
# PR #23 — cadência editorial à home (sync + merge)
|
||||||
- [x] Form em /contato (campos, LGPD obrigatório)
|
|
||||||
- [x] Rota POST /contato + validação + honeypot + throttle
|
|
||||||
- [x] Anti duplo-envio, estados sucesso/erro/rede, preservação de dados
|
|
||||||
- [x] E-mail via MAIL_MAILER (Resend prod / log local)
|
|
||||||
- [x] A11y do form (labels, erros ligados)
|
|
||||||
- [x] Testes feature + atualizar PublicPagesTest — Feature suite: 97 passed
|
|
||||||
|
|
||||||
## T2 — A11y/navegação
|
- [x] 1. Reset worktree home-editorial-cadence p/ origin/feat/home-editorial-cadence (8ae5824, incl. reconcile)
|
||||||
- [x] Menu mobile: Escape, retorno de foco, fallback sem-JS (app.js + noscript)
|
- [x] 2. Merge origin/main (PR #24): resolver conflitos home snaps (theirs); 14 snaps não-home via auto-merge
|
||||||
- [x] Touch targets ≥44px (header, footer, CTAs, capítulos)
|
- [x] 3. Rebuild amare-app:ci com código PR #23; container amare-web recriado
|
||||||
- [x] Footer: ul/li + address
|
- [x] 4. Regenerar home desktop/mobile snaps no ci-runner (--update-snapshots); commit d9751b1
|
||||||
|
- [x] 5. Verificação: Browser suite 37 passed (156 assertions) — inclui HomeEditorialCadenceTest/MotionTest
|
||||||
## T3 — SEO/metadados
|
- [x] 6. Push; CI 5/5 verde (run 31230461189)
|
||||||
- [x] Títulos "Página · Amare" (PageMeta::withBrandSuffix)
|
- [x] 7. Merge squash PR #23 (commit 42b282c1); worktree/branch/remota limpos
|
||||||
- [x] og:locale, og:site_name, Twitter cards
|
|
||||||
- [x] Favicon real + link, theme-color
|
|
||||||
- [x] Metadados corretos em 404/500 (PageMeta::forErrorPage)
|
|
||||||
- [x] noindex fora de produção (robots meta condicional)
|
|
||||||
|
|
||||||
## T4 — Conteúdo/posicionamento
|
|
||||||
- [x] Remover welcome.blade.php, home/cases, home/proof
|
|
||||||
- [x] Dedup heading final-CTA vs h1 contato; dedup disclaimers
|
|
||||||
- [x] CTA consistente mobile/desktop
|
|
||||||
- [x] Corrigir copy "Em breve..." nas listas
|
|
||||||
- [x] Rebalancear copy corporativo/social
|
|
||||||
|
|
||||||
## T5 — Performance
|
|
||||||
- [x] fetchpriority + dimensões hero (LCP)
|
|
||||||
- [x] Guarda CLS no media/image
|
|
||||||
- [x] Cache manifest de fontes
|
|
||||||
- [x] Escape JSON-LD
|
|
||||||
|
|
||||||
## T6 — Validação final
|
|
||||||
- [x] pint, phpstan, testes unit/feature/architecture — `composer quality` verde (135 testes)
|
|
||||||
- [x] Browser tests + visual regression (18 passaram; 8 baselines `.snap` atualizadas com `--update-snapshots`)
|
|
||||||
- [x] Lighthouse final (home mobile: A11y 100, Best Practices 100, SEO 69 só por noindex intencional fora de prod; contato desktop: A11y 100, BP 100)
|
|
||||||
- [x] E2E form: submit → sucesso role=status; 2 e-mails (novo briefing + confirmação) logados via MAIL_MAILER=log; fila drenada
|
|
||||||
- [x] Mobile: sem overflow horizontal nas 7 rotas (390px); menu mobile abre/fecha + Escape + retorno de foco
|
|
||||||
- [x] Relatório de entrega
|
|
||||||
|
|
||||||
## T7 — Hardening Public Blades
|
|
||||||
|
|
||||||
- [x] Chunk 1: CSS overflow resilience (`overflow-wrap` body + `[data-chapter-index]` wrap safety, browser test)
|
|
||||||
- [x] Chunk 2: Hero + final-CTA fallbacks + `leading-tight` (TDD)
|
|
||||||
- [x] Chunk 3a: Skip blank-quote testimonials (TDD)
|
|
||||||
- [x] Chunk 3b: Guard empty `event_type` + `break-words` meta line (TDD)
|
|
||||||
- [x] Chunk 4: Extend `PageMeta::forErrorPage` + branded 419/429/503 error views (TDD)
|
|
||||||
- [x] Chunk 5: `app.js` defensive hardening — bfcache submit reset, "Enviando…" label swap, aria-busy, mobile-menu focus trap + Escape
|
|
||||||
- [x] Chunk 6: Quality gates — Pint passed, PHPStan clean, 104 feature tests passed (587 assertions), Vite build succeeded
|
|
||||||
|
|
||||||
### Deviations from plan
|
|
||||||
|
|
||||||
- `PageMeta::forErrorPage` landed on `main` during implementation; rebased and extended it for 419/429/503.
|
|
||||||
- Contact form landed on `main`; submit-state browser coverage was restored.
|
|
||||||
- `event_type: null` violates NOT NULL column — test uses `''` instead (guard covers both).
|
|
||||||
|
|
||||||
# Browser CI Gate — estabilidade e diagnosticabilidade
|
|
||||||
|
|
||||||
## BG — Causa raiz
|
|
||||||
- [x] Diagnosticar 3 runs: mismatch visual (8 testes), acessibilidade (1), timeout networkidle 5s + overflow real
|
|
||||||
- [x] Reproduzir local: `waitForLoadState('networkidle')` fragil (conexões longas), default 5s
|
|
||||||
- [x] Reproduzir warning `file_get_contents(.env)` em TODO teste (CI sem .env)
|
|
||||||
|
|
||||||
## BG — Fixes
|
|
||||||
- [x] Helper `StableScreenshot` (tests/Support/): drop networkidle → readyState + fonts + settle
|
|
||||||
- [x] Exportar PNGs standalone (diff/expected/actual) no mismatch — visíveis nos artifacts
|
|
||||||
- [x] CI: `cp .env.example .env` nos jobs de teste; checkout/cache v5
|
|
||||||
- [x] Gitignore tests/Browser/Screenshots
|
|
||||||
- [x] Unit test MismatchScreenshotExporter; pint/phpstan/unit/feature verdes
|
|
||||||
- [x] Push + PR + CI browser verde (PR #15 merge f09ea83, run 31098941038)
|
|
||||||
- [x] Refresh baselines de CI se necessário (não necessário — browser passou com baselines atuais)
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user