Skip to content

fix: cards somem no hover, painel de rede espremido e botao para parar o launcher - #4

Merged
jeanavila997-ux merged 5 commits into
mainfrom
fix/card-hover-e-botao-parar
Aug 17, 2026
Merged

fix: cards somem no hover, painel de rede espremido e botao para parar o launcher#4
jeanavila997-ux merged 5 commits into
mainfrom
fix/card-hover-e-botao-parar

Conversation

@jeanavila997-ux

Copy link
Copy Markdown
Owner

Cinco mudancas, cada uma em seu commit.

fix(ui): comandos sumiam ao passar o mouse

.cmd-card tinha opacity: 0 na regra base e so ficava visivel pelo
preenchimento forwards da fadeInUp. Quando .cmd-card-new:hover substituia a
propriedade animation por neonGreenPulse, esse preenchimento se perdia e o
card voltava a opacity: 0 — sumindo exatamente ao passar o mouse.

Trocado para backwards, o estado base passa a ser visivel por si so.

O stagger tambem virou por categoria com teto de 0,3s; o indice era global sobre
331 cards e gerava atrasos de ate ~9,9s ao abrir uma categoria.

fix(rede): painel de diagnostico dependia do grid de metricas

#rede-dash e injetado dentro de #dashboard e, sem grid-column proprio,
caia numa celula de ~187px: os botoes vazavam da caixa, os 6 mini-cards
empilhavam numa coluna de 1130px de altura e as cores fixas ignoravam o tema
claro. Agora ocupa a linha inteira, os botoes quebram e as cores usam as
variaveis de tema.

feat: botao para parar o launcher

POST /shutdown mais um botao na barra superior. Reusa isAuthorized(), a
mesma checagem do /run. Testado: 403 sem header, com header invalido e com
origem forjada.

feat(launcher): paginas .html estaticas e fallback de SPA

Trabalho que ja estava no working tree, isolado em commit proprio.

chore: lockfile do mcp-server

O .gitignore ignorava package-lock.json enquanto o arquivo estava
force-adicionado e o CI dependia dele.

Verificacao

  • npm test: 62 passando, 0 falhas
  • node --check em launcher.js, rede-dashboard.js, index.js, security.js
  • Bug do hover reproduzido e a correcao confirmada no navegador aplicando as 10
    regras :hover reais do stylesheet
  • Botao Parar exercitado de ponta a ponta; launcher encerrou e voltou

Tambem padronizei as dependencias em npm (o node_modules tinha sido instalado
com pnpm, com dois lockfiles convivendo). Reinstalacao limpa: 93 pacotes, 0
vulnerabilidades.

🤖 Generated with Claude Code

Jean Avila and others added 5 commits August 17, 2026 19:12
O .gitignore ignorava package-lock.json enquanto mcp-server/package-lock.json
estava force-adicionado ao repositorio e o CI dependia dele para o cache.
A regra de excecao deixa a intencao clara e evita que alguem rode pnpm
install e recrie o conflito de gerenciadores.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
.cmd-card usava `opacity: 0` na regra base e dependia do preenchimento
`forwards` da animacao fadeInUp para ficar visivel. Qualquer regra que
substituisse a propriedade `animation` — como .cmd-card-new:hover, que troca
para neonGreenPulse — derrubava esse preenchimento e o card voltava para
opacity 0, sumindo justamente ao passar o mouse.

Troca para `backwards`: o estado base do card passa a ser visivel por si so e
a animacao de entrada continua funcionando durante o delay.

O stagger tambem passa a ser por categoria e com teto de 0,3s. O indice era
global sobre 331 cards, gerando atrasos de ate ~9,9s — ao abrir uma categoria
os ultimos comandos so apareciam segundos depois.

Verificado no navegador aplicando as 10 regras :hover reais do stylesheet:
opacity permanece 1 (antes caia para 0) e nenhum dos 331 cards fica invisivel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adiciona POST /shutdown no launcher e um botao "Parar" na barra superior,
evitando ter que descobrir o PID e rodar Stop-Process na mao.

O endpoint reusa isAuthorized(), a mesma checagem do /run: exige origem local
somada ao header X-Mestre-Client. Verificado que responde 403 sem header, com
header invalido e com origem forjada, e que o launcher sobrevive as tres
tentativas.

Responde antes de sair (via res.on("finish")) para o cliente receber a
confirmacao, encerra os comandos em andamento e tem timeout de 1,5s como rede
de seguranca caso alguma conexao keep-alive segure o server.close(). runPowerShell
passa a guardar a referencia do processo filho, que antes nao existia — sem ela
o encerramento dos jobs seria silenciosamente inocuo.

A UI confirma antes e avisa quantos comandos serao interrompidos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Permite abrir /novidades-v11.html e rotas de secao como /8.diagnostico, que
antes caiam no 404 do launcher.

O regex das paginas estaticas restringe a um unico nome de arquivo simples,
sem barras, o que impede path traversal. Ambas as respostas mantem o mesmo
conjunto de cabecalhos de seguranca ja usado no index (CSP, nosniff,
no-referrer, no-store).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
O painel e injetado dentro de #dashboard, que e um grid
repeat(auto-fit, minmax(160px,1fr)) desenhado para os cards de metrica. Sem
grid-column proprio, #rede-dash caia numa celula de ~187px e herdava o layout
alheio, com tres efeitos em cascata:

- os tres botoes (ATIVAR/PARAR/TESTAR) somavam 255px em .rd-actions sem
  flex-wrap e vazavam para fora da caixa;
- .rd-grid colapsava para uma unica coluna e empilhava os 6 mini-cards,
  esticando o painel para 1130px de altura;
- as cores eram fixas (#0f1923, #e6edf3), entao o painel continuava escuro no
  tema claro.

grid-column: 1/-1 devolve a linha inteira ao painel e o torna autonomo; o
margin sai porque o espacamento ja vem do gap do grid pai. Com flex-wrap os
botoes acompanham a largura e as cores passam a usar as variaveis de tema.

Medido no navegador: painel ocupa 100% da largura do container, altura cai de
1130px para 550px, mini-cards voltam a 4 colunas, botoes deixam de vazar e
fundo/texto acompanham a troca de tema.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jeanavila997-ux
jeanavila997-ux merged commit ed13acf into main Aug 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant