You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/features-boost-progress.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,7 @@ O build Docker pós-correções passou com a imagem `stackhost:features-boost`.
52
52
-`go test ./...`, `go vet ./...` e `go mod verify` passaram após alinhar as dependências Go.
53
53
- O runtime agora expõe health real do Docker SDK (`healthy`, `starting`, `unhealthy`, `no_healthcheck`) e uma amostra de métricas locais Docker (`/api/v1/applications/:id/metrics`) com retenção de 24 horas e UI resumida. Swarm permanece explicitamente `unknown` para métricas não locais. Notificações têm configuração protegida, teste de webhook, UI e entrega assíncrona para eventos publicados. Aplicações podem ser duplicadas preservando a origem criptografada e iniciando como `not_deployed`.
54
54
- Backup local do sistema entregue em `POST/GET /api/v1/backups/system`, com SQLite via `VACUUM INTO`, certificados persistidos em tar.gz, download e remoção protegidos por admin, controles em Configurações, retenção e scheduler interno manual/diário/semanal. Destinos S3 continuam pendentes.
55
+
- Ajuste incremental da fase de logs: `tail` agora aceita somente 100, 500 ou 1000; o viewer ganhou busca local, auto-scroll, cópia, download, limpeza visual e indicador de conexão.
<divclass="section-head"><div><pclass="kicker">LOGS</p><h2>Saída operacional</h2><pclass="muted">Acompanhe o serviço sem expor containers arbitrários.</p></div><divclass="log-actions"><buttonclass="ghost"type="button":disabled="!logs"@click="copyLogs">Copiar</button><buttonclass="secondary"type="button":class="{ active: following }"@click="toggleFollowing">{{ following ? "Pausar" : "Acompanhar" }}</button></div></div>
52
-
<divclass="logs-toolbar"><label>Serviço<selectv-model="service"><optionv-for="item in services":key="item":value="item">{{ item }}</option></select></label><label>Linhas<selectv-model.number="tail"><option:value="100">100</option><option:value="500">500</option><option:value="1000">1000</option></select></label><buttonclass="ghost"type="button"@click="loadLogs">Atualizar</button></div>
53
-
<preclass="logs-viewer":aria-busy="loading">{{ logs || "Nenhum log disponível para este serviço." }}</pre>
57
+
<divclass="section-head"><div><pclass="kicker">LOGS</p><h2>Saída operacional</h2><pclass="muted">{{ connected ? "Conectado em tempo real" : "Histórico do serviço" }}</p></div><divclass="log-actions"><buttonclass="ghost"type="button":disabled="!logs"@click="copyLogs">Copiar</button><buttonclass="ghost"type="button":disabled="!logs"@click="downloadLogs">Baixar</button><buttonclass="ghost"type="button":disabled="!logs"@click="logs = ''">Limpar</button><buttonclass="secondary"type="button":class="{ active: following }"@click="toggleFollowing">{{ following ? "Pausar" : "Acompanhar" }}</button></div></div>
58
+
<divclass="logs-toolbar"><label>Serviço<selectv-model="service"><optionv-for="item in services":key="item":value="item">{{ item }}</option></select></label><label>Linhas<selectv-model.number="tail"><option:value="100">100</option><option:value="500">500</option><option:value="1000">1000</option></select></label><label>Buscar<inputv-model="query"type="search"placeholder="Filtrar linhas" /></label><labelclass="checkbox"><inputv-model="autoScroll"type="checkbox" /> Auto-scroll</label><buttonclass="ghost"type="button"@click="loadLogs">Atualizar</button></div>
59
+
<preref="viewer"class="logs-viewer":aria-busy="loading">{{ (logs.split("\n").filter((line) => !query || line.toLowerCase().includes(query.toLowerCase())).join("\n")) || "Nenhum log disponível para este serviço." }}</pre>
0 commit comments