Skip to content

Changelog

Formato baseado em Keep a Changelog.

[Unreleased]

Added

  • Metric summaries offer p85, p90, and p95 next to average and peak, in the container view and in the comparison chart. The choice stays in the URL (stat=p95)

0.6.1 - 2026-10-14

The v0.6.0 tag was never published as a release because its vulnerability scan failed. This is the first release of the 0.6 line and also ships everything listed under 0.6.0.

Fixed

  • The workloads list reads a workload_latest table kept in the same transaction as metric writes, instead of scanning every metric point in the window. Containers and Topology no longer wait seconds for it
  • Repeated log patterns keep their newest sample. The upsert referenced an ambiguous sample column on Postgres
  • The agent strips terminal color codes from log lines and trusts a declared level (JSON level/severity, pino numbers, logfmt level=) before guessing from words, so trace_id no longer turns an info line into debug
  • Opening a trace honors the selected range and shows an error with a retry instead of an empty trace
  • The time range control never shows a preset and Custom pressed at the same time, and closes the custom form when the range changes elsewhere

Changed

  • Insight, alert, metric catalog, and default SLO text from the hub is in English. The panel still translates alert titles and values
  • Topology renders as soon as the graph arrives, keeps working when fleet, workload, HTTP, or alert data fails, and hides raw IP addresses and container ids behind a toggle
  • Container cards draw sparklines as plain SVG, and the table view does not fetch series, so the page no longer blocks on each refresh
  • Status is never shown by color alone: meters, stat cards, badges, and failed spans carry a text label, and warning text uses a darker amber
  • Buttons, tabs, inputs, selects, links in lists, and sidebar items reach 44 px on touch screens
  • Load errors use role="alert", say what to check, and offer a retry
  • Numbers, durations, and dates follow the panel language. The first visit picks Portuguese or English from the browser
  • Logs, traces, and problems copy is translated, including the trace banner, level and topic labels, and the trace ID field
  • Dependency updates: pgx/v5, the web npm group, and the web base images

0.6.0 - 2026-10-07

Added

  • Python, Node.js, and Java transports that POST spans to the hub as OTLP JSON, with traceparent and X-Correlation-Id

Security

  • Query routes require the same Bearer token as ingest when ARGUS_AGENT_TOKEN is set. The panel proxy adds that header. /health stays open
  • Bump golang.org/x/text to v0.41.0 (GO-2026-6629)

Changed

  • The agent retries a hub POST on 429, 5xx, and connection or timeout errors, with jittered exponential backoff capped at 8s. 401, 403, and other 4xx fail immediately
  • After those retries a telemetry batch is stored on disk and replayed, oldest first, before a newer batch. A permanent 4xx during replay drops that batch. A corrupt file is skipped
  • Each telemetry batch carries one X-Argus-Batch-Id from the first attempt through replay. The hub records that id in the same transaction as the write, so a lost response does not store the batch twice
  • Topology opens on the services that need attention and shows only the selected path, using fleet, workload, HTTP summary, and active alerts that already exist
  • Log search, events, and traces return a page (entries, total, limit, offset) instead of a silent cap. The panel pages those tables, and the containers chart states that it is the busiest slice of the same filtered list the table pages
  • The containers CPU chart averages each minute. A single scrape was being drawn as the whole minute, so the stack and the tooltip showed a spike instead of the minute
  • Charts use the same time-range control as logs, including a start and an end of at most 24 hours

0.5.0 - 2026-10-06

Breaking

  • The embedded SQLite store is gone. The hub requires ARGUS_STORE_DSN (Postgres). Existing SQLite files are not migrated

Added

  • Optional kernel collector (ARGUS_EBPF=1) reports L4 dependencies, connection counts, and retransmits. Log-derived HTTP stays when the collector cannot load
  • Fleet status records why a container is down (disposition: intentional stop, unexpected exit, or out of memory), and Problems lists those stops apart from failures

Changed

  • Hub persistence is a driver selected with ARGUS_STORE_DRIVER (Postgres when unset). Additional drivers, including document stores, register on the same interface

