JIMPNEXUS
Portal
Portal Nexus · documento de passagem

Tudo o que o portal é, e como continuar sem recomeçar

Esta página existe para que outra conta assuma o Portal Nexus sem refazer nada e sem desfazer decisão. Ela é o registro das ordens do Edson desde 19/07/2026, da história por commit, do que o código faz e das armadilhas que já custaram tempo. Medida e escrita em 06/10/2026.

Medida em 06/10/2026 · o estado se confere pelo rito da seção 09
01

Leia primeiro

As dez linhas
  1. O que é: o Portal Nexus (jimpnexus.com) é a porta de entrada dos sistemas internos da engenharia da Joinville Implementos. Ele não tem login, não tem banco e não guarda dado: são sete links, e quem autentica é cada sistema na sua porta.
  2. Onde mora o código: a pasta app/portal-nexus no OneDrive é o repositório — qual, diz o remoto origin da própria pasta: git remote -v. Quem edita fora dela está editando nada.
  3. Como se publica: commit e push. A Vercel publica sozinha, em cerca de 40 s, e o rollback é de um clique. Não existe deploy manual aqui desde 13/08/2026.
  4. Como se confere: o sha256 do que o domínio entrega contra o index.html local. É a única prova de entrega que existe.
  5. Esta é a aba do PORTAL. O que for de outro aplicativo volta para a aba dele. Ele corrigiu isto três vezes — e a terceira foi dura: "vc esta misturando assunto" e "pedi pra vc colocar o link das plaquetas no portal, só isso" (01/10/2026).
  6. O pedido tem o tamanho que ele deu. "Só isso" quer dizer só isso. Não ir buscar trabalho ao lado.
  7. Decisão dele pode mudar — e o último pedido manda. O Plaquetas ele recusou em 12/08 e mandou adicionar em 30/09, 49 dias depois.
  8. Número técnico não aparece na tela. Cota em pixels, viewport, contador de depuração: fora. O portal fala de sistemas, não de pixels.
  9. Arquivo único, zero dependência externa. Nenhum CDN, nenhuma fonte de fora, nenhum framework. O portal nunca quebrou por biblioteca de terceiro porque não tem nenhuma.
  10. Antes de dizer "está pronto", veja a tela — e no celular também. E peça Ctrl+Shift+R: o cache já o fez jurar duas vezes que um defeito consertado ainda estava lá.
Sobre os relógios desta página

As horas dos commits vêm do próprio git (fuso −03:00) e são exatas. Para as falas dele esta página dá só a data: o registro da conversa está em outro fuso, e cruzar os dois relógios produziria uma linha do tempo falsa. Onde há dúvida, a dúvida está escrita.

E as falas dele estão aqui com a grafia normalizada. Esta página é pública e o que importa numa fala é a decisão, não o erro de digitação de quem a escreveu correndo. O verbatim fica no PASSAGEM.md, que não é servido.

02

O estado de hoje — 07/10/2026

Esta passagem foi publicada em 07/10/2026 às 10:11, no commit 01db8f7, e os números abaixo foram medidos depois do push. Os dois comandos estão vazios: git log origin/main..HEAD não tem commit por empurrar e git status não tem arquivo pendente. O que o domínio entrega é byte a byte o que está na pasta — conferido nos dois arquivos, o index.html e esta página. Ainda assim, número impresso envelhece: a prova é sempre o rito da seção 09, nunca esta tabela.

MedidaValor, conferido em 07/10/2026, depois do push
Último commit publicado01db8f7 — 07/10/2026 10:11 (esta passagem)
Commits no repositório13 (de 13/08/2026 06:25 a 07/10/2026 10:11)
Commits por empurrarnenhum — git log origin/main..HEAD vazio
Pendente na pastanenhum — git status limpo
O que o domínio entrega50.813 B — o index.html da pasta, byte a byte
Esta página no ar75.668 B — /passagem.html responde 200, igual à pasta
Os dois .md no ar404, por regra do .vercelignore — eles não são servidos
Web Analyticsligado — a rota de insights responde 200
Arquivos versionados · publicáveis11 · 6 (index.html · passagem.html · 404.html · icon.png · favicon.svg · manifest.json)
Projeto na Vercelnomeado no painel e no PASSAGEM.md — publica a cada push

⚠ Esta página e o link do rodapé do portal foram no MESMO commit, e é assim que se faz: o rodapé do index.html aponta para /passagem.html, e empurrar um sem o outro poria um link morto no ar — servindo a nossa própria página de erro, que é exatamente a armadilha descrita na seção 07. Conferido em 07/10 depois do push: /passagem.html responde 200, o rodapé do portal traz o link, e os dois arquivos no ar têm o mesmo sha256 dos da pasta.

Os sete sistemas, na ordem em que estão na tela

