Skip to content

docs: identidade visual uniforme (README + labels como código + ícone)#69

Merged
ram0ng1 merged 4 commits into
mainfrom
claude/chore-identidade-visual
Jun 11, 2026
Merged

docs: identidade visual uniforme (README + labels como código + ícone)#69
ram0ng1 merged 4 commits into
mainfrom
claude/chore-identidade-visual

Conversation

@ram0ng1

@ram0ng1 ram0ng1 commented Jun 11, 2026

Copy link
Copy Markdown
Owner

O que muda

README reescrito em tom direto e humano: sem travessões, sem o padrão "negrito + traço" nas bullets e sem as tabelas exaustivas de settings/endpoints (o painel admin explica cada opção em contexto). Régua de badges padronizada da família, toda em flat-square: CI, versão no Packagist, downloads, Flarum 2.x, licença e doação. Badges verificados contra a fonte (pacote no Packagist, ci.yml verde em main).

Labels como código: .github/labels.json (manifesto canônico de 11 labels, mesmas cores e descrições da família) + labels-sync.yml que aplica o manifesto e remove labels fora dele. Harden-runner, SHA-pins, permissions: {}.

Descrição uniforme: o description do composer.json passa a usar o padrão da família ("Verified user badges with admin reviewed requests for Flarum 2").

Ícone: icon.svg ganha width="150" height="150" na raiz e troca aria-hidden por role="img" com aria-label. Com só viewBox, renderizadores fora do GitHub podem tratar o SVG como dimensão zero.

