Atta Star desktop
Onde desenvolvo e giro os projetos: uma só fila de tarefas para todos, sincronizada nos dois sentidos com as issues do GitHub. Uma tarefa abre uma sessão de programação; integrar o seu pull request fecha a issue.
- Função
- Único programador e único utilizador
- Ano
- 2026
- Resultado
- Uma só fila para o trabalho seguinte de cada projeto, alinhada com o GitHub. Uma tarefa passa da fila para uma sessão de programação e daí para um pull request integrado, sem ser copiada para lado nenhum.
- Feito com
- Electron, TypeScript, Vue 3, Vite, Vitest, Playwright

Porque o fiz
Trabalho em vários projetos ao mesmo tempo, e cada um tem as suas próprias issues no GitHub. Para ver o que vinha a seguir, tinha de os percorrer um a um, e para voltar a encontrar uma sessão de programação tinha de me lembrar de onde a tinha deixado.
O que faz
Uma só fila
O ecrã Home junta as próximas tarefas de todos os projetos numa só fila ordenada, lida de um pequeno ficheiro de tarefas que cada projeto mantém. Uma tarefa tem um tamanho e pode ser marcada como minha (um trabalho para mim, não código), como "decidir primeiro" ou como bug, e pode estar à espera de outras pessoas. As vistas são Running (em curso), Up next (a seguir), Waiting on you (à sua espera), Quick wins (rápidas), Postponed (adiadas) e Done this week (feitas esta semana). Subir uma tarefa puxa consigo os seus pré-requisitos; descê-la empurra para trás o que depende dela. Uma tarefa pode ser adiada para amanhã, para segunda-feira, para uma data ou para um dia qualquer.

Da tarefa ao pull request
O botão Start abre o projeto no VS Code ou no T3 Code com uma sessão de programação e o seu prompt já escrito ("Próximo passo neste projeto: ler primeiro o plano"). Sou eu que carrego em Enter; nada é enviado por mim. A aplicação volta a encontrar a sessão pela tarefa na primeira mensagem ou pelo id da tarefa no nome do branch, mostra-a como Running enquanto está ativa e leva-me de volta a ela. O pull request fecha a issue do GitHub, e a sincronização seguinte risca a tarefa.

Sincronização com o GitHub
Cada projeto escolhe se entra. O primeiro envio lista exatamente o que vai e o que fica, e nada sai do computador até eu carregar em Send. Só vão títulos, ids, etiquetas e ligações; os pré-requisitos passam a ligações "blocked by" e as partes passam a sub-issues. Uma tarefa que mencione um cliente, ou qualquer coisa com a forma de um NIF ou de um IBAN, fica local, e o Home diz porquê. A partir daí, a sincronização é um merge a três vias: quando os dois lados mudaram, ganha o GitHub e o Home mostra o que foi substituído.

O quadro Projects
Todos os projetos numa só tabela: último commit, branch e ficheiros sem commit, branches por integrar, pull requests abertos, o estado da CI no main, se a sua cópia do Atta se afastou da partilhada, e a próxima tarefa.

Sessions
A última semana de sessões do Claude Code e do Codex, agrupadas por projeto, com o número de passos, o que está a correr ou falhou, e o último resultado de testes, build ou push. Uma sessão abre como a sua conversa, com os subagentes encaixados debaixo do passo respetivo, filtrada para o trabalho ou só para os testes, builds e pushes, e com o fim do log de um comando em segundo plano a atualizar em direto.

Reviews
Os registos do revisor independente, agrupados em Needs you (à sua espera), With the session (com a sessão), Ready (prontas) e Earlier (anteriores). Cada ronda lista as suas conclusões por gravidade, com ficheiro e linha, a prova e o que a sessão respondeu. Não há nenhum botão para dispensar ou repetir uma revisão, e é de propósito.

CI & releases
As execuções do GitHub Actions de todos os repositórios para onde fiz push na última semana, até ao log de um job, com os tokens escondidos. Compara a versão mais recente com a build que o servidor indica, o que responde a "a aplicação em produção está na build mais recente?". Uma notificação do Windows avisa quando uma execução falha e quando sai uma versão.

Star
A aplicação web num separador próprio e fechado, com o início de sessão feito pela mesma porta de entrada.

Como funciona
- Lê; quase não escreve
- O processo principal faz toda a leitura: o ficheiro de tarefas e o estado do git de cada projeto, os registos do revisor, as transcrições locais das sessões e a base de dados do T3 Code, aberta só de leitura. As únicas escritas num repositório são riscar as minhas próprias tarefas e acrescentar novas. Antes de ler o que quer que seja, é obrigatória uma lista dos projetos que nunca pode ler, e os projetos de clientes nunca são lidos.
- Uma janela fechada
- O painel não tem qualquer acesso à rede, com isolamento de contexto e uma política de segurança de conteúdo estrita. Um único preload com canais fixos é a única ponte; cada handler verifica que a chamada veio do painel e só age sobre ids, caminhos ou ligações que o próprio processo principal mostrou. O separador Star não tem Node e tem três bloqueios separados que mantêm a navegação dentro da aplicação e do seu início de sessão. Os fuses do Electron desligam a execução como Node e o inspetor.
- Sem tokens
- A aplicação não guarda tokens. O GitHub passa pela sessão que a linha de comandos gh já tem iniciada, e o início de sessão no Star é um cookie numa partição cifrada. Tudo o que pareça um segredo é mascarado antes de chegar à página.
Como foi feito e testado
- Testes
- Cerca de 1200 testes unitários e 141 testes end-to-end que conduzem a aplicação real com Playwright para Electron, contra servidores locais falsos, repositórios git temporários, transcrições inventadas e respostas do GitHub preparadas de antemão.
- Versões
- Um instalador do Windows por utilizador, construído e instalado à mão. Não há atualização automática, de propósito.
Como o Atta ajudou
- O Atta de cada projeto guarda os próximos passos numa lista curta de tarefas, e o ecrã inicial da aplicação junta essas listas numa só fila.
- O Atta escreve as tarefas mas nunca as reordena: as prioridades são minhas, definidas na aplicação.
- Os seus pull requests passam pelo atta-critic antes de poderem ser integrados, como os de qualquer outro projeto.