#Nome na telaHost na telaO que diz o card
01JIMP Gerencialjimpgerencial.vercel.appControle de produção
02KPI & OKRkpieng.jimpnexus.comIndicadores de engenharia
03CMMS JIMPcmms.jimpnexus.comGestão de manutenção industrial
04APPCUSTOScustos.jimpnexus.comPortal de custos
05QualityTrackerqualitytracker-pied.vercel.appControle de qualidade industrial
06Pedidos JIMPpedidos.jimpnexus.comFichas e pedidos eletrônicos
07Plaquetas JIMPplaquetas-jimp.vercel.appPlaquetas de identificação

O card 02 é o único sem classe de cor própria: ele leva o azul da marca, de propósito. Quem copiar esse card para criar um sistema novo herda o azul e precisa somar a classe — é o erro mais fácil da receita. Três dos sete endereços ainda são .vercel.app; o do QualityTracker é assim por decisão dele. ⚠ A coluna acima é o host que o card mostra, não o destino do link: o href do JIMP Gerencial e o do CMMS terminam em /login, e os outros cinco vão na raiz. Para reconstruir um card, copie o href do index.html — não esta tabela.

03

As decisões do Edson, desde o início

Nunca houve especificação. Houve ordem de uma linha, print de tela e três palavras de veredito — 57 falas de 19/07 a 06/10/2026, 79 dias entre a primeira e a última. Esta é a espinha do documento: cada linha traz a frase dele, a data e o que aquilo virou no arquivo. As marcadas mudou de ideia são decisões que ele desfez — e a última é a que vale.

19/07 — o portal nasce

19/07/2026História

preciso colocar esse html básico para rodar na vercel

Virou: o primeiro deploy do que hoje é jimpnexus.com. Era um index.html solto na pasta Downloads; a fonte da verdade passou a ser app/portal-nexus/index.html, e a cópia em Downloads ficou sendo cópia de conveniência.

19/07/2026Decisão

Quando mexer o mouse, deve ser aplicado um efeito tecnológico.

Virou: a semente de tudo o que o fundo faz hoje. O cursor é uma carga pontual sobre uma malha de elementos finitos. Essa frase de 19/07 é a origem do design CONSOLE de 13/08.

19/07/2026Decisão

muda o desenvolvido pro rodapé / e adiciona os links para dois produtos nossos

Virou: o portal deixou de ser uma página e passou a ser porta de entrada. Começou com dois cards — KPI de engenharia e CMMS. Hoje tem sete.

19/07/2026Regra

acessa os dois sites e veja as cores e logos, inclusive a engrenagem girando pra usar no site e nos dois links

Virou regra de identidade: a cor de cada card sai do próprio sistema, lida do app — não escolhida por mim. É a razão das classes de cor de cada módulo e da engrenagem que gira no card de manutenção.

29/07/2026Decisão

chame essa aba de Portal Nexus

Virou: o nome. "Portal Nexus" é o título da página e o nome do projeto; "JimpNexus" ficou para o atalho do celular. São campos diferentes de propósito — ver a armadilha da letra P.

01/08 — o favicon, o terceiro sistema e a assinatura

01/08/2026Decisão

coloca um favicon com o logo da pirâmide / Coloque o link de acesso ao portal de custos

Virou: o favicon.svg da pirâmide e o terceiro card. O endereço que ele passou naquele dia era interno da rede, com porta — ele mesmo o substituiu dois dias depois, e esse endereço não aparece em lugar nenhum da página pública.

01/08/2026Decisão

Coloque embaixo, desenvolvido por Edson Farias

Virou: o rodapé "© 2026 · Desenvolvido por Edson Farias". Ele pediu o ano no segundo seguinte, escreveu "206" e corrigiu para "2026" sozinho. É o único lugar do portal com nome de pessoa.

03/08 — o Face ID que durou 1h24

03/08/2026História

deixe o painel para ser possível desbloqueio com o face id

Virou: foi construído de verdade, com WebAuthn/passkey. Durou 1h24.

03/08/2026Regra

VC ACHA QUE FICOU BOM OU DEVERIAMOS REVERTER?

Virou regra de leitura dele: quando ele pergunta assim, quer o parecer — não a defesa do que já foi feito. Dar o parecer honesto, inclusive contra o próprio trabalho.

03/08/2026Mudou de ideia

REMOVA

Virou: o WebAuthn foi arrancado inteiro. Hoje o portal não tem login nem biometria: é uma vitrine de links, e quem autentica é cada sistema. Não repropor Face ID sem ele pedir.

03/08/2026Decisão

NO APPCUSTOS O CAMINHO MUDOU, O NOVO É …/login.html … DEIXE ESTE

Virou: o card do APPCUSTOS aponta para custos.jimpnexus.com, sem /login.html — ele escolheu a forma curta —, e o endereço interno saiu da página. É o href que está no ar hoje.

03/08/2026Escopo · 1ª correção

ei o custos, estou tratando em outra aba sua, não mexa

