Como funciona, parte por parte
Uma regra sustenta o programa inteiro: o estado da janela vive na memória e a configuração vive em arquivos. Tudo a seguir decorre disso.
A regra por trás de tudo
Uma janela contém abas. Uma aba contém blocos. Um bloco é um terminal, um arquivo em edição, o painel de arquivos, uma página web, uma imagem, um PDF, uma página Markdown, um diff, o monitor do sistema, a tela de configurações ou o painel de um plugin. Eles se dividem em qualquer direção, com aninhamento, se arrastam, se redimensionam e se fecham por um único conjunto de regras, em vez de um novo para cada recurso. Tudo o que é grande demais para pertencer a todo mundo é um plugin do catálogo do próprio vobuda, Design e Director até agora, instalado e removido por inteiro num só toque.
Nada nesse arranjo é armazenado em um banco de dados, porque não existe banco de dados. O que a janela está fazendo vive na memória; o que você decidiu vive em arquivos. É por isso que um botão, uma tecla, a barra de menus, Cmd+K e a linha de comando chamam todos a mesma ação pelo nome, e por isso fazê-la se comportar de outra forma quase sempre significa editar JSON.
É também por isso que o melhor emulador de terminal para Mac, para o tipo de trabalho para o qual ele foi feito, é um que você pode inspecionar. Se uma configuração existe, há uma linha em um arquivo que a guarda. Se uma ação existe, há um nome pelo qual você pode chamá-la.
Cinco caminhos até uma ação, e é a mesma ação
Com tantas ações, a maior parte de um programa fica na prática escondida. O Cmd+K é o caminho que responde «o que ele pode fazer» em vez de «faça isto».
-
Ela ensina os atalhos em vez de substituí-los
Cada linha mostra seu próprio atalho. Uma pessoa que recorre à lista duas vezes pela mesma ação já terá aprendido a tecla na terceira.
-
Não é um quinto dicionário
Cada linha executa uma ação pelo nome, exatamente como as outras quatro. Uma verificação confronta a tabela que ela exibe com a lista do núcleo do que uma tecla pode ser vinculada, nas duas direções: uma ação que existe e não é oferecida ali faz o build falhar.
-
A linha de comando é o mesmo conjunto
vobuda do block.split-down, vobuda button files, vobuda theme catppuccin-mocha, vobuda send, vobuda signal, vobuda state, vobuda log, digitados em qualquer bloco do vobuda, e o
vobuda mcpoferece os mesmos comandos a um agente como ferramentas MCP. Não é uma porta dos fundos para scripts: os testes de interface conduzem o programa inteiro por ela, e por isso se pode confiar nela, e por isso um agente pode reorganizar a sua janela e você pode ler exatamente o que ele fez.
Blocos, e o que eles prometem
Um bloco muda de aba com o shell em execução
Arraste um bloco pelo cabeçalho até uma aba na faixa e ele pousa ali: mesmo id, mesmo shell, mesma pasta, ainda executando o que estava executando. A aba acende na cor de destaque enquanto o bloco está sobre ela. Também existe uma ação para isso, block.to-tab:2, então pode ficar em uma tecla e um teste sem mouse pode acioná-la.
Os tamanhos são lembrados, e há um mínimo
Por bloco, e nenhum bloco pode ficar tão estreito a ponto de deixar de ser utilizável. Um painel com 200 pontos é um painel que ninguém consegue usar.
Nada seu vai embora em silêncio
Fechar algo que está rodando pergunta antes, pelo nome, porque perder o trabalho de alguém uma única vez custa mais confiança do que um recurso inteiro rende. Pelo mesmo motivo, a pasta do projeto é fotografada antes de cada turno de um agente, com um toque para colocá-la de volta; uma chave colada num agente é barrada antes que o agente a veja; e uma cerca que você pode ligar recusa as gravações e exclusões de um agente fora do projeto.
As sessões voltam por padrão
As abas, os blocos e a pasta de trabalho de cada bloco voltam depois de uma reinicialização, e isso vem ativado por padrão; um interruptor na seção Geral o desliga. Uma sessão que chegou de outra máquina abre o que consegue e diz o que não conseguiu, em vez de descartar blocos em silêncio.
A pasta de configurações, arquivo por arquivo
Tudo em ~/.config/vobuda é JSON legível, monitorado enquanto o programa roda. Salve o arquivo e a janela é redesenhada.
| Arquivo | O que contém |
|---|---|
| settings.json | Tema, aparência, terminal, shell, janela, sinais: cada configuração das dez seções |
| themes/*.json | Cores do terminal e da janela. 25 paletas incluídas, duas feitas para daltonismo |
| looks/*.json | A forma da janela: cantos, sombras, cores dos painéis, transparência. Vêm 29 |
| skins/*.json | Quais painéis do monitor são exibidos, e como |
| buttons.json | O dock: botões, ordem, lado, formato, e uma cor para os poucos que valem destaque |
| agents.json | Como um agente é reconhecido e o que é oferecido a ele |
| keys.json | Todos os atalhos. O menu nativo do macOS é construído a partir deste mesmo arquivo |
| workspaces/*.json | Projetos: cada um uma janela com suas próprias abas, pasta, tema e dock |
Os temas embutidos vivem dentro do binário e a pasta tem precedência sobre eles, então uma atualização traz cores novas sem sobrescrever nada que você editou. A pasta inteira é salva como um único arquivo compactado e restaurada em outro Mac, e num Mac uma cópia vive no iCloud Drive, ativada por padrão, com um interruptor para desligar.
Um monitor do sistema, organizado por um arquivo
Doze tipos de painel, e quais deles você vê depende de uma skin, não de uma tela que alguém desenhou uma vez.
-
Os números são honestos sobre si mesmos
Um valor que o sistema estima em vez de medir é exibido com um til, e um hardware ausente dá um valor ausente, não um zero. Uma máquina sem GPU dedicada não recebe um painel de GPU marcando zero por cento.
-
Os dois endereços, cada um com um botão de copiar
O painel de endereços nomeia primeiro o endereço que a internet enxerga e, abaixo, o que esta máquina tem na própria rede. Ele só pergunta enquanto o painel está na tela, cerca de uma vez a cada dez minutos, ou a cada trinta segundos enquanto ainda não se conhece nenhum endereço, e a requisição não leva nada sobre a máquina.
-
Reordenado arrastando, como tudo o mais
Os painéis do monitor, os botões do dock e as partes da barra do agente são todos pegos e colocados no lugar com o mesmo gesto. Uma linha de configurações é pega pela alça à sua esquerda, não em qualquer ponto da linha, então um arraste iniciado em um campo de texto não impede você de selecionar a palavra que queria alterar.
Um arquivo abre ao lado do shell
A coisa para a qual um terminal normalmente manda você para outro lugar: um caminho aparece na saída, duas linhas precisam mudar, e até agora isso significava sair para um editor e voltar tendo perdido o contexto do shell.
-
Salvar é intencional
Nada é escrito até Cmd+S. Um editor que grava enquanto você digita é ótimo num app de notas e péssimo ao lado de um shell em execução. É uma ação, não apenas uma tecla, o que também lhe dá um item de menu, um atalho e uma entrada na linha de comando como tudo o mais aqui.
-
As recusas importam tanto quanto a gravação
Um arquivo alterado no disco desde que foi aberto não é sobrescrito. Um binário não é mostrado como texto corrompido. Uma pasta simplesmente não é aberta. Alterações não salvas carregam uma marca visível, e fechar um arquivo editado pergunta antes.
-
Encontrando um arquivo
O painel de arquivos busca por nome abaixo da pasta em que você está, e cada resultado informa em quais duas pastas ele se encontra, porque um nome sozinho não distingue dois index.ts. Ele ignora node_modules, .git, target e afins, para em oito níveis ou duzentos resultados, e não faz nada com menos de duas letras.
Configurações, como tela e como arquivos
Dez seções, de Geral a Dados e privacidade, uma busca sobre cada configuração, e cada uma delas é uma linha num arquivo que você também pode editar à mão.
-
As configurações vêm até o bloco
Clicar com o botão direito num painel significa «esta coisa aqui, mude-a». Então escolher uma linha de configurações no menu de um bloco abre aquela seção sobre a janela, no canto do menu, em vez de levar você à tela de configurações. É uma ação como todo o resto: settings.here:themes, settings.here:monitor.
-
Um som que você ouve ao escolhê-lo
Escolher um som de sinal ou o alerta sonoro do terminal já o reproduz. Escolher um som a partir de uma lista de nomes que você não consegue ouvir é escolher um nome.
-
Nada pede um reinício
A pasta de configurações é monitorada, incluindo as duas coisas que o núcleo controla: a barra de menus do macOS construída a partir do seu arquivo de atalhos, e a tecla global da janela suspensa, com a tecla antiga liberada antes de a nova ser registrada, para que duas não respondam ao mesmo tempo. Uma verificação lê cada dica na tela de configurações e falha ao encontrar a palavra reiniciar.
Falando e sendo lido em voz alta
Ambos usam a própria fala do sistema, na sua máquina. O áudio nunca sai do computador.
Ditado
Cmd+Shift+V digita o que você diz no bloco em que está trabalhando, e a faixa mostra em duas letras qual idioma está ouvindo. Uma frase ditada é digitada e nunca executada: o reconhecimento erra ao ouvir, e um comando mal entendido que se executa sozinho é um programa que apaga coisas porque um rádio estava ligado. Ao lado de um agente, onde uma frase é uma mensagem e não um comando, ela pode ser enviada sozinha, e isso é uma configuração lida no momento em que a frase termina.
Lendo a resposta em voz alta
Cmd+Shift+R lê em voz alta a última resposta do agente; pressionar de novo interrompe. O que é lido é a resposta, não a tela. Um marcador no início, asteriscos em torno de uma palavra em destaque, crases em torno de um nome, uma linha de moldura, um caminho completo onde bastaria o nome do arquivo: tudo isso é descartado, e as palavras dentro permanecem. A leitura é delimitada por formas, não por palavras, por baixo pela linha de entrada do agente e por cima pelo seu logotipo, porque os elementos visuais de um agente mudam a cada versão dele.
Os pequenos detalhes que decidem se você continua usando
O botão direito é nosso
Em toda a janela: o menu próprio do bloco dentro de um bloco, o de fora da janela, a faixa de abas, o dock, o espaço entre os blocos lado a lado. Cada linha é uma ação, e o próprio menu tem uma ação, block.menu, então um gesto que só uma mão alcança não é um gesto que nada consegue verificar. O único lugar que mantém o menu do sistema é um campo de texto, onde ele oferece recortar, copiar, colar e o dicionário.
Abra uma pasta de qualquer lugar
vobuda://open?path=/some/path abre uma aba naquela pasta, a partir de uma ação do Finder, de um script ou de outro app. O macOS não tem uma configuração de terminal padrão em nível de sistema, então esta é a versão honesta desse recurso, em vez de uma promessa que ele não pode cumprir.
Busca dentro de um bloco
Cmd+F. O campo pertence ao bloco em que busca, e fechá-lo deixa a visão onde a correspondência estava.
Leve o bloco com você
O Cmd+Shift+X copia o texto de um bloco, pedido ao próprio terminal, que é também o que o faz funcionar com a renderização por GPU ligada, onde não há texto na página para selecionar. Uma imagem do bloco são duas ações no Cmd+K, Block snapshot to clipboard e Block snapshot to a file.
Verificações de atualização que não são tarefa sua
O núcleo verifica uma vez por dia, numa thread própria, e o que você vê é uma faixa acima do layout, e não sobre ele, porque um aviso que cobre um terminal é um que as pessoas aprendem a fechar sem ler. Nada é instalado até você apertar: para um agente, a atualização é um comando digitado no bloco ativo, onde a saída dele fica visível, e para o Vobuda num Mac o botão instala a versão nova em segundo plano e depois oferece uma reinicialização, que acontece sozinha após dez segundos quando nada está rodando.
Quarenta idiomas, e um guia em cada um
Incluindo a barra de menus do macOS, que o sistema constrói no núcleo. Árabe e hebraico espelham a janela inteira, exceto o próprio terminal, onde o espelhamento tornaria a saída e os caminhos ilegíveis. Uma chave de tradução é a própria string em inglês, então uma string não traduzida volta para um inglês legível, em vez de um espaço em branco ou um identificador.
Experimente as partes que você acabou de ler
Depois de duas perguntas curtas na primeira execução, abre com um único bloco de terminal e nada mais. Tudo o que está acima é algo que você liga quando quiser.
curl -fsSL https://vobuda.com/install.sh | sh