Skip to content

Releases: janeiaraujo/knowledgebase

v2.6.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 00:54
2ff3c31

Corrigido

Cinco bugs que já estavam em produção, todos encontrados ao introduzir o
ESLint (#50) — nenhum deles quebrava o build, todos quebravam na tela ou na
requisição:

  • deliverWithRetry usava request.tenantId, mas roda fora do ciclo da
    requisição (entrega assíncrona, com retry agendado por setTimeout). Toda
    atualização de estatística de webhook estourava ReferenceError. O tenant
    agora sai do próprio webhook.
  • GET e PATCH /databases/:id referenciavam um objectId que nunca foi
    declarado — quebravam em toda chamada.
  • A tela de Revisões estava inteiramente quebrada: importava useTranslation
    e nunca chamava o hook, com 57 usos de t() sem escopo.
  • A tela de Atividade dos Usuários chamava useTranslation sem importar.
  • Em KBView, getErrorMessage vivia no escopo de módulo e chamava t() — a
    função criada para consertar o "Erro desconhecido" quebrava justamente
    quando havia erro. Agora recebe t por parâmetro.
  • O editor de texto tinha violação de rules-of-hooks: um retorno antecipado
    antes de um useCallback mudava a ordem dos hooks entre renders.
  • A URL do WebSocket era montada com a porta 3000 fixa, o que quebra atrás de
    qualquer proxy reverso. Passa a derivar da origem atual (#54).

Adicionado

  • docker compose up -d sobe a plataforma inteira — banco, API e interface —
    respondendo em http://localhost:8080. A interface é servida por nginx, que
    faz o proxy de /api e do WebSocket, então só uma porta precisa existir no
    host. Os dados de demonstração ficam sob demanda
    (docker compose --profile demo run --rm seed), porque o seed não é
    idempotente (#54).
  • ESLint no backend e no frontend, rodando no CI antes dos testes. As regras
    apontam bug, não estilo: variável fora de escopo, hook condicional, catch
    vazio, declaração vazando entre case (#50).
  • SECURITY.md com canais privados de reporte, prazos e escopo, e
    CODE_OF_CONDUCT.md (Contributor Covenant 2.1). O projeto já havia publicado
    três correções de segurança sem ter canal privado (#52).
  • Guarda contra release esquecida: o CI avisa quando um PR muda código de
    produto sem bumpar a versão, e um workflow mantém uma issue aberta enquanto a
    main estiver à frente da última tag, fechando-a sozinho quando a release
    sair (#49).

Alterado

  • Logs de depuração saíram do console de produção: o ciclo de vida do WebSocket
    passa por um helper guardado por import.meta.env.DEV (some do bundle em
    produção) e as mensagens do backend viraram fastify.log.info (#53).
  • Removidos 94 imports mortos e 18 trechos de código morto (#50).

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 23:01
60c8849

Segurança

  • fast-uri 3.1.4/4.1.1 → 3.1.5/4.1.2 (GHSA-7p8r-x3mc-p8w7, severidade alta):
    confusão de host quando a autoridade da URL vem introduzida por barra
    invertida. Chega transitivamente pelo Fastify — roteador e serializador — e a
    correção é só de lock, sem mudança de package.json (#35).

Adicionado

  • A API passou a responder as mensagens de erro no idioma do usuário. Das 255
    mensagens, 182 estavam em inglês e 73 em português, sem critério: quem usava
    a plataforma em inglês recebia "Notificação não encontrada". A tradução
    acontece na borda, num hook de serialização, e o idioma sai da preferência
    salva no Perfil ou do Accept-Language (#36).
  • Interface completa nos dois idiomas: as 43 telas restantes traduzidas. São
    73 arquivos traduzindo e nenhum com texto fixo em português (#37).
  • Testes de integração contra um MongoDB de verdade: duas organizações criadas
    pelo endpoint de registro, verificando que uma não enxerga nem altera nada da
    outra — leitura por id, listagem, PATCH e DELETE cruzados (conferindo
    depois que o dado sobreviveu), comentários, incidentes e contadores. A
    varredura estática que já existia prova que o filtro está escrito; isto
    prova que ele funciona (#39).

Desempenho

  • Bundle dividido por rota. O frontend saía num chunk único de 2,0 MB: quem
    abria a tela de login baixava a aplicação inteira — editor, gráficos, telas
    de admin — para ver um formulário com dois campos. Carga inicial passou de
    2400 kB para 969 kB (649 kB → 256 kB gzip). Login e Register ficam estáticos
    de propósito, para não trocar o bundle grande por um flash de spinner na
    abertura (#38, trazido para a main pelo #47).

Corrigido

  • O CI não rodava em PR cujo destino não fosse a main, então um PR empilhado
    sobre outra branch não recebia check nenhum — a proteção da main cobria só
    o PR de baixo da pilha (#47).

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 20:08
eb3726c

Segurança

  • A rota pública de ingestão (POST /api/events/ingest) passou a ter limite
    por token: 120 requisições por minuto. Era a única rota de escrita sem
    autenticação de sessão, então uma fonte de monitoramento ruidosa — ou um
    token vazado — podia encher a base de eventos sem qualquer freio. O limite
    é por token, não por IP: várias ferramentas atrás do mesmo IP não se
    penalizam entre si (#30).
  • Fechados 19 pontos em que uma consulta não filtrava por tenant_id
    (contador de views, agendamento de revisão, post-mortem, busca inteligente,
    estatísticas de webhook, fluxos GPS e as dez consultas de gamificação).
    Nenhum vazava leitura entre organizações no fluxo normal, porque o id vinha
    de um documento já filtrado — mas não havia defesa em profundidade: um id de
    outra organização chegando pela URL seria aceito (#31).

Adicionado

  • Interface completa em português e inglês. Doze telas passaram a atender os
    dois idiomas: KBView, Configurações, Revisões, Favoritos, Notificações,
    Busca Avançada, Busca Inteligente, Integrações (entrada e saída),
    Relatórios, Atividade dos Usuários e os editores de fluxo GPS e post-mortem
    (#32).
  • Testes de i18n rodando no CI antes do build: paridade de chaves entre os
    dois idiomas, existência real de cada chave citada no código, igualdade dos
    placeholders de interpolação e uma catraca que impede telas já traduzidas de
    voltarem a ter texto fixo (#32).

Corrigido

  • Datas passaram a seguir o idioma ativo. Antes o locale era pt-BR fixo em
    toda a aplicação, inclusive com o idioma em inglês (#32).
  • Rótulos de prioridade, tipo de etapa, período e dia da semana viviam em
    constantes de módulo, avaliadas uma única vez na carga: não mudavam ao
    trocar de idioma sem recarregar a página (#32).
  • Plural de zero em português. A regra CLDR classifica 0 como singular, o que
    produzia "0 resultado encontrado" na tela de busca (#32).
  • sourceTokens.map(t => ...) sombreava a função de tradução em
    InboundEventSources: a aba Entrada quebraria com t is not a function ao
    renderizar, mas só quando já existisse um token cadastrado — o build passava
    normalmente (#32).

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 18:54
603cdc8

What's Changed

  • feat: foto de perfil com recorte, salva no R2 com copia local redundante by @janeiaraujo in #20
  • fix: avatar - local so como fallback do R2 e gradiente vazando by @janeiaraujo in #21
  • chore: templates de issue/PR, CODEOWNERS e caminho de entrada pra contribuir by @janeiaraujo in #22
  • fix(seguranca): limitar tentativas de login (forca bruta) by @janeiaraujo in #23
  • fix(busca): indice de texto usava stemming em ingles sobre conteudo PT by @janeiaraujo in #24
  • feat: fluxo de recuperacao de senha by @janeiaraujo in #25
  • fix: Configuracoes Gerais nao salvava nada by @janeiaraujo in #26
  • feat(i18n): traduzir as telas do caminho principal by @janeiaraujo in #27
  • test: testes automatizados das rotas criticas by @janeiaraujo in #28
  • chore: release 2.3.0 by @janeiaraujo in #29

Full Changelog: v2.2.0...v2.3.0

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 17:34
2e6bcc1

What's Changed

  • fix(deps): react-router-dom 6.30.4 -> 7.18.2 - corrige 3 alertas do Dependabot by @janeiaraujo in #12
  • fix(ci): CI do frontend falhando desde os últimos merges - Node 18 incompatível com Vite 8 by @janeiaraujo in #15
  • docs: adicionar screenshots reais ao README (PT/EN) by @janeiaraujo in #16
  • feat: internacionalizacao (PT/EN) - infra + navegacao principal by @janeiaraujo in #17
  • feat: pagina de Perfil do usuario com preferencias (idioma, tema, senha) by @janeiaraujo in #18
  • chore: release 2.2.0 by @janeiaraujo in #19

Full Changelog: v2.1.0...v2.2.0

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 15:37
94da45d

What's Changed

  • chore: automatizar tag e GitHub Release por versao by @janeiaraujo in #14
  • fix: excluir KB (e qualquer erro nao tratado) mostrava mensagem inutil by @janeiaraujo in #13
  • Captura Rapida multimodal, fluxo completo de incidentes e reorganizacao de integracoes by @janeiaraujo in #11

Full Changelog: v1.0.0...v2.1.0

v1.0.0

Choose a tag to compare

@janeiaraujo janeiaraujo released this 03 Aug 17:15
b8ee71a

Baseline do projeto antes da automação de tag/release (PR #14). Marca o estado anterior à leva de melhorias: Captura Rápida multimodal, fluxo completo de incidentes, correções de segurança, CI e i18n.