Fixed

  • Hub dependencies pick up the fixed pgx and golang.org/x/text releases so the vulnerability scan can pass
  • The web image refreshes Alpine packages on each CI build, so a cached layer cannot keep an old pcre2
  • Release workflow grants security-events: write to the reusable CI so Trivy can upload SARIF

0.4.0 - 2026-10-01

Added

  • CI: govulncheck and production npm audit on PRs, pushes, and a weekly schedule (#39)
  • CI: Trivy on hub/agent/web images (SARIF; release scans before push), gitleaks on PR diffs, CodeQL for Go and JavaScript/TypeScript (#40)
  • CI: compose smoke after docker builds, covering the post-deploy checklist (#38)
  • Panel unit tests with Vitest and Testing Library; CI runs npm test -- --run (#37)
  • Go tests for hub HTTP ingest/queries and for rules, slo, topology, groups, and bus; CI runs go test -race and publishes coverage (#36)
  • Panel and docs in English by default, with Portuguese (pt-BR / pt) as a first-class locale; locale switcher persists in localStorage (#54)
  • Docs site: dedicated landing page, Material theme aligned with the panel, scrollable tables
  • Docs sidebar: nested pages indent under section titles, hairline between categories
  • Dependabot weekly grouped updates for GitHub Actions, Go modules, npm (web/), and the web image (#33)
  • SECURITY.md, issue templates (bug, feature, docs) and pull request template
  • Hub: concurrent ingest limit (ARGUS_INGEST_CONCURRENCY, ARGUS_INGEST_WAIT, ARGUS_MAX_BODY_BYTES); bounded queue for pattern/topology batches
  • argus-web listens on 8081 only for ingest POSTs and /health, so agents on other hosts do not need the hub GET routes exposed
  • Purge also removes log_patterns and topology_edges using log and metric retention

Changed

  • argus-web runtime image runs apk upgrade so Alpine packages in nginx:1.30-alpine pick up fixable HIGH/CRITICAL patches (#40)
  • Pages build site check runs on every PR so it can be required on main (#33)
  • Contributor docs: commits, PR text, new CHANGELOG entries, canonical docs, and API identifiers are English; Portuguese files are translations only
  • Issue chooser requires a form (bug, feature, docs, or task); pull request template has Why, What changes, How to validate, and a checklist
  • SQLite em WAL, com escritor único e pool de leitura: consultas do painel não bloqueiam a ingestão
  • Compose: retenção de logs 72h, métricas 168h, purge a cada 10m com timeout 30s; GOMEMLIMIT no hub

Fixed

  • CI smoke retries hub and panel probes so a connection reset right after compose up does not fail the job
  • Escritas do hub falhavam com context deadline exceeded quando o SQLite estava grande e uma única conexão serializava leitura e ingestão

0.3.0 - 2026-09-29

Added

  • GET /api/v1/traces: traces recentes de spans OTLP e de logs com trace_id, com filtro por serviço e período (#48)
  • GET /api/v1/logs/patterns aceita container, group e q (#48)
  • Painel: lista de traces por serviço e período, link "Pular para o conteúdo" e menu num landmark nav (#48)

Changed

  • Referência da API e fluxos alinhados aos handlers: variáveis de .env.example, esquemas de topologia, alertas e SLO, e ingest de fleet, eventos e OTLP (#50)
  • Painel com 7 destinos em vez de 13: Visão geral, Problemas, Containers, Métricas, Logs, Traces e Topologia. Workloads, Fleet e Grupos viram Containers; Explorer vira o modo Comparar de Métricas; Patterns vira o modo Padrões de Logs; Eventos, Insights e SLOs viram abas de Problemas. As rotas antigas redirecionam mantendo os parâmetros (#48)
  • Visão geral mostra só o que pede ação: alertas ativos, SLOs em risco, containers com problema e serviços HTTP com erro (#48)
  • Modo, aba, grade ou tabela, tipo de gráfico e containers comparados ficam na URL (#48)
  • Um único título por tela, igual ao nome no menu; sem rótulos em caixa alta nem metadados unidos por · (#48)
  • CI roda go, web e o build de cada imagem só quando hub, agent ou web mudam no diff; tags e mudanças no próprio CI rodam tudo (#45)
  • CONTRIBUTING.md: comandos locais do painel iguais aos do CI (npm run lint) e versão do Node
  • READMEs das imagens no Docker Hub: tags vX.Y.Z e X, imagem base, espelho no GHCR e variáveis de purge (hub) e de intervalo/filtro (agent)

Fixed

  • Docs de configuração: ARGUS_LOG_INTERVAL, ARGUS_FLEET_INTERVAL e ARGUS_NAME_PREFIX do agent não estavam documentadas
  • Link de SLO para Métricas enviava service, que a tela ignorava; agora abre a comparação dos containers do serviço (#48)
  • Comparação de métricas HTTP não encontrava as séries, que chegam com o nome do serviço no lugar do container (#48)

0.2.1 - 2026-09-29

Changed

  • Go 1.27, Node 24 (LTS), Alpine 3.24, nginx 1.30 (stable) e Python 3.14 nos Dockerfiles e workflows (#41)
  • Runners fixados em ubuntu-26.04 (LTS) e actions atualizadas para as majors atuais (#41)
  • modernc.org/sqlite 1.60 e demais dependencias Go; dependencias do web nas versoes minor/patch atuais (#43)

Security

  • undici atualizado no web, corrigindo vulnerabilidade moderada apontada pelo npm audit (#43)

0.2.0 - 2026-09-29

Added

  • Workflow de release: imagens GHCR + GitHub Release a partir de tags semver
  • Compose examples/compose-minimal/docker-compose.published.yml (pull GHCR)
  • Runbook de atualização de stack em docs/deploy.md (pull GHCR ou build local, checklist pós-deploy, rollback)
  • Checklist semver e de publicação no CONTRIBUTING.md
  • Site de documentação no GitHub Pages (MkDocs), publicado a cada merge em main e a cada release
  • CI com job de lint do web e build dos três Dockerfiles
  • Imagens no Docker Hub (pseudohuery/argus-{hub,agent,web}) além do GHCR, com README e descrição sincronizados
  • Imagens multi-arch linux/amd64 e linux/arm64, com SBOM, provenance e labels OCI; tags X.Y e X (a partir de 1.0)
  • ARGUS_REGISTRY no compose publicado para escolher entre GHCR e Docker Hub

Changed

  • CI em jobs paralelos (anti-leak, go, web, docker) com agregador test e cancelamento de execuções antigas do mesmo PR
  • Release valida tag, commit em main e seção do CHANGELOG antes de publicar; reutiliza o CI; imagens em paralelo com cache; tags -rc viram pre-release sem mover latest
  • CI usa Node 22, a mesma versão do web/Dockerfile

Fixed

  • CI: InferServiceFromContainer para serviços compose com hífen (demo-api)
  • Gate anti-leak no workflow (#25)
  • Release: caminho do Dockerfile do web (./web/Dockerfile) no build da imagem
  • Docs de configuração: defaults reais de ARGUS_STORE_PATH, ARGUS_HUB_URL, ARGUS_AGENT_ID e ARGUS_HOST_ID

0.1.0 - 2026-09-04

Added

  • Hub (argus-hub) com API REST, ingest de métricas/logs/eventos/fleet e OTLP traces
  • Agent Docker com coleta de CPU, memória, rede e block I/O
  • Painel web (React + shadcn/ui): dashboard, workloads, métricas, explorer, logs, insights, patterns, topologia, traces, SLOs, eventos
  • Sidebar agrupada por domínio (Visão, Infraestrutura, Telemetria, Análise, Alertas)
  • Gráficos de infraestrutura: meters, sparklines, charts empilhados
  • Documentação pública: README, CONTRIBUTING, API reference, examples
  • CI GitHub Actions (Go test + build web)
  • Licença MIT

Changed

  • Seeds e exemplos genéricos (demo-api) — sem referências a infra privada
  • Portas default do compose: hub 8080, painel 3000