Virou regra: no portal se mexe no link do APPCUSTOS, nunca no app. Quem cuida do APPCUSTOS é outra sessão, com a passagem dela.

03/08/2026Decisão

Coloque no portal esse link da qualidade

Virou: o quarto card, o QualityTracker. Segue no endereço .vercel.app até hoje — domínio próprio nunca foi decidido por ele.

03/08/2026Decisão

ele carrega um P de portal, quero que vc coloque a logo e o texto JimpNexus

Virou: o icon.png de 160×160 e o manifest.json com o nome "JimpNexus". É por isso que o portal se instala como atalho no celular e no PC. Ver a armadilha da letra P.

12 e 13/08 — o redesenho, e o portal que está no ar

12/08/2026História

Você acha que consegue melhorar o nosso portal, ou você acha que está bom do jeito que está?

Virou: a porta do redesenho. Importante: conhecer as outras pastas valia para opinar sobre o portal — não para trazer o assunto delas para dentro dele, como ele cobrou depois.

12/08/2026Decisãoparte desfeita

O calculista … não quero colocar ele por hora no servidor. Sobre as plaquetas. Também não … com design ultratop, maravilhoso, inteligente, robótico, perfeito, lindo, futurista. NESTE NIVEL que eu estou te pedindo.

Virou: esta é a ordem que gerou o design CONSOLE (commit b0254ea). E é a decisão que ele desfez pela metade: o Plaquetas entrou em 30/09, 49 dias depois; o calculista continua fora e nunca foi liberado — não propor.

12/08/2026Regra

qualquer coisa deixe preparado para amanhã vc continuar

Virou regra de trabalho: quando o dia acaba no meio, o estado fica escrito para o dia seguinte continuar. É a origem das anotações de passagem do portal — e desta página.

13/08/2026História

já é amanhã, deixei ligado porque vc não me respondeu, agora siga e termina

Custo real: a tarefa ficou a noite rodando sem ninguém dizer onde ela estava. Não deixar tarefa longa rodando sem dizer onde ela está.

13/08/2026Decisão

ficou bonito, mas aquele 555 px, não acho legal / faça tudo o que propôs

Virou: as cotas em pixel saíram, e com elas o viewport do trilho superior. Regra que vale até hoje: nada de número de depuração visível na tela. Hoje a linha de cota tem os dois traços de extremidade e nenhum número.

13/08/2026Decisão

o portal da qualidade eu não vou trazer para Cloudflare. / Sobre o git, está aberto

Virou três coisas: (a) o Web Analytics da Vercel ligado no projeto do portal — o script está no index.html até hoje e a rota responde 200; (b) decisão fechada: o QualityTracker fica onde está, não migra de provedor; (c) o git aberto virou o deploy automático, que acabou com o deploy manual e com o risco dele.

13/08/2026Regra

assim, aqui? — criado — assim? — acho que tem algo errado — isso aqui quem fez errado foi vc, favor corrigir

Virou regra de como ele trabalha: ele manda o print e a frase curta; quem tem de dizer o passo exato sou eu, uma coisa por vez. E quando o erro é meu, ele aponta e manda consertar — não discute, e não espera desculpa.

13/08/2026Regra

pode fazer os três, testa antes de subir

Virou regra: testar antes de subir. E esta página, que vai ao ar, não carrega nenhum valor nem nenhum dado de pessoa.

13/08/2026Escopo · 2ª correção

antes de mais nada, veja o portal, vamos nos concentrar nele para não dar lambança

Virou regra: uma aba, um assunto. A palavra é dele: lambança.

13/08/2026Decisão

tira aquele 1912x914 px … sumiu, agora ficou perfeito

Virou: o segundo número fora da tela, e a aprovação do design. ⚠ Entre uma frase e a outra, o cache do navegador dele o fez jurar que o número continuava lá quando o servidor já não o tinha. Conferir sempre o que o servidor entrega.

13/08/2026Decisão

faz a 1

Virou: o tratamento de celular (commit eaaeef4) — a malha vira textura a 50% de intensidade e o marcador laranja de carga deixa de ser desenhado. ⚠ Incerteza registrada: a escolha veio de um print do telefone dele; quais eram as opções 1, 2 e 3 não está apurado. O que está no código é o resultado.

01/09 a 02/10 — os três sistemas novos e a ordem da grade

01/09/2026Decisão

acabamos de criar uma nova aplicação publique o link em nosso portal com todas as coisas legais que já fizemos

Virou: o quinto card, Pedidos JIMP (c8e796b). "Com todas as coisas legais" quer dizer que o texto do card conta o que o sistema faz, não só o nome.

01/09/2026Regra

atualiza a memória com o quinto sistema

Virou a receita de "sistema novo": ele só está pronto quando está no portal, no README e na memória. Os três, ou não está pronto.

30/09/2026Mudou de ideia

