fix: cards somem no hover, painel de rede espremido e botao para parar o launcher - #4
Merged
Merged
Conversation
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>
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.
Cinco mudancas, cada uma em seu commit.
fix(ui): comandos sumiam ao passar o mouse
.cmd-cardtinhaopacity: 0na regra base e so ficava visivel pelopreenchimento
forwardsdafadeInUp. Quando.cmd-card-new:hoversubstituia apropriedade
animationporneonGreenPulse, esse preenchimento se perdia e ocard 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-dashe injetado dentro de#dashboarde, semgrid-columnproprio,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 /shutdownmais um botao na barra superior. ReusaisAuthorized(), amesma checagem do
/run. Testado: 403 sem header, com header invalido e comorigem 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
.gitignoreignoravapackage-lock.jsonenquanto o arquivo estavaforce-adicionado e o CI dependia dele.
Verificacao
npm test: 62 passando, 0 falhasnode --checkem launcher.js, rede-dashboard.js, index.js, security.jsregras
:hoverreais do stylesheetTambem padronizei as dependencias em npm (o
node_modulestinha sido instaladocom pnpm, com dois lockfiles convivendo). Reinstalacao limpa: 93 pacotes, 0
vulnerabilidades.
🤖 Generated with Claude Code