zshell

Painéis de navegador

Abra sites ao lado de um terminal, navegue com controles nativos e mantenha os links no projeto.

O Zshell pode colocar um navegador integrado em qualquer aba ou painel dividido. Ele é útil para um servidor de desenvolvimento local, documentação de API, uma issue ou qualquer conteúdo que você queira ao lado do terminal que o utiliza.

Abrir um navegador

  • Escolha Arquivo → Nova Aba de Navegador para uma aba em branco.
  • Abra a paleta de comandos (Cmd+P) e execute Nova Aba de Navegador ou Novo Painel de Navegador.
  • Clique com o botão direito e Command em uma URL detectada no terminal e escolha Nova Aba de Navegador ou Novo Painel de Navegador para abri-la sem copiar o endereço.

As abas de navegador pertencem ao projeto selecionado e participam do layout normal de abas e painéis. Se não houver um projeto aberto, o Zshell cria um para o navegador.

O campo superior aceita uma URL completa, um nome de host ou termos de busca:

  • zshell.sh vira um endereço HTTPS.
  • localhost, nomes de host locais, endereços IP e portas explícitas usam HTTP.
  • Todo o restante vira uma busca no Google.

Use Cmd+L para focar o campo e Cmd+R para recarregar. A barra de ferramentas também oferece Voltar, Avançar, Parar/Recarregar, Compartilhar e Abrir no Navegador Padrão. Gestos de voltar e avançar no trackpad também funcionam.

AçãoAtalho
Focar a barra de endereçosCmd+L
Recarregar a páginaCmd+R

Clique com o botão direito em um link da página para Abrir Link em Nova Aba ou Abrir Link em Novo Painel. A nova página permanece no mesmo projeto.

No terminal, Command-clique abre uma URL detectada no navegador padrão. Command-clique com o botão direito oferece uma aba ou painel do Zshell. Caminhos locais seguem um fluxo semelhante, descrito em Caminhos e URLs.

O que é preservado

Alternar abas ou projetos mantém a página como estava, incluindo histórico, posição de rolagem, formulários e estado interno. Ao reiniciar, o Zshell restaura a URL atual e o layout, mas não todo o histórico de voltar e avançar.

Os painéis de navegador mantêm cookies, sessões de login e outros dados de sites entre abas e inicializações. Este não é um modo de navegação privada.

Pedir a um agente para testar a página

Peça ao agente de programação para verificar a página já aberta neste projeto, preencher um formulário, conferir um resultado ou capturar a área visível. Ele reutiliza a sessão do navegador e mantém o foco no terminal por padrão. Também pode abrir uma URL de desenvolvimento em um painel em segundo plano.

Em scripts, execute estes comandos dentro de um terminal Zshell. Anote o browser_id retornado e substitua BROWSER_ID abaixo:

zshell +browser list
zshell +browser open http://localhost:3000 --wait
zshell +browser snapshot --browser BROWSER_ID
zshell +browser fill --browser BROWSER_ID --selector '#search' --text 'terminal'
zshell +browser click --browser BROWSER_ID --selector 'button[type="submit"]'
zshell +browser wait --browser BROWSER_ID --selector '#results' --timeout 10000
zshell +browser screenshot --browser BROWSER_ID --output /tmp/zshell-page.png

Os snapshots retornam texto do quadro principal, rótulos acessíveis e referências de elementos. As referências expiram após alterações ou ações; gere outro snapshot antes de reutilizá-las. O seletor CSS deve corresponder a um único elemento. Use navigate, back, forward, reload e stop para navegar.

A automação aceita URLs HTTP/HTTPS completas e about:blank. Outros protocolos, downloads, seletores de arquivos e diálogos nativos exigem sua interação. A restrição termina após navegar manualmente pela barra de endereços ou ferramentas. Os comandos ficam no projeto e na janela do terminal que os chamou. --timeout aceita 100–30000 milissegundos. Os snapshots têm limites de 200 elementos, 32768 caracteres e 256 KiB, sem valores de senha ou arquivo. Capturas PNG da área visível têm limite de 512 KiB, funcionam antes de exibir o painel, com uma área de 1024 × 768 sem mudar o foco e não sobrescrevem arquivos. Reduza --width se necessário. Consulte zshell +browser --help.

Scripts da página e sessões salvas

zshell +browser eval --browser BROWSER_ID --script 'Promise.resolve({title: document.title})'
zshell +browser state save --browser BROWSER_ID --output /tmp/zshell-login.json
zshell +browser state load --browser BROWSER_ID --input /tmp/zshell-login.json
zshell +browser reload --browser BROWSER_ID --wait

eval --script executa na página principal real, aguarda uma Promise retornada e fornece JSON em value; undefined vira null. Use uma expressão de função assíncrona para await. Limites: entrada de 64 KiB; saída de 256 KiB, 10000 valores e 64 níveis. Referências DOM expiram após a execução. O tempo limite apenas para de esperar, sem cancelar o script. Inspecione a página antes de repetir alterações; um loop síncrono infinito pode exigir fechá-la. Expressões únicas, incluindo IIFEs, são injetadas como Scripts globais nativos. Strings com várias instruções continuam sujeitas à CSP da página; se a avaliação for bloqueada, envolva as instruções em uma IIFE.

state save salva cookies aplicáveis ao host de destino (incluindo domínio pai e HttpOnly) e localStorage da origem atual em JSON storage-state do Playwright. state load mescla os cookies e substitui esse localStorage; recarregue depois. Esquema, host e porta devem coincidir exatamente. Domínios alheios, sufixos públicos, campos não suportados e tipos inválidos são rejeitados antes de qualquer mudança. Cookies Secure exigem HTTPS.

Use --format cookies nos dois comandos para Netscape cookies.txt, sem localStorage e SameSite. Os arquivos têm limite de 256 KiB e contêm credenciais: mantenha-os privados e fora do Git. A importação exige arquivo comum acessível somente pelo proprietário (por exemplo 0600) e rejeita links simbólicos. A exportação cria arquivo privado sem sobrescrever caminhos existentes. Os dados WebKit continuam compartilhados entre painéis, com os mesmos limites de projeto, janela e navegação.

Anúncios e rastreadores

Ajustes → Navegador ativa por padrão o bloqueio WebKit com EasyList e EasyPrivacy. Desative cada lista separadamente ou adicione uma URL ABP HTTP/HTTPS por linha e clique em Aplicar listas. Até 8 listas de 8 MiB cada. HTTP não é criptografado.

As regras afetam solicitações futuras de todos os painéis. Recarregue as páginas após alterações. Atualizar listas agora força a atualização. As listas ficam em cache; ao abrir o navegador após reiniciar, as com mais de quatro dias são verificadas. Os ajustes mostram filtros convertidos/ignorados, falhas e uso do cache. Uma troca malsucedida não reutiliza silenciosamente outra lista desmarcada.

Suporta curingas e âncoras URL, tipos comuns, exceções @@, domínios simples e CSS ##/#@#. Os domínios usam a página principal e a classificação de terceiros segue o WebKit. Scriptlets, filtros procedurais, redirecionamentos, expressões regulares, liberação de página inteira e exclusões de subdomínios de domínio incluído são ignorados. Compatibilidade parcial com uBlock Origin.