adicione https://plaquetas-jimp.vercel.app/

Virou: o sexto card, Plaquetas JIMP (b16f062) — 49 dias depois de ele dizer que não queria. É a prova da regra: decisão antiga não vale para sempre, e o último "adicione" manda.

30/09/2026Regra

faz a faxina do MEMORY.md … pode mover o que já está encerrado

Virou: o índice de memória com sub-índices por aplicativo, e o que terminou foi para os índices históricos. O índice tem limite de tamanho — a faxina é periódica, não um evento.

01/10/2026Escopo · 3ª correção

vc esta misturando assunto … pedi pra vc colocar o link das plaquetas no portal, só isso

Virou a regra que encabeça esta passagem. Um pedido de uma linha foi respondido com uma análise de outro aplicativo. Já são três correções de escopo — 03/08, 13/08 e 01/10 —, e esta é a que não pode ter uma quarta.

02/10/2026Decisão

coloque este link

Virou: o sétimo card, JIMP Gerencial (8d91452), entrando como último. Sete é contagem ímpar, então a regra do órfão de 01/09 acordou sozinha e o card passou a fechar a linha inteira.

02/10/2026Decisão

deixe o jimp gerencial por primeiro

Virou: a ordem que está no ar (5f41735), commitada três minutos depois do commit que havia criado o card. Mover o card foi a parte pequena — acompanharam os sete índices, a cascata de entrada, o texto do hero e o vetor de cores do JavaScript. Ver a armadilha do CORES.

02/10/2026Decisão

altere o nome de KPI Eng somente para KPI

Virou: o commit d6c4b52. Duas linhas: o nome na página e o nome no README. O endereço e a descrição ficaram como estavam — renomear card é só o rótulo.

02/10/2026Mudou de ideia

alias, altere para KPI & OKR

Virou: o commit 442f0ae — 30 minutos depois do anterior, e é o que está no ar. O segundo pedido não desfez o primeiro: foi por cima dele. No HTML o & vai escapado como &.

06/10 — o pedido que gerou esta página

06/10/2026Decisão

Crie uma, algo dentro do site, com tudo que a gente fez, todas as decisões desde o início, e uma leitura para outra conta, deixe 100% alinhado, para que eu possa trabalhar com outra conta.

Virou esta página. Ela vai morar dentro do jimpnexus.com, em /passagem.html, e não num arquivo solto, porque é por aqui que a outra conta chega — no ar desde 07/10/2026 10:11, no commit 01db8f7. E porque o site é público, ela não traz senha, chave, endereço interno, identificador de banco, caminho de repositório privado nem valor: para o que é sensível, ela diz onde achar. A mesma passagem existe em arquivo, PASSAGEM.md, na pasta do repositório — e é só lá que fica o detalhe operacional.

04

A história, por commit

Doze commits, e eles são muito desiguais. O primeiro dia concentra seis e praticamente todo o portal; depois vêm dois meses de silêncio, quebrados só pela chegada de sistemas novos. Horas do git, fuso −03:00.

  1. 13/08 06:25b0254eaNasce o Portal Nexus 7 arquivos, 1.055 linhas, 4 sistemas. O portal inteiro — HTML, CSS e JS — num index.html de 872 linhas, sem nenhuma dependência externa. Junto nascem a 404.html, o favicon.svg, o icon.png e o manifest.json. O design CONSOLE já vem inteiro: não apareceu depois.
  2. 13/08 06:250e5b221Fim de linha em LF Só o .gitattributes. Sem ele o git entrega CRLF no Windows, e a conferência por sha256 não fecha nunca — morre a prova de entrega, não o site.
  3. 13/08 06:399044b8cPrimeiro deploy automático pela Vercel via Git Commit sem nenhuma alteração de arquivo, só para disparar o deploy. Antes disso o site era publicado por chamada de API, mandando os arquivos à mão.
  4. 13/08 06:498c54a22Corrige o alinhamento da malha e prepara o Analytics O canvas passou a medir a si mesmo em vez da janela, e entrou o script de insights — servido por caminho do próprio domínio, mantendo o zero-dependência.
  5. 13/08 06:5057de046Redeploy para ativar as rotas do Analytics Segundo commit vazio, um minuto depois. Ligar o Analytics no painel não injeta as rotas em deploy que já existe.
  6. 13/08 07:41eaaeef4Celular: a malha vira textura e o marcador de carga some Intensidade a 50%, quadrado laranja suprimido, mira escondida. Arrastar o dedo continua aplicando carga.
  7. 01/09 09:54c8e796bPedidos JIMP, quinto sistema Cor teal, ícone de ficha, índice 05/05 — e todo o ritual: contador, descrição, índices antigos reescritos, cascata e vetor de cores. Nasce aqui a regra do órfão: com número ímpar de cards o último ocupa a linha inteira.
  8. 30/09 17:40b16f062Plaquetas JIMP, sexto sistema Cor rosa, ícone de etiqueta. Com 6 a grade fecha 3×2 e a regra do órfão fica dormindo — por dois dias.
  9. 02/10 09:188d91452JIMP Gerencial, sétimo sistema Cor amarela, ícone de gráfico, entrando como último card. Sétimo = ímpar: a regra do órfão acorda sozinha.
  10. 02/10 09:215f41735O Gerencial passa a ser o primeiro card Três minutos depois, por ordem dele. Mexeu em cinco lugares: o bloco de HTML, os sete índices, a cascata inteira, o texto do hero e o vetor CORES.
  11. 02/10 14:39d6c4b52"KPI Eng" passa a ser "KPI" Duas linhas. Primeiro commit assinado com o nome Edson Farias em vez da conta da engenharia — o e-mail do autor é o mesmo nos doze, só o nome configurado mudou. Ler o histórico como se fossem duas pessoas é erro.
  12. 02/10 15:09442f0ae"KPI & OKR" Trinta minutos depois. É o HEAD de hoje e é o que a Vercel publicou.
