Skip to content

Releases: PirataZang/devscope

v1.7.5

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:23
6cf6836

Changelog

  • 6cf6836 Add Cloudflare module with domain traffic, DNS and security views (#7)

v1.7.4

Choose a tag to compare

@github-actions github-actions released this 24 Oct 02:33

Changelog

  • 54cfee8 Add devscope bot: pair machines with Telegram hub

v1.7.3

Choose a tag to compare

@github-actions github-actions released this 21 Oct 01:21

Changelog

  • d40f212 Add nginx "Publicar projeto": detecta porta e build, escreve a .inc

v1.7.2

Choose a tag to compare

@github-actions github-actions released this 19 Oct 00:46

Changelog

  • 90c2f86 Keep project list in sync with the disk without restarting

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 18 Oct 23:30

Changelog

  • f85dba0 Add Releases setup: create workflow and CHANGELOG on demand

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 22:09
53bbeaa

Changelog

  • 54c10dd Add Worktrees module; remove Routes and SSH Tunnel tabs
  • 67a16b7 Add Worktrees tab; commit stale .ua analysis cache
  • 5609d7e Add port-conflict detection across projects and refresh README with demo
  • bc6f3d6 Merge pull request #5 from PirataZang/feat/updates
  • 53bbeaa Updates (#6)

v1.6.9

Choose a tag to compare

@PirataZang PirataZang released this 25 Sep 23:54

Changelog

Todas as mudanças notáveis deste projeto serão documentadas neste arquivo.

O formato é baseado em Keep a Changelog,
e este projeto segue o Versionamento Semântico.

[Unreleased]

Added

  • Aba API repaginada no padrão Postman/Thunder Client — a tela foi refeita inteira, no padrão de telas do projeto (cabeçalho, régua de abas numerada, painéis e barra de comandos larga)
    • Linha de requisição no topo, como no Postman: método, URL inteira e o botão de enviar numa linha só. Antes a URL aparecia duas vezes (cabeçalho + caixa [2]-URL) e em nenhuma das duas dava pra ver a query
    • Requisição e resposta visíveis juntas. Antes Body e Response disputavam o mesmo painel por [ e ] — ver o corpo enviado e a resposta ao mesmo tempo era impossível
    • Abas numeradas 1 PARAMS · 2 HEADERS · 3 AUTH · 4 BODY · 5 RESPOSTA, com contador no rótulo (params ativos, headers ativos, código da resposta) pra saber o que está ligado sem abrir a aba; a aba 5 abre a resposta em tela cheia
    • Tabela de params nova, ligada à URL nos dois sentidos: colar um link vira linhas na hora, editar a linha reescreve a query, e space desliga o parâmetro sem apagá-lo (era preciso editar a query à mão dentro da URL)
    • Headers também em tabela, com n nova linha, d apagar e space ligar/desligar; linha desligada é serializada como comentário, que o cliente HTTP já ignorava
    • Auth em controle segmentado (nenhuma · bearer · basic) em vez de caixa empilhada, com o segredo mascarado
    • Resposta com tamanho (1.2 kB) além de status e tempo, numeração de linha, realce de JSON, busca e h alternando corpo/cabeçalhos
    • y copia o comando curl equivalente (método, URL, headers ativos, auth e corpo)
    • Foco em três paradas só (tab: URL → aba → resposta), no lugar de quatro caixas à esquerda mais um painel à direita onde tab fazia coisas diferentes conforme o lugar
    • A coluna vertical AÇÕES (17 colunas roubadas do conteúdo) deu lugar à barra de comandos larga do padrão, com os atalhos mudando conforme o foco
    • Edição agora é explícita (u na URL, e no campo, enter na célula da tabela): digitar em cima de um campo para começar a editar conflitava com as teclas de comando, que é a raiz da bagunça anterior
  • Relax: cena Smoke — um gerador solta fumaça colorida de duas cores, elas se enrolam uma na outra, a coluna sobe, abre e dissipa; aí sai outra, com duas cores novas
    • Ciclo de 15s: 5s de jato e o resto até não sobrar nada (um desvanecimento de ciclo garante o palco limpo pro lançamento seguinte)
    • Duas cores sorteadas por lançamento, a 60°–180° uma da outra, e a fumaça é a rampa entre elas pelo caminho curto do círculo de matiz; a válvula alterna em fita, e cada baforada caminha pro meio da rampa conforme envelhece
    • Turbulência por curl de ruído (rotacional de um campo de ruído, livre de divergência): a fumaça enrola em vez de inflar como spray. O eixo vertical entra bem podado — solto, ele vira corrente descendente parada em cima da coluna e a fumaça não sobe
    • Densidade virando opacidade por absorção (Beer-Lambert) e opacidade virando densidade de pontos por meio-tom: o miolo fecha a célula, o meio fica em meio-tom e a borda esgarça em pontinhos, com um cálculo só
    • Uma em três baforadas é farrapo (menor, mais leve, mais turbulenta), e cada uma tem empuxo próprio — é o que estica a coluna na vertical em vez de fazê-la subir em bloco
  • Relax: cena Dragon — um dragão de perfil batendo asa contra a lua, a 30fps
    • Anatomia procedural (tronco, pescoço, cabeça, cauda, pernas e duas asas com braço, antebraço, quatro dedos e o pano entre eles), não sprite pronto
    • Golpe assimétrico (38% do ciclo é a descida), asa que dobra no meio da subida, pano que atrasa em relação ao osso e corpo que sobe depois do golpe
    • Rugido de vez em quando: a boca abre antes do fogo, o jato sai em rampa de densidade ASCII (. : - = + * # % @), as brasas sobem como @ * + . ' e o rugido sai escrito letra por letra
    • Voo batido e planado se alternando; serra, nuvens, lua e estrelas ao fundo
    • Movimento contínuo (asa, balanço, cauda, chama, trajetória de brasa) é função do tempo de render, não do passo de simulação — cada um dos ~30 frames por segundo desenha movimento novo
  • Aba Nginx (TOOLS) — cadastro de rotas de nginx direto do projeto, sem editar arquivo na mão
    • Detecta o main.conf/nginx.conf e a pasta de nível 1 (.conf) lendo o include de verdade — funciona com qualquer nome de pasta, com fallback por conteúdo (varredura de subpastas) e por caminho de dentro do container (docker volume montado com outro nome local)
    • Cada .conf de nível 1 é single (um server{} completo, com proxy_pass ou root) ou hub (um server{} de verdade, com seu próprio listen/server_name/ssl, que só inclui uma pasta de .inc)
    • Enter num hub abre as .inc dele — cada .inc é um location{} (ou o par redirect+alias pra site estático, com try_files no padrão SPA), criado/apagado sem sair do hub
    • Wizard de criação com campos que mudam pelo tipo: nome + tipo + server_name + porta + ssl + pasta (hub) · nome + server_name + proxy_pass/root + porta + ssl (single) · path + label opcional + porta/proxy_pass ou dist (.inc dentro de um hub)
    • A alterna entre ver só as rotas deste projeto ou de todos os projetos abertos no devscope, com a origem marcada por linha
    • Delete com confirmação; apagar um hub não apaga a pasta nem as .inc dela
  • Cloudflare Tunnel: limpeza de túneis órfãos
    • K encerra de uma vez todo túnel vivo que não é deste projeto — útil depois de um restart do devscope que deixa o cloudflared filho rodando sozinho, ocupando a faixa de porta de métricas (20241+) e travando novos túneis
    • Túneis de outros projetos/do host aparecem por padrão na lista (antes só apertando A); A agora serve pra filtrar de volta pra só o projeto atual
  • Credenciais manuais de banco (aba Database) — permite informar host/porta/usuário/senha de um banco que não roda em container Docker local do projeto (salvo em .devscope/database.json); collectors/database.go roda psql/mysql direto contra o host quando não há container, além do caminho existente via docker exec

Changed

  • .devscope/ agora é criado por um helper compartilhado (devscopeutil.EnsureDir), reaproveitado por cfutil, jenkinsutil, ngrokutil, sshutil, wsutil e o novo dbutil
  • .gitignore passa a ignorar .devscope/ (evita versionar config e credenciais locais do projeto)

Fixed

  • Detecção de processos cloudflared não reconhecia binário de release baixado sem renomear (cloudflared-linux-amd64)

[1.6.3] - 2026-08-25

Added

  • Git commit graph: filtro de branch (B, digite pra filtrar a lista), foco alternável entre painéis (commits/detalhe/arquivos) via tab com scroll vertical e horizontal independentes, e detalhe de commit mais completo (refs, todos os parents, mensagem completa)

Changed

  • Linhas de imagem Docker (aba Containers) passam a distinguir 3 estados — pertence a este projeto / outro projeto / dangling — em vez de um indicador binário

[1.6.2] - 2026-08-25

Added

  • Gerenciamento de imagens Docker (i na aba Containers)
    • Escopo em 3 níveis (A alterna): imagem do container selecionado → imagens do projeto (inclui builds antigos sem tag, via label de compose) → todas as imagens do host
    • Indicador visual de quais imagens pertencem ao projeto atual
    • D abre modal de remoção com 4 opções (remover / remover só sem tags / forçado / forçado só sem tags) e cancelar
  • Árvore de dependências do Compose (Ctrl+G na aba Containers) — lê depends_on do compose (lista ou mapa com condition) e desenha em árvore com o status real (running/stopped/não criado) de cada serviço
  • Git commit graph (Ctrl+G na aba Git)
    • Layout de lanes calculado internamente a partir do histórico de commits (não reaproveita o --graph do git), desenhando curvas arredondadas (╭╮╰╯) e junções (├┤┴) em vez de diagonais
    • Cor por lane, ícone por tipo de commit, badges de branch/tag inline na linha do commit
    • Painéis de detalhe do commit (hash, autor, data, parent, mensagem) e arquivos alterados (+/− por arquivo), carregados sob demanda ao navegar
    • Enter sobre um commit abre a tela de detalhe completa (árvore de arquivos + diff) já existente na aba Git
  • Resolução de conflitos de Git na aba Git
    • p (pull) detecta divergência e oferece modal Merge (--no-ff) ou Rebase, além de cancelar
    • Modo de conflito (após pull-merge, pull-rebase, M ou cherry-pick): lista arquivos em conflito com diff colorido ours (o, −) vs theirs (t, +)
    • Resolver por arquivo com o (ours) / t (theirs) / b (manter ambos os lados) ou editar manualmente
    • c continue / x abort da operação em andamento (merge/rebase/cherry-pick)
  • Aba Relax (Ctrl+T) — animações de terminal para descansar a cabeça; nada roda de fato aqui
    • Novas cenas: Tetris, Sword, Hourglass, Chess, Jackpot e V4 (motor a pistões)
    • Motor de renderização em Braille compartilhado entre as cenas
    • Cenas antigas (Aquarium, Clouds, Raindrop, Mountains, Invaders) removidas e substituídas pelas novas
  • Compor mensagem WebSocket (m) — modal dedicado com editor, seleção de tipo de frame por tab (Tab/Shift+Tab) e envio
  • Modo HTTP/2 para Cloudflare Tunnel — força o transporte em redes que bloqueiam QUIC/UDP 7844; detectado automaticamente na descoberta de túneis do sistema
  • Barras de progresso em Braille — timeline de jobs e heatmap de falhas da aba Actions passam a usar o mesmo estilo pontilhado do docker pull
  • Aba Swarm (MANAGER) — Control Center de Docker Swarm
    • Visões: Services, Nodes, Tasks, Stacks, Networks, S...
Read more

v1.6.8

Choose a tag to compare

@PirataZang PirataZang released this 11 Sep 10:35

Changelog

Todas as mudanças notáveis deste projeto serão documentadas neste arquivo.

O formato é baseado em Keep a Changelog,
e este projeto segue o Versionamento Semântico.

[Unreleased]

Added

  • Aba Nginx (TOOLS) — cadastro de rotas de nginx direto do projeto, sem editar arquivo na mão
    • Detecta o main.conf/nginx.conf e a pasta de nível 1 (.conf) lendo o include de verdade — funciona com qualquer nome de pasta, com fallback por conteúdo (varredura de subpastas) e por caminho de dentro do container (docker volume montado com outro nome local)
    • Cada .conf de nível 1 é single (um server{} completo, com proxy_pass ou root) ou hub (um server{} de verdade, com seu próprio listen/server_name/ssl, que só inclui uma pasta de .inc)
    • Enter num hub abre as .inc dele — cada .inc é um location{} (ou o par redirect+alias pra site estático, com try_files no padrão SPA), criado/apagado sem sair do hub
    • Wizard de criação com campos que mudam pelo tipo: nome + tipo + server_name + porta + ssl + pasta (hub) · nome + server_name + proxy_pass/root + porta + ssl (single) · path + label opcional + porta/proxy_pass ou dist (.inc dentro de um hub)
    • A alterna entre ver só as rotas deste projeto ou de todos os projetos abertos no devscope, com a origem marcada por linha
    • Delete com confirmação; apagar um hub não apaga a pasta nem as .inc dela
  • Cloudflare Tunnel: limpeza de túneis órfãos
    • K encerra de uma vez todo túnel vivo que não é deste projeto — útil depois de um restart do devscope que deixa o cloudflared filho rodando sozinho, ocupando a faixa de porta de métricas (20241+) e travando novos túneis
    • Túneis de outros projetos/do host aparecem por padrão na lista (antes só apertando A); A agora serve pra filtrar de volta pra só o projeto atual
  • Credenciais manuais de banco (aba Database) — permite informar host/porta/usuário/senha de um banco que não roda em container Docker local do projeto (salvo em .devscope/database.json); collectors/database.go roda psql/mysql direto contra o host quando não há container, além do caminho existente via docker exec
  • docs/DESIGN.md — padrão de telas de módulo (cabeçalho de identificação, régua de abas numerada, corpo em painéis, barra de comandos larga no rodapé), extraído das telas já convertidas e usado como referência para toda tela nova ou reformulada
  • Fundação visual compartilhada (foundation.go) — painel, corte com consciência de ANSI e espaçador que viviam espalhados em api_tab.go/git_tab.go/dashboard.go viram um só lugar, usado por toda tela nova
  • Sparkline em Braille (spark.go) — histórico de CPU/RAM/disco do host e ondas de status animadas, compartilhados entre os módulos
  • Painel de preferências (Shift+C) — tema, agente de IA e atalhos de app externo editáveis em campos, gravados em user_config.txt (separado do config.yaml do scanner, que quase não muda)
  • Tela de ajuda redesenhada no padrão do docs/DESIGN.md — comandos agrupados pelas mesmas cores/grupos da barra lateral em vez de uma string única de 200 linhas sem separação

Changed

  • .devscope/ agora é criado por um helper compartilhado (devscopeutil.EnsureDir), reaproveitado por cfutil, jenkinsutil, ngrokutil, sshutil, wsutil e o novo dbutil
  • .gitignore passa a ignorar .devscope/ (evita versionar config e credenciais locais do projeto)
  • Todas as telas de módulo redesenhadas para o padrão do docs/DESIGN.md — Git, Containers, GH Actions, ngrok, Cloudflare Tunnel, SSH, Kubernetes, Swarm, Nginx, Database, Rotas, WebSocket, API e Overview. Cabeçalho de identificação + régua de abas numerada + corpo + barra de comandos larga no rodapé substituem o cabeçalho/rodapé particular de cada tela, a coluna vertical "AÇÕES" e os cards de um número só
  • Abertura de módulo (landing) unificada — as telas de entrada de treze dos quinze módulos passam a usar o mesmo moduleLanding/panelBox, cortando o espaço em branco esticado até o fim da tela que sobrava nas quatro caixas antigas
  • Sidebar reorganizada em 5 grupos por capacidade do projeto — PROJETO, CÓDIGO, EXECUÇÃO, REDE, DADOS — escondendo automaticamente módulos que não fazem sentido no projeto aberto (ex.: Kubernetes sem manifest no repo); substitui o esquema fixo de 6 grupos da 1.6.2
  • Git: log de comandos e stashes viram gaveta sob demanda em vez de duas caixas fixas no rodapé da tela principal (a saída de um git pull é um evento pontual, não um painel permanente)
  • Abas Health e Metrics removidas; o sinal delas foi incorporado na faixa de alertas do Overview e nas linhas de status de cada módulo
  • Integração com LazyGit (L na aba Git) removida
  • Wizards de túnel (ngrok, SSH, Cloudflare) mostram o comando CLI exato que vão executar, como preview, antes de confirmar
  • README revisado (estrutura, instalação, exemplos de uso) e novas capturas de tela em docs/images/

Fixed

  • Detecção de processos cloudflared não reconhecia binário de release baixado sem renomear (cloudflared-linux-amd64)
  • Túneis ngrok/SSH/Cloudflare reiniciados perdiam domain/region e trocavam de URL; os argumentos agora carregam essa configuração entre reinícios
  • joinWithSpacer (cabeçalho e régua de várias telas) podia desenhar uma linha mais larga que o terminal quando nome de projeto comprido e vários chips de status não cabiam juntos; agora encolhe o lado esquerdo em vez de estourar a largura

[1.6.3] - 2026-08-25

Added

  • Git commit graph: filtro de branch (B, digite pra filtrar a lista), foco alternável entre painéis (commits/detalhe/arquivos) via tab com scroll vertical e horizontal independentes, e detalhe de commit mais completo (refs, todos os parents, mensagem completa)

Changed

  • Linhas de imagem Docker (aba Containers) passam a distinguir 3 estados — pertence a este projeto / outro projeto / dangling — em vez de um indicador binário

[1.6.2] - 2026-08-25

Added

  • Gerenciamento de imagens Docker (i na aba Containers)
    • Escopo em 3 níveis (A alterna): imagem do container selecionado → imagens do projeto (inclui builds antigos sem tag, via label de compose) → todas as imagens do host
    • Indicador visual de quais imagens pertencem ao projeto atual
    • D abre modal de remoção com 4 opções (remover / remover só sem tags / forçado / forçado só sem tags) e cancelar
  • Árvore de dependências do Compose (Ctrl+G na aba Containers) — lê depends_on do compose (lista ou mapa com condition) e desenha em árvore com o status real (running/stopped/não criado) de cada serviço
  • Git commit graph (Ctrl+G na aba Git)
    • Layout de lanes calculado internamente a partir do histórico de commits (não reaproveita o --graph do git), desenhando curvas arredondadas (╭╮╰╯) e junções (├┤┴) em vez de diagonais
    • Cor por lane, ícone por tipo de commit, badges de branch/tag inline na linha do commit
    • Painéis de detalhe do commit (hash, autor, data, parent, mensagem) e arquivos alterados (+/− por arquivo), carregados sob demanda ao navegar
    • Enter sobre um commit abre a tela de detalhe completa (árvore de arquivos + diff) já existente na aba Git
  • Resolução de conflitos de Git na aba Git
    • p (pull) detecta divergência e oferece modal Merge (--no-ff) ou Rebase, além de cancelar
    • Modo de conflito (após pull-merge, pull-rebase, M ou cherry-pick): lista arquivos em conflito com diff colorido ours (o, −) vs theirs (t, +)
    • Resolver por arquivo com o (ours) / t (theirs) / b (manter ambos os lados) ou editar manualmente
    • c continue / x abort da operação em andamento (merge/rebase/cherry-pick)
  • Aba Relax (Ctrl+T) — animações de terminal para descansar a cabeça; nada roda de fato aqui
    • Novas cenas: Tetris, Sword, Hourglass, Chess, Jackpot e V4 (motor a pistões)
    • Motor de renderização em Braille compartilhado entre as cenas
    • Cenas antigas (Aquarium, Clouds, Raindrop, Mountains, Invaders) removidas e substituídas pelas novas
  • Compor mensagem WebSocket (m) — modal dedicado com editor, seleção de tipo de frame por tab (Tab/Shift+Tab) e envio
  • Modo HTTP/2 para Cloudflare Tunnel — força o transporte em redes que bloqueiam QUIC/UDP 7844; detectado automaticamente na descoberta de túneis do sistema
  • Barras de progresso em Braille — timeline de jobs e heatmap de falhas da aba Actions passam a usar o mesmo estilo pontilhado do docker pull
  • Aba Swarm (MANAGER) — Control Center de Docker Swarm
    • Visões: Services, Nodes, Tasks, Stacks, Networks, Secrets, Configs e Events
    • Scale, update de imagem, create service, force update e rollback
    • Deploy de stack a partir do compose do projeto
    • Swarm init, join tokens (worker/manager), promote/demote e availability
    • Logs de service, inspect e remoção com confirmação; prune de networks
    • Refresh automático (~5s) e modais de confirmação para ações destrutivas
  • Aba Actions (AUTOMATION) — GitHub Actions via gh
    • Control Center com Processes, Runs e Workflows
    • Catálogo de processos por projeto (.devscope/actions.yaml) e templates (ci/deploy/manual)
    • Detalhe do processo: Overview, Runs, Timeline (jobs/steps), Logs e YAML
    • Trigger (workflow_dispatch) com branch, inputs e aviso de commits ahead
    • Re-run, cancel/stop (incl. bulk), login gh na landing e billing de Actions
    • Notas por run (.devscope/actions-notes.yaml) e links para o GitHub
  • Aba SSH Tunnel (TUNNEL)
    • Cliente sshutil: start/stop de túneis locais (-L) e remotos (-R)
    • Config por projeto em .devscope/ssh.json, merge com processos vivos
    • Wizard de criação (nome, modo, porta, bind, target, identity)
    • Overview, Tunnels, History e Settings; seed de porta/target pelo projeto/...
Read more

v1.6.7

Choose a tag to compare

@PirataZang PirataZang released this 08 Sep 22:14

Changelog

Todas as mudanças notáveis deste projeto serão documentadas neste arquivo.

O formato é baseado em Keep a Changelog,
e este projeto segue o Versionamento Semântico.

[Unreleased]

Added

  • Aba Nginx (TOOLS) — cadastro de rotas de nginx direto do projeto, sem editar arquivo na mão
    • Detecta o main.conf/nginx.conf e a pasta de nível 1 (.conf) lendo o include de verdade — funciona com qualquer nome de pasta, com fallback por conteúdo (varredura de subpastas) e por caminho de dentro do container (docker volume montado com outro nome local)
    • Cada .conf de nível 1 é single (um server{} completo, com proxy_pass ou root) ou hub (um server{} de verdade, com seu próprio listen/server_name/ssl, que só inclui uma pasta de .inc)
    • Enter num hub abre as .inc dele — cada .inc é um location{} (ou o par redirect+alias pra site estático, com try_files no padrão SPA), criado/apagado sem sair do hub
    • Wizard de criação com campos que mudam pelo tipo: nome + tipo + server_name + porta + ssl + pasta (hub) · nome + server_name + proxy_pass/root + porta + ssl (single) · path + label opcional + porta/proxy_pass ou dist (.inc dentro de um hub)
    • A alterna entre ver só as rotas deste projeto ou de todos os projetos abertos no devscope, com a origem marcada por linha
    • Delete com confirmação; apagar um hub não apaga a pasta nem as .inc dela
  • Cloudflare Tunnel: limpeza de túneis órfãos
    • K encerra de uma vez todo túnel vivo que não é deste projeto — útil depois de um restart do devscope que deixa o cloudflared filho rodando sozinho, ocupando a faixa de porta de métricas (20241+) e travando novos túneis
    • Túneis de outros projetos/do host aparecem por padrão na lista (antes só apertando A); A agora serve pra filtrar de volta pra só o projeto atual
  • Credenciais manuais de banco (aba Database) — permite informar host/porta/usuário/senha de um banco que não roda em container Docker local do projeto (salvo em .devscope/database.json); collectors/database.go roda psql/mysql direto contra o host quando não há container, além do caminho existente via docker exec
  • docs/DESIGN.md — padrão de telas de módulo (cabeçalho de identificação, régua de abas numerada, corpo em painéis, barra de comandos larga no rodapé), extraído das telas já convertidas e usado como referência para toda tela nova ou reformulada
  • Sparkline em Braille (spark.go) — histórico de CPU/RAM/disco do host e ondas de status animadas, compartilhados entre os módulos

Changed

  • .devscope/ agora é criado por um helper compartilhado (devscopeutil.EnsureDir), reaproveitado por cfutil, jenkinsutil, ngrokutil, sshutil, wsutil e o novo dbutil
  • .gitignore passa a ignorar .devscope/ (evita versionar config e credenciais locais do projeto)
  • Todas as telas de módulo redesenhadas para o padrão do docs/DESIGN.md — Git, Containers, GH Actions, ngrok, Cloudflare Tunnel, SSH, Kubernetes, Swarm, Nginx, Database, Rotas, WebSocket, API e Overview. Cabeçalho de identificação + régua de abas numerada + corpo + barra de comandos larga no rodapé substituem o cabeçalho/rodapé particular de cada tela, a coluna vertical "AÇÕES" e os cards de um número só
  • Abas Health e Metrics removidas; o sinal delas foi incorporado na faixa de alertas do Overview e nas linhas de status de cada módulo
  • Integração com LazyGit (L na aba Git) removida
  • Wizards de túnel (ngrok, SSH, Cloudflare) mostram o comando CLI exato que vão executar, como preview, antes de confirmar

Fixed

  • Detecção de processos cloudflared não reconhecia binário de release baixado sem renomear (cloudflared-linux-amd64)
  • Túneis ngrok/SSH/Cloudflare reiniciados perdiam domain/region e trocavam de URL; os argumentos agora carregam essa configuração entre reinícios
  • joinWithSpacer (cabeçalho e régua de várias telas) podia desenhar uma linha mais larga que o terminal quando nome de projeto comprido e vários chips de status não cabiam juntos; agora encolhe o lado esquerdo em vez de estourar a largura

[1.6.3] - 2026-08-25

Added

  • Git commit graph: filtro de branch (B, digite pra filtrar a lista), foco alternável entre painéis (commits/detalhe/arquivos) via tab com scroll vertical e horizontal independentes, e detalhe de commit mais completo (refs, todos os parents, mensagem completa)

Changed

  • Linhas de imagem Docker (aba Containers) passam a distinguir 3 estados — pertence a este projeto / outro projeto / dangling — em vez de um indicador binário

[1.6.2] - 2026-08-25

Added

  • Gerenciamento de imagens Docker (i na aba Containers)
    • Escopo em 3 níveis (A alterna): imagem do container selecionado → imagens do projeto (inclui builds antigos sem tag, via label de compose) → todas as imagens do host
    • Indicador visual de quais imagens pertencem ao projeto atual
    • D abre modal de remoção com 4 opções (remover / remover só sem tags / forçado / forçado só sem tags) e cancelar
  • Árvore de dependências do Compose (Ctrl+G na aba Containers) — lê depends_on do compose (lista ou mapa com condition) e desenha em árvore com o status real (running/stopped/não criado) de cada serviço
  • Git commit graph (Ctrl+G na aba Git)
    • Layout de lanes calculado internamente a partir do histórico de commits (não reaproveita o --graph do git), desenhando curvas arredondadas (╭╮╰╯) e junções (├┤┴) em vez de diagonais
    • Cor por lane, ícone por tipo de commit, badges de branch/tag inline na linha do commit
    • Painéis de detalhe do commit (hash, autor, data, parent, mensagem) e arquivos alterados (+/− por arquivo), carregados sob demanda ao navegar
    • Enter sobre um commit abre a tela de detalhe completa (árvore de arquivos + diff) já existente na aba Git
  • Resolução de conflitos de Git na aba Git
    • p (pull) detecta divergência e oferece modal Merge (--no-ff) ou Rebase, além de cancelar
    • Modo de conflito (após pull-merge, pull-rebase, M ou cherry-pick): lista arquivos em conflito com diff colorido ours (o, −) vs theirs (t, +)
    • Resolver por arquivo com o (ours) / t (theirs) / b (manter ambos os lados) ou editar manualmente
    • c continue / x abort da operação em andamento (merge/rebase/cherry-pick)
  • Aba Relax (Ctrl+T) — animações de terminal para descansar a cabeça; nada roda de fato aqui
    • Novas cenas: Tetris, Sword, Hourglass, Chess, Jackpot e V4 (motor a pistões)
    • Motor de renderização em Braille compartilhado entre as cenas
    • Cenas antigas (Aquarium, Clouds, Raindrop, Mountains, Invaders) removidas e substituídas pelas novas
  • Compor mensagem WebSocket (m) — modal dedicado com editor, seleção de tipo de frame por tab (Tab/Shift+Tab) e envio
  • Modo HTTP/2 para Cloudflare Tunnel — força o transporte em redes que bloqueiam QUIC/UDP 7844; detectado automaticamente na descoberta de túneis do sistema
  • Barras de progresso em Braille — timeline de jobs e heatmap de falhas da aba Actions passam a usar o mesmo estilo pontilhado do docker pull
  • Aba Swarm (MANAGER) — Control Center de Docker Swarm
    • Visões: Services, Nodes, Tasks, Stacks, Networks, Secrets, Configs e Events
    • Scale, update de imagem, create service, force update e rollback
    • Deploy de stack a partir do compose do projeto
    • Swarm init, join tokens (worker/manager), promote/demote e availability
    • Logs de service, inspect e remoção com confirmação; prune de networks
    • Refresh automático (~5s) e modais de confirmação para ações destrutivas
  • Aba Actions (AUTOMATION) — GitHub Actions via gh
    • Control Center com Processes, Runs e Workflows
    • Catálogo de processos por projeto (.devscope/actions.yaml) e templates (ci/deploy/manual)
    • Detalhe do processo: Overview, Runs, Timeline (jobs/steps), Logs e YAML
    • Trigger (workflow_dispatch) com branch, inputs e aviso de commits ahead
    • Re-run, cancel/stop (incl. bulk), login gh na landing e billing de Actions
    • Notas por run (.devscope/actions-notes.yaml) e links para o GitHub
  • Aba SSH Tunnel (TUNNEL)
    • Cliente sshutil: start/stop de túneis locais (-L) e remotos (-R)
    • Config por projeto em .devscope/ssh.json, merge com processos vivos
    • Wizard de criação (nome, modo, porta, bind, target, identity)
    • Overview, Tunnels, History e Settings; seed de porta/target pelo projeto/git
    • Confirmação de exclusão e badges de status (online/offline/starting)
  • Aba Containers — visão de Portas (enter)
    • Lista portas publicadas (host→container, proto tcp/udp, IP de bind)
    • Preview HTTP da porta selecionada (probe assíncrono)
    • "Fechar porta": recria o container sem publicar a porta, com modal de confirmação
  • Containers órfãos e serviços missing
    • Containers do docker ps -a sem projeto escaneado aparecem como órfãos na visão "TODOS + ÓRFÃOS" (A)
    • Reclaim automático quando o nome bate com um service do compose do projeto
    • Serviços do compose sem container listados como "missing"; toggle v (só docker / c/ missing)
    • Header com contadores running/stopped/missing/orphan
  • Sistema de animações (anim.go)
    • Spinner braille (~10fps) nos estados de loading de todas as abas
    • Pulse animado no indicador de saúde da sidebar
    • Tick de animação só roda enquanto há algo animando (sem re-render em idle)
  • Landing probe assíncrono (landing_probe.go) — disponibilidade de Ngrok, CF Tunnel, SSH, Swarm, Kubernetes, Jenkins e GH Actions verificada em background
  • Banner ASCII nos scripts de instalação (install.sh / install.ps1)

Changed

  • Sidebar reorganizada em 6 grupos, cada um com cor própria:
    • WATCH (Overview, Metrics, Status) · SCOPE (Git, Containers) · AUTOMATION (Actions, Jenkins) · MAN...
Read more

v1.6.6

Choose a tag to compare

@PirataZang PirataZang released this 01 Sep 23:56

Changelog

Todas as mudanças notáveis deste projeto serão documentadas neste arquivo.

O formato é baseado em Keep a Changelog,
e este projeto segue o Versionamento Semântico.

[Unreleased]

Added

  • Aba Nginx (TOOLS) — cadastro de rotas de nginx direto do projeto, sem editar arquivo na mão
    • Detecta o main.conf/nginx.conf e a pasta de nível 1 (.conf) lendo o include de verdade — funciona com qualquer nome de pasta, com fallback por conteúdo (varredura de subpastas) e por caminho de dentro do container (docker volume montado com outro nome local)
    • Cada .conf de nível 1 é single (um server{} completo, com proxy_pass ou root) ou hub (um server{} de verdade, com seu próprio listen/server_name/ssl, que só inclui uma pasta de .inc)
    • Enter num hub abre as .inc dele — cada .inc é um location{} (ou o par redirect+alias pra site estático, com try_files no padrão SPA), criado/apagado sem sair do hub
    • Wizard de criação com campos que mudam pelo tipo: nome + tipo + server_name + porta + ssl + pasta (hub) · nome + server_name + proxy_pass/root + porta + ssl (single) · path + label opcional + porta/proxy_pass ou dist (.inc dentro de um hub)
    • A alterna entre ver só as rotas deste projeto ou de todos os projetos abertos no devscope, com a origem marcada por linha
    • Delete com confirmação; apagar um hub não apaga a pasta nem as .inc dela
  • Cloudflare Tunnel: limpeza de túneis órfãos
    • K encerra de uma vez todo túnel vivo que não é deste projeto — útil depois de um restart do devscope que deixa o cloudflared filho rodando sozinho, ocupando a faixa de porta de métricas (20241+) e travando novos túneis
    • Túneis de outros projetos/do host aparecem por padrão na lista (antes só apertando A); A agora serve pra filtrar de volta pra só o projeto atual
  • Credenciais manuais de banco (aba Database) — permite informar host/porta/usuário/senha de um banco que não roda em container Docker local do projeto (salvo em .devscope/database.json); collectors/database.go roda psql/mysql direto contra o host quando não há container, além do caminho existente via docker exec

Changed

  • .devscope/ agora é criado por um helper compartilhado (devscopeutil.EnsureDir), reaproveitado por cfutil, jenkinsutil, ngrokutil, sshutil, wsutil e o novo dbutil
  • .gitignore passa a ignorar .devscope/ (evita versionar config e credenciais locais do projeto)

Fixed

  • Detecção de processos cloudflared não reconhecia binário de release baixado sem renomear (cloudflared-linux-amd64)

[1.6.3] - 2026-08-25

Added

  • Git commit graph: filtro de branch (B, digite pra filtrar a lista), foco alternável entre painéis (commits/detalhe/arquivos) via tab com scroll vertical e horizontal independentes, e detalhe de commit mais completo (refs, todos os parents, mensagem completa)

Changed

  • Linhas de imagem Docker (aba Containers) passam a distinguir 3 estados — pertence a este projeto / outro projeto / dangling — em vez de um indicador binário

[1.6.2] - 2026-08-25

Added

  • Gerenciamento de imagens Docker (i na aba Containers)
    • Escopo em 3 níveis (A alterna): imagem do container selecionado → imagens do projeto (inclui builds antigos sem tag, via label de compose) → todas as imagens do host
    • Indicador visual de quais imagens pertencem ao projeto atual
    • D abre modal de remoção com 4 opções (remover / remover só sem tags / forçado / forçado só sem tags) e cancelar
  • Árvore de dependências do Compose (Ctrl+G na aba Containers) — lê depends_on do compose (lista ou mapa com condition) e desenha em árvore com o status real (running/stopped/não criado) de cada serviço
  • Git commit graph (Ctrl+G na aba Git)
    • Layout de lanes calculado internamente a partir do histórico de commits (não reaproveita o --graph do git), desenhando curvas arredondadas (╭╮╰╯) e junções (├┤┴) em vez de diagonais
    • Cor por lane, ícone por tipo de commit, badges de branch/tag inline na linha do commit
    • Painéis de detalhe do commit (hash, autor, data, parent, mensagem) e arquivos alterados (+/− por arquivo), carregados sob demanda ao navegar
    • Enter sobre um commit abre a tela de detalhe completa (árvore de arquivos + diff) já existente na aba Git
  • Resolução de conflitos de Git na aba Git
    • p (pull) detecta divergência e oferece modal Merge (--no-ff) ou Rebase, além de cancelar
    • Modo de conflito (após pull-merge, pull-rebase, M ou cherry-pick): lista arquivos em conflito com diff colorido ours (o, −) vs theirs (t, +)
    • Resolver por arquivo com o (ours) / t (theirs) / b (manter ambos os lados) ou editar manualmente
    • c continue / x abort da operação em andamento (merge/rebase/cherry-pick)
    • L (LazyGit) continua disponível como via de escape
  • Aba Relax (Ctrl+T) — animações de terminal para descansar a cabeça; nada roda de fato aqui
    • Novas cenas: Tetris, Sword, Hourglass, Chess, Jackpot e V4 (motor a pistões)
    • Motor de renderização em Braille compartilhado entre as cenas
    • Cenas antigas (Aquarium, Clouds, Raindrop, Mountains, Invaders) removidas e substituídas pelas novas
  • Compor mensagem WebSocket (m) — modal dedicado com editor, seleção de tipo de frame por tab (Tab/Shift+Tab) e envio
  • Modo HTTP/2 para Cloudflare Tunnel — força o transporte em redes que bloqueiam QUIC/UDP 7844; detectado automaticamente na descoberta de túneis do sistema
  • Barras de progresso em Braille — timeline de jobs e heatmap de falhas da aba Actions passam a usar o mesmo estilo pontilhado do docker pull
  • Aba Swarm (MANAGER) — Control Center de Docker Swarm
    • Visões: Services, Nodes, Tasks, Stacks, Networks, Secrets, Configs e Events
    • Scale, update de imagem, create service, force update e rollback
    • Deploy de stack a partir do compose do projeto
    • Swarm init, join tokens (worker/manager), promote/demote e availability
    • Logs de service, inspect e remoção com confirmação; prune de networks
    • Refresh automático (~5s) e modais de confirmação para ações destrutivas
  • Aba Actions (AUTOMATION) — GitHub Actions via gh
    • Control Center com Processes, Runs e Workflows
    • Catálogo de processos por projeto (.devscope/actions.yaml) e templates (ci/deploy/manual)
    • Detalhe do processo: Overview, Runs, Timeline (jobs/steps), Logs e YAML
    • Trigger (workflow_dispatch) com branch, inputs e aviso de commits ahead
    • Re-run, cancel/stop (incl. bulk), login gh na landing e billing de Actions
    • Notas por run (.devscope/actions-notes.yaml) e links para o GitHub
  • Aba SSH Tunnel (TUNNEL)
    • Cliente sshutil: start/stop de túneis locais (-L) e remotos (-R)
    • Config por projeto em .devscope/ssh.json, merge com processos vivos
    • Wizard de criação (nome, modo, porta, bind, target, identity)
    • Overview, Tunnels, History e Settings; seed de porta/target pelo projeto/git
    • Confirmação de exclusão e badges de status (online/offline/starting)
  • Aba Containers — visão de Portas (enter)
    • Lista portas publicadas (host→container, proto tcp/udp, IP de bind)
    • Preview HTTP da porta selecionada (probe assíncrono)
    • "Fechar porta": recria o container sem publicar a porta, com modal de confirmação
  • Containers órfãos e serviços missing
    • Containers do docker ps -a sem projeto escaneado aparecem como órfãos na visão "TODOS + ÓRFÃOS" (A)
    • Reclaim automático quando o nome bate com um service do compose do projeto
    • Serviços do compose sem container listados como "missing"; toggle v (só docker / c/ missing)
    • Header com contadores running/stopped/missing/orphan
  • Sistema de animações (anim.go)
    • Spinner braille (~10fps) nos estados de loading de todas as abas
    • Pulse animado no indicador de saúde da sidebar
    • Tick de animação só roda enquanto há algo animando (sem re-render em idle)
  • Landing probe assíncrono (landing_probe.go) — disponibilidade de Ngrok, CF Tunnel, SSH, Swarm, Kubernetes, Jenkins e GH Actions verificada em background
  • Banner ASCII nos scripts de instalação (install.sh / install.ps1)

Changed

  • Sidebar reorganizada em 6 grupos, cada um com cor própria:
    • WATCH (Overview, Metrics, Status) · SCOPE (Git, Containers) · AUTOMATION (Actions, Jenkins) · MANAGER (Swarm, Kubernetes) · TUNNEL (Ngrok, SSH, CF Tunnel) · TOOLS (Rotas, API, Database, WebSocket)
  • Help screen com atalhos de Swarm e Actions
  • Modais de confirmação genéricos reutilizados (túneis, Swarm e fechar porta)
  • Projeto abre direto na aba Git ao dar enter no dashboard (antes: Overview)
  • Landings de Jenkins, K8s, Ngrok, SSH e CF Tunnel passam a ler apenas campos em cache — a View nunca executa CLI/rede
  • DetectProjectDatabases dividido: versão Lite sem docker exec (segura no render) + enriquecimento assíncrono
  • Parse de portas Docker completo (IP de bind, host→container, tcp/udp)
  • Rodapé de ações da aba Containers com altura dinâmica (não corta a lista)
  • README reescrito e organizado por grupos de módulos

Fixed

  • Corrupção visual da TUI (painéis duplicados/empilhados ao navegar) — causada por logs de erro dos coletores em background (docker ps, scanner) vazando direto pro stdout/stderr enquanto o Bubble Tea controlava a tela; logs agora vão para ~/.config/devscope/devscope.log
  • Atualizado o Bubble Tea (e dependências) para uma versão com correções de renderer relacionadas a duplicação de linha entre terminais

[1.4.0] - 2026-08-01

Added

  • Compose presets para imagens comuns (Postgres, MySQL, MariaDB, Mongo, Redis, Nginx, Traefik, RabbitMQ, Elasticsearch, Node e outras)
    • Geração automática de portas, env, volumes e healthcheck
    • Fallback por manifesto da ...
Read more