Pular para o conteúdo
ColliePWA

07/Documentation

Alterações: veja o que um agente mudou

O que um agente alterou em seu workspace: os arquivos modificados, seus diffs e o último commit, a partir do painel ou do dashboard. Git somente leitura, repositórios aninhados e as duas configurações que definem até onde ele busca

A visualização Alterações mostra o que mudou nos repositórios git de uma área de trabalho desde o último commit. Você pode acompanhar pelo celular enquanto o agente trabalha: os arquivos alterados, as linhas adicionadas e removidas, e o diff de cada arquivo com destaque de sintaxe. Quando o agente já fez o commit, ela mostra o último commit.

Nota. A visualização Alterações apenas lê dados. Ela nunca prepara, faz commit, edita ou restaura um arquivo (abaixo).

Como abrir

Há duas maneiras de acessar.

  • A partir de um painel. Toque no botão Alterações na barra de ações do painel, o ícone à esquerda da marca Switch. A lista cobre toda a área de trabalho do painel e destaca o repositório do próprio painel.
  • A partir do painel de controle. Toque em Alterações no rodapé do painel de controle, ao lado de Painéis e Foco. Ele lista uma linha por área de trabalho, com a contagem de arquivos alterados e a soma de linhas adicionadas e removidas. Uma área de trabalho sem alterações permanece na lista, esmaecida. Toque em uma linha para abrir a lista dessa área de trabalho.

As contagens do painel de controle são atualizadas a cada 5 segundos, e apenas enquanto a aba Alterações estiver visível na tela. A aba escolhida é salva por dispositivo.

A lista

A lista agrupa os arquivos alterados por repositório git. Cada arquivo mostra seu status e as contagens de linhas +added −removed.

StatusSignificado
ModificadoUm arquivo rastreado foi alterado
AdicionadoUm arquivo novo, preparado (staged)
ExcluídoUm arquivo rastreado foi removido
RenomeadoUm arquivo foi movido; seu diff indica o caminho antigo
Não rastreadoUm arquivo novo que o git ainda não rastreia
  • A base é o último commit. Alterações preparadas e não preparadas aparecem juntas. Um repositório sem commits é comparado contra uma árvore vazia.
  • Um novo arquivo aparece inteiramente como linhas adicionadas. Uma nova pasta é uma entrada única: o Collie indica que a pasta é nova e não lista os arquivos dentro dela. Isso mantém uma pasta node_modules recém-criada fora da lista.
  • Um arquivo binário é listado, mas suas linhas não são exibidas.
  • Este painel. Aberto a partir de um painel, com mais de um repositório listado, o repositório do próprio painel recebe o rótulo Este painel. Na primeira leitura, a lista rola até ele.
  • Lista ou Árvore. A chave Layout exibe os arquivos como uma lista simples por repositório ou como uma árvore de pastas.
  • Filtrar arquivos. O botão de filtro restringe a lista pelo texto do caminho e pelo status. A lista informa quantos dos seus arquivos estão visíveis.

Ler um diff

Toque em um arquivo para ler seu diff. Arquivo anterior e Próximo arquivo percorrem a lista sem precisar voltar a ela.

  • O diff exibe duas colunas de números de linha, linhas adicionadas e removidas com destaque colorido e quebra de linha.
  • Linguagens comuns recebem destaque de sintaxe: TypeScript e JavaScript, JSON, CSS, HTML, Markdown, Python, Go, Rust, shell, YAML, TOML e outras. Arquivos em outras linguagens, ou diffs com mais de 2000 linhas, permanecem em texto simples.
  • Um diff muito longo é interrompido em um limite e exibe um aviso.
  • Se o agente reverter ou commitar o arquivo enquanto você lê, o diff permanece na tela e seu cabeçalho indica Não mais modificado. A visualização nunca muda de lugar sozinha.

O último commit

Agentes costumam commitar o próprio trabalho, portanto a lista pode ficar vazia logo após a alteração que você quer ler. Para repositórios sem alterações pendentes, a visualização oferece Mostrar último commit.

A visualização de commit exibe o assunto, o autor, a data e hora, o hash curto e os arquivos do commit, cada um com seu próprio diff. Ela compara o commit com seu primeiro pai, portanto um merge mostra o que ele introduziu. Ela lê apenas o commit mais recente. Não há navegador de histórico.

  • Quando o agente commitar novamente, um discreto Existe um commit mais recente aguarda o seu toque. Os arquivos na tela não mudam sozinhos.
  • Quando novas alterações não commitadas aparecem, Novas alterações não commitadas leva você de volta à lista.