Duas leituras que o repositório pede
  • Commit vazio não é lixo. Dois dos doze não têm diff nenhum: são o jeito de pedir uma republicação quando nada no código mudou. Eles provam que a republicação foi pedida, não que saiu.
  • Falta tudo o que veio antes de 13/08 06:25. O primeiro commit já nasce com o design, a pirâmide, o atalho e a 404 prontos. As decisões que produziram isso — por que elementos finitos, por que arquivo único, por que o laranja é só anotação — não têm commit. Estão na seção 03 e nesta página; não no git.
05

Como o portal é feito

A tese do fundo

O fundo é uma malha de elementos finitos em repouso e o cursor é uma carga pontual aplicada sobre ela. Os nós defletem com queda suave, as arestas esticam, o nó de aplicação recebe o quadrado laranja, e os cards são apoios da malha: a linha ancora na borda do card e é cortada ali. O referencial é o pós-processador de elementos finitos — o mesmo que a engenharia olha todo dia. Foi o único conceito que deriva do negócio: trocando o logo, os outros viravam qualquer empresa.

São cinco camadas de fundo — o bloco de halos (três gradientes num só background), o grão fractal contra banding, a malha indeformada em CSS, o retículo que faz snap no nó e a moldura com escalas — mais o canvas, que desenha a malha deformada. O passo da malha, 54 px, mora em dois lugares: a variável --S do CSS e a constante var S=54 do JS. Ache as duas por busca (grep -n "var S=54" index.html) e nunca por número de linha — qualquer edição acima empurra o número. E tem de ser o mesmo nos dois: mexer num só descola o canvas da grade e da escala da moldura.

O quadro é desenhado em cinco etapas e só sobre o bloco vizinho à carga — custo constante com a resolução da tela. As arestas vão para quatro baldes de opacidade e os nós para três: 111 chamadas de contorno viram 4. Nenhum objeto é alocado por quadro.

As quatro travas que não podem regredir

Se alguma sumir, o portal volta a esquentar a máquina — e ninguém vê na tela
  1. O laço de animação PARA — não "fica baixo". São dois pontos de cancelamento: o repouso (a carga foi solta) e a convergência (o cursor está parado dentro da janela). Este segundo era o achado crítico da revisão: antes dele, mouse parado = 60 quadros por segundo eternos. Removê-lo devolve o laço eterno.
  2. Aba escondida = zero quadro e CSS congelado. O evento de visibilidade cancela o quadro, limpa o canvas e põe uma classe que congela toda animação de CSS. Junto vai o evento de volta de página, senão retornar pelo botão do Safari entrega a página parada e o usuário acha que o portal quebrou.
  3. Quem pede menos movimento recebe um único quadro e nenhum listener. Não há laço, não há evento de ponteiro, não há quadro além do primeiro. É a diferença entre respeitar a preferência e fingir respeitar. A engrenagem de 15 s é exceção declarada: é conteúdo do card de manutenção.
  4. O canvas tem camada própria. Sem ela, cada repinte arrasta as camadas de fundo junto, inclusive o grão fractal e os três gradientes.

Há três freios menores, todos deliberados: o LED pulsa por opacidade (sombra animada repinta para sempre); o redimensionamento é adiado, com uma guarda para a barra de URL do iOS; e a rolagem, com o efeito parado, não paga nenhum reflow — ela marca que precisa remedir, e as âncoras são medidas quando a carga voltar. O passeio autônomo foi cortado de 26 s para 9 s por causa de bateria.

O canvas mede a si mesmo, nunca a janela

Dentro de um elemento fixo a largura exclui a barra de rolagem; a largura da janela a inclui. Com a medida da janela, a malha do canvas descolava da malha CSS em todo desktop com rolagem — os nós deixavam de cair no múltiplo de 54 e o efeito "saía do lugar". Dois sistemas de medida para a mesma tela dão duas larguras, e a malha desalinha calada. Foi o commit 8c54a22.