sync-branches: passa a ignorar dependabot/* e claude/* — sincronizar branch de PR via GITHUB_TOKEN apagava os checks desses PRs a cada merge em main.

Pós-merge

O labels-sync.yml roda sozinho no push e alinha os labels.

@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

🔬 Performance benchmark

Home (/)

Métrica PR Main (baseline) Δ
Performance (score) 92 80 🟢 12pp (15.0%)
FCP 1310 ms 1645 ms 🟢 -335 ms (-20.4%)
LCP 1430 ms 1771 ms 🟢 -341 ms (-19.3%)
TBT 24 ms 169 ms 🟢 -145 ms (-85.8%)
CLS 0.000 0.000 (=)
Speed Index 1310 ms 1958 ms 🟢 -648 ms (-33.1%)
TTI 1430 ms 1974 ms 🟢 -544 ms (-27.6%)

💡 Recomendações (Lighthouse + dicas Flarum 2 / Marketplace)

  • Sem compressão de texto — economia ~640 ms · ~735 KB
    Habilite gzip/brotli no servidor (nginx: gzip on; gzip_types text/css application/javascript; ou brotli on; brotli_types ...). Esse é um setting de host, não da extensão, mas reportar aqui ajuda.
  • JavaScript não utilizado — economia ~360 ms · ~461 KB
    Use import() dinâmico para componentes só usados em rotas específicas (RequestVerificationModal, TiersEditor). O webpack faz split automático se você usar import("./components/RequestVerificationModal") dentro do routes ao invés de import estático no topo do index.tsx.
  • CSS não utilizado — economia ~200 ms · ~226 KB
    O bundle forum.css carrega tudo de less/forum/**. Divida por rota (Home/Perfil) via Extend\Frontend->css() condicional no JS, ou use PurgeCSS no webpack para o build de produção.
  • Recursos bloqueando o render — economia ~160 ms
    Mova CSS não-crítico para <link rel="preload"> ou injete inline o CSS above-the-fold do forum.less. Em Flarum 2, o forum.css é servido como bloqueante por padrão — considere media="print" onload para folhas não-críticas (ex.: estilos só do painel admin da extensão).
  • Cache HTTP curto — 5 resources found
    Os assets versionados em /assets/forum-<hash>.js deveriam ter Cache-Control: public, max-age=31536000, immutable. Configure no nginx/apache, não no Flarum.

/all

Métrica PR Main (baseline) Δ
Performance (score) 95 95 (=)
FCP 1065 ms 1065 ms 🟢 0 ms (-0.0%)
LCP 1237 ms 1239 ms 🟢 -2 ms (-0.1%)
TBT 0 ms 0 ms (=)
CLS 0.000 0.000 (=)
Speed Index 1065 ms 1065 ms 🟢 0 ms (-0.0%)
TTI 1238 ms 1240 ms 🟢 -2 ms (-0.2%)

💡 Recomendações (Lighthouse + dicas Flarum 2 / Marketplace)

  • Sem compressão de texto — economia ~600 ms · ~735 KB
    Habilite gzip/brotli no servidor (nginx: gzip on; gzip_types text/css application/javascript; ou brotli on; brotli_types ...). Esse é um setting de host, não da extensão, mas reportar aqui ajuda.
  • JavaScript não utilizado — economia ~360 ms · ~460 KB
    Use import() dinâmico para componentes só usados em rotas específicas (RequestVerificationModal, TiersEditor). O webpack faz split automático se você usar import("./components/RequestVerificationModal") dentro do routes ao invés de import estático no topo do index.tsx.
  • Recursos bloqueando o render — economia ~200 ms
    Mova CSS não-crítico para <link rel="preload"> ou injete inline o CSS above-the-fold do forum.less. Em Flarum 2, o forum.css é servido como bloqueante por padrão — considere media="print" onload para folhas não-críticas (ex.: estilos só do painel admin da extensão).
  • CSS não utilizado — economia ~160 ms · ~226 KB
    O bundle forum.css carrega tudo de less/forum/**. Divida por rota (Home/Perfil) via Extend\Frontend->css() condicional no JS, ou use PurgeCSS no webpack para o build de produção.
  • Cache HTTP curto — 5 resources found
    Os assets versionados em /assets/forum-<hash>.js deveriam ter Cache-Control: public, max-age=31536000, immutable. Configure no nginx/apache, não no Flarum.

/u/admin

Métrica PR Main (baseline) Δ
Performance (score) 94 94 (=)
FCP 1089 ms 1095 ms 🟢 -7 ms (-0.6%)
LCP 1362 ms 1391 ms 🟢 -29 ms (-2.1%)
TBT 0 ms 0 ms (=)
CLS 0.002 0.002 (=)
Speed Index 1089 ms 1095 ms 🟢 -7 ms (-0.6%)
TTI 1362 ms 1391 ms 🟢 -29 ms (-2.1%)

💡 Recomendações (Lighthouse + dicas Flarum 2 / Marketplace)

  • Sem compressão de texto — economia ~600 ms · ~736 KB
    Habilite gzip/brotli no servidor (nginx: gzip on; gzip_types text/css application/javascript; ou brotli on; brotli_types ...). Esse é um setting de host, não da extensão, mas reportar aqui ajuda.
  • JavaScript não utilizado — economia ~320 ms · ~430 KB
    Use import() dinâmico para componentes só usados em rotas específicas (RequestVerificationModal, TiersEditor). O webpack faz split automático se você usar import("./components/RequestVerificationModal") dentro do routes ao invés de import estático no topo do index.tsx.
  • Recursos bloqueando o render — economia ~240 ms
    Mova CSS não-crítico para <link rel="preload"> ou injete inline o CSS above-the-fold do forum.less. Em Flarum 2, o forum.css é servido como bloqueante por padrão — considere media="print" onload para folhas não-críticas (ex.: estilos só do painel admin da extensão).
  • CSS não utilizado — economia ~200 ms · ~225 KB
    O bundle forum.css carrega tudo de less/forum/**. Divida por rota (Home/Perfil) via Extend\Frontend->css() condicional no JS, ou use PurgeCSS no webpack para o build de produção.
  • Cache HTTP curto — 5 resources found
    Os assets versionados em /assets/forum-<hash>.js deveriam ter Cache-Control: public, max-age=31536000, immutable. Configure no nginx/apache, não no Flarum.

🛒 Dicas gerais para acelerar a loja (Flarum 2 + Verified)

  1. Build de produção minificado — confirme que npm run build rodou com mode: production (já é o caso no js/package.json). Webpack tree-shakes import { x } from "flarum/..." se o consumo for explícito.
  2. Split por rotaindex.tsx importa todos os Components no topo. Trocar para import() dinâmico nas rotas raramente acessadas (RequestVerificationModal, TiersEditor) reduz o forum.js inicial.
  3. Less crítico inline — Flarum 2 serve forum.css bloqueando. Considere extrair o CSS above-the-fold (header + 1ª linha de ProductCards) e injetar inline via Extend\Frontend->content(InlineCriticalCss::class).
  4. Imagens de produto — sirva via <img loading="lazy"> em todos os ProductCards que não estiverem no fold inicial, e gere WebP no upload.
  5. <link rel="preconnect"> — carregue o Stripe.js (js.stripe.com) só na rota de checkout e adicione preconnect lá; se usa CDN para fontes ou imagens S3, adicione preconnects no header.
  6. Extend\Frontend->js() rodam síncronos — todo arquivo js/dist/forum.js é parseado no boot. Cada extend() no index.tsx roda antes da primeira pintura.
  7. opcache + view cache — no host: opcache.enable=1, opcache.validate_timestamps=0 em produção, e php flarum cache:clear no deploy.
  8. HTTP/2 + Brotli no host — o Flarum gera bundles grandes; sem brotli você paga em transferência.

Lighthouse desktop, 1 run por URL. 🟢 = melhorou vs main · 🔴 = regrediu.

ram0ng1 added 4 commits June 11, 2026 17:23
README reescrito em tom direto, sem travessões e sem tabelas de
referência exaustivas (settings e permissões são explicados no próprio
painel), com a régua de badges padronizada da família em flat-square.
Labels passam a ser declarados em .github/labels.json e aplicados pelo
workflow labels-sync.yml, idênticos em todos os repositórios. O
icon.svg ganha width/height explícitos e troca aria-hidden por
role=img com aria-label, para renderizar fora do GitHub.
Push do sync via GITHUB_TOKEN não dispara workflows, então sincronizar
dependabot/* e claude/* apagava os checks desses PRs a cada merge em
main. Branches de PR ficam de fora; quem cuida deles é o rebase do
Dependabot e o update branch do GitHub.
@ram0ng1 ram0ng1 force-pushed the claude/chore-identidade-visual branch from 42a6dba to 4ad0693 Compare June 11, 2026 17:23
@ram0ng1 ram0ng1 added melhoria Nova funcionalidade ou aprimoramento (minor) dependencias Atualização de dependências (composer, npm, actions) labels Jun 11, 2026 — with Claude
@ram0ng1 ram0ng1 merged commit f6d7e57 into main Jun 11, 2026
19 checks passed
ram0ng1 added a commit that referenced this pull request Jun 11, 2026
docs: identidade visual uniforme (README + labels como código + ícone)
@github-actions github-actions Bot deleted the claude/chore-identidade-visual branch June 11, 2026 22:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencias Atualização de dependências (composer, npm, actions) melhoria Nova funcionalidade ou aprimoramento (minor)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant