teqo-backup/docs/changelog/2026-08-19-ops69.md
Francisco Solla 7162c65e37 ops(OPS69): regenera importMap com o S3ClientUploadHandler (admin abria em branco em prod)
O importMap commitado ficou sem a entrada @payloadcms/storage-s3/client#S3ClientUploadHandler
desde o OPS52 (dabc00f4 removeu o handler do blob sem adicionar o do S3, porque o
generate:importmap rodou sem as envs S3_*). Com o plugin s3Storage condicional, sem as
envs o importMap sai consistente (dev/test) mas em produção (envs ativas) o admin falhava
ao montar a view — getFromImportMap: PayloadComponent not found in importMap — login nunca
renderizava. Fix: regenerar com as 4 S3_* dummy inline (loadEnvConfig do @next/env não
sobrescreve envs do processo; iterateConfig não toca DB) — diff de exatamente +2 linhas.
Smoke headless com S3 ativo: /admin/login renderiza, zero erros de console. Gates verdes
(tsc/lint/format/knip/cycles/unit+int 791/build). Sem migration/access/UI. Docs: nota no
AGENTS.md (generate:importmap precisa das S3_* enquanto o plugin for condicional) +
changelog. Guard de CI registrado como OPS70 (#87, depends #77).
2026-08-19 12:45:22 -03:00

1.7 KiB

OPS69 — o admin do Payload abria em branco em produção (P0, 2026-08-19): o importMap commitado (src/app/(payload)/admin/importMap.js) ficou sem a entrada @payloadcms/storage-s3/client#S3ClientUploadHandler — o commit OPS52 (dabc00f4) removeu o handler do Vercel Blob e não adicionou o do S3, porque o pnpm generate:importmap rodou sem as envs S3_*: com o plugin s3Storage condicional, sem as envs o importMap sai consistente (dev/test, storage local) e com elas (produção, Garage) o admin precisa do handler e o montava → getFromImportMap: PayloadComponent not found in importMap → login nunca renderizava. Fix mínimo (opção A do plano, aprovado no gate): regenerar o importMap com as 4 S3_* dummy inline (a mecânica do CLI: iterateConfig sem DB; loadEnvConfig do @next/env não sobrescreve envs já no processo) → diff de exatamente +2 linhas (import + entrada do S3ClientUploadHandler), nenhum outro drift. Verificação: smoke headless com S3 ativo no dev local — /admin/login renderiza (6 inputs, formulário visível, zero erros de console) vs. o branco reproduzido no diagnóstico; gates completos verdes (tsc/lint/format/knip/cycles, unit+int 791, build). Sem migration/access/Consent/UI. Docs: linha no AGENTS.md (checklist local: generate:importmap precisa das S3_* setadas — valores dummy ok — enquanto o plugin for condicional; sem elas o importMap fica órfão, classe OPS69) + item sucessor registrado (guard de CI que regenera com envs dummy e falha o gate se o arquivo commitado divergir — depends #77). Verificação pós-deploy: /admin abre o login e o log do container não re-emite o getFromImportMap para o handler (runbook docs/ops/teqo-1313-deploy.md).