O celular tem três diferenças, e o motivo é um só

No toque o conteúdo ocupa a tela inteira e a malha cai por cima do texto. Então: a intensidade vai a 50% nas arestas, nos nós e nas linhas de apoio — a malha vira textura, não gráfico; o marcador laranja de carga não é desenhado, porque sem cursor ele seria um artefato solto no meio do parágrafo; e a mira é escondida, porque indicador de cursor em tela sem cursor é ruído. Arrastar o dedo continua aplicando carga normalmente. Pela mesma regra, no celular os colchetes dos cards e o "Abrir" ficam permanentemente semivisíveis: sem hover, nada pode ficar escondido.

O que não pode regredir em acesso

Todo o aparato visual é marcado como decorativo para o leitor de tela: a malha, o canvas, o trilho, os ícones e a cota. Sem JavaScript a página fica inteira e os sete links funcionam — o estado base é o visível e a animação é aditiva. Mouse e teclado recebem exatamente o mesmo tratamento: quem acrescentar um estado de hover tem de acrescentar o estado de foco irmão na mesma linha, senão o portal passa a ter caminho só de mouse. Há reforço de contraste para monitor de fábrica e uma faixa própria para o notebook 1366×768, que compacta em vez de gerar rolagem. O portal é um ponto de entrada: se um link depender de animação, de JS ou de hover, alguém fica sem acesso ao sistema.

A 404 é o molde para página nova

A 404.html fala a mesma língua e é deliberadamente sem animação — página de erro não precisa de efeito, precisa de saída rápida. Copiar dela o bloco de variáveis, o fundo em repouso e os estados do botão dá uma página no idioma certo sem tocar no canvas nem no JS. Esta passagem foi feita assim. ⚠ Atenção: os traçados do logo estão duplicados entre o index.html, a 404.html e o favicon.svg — mudar o logo exige mudar os três. Esta página escapa disso: ela aponta para o favicon.svg em vez de repetir o traçado.

06

A receita de somar um sistema

Sempre os mesmos oito lugares, e os três commits que fizeram isso provam o padrão. Nenhum erro desta lista quebra a página: todos passam calados. É por isso que a lista existe.

  1. A cor, no CSS Uma linha com a cor de acento e a mesma cor em componentes, junto das outras, mais a classe do ícone. A cor sai do próprio sistema — regra dele de 19/07.
  2. O card, no HTML Copiado de um existente: host no topo, ícone embutido de 24×24, nome, descrição e o pé com a régua e o "Abrir". ⚠ Não copie o card 02: ele não tem classe de cor porque leva o azul da marca.
  3. Todos os índices antigos O novo e os velhos: / 06 vira / 07 em todos os cards, e o contador do cabeçalho acompanha. Esquecer isto deixa "05 / 06" na tela com sete cards.
  4. A cascata de entrada Um atraso 60 ms acima do anterior, e a linha de cota no fim. Esquecer isto faz dois cards entrarem juntos.
  5. Os textos que contam O parágrafo do topo e a descrição da página dizem os sistemas por extenso e a quantidade em palavra ("Sete aplicações"). Esquecer isto deixa o portal prometendo seis com sete na tela.
  6. O vetor CORES do JavaScript Na posição certa. Ver o aviso abaixo.
  7. O README — e a memória. Sistema novo só está pronto quando está nos três: portal, README e memória. Regra dele, 01/09.
  8. Esta passagem — passagem.html e PASSAGEM.md: a tabela dos sistemas, a quantidade por extenso e a contagem de arquivos. Os dois enumeram os sete; somar o oitavo sem mexer neles deixa o documento que a próxima conta herda como fonte da verdade contando errado. É o defeito do ponto 3 um arquivo adiante — e a regra dele de 01/09 (portal + README + memória) passou a ter um quarto lugar.
A armadilha do vetor CORES

O CORES é indexado pela POSIÇÃO do card, não pelo nome nem pela classe. Ache o vetor por busca — grep -n "var CORES" index.html — e nunca por número de linha: toda edição acima dele o empurra. Ele é lido sobre a ordem do documento, então tem de ser a mesma sequência dos cards, na mesma ordem. Hoje bate: amarelo, azul, laranja, verde, violeta, teal, rosa.

Dois modos de errar: (a) reordenar cards sem reordenar o vetor — era exatamente o risco do commit 5f41735; se o vetor ficasse parado, as linhas da malha pintariam a cor errada nos sete de uma vez. (b) somar um oitavo card sem somar a oitava cor — a queda para o primeiro valor não avisa: o card novo fica amarelo, calado.

O sintoma é difícil de atribuir: o card está certo — borda, ícone e colchetes vêm do CSS — e só a linha da malha que o ancora está na cor de outro sistema. Ou seja: aparece só no fundo animado, que é o lugar onde ninguém procura.

A regra do número ímpar

A grade é de duas colunas, e uma linha de CSS salva o último card quando a contagem é ímpar: ele passa a ocupar a linha inteira. A regra é .grade .mod:last-child:nth-child(odd) — ache-a por busca. Com 5 e com 7 ela dispara; com 4 e com 6 não. Abaixo de 620 px a grade vira uma coluna e ela deixa de ter efeito visível. Nota: a contagem é dos filhos da grade, que hoje são só os sete cards — pôr qualquer outro elemento ali dentro (um aviso, um separador) quebra a conta e a regra passa a disparar na hora errada.

07

As armadilhas

Cada uma destas custou tempo de verdade. Estão aqui para não serem pagas duas vezes.

O deploy manual substituía o conjunto inteiro de arquivos

O que aconteceu
Publicar só o ícone apagou o index.html e derrubou o site.
O que custou
O portal fora do ar até republicar tudo.
A regra que ficou
Hoje não se usa deploy manual: o push leva a árvore inteira e não há chamada de API para errar. Se um dia for preciso publicar à mão, vão todos os arquivos juntos. As regras de publicação manual que ainda estão no README são história — não procure um procedimento que não existe mais.

Ligar o repositório na Vercel não dispara deploy

O que aconteceu
O repositório conectado, e nada no ar. Só o push seguinte dispara.
A regra que ficou
Depois de ligar, empurrar um commit — foi um commit vazio, o 9044b8c.

As rotas do Web Analytics só nascem no deploy seguinte

O que aconteceu
Script no HTML, Analytics ligado no painel, e a rota dando 404 — servindo a nossa própria 404, o que parece defeito da página.
O que custou
Coleta que não acontecia, e nada avisava: a página responde 200 e não registra nada.
A regra que ficou
Ligar no painel e empurrar um redeploy em seguida (57de046). Hoje a rota responde 200 — conferido em 06/10.

Um commit pode ser bloqueado pela autoria

O que aconteceu
Um push assinado com o e-mail errado deixou o deploy bloqueado: o e-mail do autor precisa pertencer à conta que é dona do projeto.
O que custou
Um ciclo inteiro de deploy perdido, e a autoria teve de ser reescrita.
A regra que ficou
O e-mail certo já está gravado na configuração de git da pasta — leia de lá, não digite de cabeça. Esta página é pública e não escreve endereço de ninguém; o PASSAGEM.md diz o comando exato.

O CRLF do Windows faz a conferência por sha256 mentir

O que aconteceu
Ferramenta de script no Windows grava CRLF; o git entrega LF. O arquivo local passa a diferir em bytes do que está no ar, e o hash acusa "diferente" sem nada estar errado.
O que custou
Tempo procurando um defeito que não existia.
A regra que ficou
Editar por script escrevendo com fim de linha LF explícito, e normalizar as quebras antes de comparar hash. O .gitattributes fixa LF desde 0e5b221.

O cache do navegador dele engana — e engana com convicção

O que aconteceu
Duas vezes ele jurou que um número já removido continuava na tela. O HTML servido pelo servidor já não o tinha.
A regra que ficou
Antes de acreditar no print — dele ou meu — conferir o que o servidor entrega. E, ao pedir conferência depois de um push, pedir junto o Ctrl+Shift+R.

Arquivo grande colado como texto se corrompe no caminho

O que aconteceu
O ícone grande falhou duas vezes seguidas ao ser montado por colagem.
A regra que ficou
O icon.png é pequeno de propósito — 160×160, 1.828 B, três cores achatadas. Arquivo grande não passa colado: vai por escrita direta no disco e se confere por hash. ⚠ 160 px é abaixo dos 192 e 512 que o Android pede; hoje funciona, mas se um dia o atalho sair embaçado é por aqui. E a fonte do PNG não está no repositório: refazê-lo a partir do SVG é trabalho a fazer.

O atalho que mostrava a letra "P"

O que aconteceu
No atalho do celular e do PC aparecia um P no lugar da marca. Quando o lançador não consegue usar o ícone declarado, ele desenha a inicial do nome — e a inicial de "Portal Nexus" é P.
A regra que ficou
O título da página e o nome do atalho são campos diferentes e aqui têm valores diferentes por decisão: o atalho se chama "JimpNexus" em quatro campos, e o ícone é declarado em três formas. Quem "arrumar" o manifesto copiando o título para o nome reabre o caminho da letra P. ⚠ O episódio é anterior ao repositório e não tem commit: o manifesto já nasce corrigido no primeiro commit.

Não existe conferência automática neste repositório

O que é
Nenhum teste, nenhum lint, nenhum script de prova. A única verificação é manual: o hash do que o domínio entrega contra o arquivo local.
O risco
Nada impede, hoje, um push que quebre o vetor de cores, o contador de sistemas ou o alinhamento da malha. A regressão só aparece aos olhos.
A regra que ficou
Depois de qualquer push: conferir o hash, abrir a página e olhar os sete cards — no desktop e no celular.
08

