Acompanhe a evolucao da plataforma. Dividimos o changelog entre a Plataforma BrutusForge (o software self-hosted que você instala) e o Portal & Licensing (a experiencia de compra, minha conta e cobranca).
Plataformacliente self-hosted
v1.0.3361GitHub ↗
## [Correção do login no launcher (hotfix)] - 2026-07-22
- **Corrige o login que ficava voltando para a tela de entrar** depois da última atualização, quando o painel é aberto pelo launcher (endereço local `localhost:3000`) com o domínio público configurado. A nova etapa final do login (uma chamada interna do próprio app) estava sendo barrada pela política de origem porque o app local não constava na lista do domínio. Agora a **origem local do launcher é sempre confiada** — como já acontecia com o app empacotado — então o login conclui normalmente. Isso não afrouxa a proteção: um site externo continua bloqueado (a origem dele nunca é `localhost`).
Validação: `pnpm validate` verde. Atualização in-place pelo auto-updater.
---
v1.0.3360GitHub ↗
## [Login em uma etapa só + fim do spam do chat global] - 2026-07-22
- **O login no Discord agora entra de primeira, mesmo pelo domínio (HTTPS) dentro do app.** A tentativa anterior (cookies `SameSite=None; Secure`) não resolveu: o navegador embutido do launcher **descarta** os cookies temporários criados na ida para o Discord, então a validação da volta falhava e o painel pedia para autenticar de novo. Agora o sistema **não depende desses cookies** — a informação de segurança (origem + verificação anti-fraude) viaja **assinada dentro do próprio retorno do Discord**, junto com uma prova que só o navegador que iniciou o login possui. Funciona em qualquer navegador embutido, por HTTP local ou HTTPS de domínio, na primeira tentativa.
- **Segurança do login reforçada:** a conclusão do login foi endurecida para impedir um golpe clássico de OAuth (fazer alguém logar, sem perceber, numa conta controlada por terceiros) — a etapa final agora só é aceita a partir do próprio painel, atrelada ao navegador que começou o processo.
- **O chat global não repete mais a mesma mensagem várias vezes.** Quando a confirmação de entrega de uma mensagem entre servidores não chegava a tempo (ex.: conexão do plugin instável após um reinício da API), o sistema **reenviava a mesma mensagem** — e o plugin do jogo a exibia de novo a cada reenvio, fazendo o chat parecer "espamando". Agora o plugin **reconhece e ignora entregas repetidas do mesmo comando** (identificador único), então cada mensagem aparece **uma vez só**. A mesma proteção evita, por tabela, que um comando reenviado (por exemplo, entregar um item) seja executado em duplicidade.
Validação: `pnpm validate` verde (API + Web + Bot + Domain + build) + revisão de segurança + build C++ (ASE + ASA). Atualização in-place pelo auto-updater. Lembretes: (1) o Discord precisa ter as URLs de retorno cadastradas (`http://localhost:3000/auth/callback` e a do seu domínio); (2) para o fix do chat valer nos servidores, rode Cluster → Plugins & Config → **"Atualizar todos"** e reinicie o ARK (isso também restabelece o canal de confirmação e elimina o reenvio na origem).
---
v1.0.3359GitHub ↗
## [Kits entregam os itens de verdade + tela de pedido mais clara] - 2026-07-22
- **Itens de kit agora chegam mesmo no inventário:** o comando de entrega de item exige o blueprint no formato completo do ARK (`Blueprint'/Game/.../X.X'`). Quando o item estava cadastrado só com o caminho (`/Game/.../X`), o jogo aceitava o comando mas **não criava o item** — e a entrega ficava marcada como "Entregue" sem o jogador receber nada. Agora o sistema **completa o formato do blueprint automaticamente** na entrega, então caminhos "crus" cadastrados nos produtos passam a funcionar.
- **Tela do pedido:** o servidor de entrega agora aparece com o **nome + mapa** (em vez do id interno), e a lista de entregas **atualiza sozinha** enquanto houver entrega pendente (não precisa mais dar F5).
Validação: `pnpm validate` verde. Atualização in-place pelo auto-updater. (Observação: pedidos já marcados como "Entregue" com blueprint antigo não reenviam sozinhos — reentregue o kit para o item chegar com o formato corrigido.)
---
v1.0.3355GitHub ↗
## [Login sem precisar autenticar duas vezes] - 2026-07-22
- **Corrigido o login que às vezes exigia autenticar no Discord 2×:** o diagnóstico apontou que os cookies temporários do login (usados para validar a volta do Discord) não sobreviviam ao redirecionamento quando o painel é acessado por HTTPS (domínio) dentro do app. Agora, sob HTTPS, esses cookies usam `SameSite=None; Secure`, então a 1ª autenticação já entra direto. Em acesso local (HTTP) o comportamento anterior é mantido.
Validação: `pnpm validate` verde. Atualização in-place pelo auto-updater.
---
v1.0.3353GitHub ↗
## [Correções de interface do painel agora entram de fato no empacotamento] - 2026-07-22
- **As correções de telas do painel voltam a chegar até você:** um problema no empacotamento fazia o painel ser publicado a partir de um **cache antigo** de algumas telas — por isso a janela de **"Dar produto"** (e outros ajustes de modais) continuava cortando o conteúdo mesmo já tendo sido corrigida no código. Agora o empacotamento força uma **reconstrução limpa** do painel, então as correções de modal (janela de Dar produto sem corte, textos longos de cluster/servidor/ID sem corte) finalmente entram no seu instalador.
- **Diagnóstico do login em duas etapas:** adicionamos um registro interno que aponta a causa exata daquele login que às vezes exige autenticar 2×, para corrigirmos com precisão na sequência.
Validação: `pnpm validate` verde. Atualização in-place pelo auto-updater.
---
v1.0.3350GitHub ↗
## [Chat global resiliente a updates e "Reenviar" completa o pedido] - 2026-07-21
- **O chat global não cai mais quando você atualiza o launcher:** corrigimos a reconexão do plugin com o painel. Antes, se você atualizasse com os servidores **online**, o WebSocket do plugin não reconectava após a API reiniciar — e o chat global "sumia" em **todos** os servidores até reiniciar o jogo (os servidores também ficavam marcados como Offline no painel). Agora o plugin reconecta sozinho (e cai para o modo HTTP se o WebSocket falhar). ⚠️ Para esta correção valer, depois de atualizar o launcher: **atualize os plugins dos servidores** (Cluster → Plugins & Config → "Atualizar todos") e **reinicie os servidores ARK** uma vez.
- **"Reenviar Entrega" agora completa o pedido inteiro:** se um pedido antigo entregou só parte (por exemplo, só os pontos de um kit), o **Reenviar** passa a **criar e entregar também os itens que faltaram** — sem duplicar o que já foi entregue. Pedidos novos já vinham completos; isto recupera os pedidos parciais antigos.
Validação: `pnpm validate` verde + revisão de código. O fix do chat exige atualizar os plugins dos servidores + reiniciar; o resto é in-place pelo auto-updater.
---
v1.0.3347GitHub ↗
## [Entrega de produtos corrigida e ajuste de modais] - 2026-07-21
- **Entrega de produtos corrigida (importante):** as entregas automáticas do painel estavam ficando presas em **"Aguardando"** e nunca completavam — uma falha na fila de entrega que afetava todos os caminhos: o **"Dar produto"** do admin, o **kit de boas-vindas**, a **compra por pontos** e a **entrega após pagamento aprovado**. Agora as entregas são enfileiradas e processadas corretamente. Entregas que ficaram presas voltam a ser entregues ao clicar em **"Reenviar Entrega"** (assim que o servidor estiver online).
- **Botão "Reenviar Entrega" volta a funcionar:** ele dava erro e não reenviava; agora re-enfileira a entrega já existente em vez de tentar recriá-la.
- **Sem entrega em dobro:** reforço que garante que uma mesma entrega nunca é executada duas vezes (por exemplo, ao clicar "Reenviar" mais de uma vez), evitando pontos ou itens duplicados.
- **Janelas (modais) que cortavam conteúdo:** a janela de **"Dar produto"** não corta mais os campos; e textos longos (nomes/slug de cluster, caminhos de arquivo, IDs de jogador) deixam de ser cortados dentro das janelas do painel.
Validação: `pnpm validate` verde (API + Web + Bot + Domain + build) e revisão de código. Atualização in-place pelo auto-updater.
---
v1.0.3342GitHub ↗
## [Transporte WebSocket/HTTP por servidor, setup 100% e correções de loja/painel] - 2026-07-18
- **Transporte do plugin (WebSocket ⇄ HTTP) por servidor:** novo controle na Visão geral do servidor ARK para escolher como o plugin fala com o painel — **WebSocket** (menor latência, ideal para chat quando o servidor roda na mesma máquina do painel) ou **HTTP** (padrão, funciona por qualquer rede). Mostra prós e contras de cada um, avisa que **exige reiniciar o servidor** para valer, e traz um botão **"Aplicar a todos os servidores ARK"**.
- **Assistente de configuração (Setup):** não trava mais abaixo de 100% quando uma verificação falha — agora mostra o erro com opção de tentar de novo; e o passo de plugins só fica "completo" quando todos os plugins ativos estão de fato configurados.
- **Loja:** corrigido o "Erro ao criar pedido" e o carregamento dos botões de compra; o erro real do pagamento agora aparece na tela.
- **Painel Discord (RCON):** os botões do painel deixam de falhar com "interaction failed" sob rede lenta (o painel responde antes de consultar a API).
- **Manutenção interna:** limpeza ampla de comentários do código e remoção de documentos/planos já implementados; correção de um vazamento de memória na fila de comandos do game-agent.
Validação: `pnpm validate` verde (API 4324 + Web 1239 + Bot 1052 testes + tsc + biome + build). A troca de transporte exige reiniciar o servidor ARK para entrar em vigor.
---
v1.0.3340GitHub ↗
## [Transporte WebSocket/HTTP por servidor, setup 100% e correções de loja/painel] - 2026-07-18
- **Transporte do plugin (WebSocket ⇄ HTTP) por servidor:** novo controle na Visão geral do servidor ARK para escolher como o plugin fala com o painel — **WebSocket** (menor latência, ideal para chat quando o servidor roda na mesma máquina do painel) ou **HTTP** (padrão, funciona por qualquer rede). Mostra prós e contras de cada um, avisa que **exige reiniciar o servidor** para valer, e traz um botão **"Aplicar a todos os servidores ARK"**.
- **Assistente de configuração (Setup):** não trava mais abaixo de 100% quando uma verificação falha — agora mostra o erro com opção de tentar de novo; e o passo de plugins só fica "completo" quando todos os plugins ativos estão de fato configurados.
- **Loja:** corrigido o "Erro ao criar pedido" e o carregamento dos botões de compra; o erro real do pagamento agora aparece na tela.
- **Painel Discord (RCON):** os botões do painel deixam de falhar com "interaction failed" sob rede lenta (o painel responde antes de consultar a API).
- **Manutenção interna:** limpeza ampla de comentários do código e remoção de documentos/planos já implementados; correção de um vazamento de memória na fila de comandos do game-agent.
Validação: `pnpm validate` verde (API 4324 + Web 1239 + Bot 1052 testes + tsc + biome + build). A troca de transporte exige reiniciar o servidor ARK para entrar em vigor.
---
v1.0.3327GitHub ↗
## [Transporte WebSocket/HTTP por servidor, setup 100% e correções de loja/painel] - 2026-07-18
- **Transporte do plugin (WebSocket ⇄ HTTP) por servidor:** novo controle na Visão geral do servidor ARK para escolher como o plugin fala com o painel — **WebSocket** (menor latência, ideal para chat quando o servidor roda na mesma máquina do painel) ou **HTTP** (padrão, funciona por qualquer rede). Mostra prós e contras de cada um, avisa que **exige reiniciar o servidor** para valer, e traz um botão **"Aplicar a todos os servidores ARK"**.
- **Assistente de configuração (Setup):** não trava mais abaixo de 100% quando uma verificação falha — agora mostra o erro com opção de tentar de novo; e o passo de plugins só fica "completo" quando todos os plugins ativos estão de fato configurados.
- **Loja:** corrigido o "Erro ao criar pedido" e o carregamento dos botões de compra; o erro real do pagamento agora aparece na tela.
- **Painel Discord (RCON):** os botões do painel deixam de falhar com "interaction failed" sob rede lenta (o painel responde antes de consultar a API).
- **Manutenção interna:** limpeza ampla de comentários do código e remoção de documentos/planos já implementados; correção de um vazamento de memória na fila de comandos do game-agent.
Validação: `pnpm validate` verde (API 4324 + Web 1239 + Bot 1052 testes + tsc + biome + build). A troca de transporte exige reiniciar o servidor ARK para entrar em vigor.
---
Portalv0.1.0 — licensing + checkout
v0.1.0 — Primeira venda (2026-04-21)
Portal público de licensing funcional com Stripe + MercadoPago Checkout Pro, admin interno (M2) e dashboard do cliente (M3).
Licensing
- Emissão de JWT Ed25519 por compra, phone-home diario, HWID fingerprint, grace period de 7 dias.
- Rate limit + HMAC-SHA256 em
/api/licenses/*e webhooks MP. - 59 testes criticos (Ed25519, HMAC, subscription, webhook idempotency).
Checkout e renovacoes
- Stripe subscription lifecycle: renovacao via
invoice.paid, revogacao automática emcustomer.subscription.deleted. - MercadoPago Checkout Pro com BRL (PIX/boleto/cartao 12x).
- Emails transacionais via Resend (confirmação, expiracao, revocacao, 2FA) com templates aplicados na marca.
Admin interno (portal)
- Dashboard com MRR, gestao de licenses (revoke, estender, transferir HWID).
- Visao de clientes e pedidos com filtros e paginacao.
Minha conta
- Cliente acompanha licenses, transfere HWID self-service (1x/mês sem custo), abre Stripe Customer Portal.
- Login por magic link (email) — em breve: Discord OAuth + email/senha.
Compliance e SEO
- Páginas legais revisadas: Termos (CDC art. 49 — 7 dias arrependimento), Privacidade (LGPD art. 18 completo + DPO + transferência internacional), EULA (L1 + OFAC + indenizacao).
sitemap.xml,robots.txte OpenGraph image com brand.
Proximos passos
- Login Discord OAuth + email/senha (além do magic link).
- Auditoria de acoes admin.
- Reprocessamento manual de compras.
- i18n completo (pt-BR + en-US).