docs: identidade visual uniforme (README + labels como código + ícone)#69
Merged
Conversation
Contributor
🔬 Performance benchmarkHome (
|
| 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;oubrotli 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
Useimport()dinâmico para componentes só usados em rotas específicas (RequestVerificationModal, TiersEditor). O webpack faz split automático se você usarimport("./components/RequestVerificationModal")dentro doroutesao invés de import estático no topo doindex.tsx. - CSS não utilizado — economia ~200 ms · ~226 KB
O bundleforum.csscarrega tudo deless/forum/**. Divida por rota (Home/Perfil) viaExtend\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 doforum.less. Em Flarum 2, oforum.cssé servido como bloqueante por padrão — consideremedia="print" onloadpara 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>.jsdeveriam terCache-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;oubrotli 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
Useimport()dinâmico para componentes só usados em rotas específicas (RequestVerificationModal, TiersEditor). O webpack faz split automático se você usarimport("./components/RequestVerificationModal")dentro doroutesao invés de import estático no topo doindex.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 doforum.less. Em Flarum 2, oforum.cssé servido como bloqueante por padrão — consideremedia="print" onloadpara folhas não-críticas (ex.: estilos só do painel admin da extensão). - CSS não utilizado — economia ~160 ms · ~226 KB
O bundleforum.csscarrega tudo deless/forum/**. Divida por rota (Home/Perfil) viaExtend\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>.jsdeveriam terCache-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;oubrotli 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
Useimport()dinâmico para componentes só usados em rotas específicas (RequestVerificationModal, TiersEditor). O webpack faz split automático se você usarimport("./components/RequestVerificationModal")dentro doroutesao invés de import estático no topo doindex.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 doforum.less. Em Flarum 2, oforum.cssé servido como bloqueante por padrão — consideremedia="print" onloadpara folhas não-críticas (ex.: estilos só do painel admin da extensão). - CSS não utilizado — economia ~200 ms · ~225 KB
O bundleforum.csscarrega tudo deless/forum/**. Divida por rota (Home/Perfil) viaExtend\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>.jsdeveriam terCache-Control: public, max-age=31536000, immutable. Configure no nginx/apache, não no Flarum.
🛒 Dicas gerais para acelerar a loja (Flarum 2 + Verified)
- Build de produção minificado — confirme que
npm run buildrodou commode: production(já é o caso nojs/package.json). Webpack tree-shakesimport { x } from "flarum/..."se o consumo for explícito. - Split por rota —
index.tsximporta todos os Components no topo. Trocar paraimport()dinâmico nas rotas raramente acessadas (RequestVerificationModal, TiersEditor) reduz oforum.jsinicial. - Less crítico inline — Flarum 2 serve
forum.cssbloqueando. Considere extrair o CSS above-the-fold (header + 1ª linha de ProductCards) e injetar inline viaExtend\Frontend->content(InlineCriticalCss::class). - Imagens de produto — sirva via
<img loading="lazy">em todos os ProductCards que não estiverem no fold inicial, e gere WebP no upload. <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.Extend\Frontend->js()rodam síncronos — todo arquivojs/dist/forum.jsé parseado no boot. Cadaextend()noindex.tsxroda antes da primeira pintura.- opcache + view cache — no host:
opcache.enable=1,opcache.validate_timestamps=0em produção, ephp flarum cache:clearno deploy. - 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.
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.
42a6dba to
4ad0693
Compare
ram0ng1
added a commit
that referenced
this pull request
Jun 11, 2026
docs: identidade visual uniforme (README + labels como código + ícone)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 emmain).Labels como código:
.github/labels.json(manifesto canônico de 11 labels, mesmas cores e descrições da família) +labels-sync.ymlque aplica o manifesto e remove labels fora dele. Harden-runner, SHA-pins,permissions: {}.Descrição uniforme: o
descriptiondo composer.json passa a usar o padrão da família ("Verified user badges with admin reviewed requests for Flarum 2").Ícone:
icon.svgganhawidth="150" height="150"na raiz e trocaaria-hiddenporrole="img"comaria-label. Com sóviewBox, renderizadores fora do GitHub podem tratar o SVG como dimensão zero.sync-branches: passa a ignorar
dependabot/*eclaude/*— sincronizar branch de PR via GITHUB_TOKEN apagava os checks desses PRs a cada merge em main.Pós-merge
O
labels-sync.ymlroda sozinho no push e alinha os labels.