O que está aberto

Nada aqui está em andamento. São itens que esperam a palavra dele ou são tarefa pequena e identificada. Não começar nenhum sem pedido.

O que esta passagem NÃO apurou
  • Dez falas dele vieram com print anexado — 13 imagens no total, contadas pelos blocos de imagem da transcrição — e o texto é só o comentário. As imagens não foram abertas: em especial, quais eram as opções quando ele disse "faz a 1".
  • Em 13/08 ele perguntou de qual projeto queria o Analytics. A resposta dele não foi encontrada. O Analytics está ligado e respondendo; por qual decisão exata, não apurado.
  • Para Pedidos, Plaquetas e Gerencial o repositório não registra quem pediu — só que o card entrou. A ordem dele está nas falas da seção 03, não no git.
  • Os sete sistemas de destino não foram abertos: os endereços estão como o HTML os escreve, e nada aqui afirma que cada um responde. Eles são de outras sessões.
  • A conversa lida é de uma sessão. Se ele pediu alguma coisa do portal em outra aba ou em outra conta, não está aqui.
09

Para a outra conta — o primeiro minuto

A sequência exata
  1. Abra a pasta. app/portal-nexus, no OneDrive. Ela é o repositório — qual, diz o próprio git remote -v. Conte os arquivos com git ls-files em vez de confiar num número escrito: em 07/10, com esta passagem publicada, são onze versionados e seis publicáveis (eram oito e cinco antes dela). Não há build, não há gerenciador de pacotes, não há dependência.
  2. Veja se há trabalho em voo. São dois comandos e eles respondem coisas diferentes: git log origin/main..HEAD diz se há commit por empurrar e git status diz se há arquivo pendente na pasta. Em 07/10/2026, depois do push desta passagem, os dois estavam vazios — e vazio nos dois é o que quer dizer "pode começar".
  3. Confira que o ar é a pasta. Baixe o que o domínio entrega e compare o sha256 com o index.html local — o domínio raiz devolve 308 para o www, então siga o redirecionamento. ⚠ Normalize as quebras de linha antes de comparar, senão o CRLF do Windows acusa diferença que não existe. ⚠ E a conferência só fecha com a pasta limpa (passo 2): com arquivo pendente ela acusa diferença, e a diferença é o seu próprio trabalho — não um defeito. O comando exato, e o par equivalente para o PowerShell, estão no PASSAGEM.md.
  4. Abra a página e olhe. Os sete cards, a malha reagindo ao cursor, o hover, e o celular. O portal é um ponto de entrada: a prova é visual.
  5. Para publicar: edite, commit, push. A Vercel publica em cerca de 40 s e o rollback é de um clique no painel. Depois do push, repita o passo 3 e peça Ctrl+Shift+R a quem for olhar. ⚠ Arquivo novo e o link que aponta para ele vão no mesmo commit — um sem o outro põe link morto no ar. Foi o caso desta passagem com o rodapé do portal.
  6. Se for somar um sistema, siga os oito pontos da seção 06 — e não esqueça o vetor de cores nem esta passagem.
  7. Leia o PASSAGEM.md na mesma pasta: é esta passagem em arquivo, com os detalhes operacionais de publicação que não vão para uma página pública.
A memória do Claude não viaja entre contas

Isto é o motivo desta página existir. A conta que chega lê o CLAUDE.md, que vem do OneDrive, mas começa com a memória que ela mesma tinha — que pode estar semanas atrás. Já foi medido: havia memórias que existiam só na exportação anterior.

Ao sair: exportar a união — as desta conta e as que só existem na exportação anterior — mais o índice. Ao chegar: copiar para a própria pasta as que faltarem, sem sobrescrever uma mais nova, e juntar as linhas no índice. Esta página é a ponte, e o PASSAGEM.md é a cópia dela em arquivo.

Os outros aplicativos — só o caminho, nada mais

Cada um tem a passagem dele e é de outra sessão. Aqui eles entram como link no portal, e só. Não trazer número, pendência nem assunto de lá para esta aba — é a regra da seção 01.

  • APPCUSTOS — a passagem mora em app/APPCUSTOS/documentos/.
  • Pedidos eletrônicos — em app/Configurador/PEDIDOS ELETRONICOS/documentos/.
  • KPI & OKR — em app/KPI/.
E uma regra de método que vale aqui também

Busca cortada não prova ausência. Para dizer "não existe" ou "não achei", a busca não pode ter limite: contar o total e só então afirmar. Um corte de busca já me fez escrever em quatro lugares que uma regra não existia — e perguntar a ele uma coisa que ele já tinha fechado. E antes de perguntar qualquer coisa a ele, procurar a resposta nos documentos, sem corte.