Tarefas de código
O quadro de código transforma um briefing escrito em código integrado com tão pouca cerimónia quanto quiser: escreva o que precisa, planeie-o em fases revisáveis com um agente de planeamento interativo ou faça-o de uma só vez, veja o agente trabalhar na sua própria worktree do git, reveja o diff com comentários ancorados à linha e faça merge. Cada etapa é uma coluna; cada tarefa é um cartão.
A barra lateral mantém uma fina secção TAREFAS perto do topo — uma linha de pulso resume o quadro (9 planeadas · 1 em curso · 2 a rever) com um crachá laranja a contar os cartões à espera em Teste/Revisão e um crachá vermelho quando um agente precisa da sua intervenção. Clique no título da secção ou na linha para abrir o quadro, ou prima ⇧⌘T a partir de qualquer lugar.
| Coluna | O que está ali |
|---|---|
| Backlog | Os briefings que escreveu mas não iniciou. Cada cartão oferece Planear e De uma só vez. |
| Plano | Os cartões de fase que um agente planeador arquivou a partir de um briefing — numerados, conscientes das dependências, multisselecionáveis. |
| Em curso | Fases e tarefas de uma só vez em que um agente está a trabalhar ativamente, cada uma na sua própria worktree. |
| Teste/Revisão | Trabalho terminado à sua espera: o cartão abre a janela de revisão com o diff do ramo. |
| Concluído | Tarefas integradas, submetidas como pull request ou fechadas sem merge. |
Tudo nesta página funciona de forma idêntica a partir de um cliente rico remoto — o quadro, a janela de planeamento e a janela de revisão são todos espelhados através da API de controlo.
Escrever uma tarefa
+ Nova tarefa (ou clicar num cartão do backlog) abre o editor:
- Um Título e uma descrição escrita em Markdown, com um alternador Escrever / Pré-visualizar. O briefing torna-se o prompt do agente, por isso escreva-o como tal.
- Espaço de trabalho e Agente — a tarefa executa dentro do espaço de trabalho escolhido com um dos seus agentes configurados.
- Iniciar o agente em — uma pasta dentro do espaço de trabalho. Quando é um repositório git próprio, a tarefa executa aí numa worktree e num ramo novos.
- Criar pasta e repo git se necessário — para trabalho de raiz: iniciar ou planear executa primeiro
mkdir+git init(com um commit raiz vazio) quando a pasta ainda não é o seu próprio repositório. Deixe-o desligado para uma pasta dentro de um repo existente.
Um briefing no Backlog oferece dois botões:
- De uma só vez envia a tarefa diretamente para Em curso: o agente faz tudo de forma autónoma e entrega-lhe o diff em Teste/Revisão.
- Planear abre primeiro uma sessão de planeamento.
Planeamento
Planear lança uma sessão de planeamento visível e interativa e abre a sua janela — uma vista de conversa nativa, sem terminal necessário. A sessão abre no seu briefing, renderizado como um cartão; o agente explora o repositório apenas em leitura, narra o que encontra e faz perguntas quando o briefing deixa escolhas reais em aberto.
As perguntas chegam como um cartão com separadores — um separador por pergunta, espelhando exatamente o seletor que o agente mostra na sua própria sessão. As respostas são recolhidas localmente e permanecem editáveis até premir Submeter, o que envia o conjunto todo de uma vez; um clique errado nunca é definitivo. Também pode escrever respostas livres no compositor no fundo da janela, ou premir Abrir terminal para observar a sessão em bruto.
Quando o agente tem o que precisa, arquiva o plano no quadro — cartões de fase ordenados na coluna Plano, cada um sensivelmente uma pull request de trabalho revisável, com dependências entre si — e regista uma visão geral do plano. A janela mostra então O plano está pronto com a contagem de fases e um botão Fechar, o separador da sessão de planeamento fecha-se sozinho, e o briefing sai do Backlog (as suas fases substituem-no; elimine-as todas e ele regressa).
O planeamento é vigiado: se o espaço de trabalho reiniciar, o agente for encerrado ou a sessão morrer antes de as fases serem arquivadas, o spinner do cartão termina com um motivo concreto — clique em Planear para tentar de novo — em vez de girar para sempre.
A coluna Plano
Os cartões de fase são numerados pela ordem do plano e trazem:
- Um crachá de dependência (um cadeado com números de fase) quando a fase precisa primeiro que fases anteriores estejam Concluído.
- Um crachá em fila quando a iniciou antes de as suas dependências terminarem — arranca automaticamente no momento em que estão todas Concluído.
- O nome do seu briefing-mãe.
Selecione várias fases com as caixas de verificação e a barra de seleção aparece: Iniciar N selecionadas faz cada uma de uma só vez (as fases dependentes ficam em fila), Limpar descarta a seleção, e Eliminar remove toda a seleção atrás de uma única confirmação. Editar uma fase mostra a sua lista Depende de — cada fase irmã com uma caixa de verificação, para que as dependências possam ser retrabalhadas à mão.
As fases executam de forma totalmente autónoma — nenhuma intervenção interativa é esperada uma vez iniciadas.
Em curso
Uma tarefa iniciada arranca o espaço de trabalho se necessário, cria uma worktree nova do repositório e lança o agente com o briefing como prompt. O cartão mostra um ponto de estado do agente em direto, quando começou, e Precisa da sua intervenção a vermelho se o agente estiver bloqueado numa pergunta — clicar no cartão salta para a sessão em direto. O crachá TAREFAS da barra lateral conta-as para que nunca perca nenhuma.
Quando o agente reporta como concluído, a tarefa passa para Teste/Revisão, e o seu separador de terminal fecha-se sozinho — uma sessão terminada não fica a ocupar a barra de separadores. Se o agente falhar em vez disso, o cartão fica vermelho em vez de fingir que trabalha.
Teste/Revisão
O cartão de Teste/Revisão abre a janela de revisão: o diff completo do ramo contra o seu pai, lido em direto a partir da VM, com expansores por ficheiro, contagens de adições/remoções e qualquer plano que o agente tenha registado.
Reveja como uma pull request:
- Comentários por linha: passe o cursor sobre qualquer linha adicionada ou de contexto e clique na bolha da margem para anexar um comentário a essa linha exata; os comentários ancorados são renderizados sob as suas linhas. Comentários ao nível do ficheiro e gerais também funcionam.
- Devolver a Em curso entrega cada comentário redigido ao agente — formatado como Em
foo.js, linha 196: use um método diferente — e a tarefa regressa a Em curso para outra ronda. O agente retoma na mesma worktree e ramo. - Fazer merge — a predefinição do botão dividido faz merge no ramo-pai; mantenha-o premido para Squash & Merge, Criar pull request… (quando o espaço de trabalho tem um token do GitHub) ou fazer merge em qualquer outro ramo. Um merge limpo fecha o seu próprio separador de terminal; os conflitos abrem em vez disso uma sessão de resolução.
- Fechar sem fazer merge descarta a ronda mantendo o registo em Concluído.
Dica: O mesmo fluxo de comentários por linha existe fora do quadro: quando o separador ativo executa um agente de código, o painel de diff do explorador de ficheiros ganha as mesmas bolhas de margem, e Enviar ao agente agrupa os seus comentários diretamente nessa sessão — revisão de código sem nunca criar uma tarefa.
Remover cartões
A cada cartão cresce um ✕ ao passar o cursor (e uma entrada de menu de contexto Remover do quadro), atrás de uma confirmação. Para os cartões com trabalho real por trás, a caixa de diálogo oferece uma escolha: Parar agente e eliminar worktree (Em curso) ou Eliminar worktree e ramo (Teste/Revisão) desmonta tudo, enquanto Remover apenas o cartão deixa a sessão e o checkout intactos no espaço de trabalho.
Armazenamento e API
As tarefas persistem num único ficheiro junto ao armazenamento do espaço de trabalho, com escritas atómicas e datas ISO-8601:
~/Library/Application Support/BromureAC/tasks.json
Todo o quadro é espelhado no socket de controlo da app para clientes ricos e scripts:
| Endpoint | Finalidade |
|---|---|
GET /tasks | Listar todas as tarefas. |
POST /tasks | Criar ou atualizar (upsert) um documento de tarefa. |
POST /tasks/<id>/start | Iniciá-la (worktree + agente). |
POST /tasks/<id>/plan | Lançar a sessão de planeamento. |
POST /tasks/<id>/comment | Adicionar um comentário de revisão (text, file e line opcionais). |
POST /tasks/<id>/send-back | Entregar os comentários por enviar e devolver a tarefa a Em curso. |
POST /tasks/<id>/merge | Fazer merge (squash, target opcional). |
POST /tasks/<id>/open-pr | Criar uma pull request em vez de fazer merge. |
POST /tasks/<id>/to-testing, /to-in-progress | Movê-la à mão. |
POST /tasks/<id>/destroy | Parar o agente, eliminar a worktree e o ramo, remover o cartão. |
DELETE /tasks/<id> | Remover apenas o cartão. |
Nos bastidores, os agentes de planeamento e de tarefa respondem ao quadro através de um servidor MCP de quadro por sessão (vsock, do lado do host): board_get_task, board_set_plan, board_create_subtasks e board_ready_for_review são a forma como as fases são arquivadas e como uma tarefa terminada se anuncia — sem polling, sem scraping. As ferramentas são ligadas automaticamente para cada agente suportado: o Claude Code carrega uma configuração MCP por ramo, o Codex recebe overrides mcp_servers por invocação, e o Grok lê um .grok/settings.json com âmbito de projeto escrito no checkout da sessão (e excluído do seu diff).