Permanece atualizado

Uma tela Changes aberta lê o git novamente a cada 5 segundos enquanto a página estiver visível. Em um diff, o arquivo aberto também é lido novamente. Uma releitura que não encontra nada novo não move nada na tela: sua rolagem, seu filtro e suas pastas recolhidas permanecem como estão.

  • Uma página oculta para de ler e lê uma vez quando volta a ficar visível.
  • O botão de atualizar lê agora.
  • Se duas leituras seguidas falharem, o cabeçalho exibe Não está atualizando, e a última lista válida permanece. A próxima leitura bem-sucedida limpa a mensagem.

Qual pasta e quais repositórios

A lista cobre o workspace do painel, não apenas a pasta do próprio painel, portanto cada painel em um workspace exibe a mesma lista. O cabeçalho indica o nome do workspace e de sua pasta. O Collie escolhe essa pasta nesta ordem:

OrdemPasta
1A própria pasta do workspace, quando o multiplexador mantém uma: o worktree do Herdr, a pasta de sessão do tmux
2A pasta mais profunda que contém todos os painéis do workspace
3A própria pasta do painel, quando as duas primeiras forem /, sua pasta home ou acima dela

O Collie então encontra o repositório que contém essa pasta. Ele também procura repositórios em pastas abaixo dela, até mesmo repositórios que o repositório pai ignora. É assim que um repositório de workspace com repositórios membros ignorados dentro dele ainda exibe as alterações de todos os membros.

Duas configurações por dispositivo controlam essa busca. Ambas ficam em Configurações → Dispositivo → Alterações.

ConfiguraçãoPadrãoO que faz
Procurar repositórios dentro desta pastaativadoTambém lista repositórios em pastas abaixo da pasta do workspace, até mesmo os que o repositório pai ignora
Profundidade da busca2Quantos níveis de pasta abaixo da pasta do workspace a busca alcança, de 1 a 4

A busca nunca segue um link simbólico. Ela ignora pastas iniciadas por ponto e node_modules, dist, build, vendor e target. Ela para em 20 repositórios ou 5000 entradas de pasta.

Quando a busca para em sua profundidade limite e existem repositórios mais abaixo, a lista termina com "Stopped at 2 levels, with repos further down." e um link Buscar mais fundo em Settings. Quando atinge o limite de repositórios ou entradas, a lista termina com "The list hit a limit", pois arquivos podem estar ausentes.

Um submódulo ou repositório aninhado que a busca encontra aparece uma vez, como seu próprio repositório. Um submódulo abaixo do limite de profundidade aparece como uma entrada no repositório pai.

Somente leitura e seguro

O Changes executa o git apenas para ler, e nada mais.

  • Ele nunca adiciona à staging area, commita, edita ou faz checkout. Ele nem mesmo atualiza o cache do índice do git.
  • Os hooks, filtros, programas de diff externos e conversões de texto do próprio repositório nunca são executados enquanto o Collie faz a leitura. Um agente pode ter clonado qualquer coisa, e você só tocou em Changes.
  • Ele nunca acessa a rede, nem mesmo para buscar um arquivo ausente em um clone parcial. Esse arquivo é então exibido com contagens zeradas e um diff vazio.
  • Um diff é exibido apenas para um arquivo que o próprio git listou como alterado, em um repositório encontrado pela busca.

As regras completas estão em ADR 0065.

Entre uma equipe

Em um crew, um painel ou workspace em outra máquina é lido nessa máquina. O líder encaminha a solicitação, e o git dessa máquina responde. Essa máquina precisa executar o Collie 1.13.0 ou posterior.

Limites

  • O Painéis do zellij não têm o botão Changes. zellij não relata a pasta de um painel. A linha do painel para um workspace do zellij exibe "No folder".
  • O Git deve estar instalado na máquina proprietária do painel.
  • Arquivos do Git LFS podem aparecer como modificados. Com os filtros desativados, o Collie compara um arquivo LFS com seu ponteiro. Ele só pode mostrar coisas demais, nunca ocultar uma alteração.
  • Um workspace, uma pasta. Um workspace cujos painéis ficam em pastas não relacionadas na sua pasta pessoal lê a própria pasta do painel solicitante em vez de uma visualização mesclada.

Editar esta página no GitHub

The rest of the documentation