Skip to content
Read in English

Versão

v1.2.31

O que foi entregue, em números

119
PRs integrados
221,427
Linhas adicionadas
107,726
Linhas de código
Código
107,726
Testes
87,496
Docs
26,205
Soma · código + testes + docs
221,427

de 119 integrados

  • bug 30 25%
  • feature 59 50%
  • polish 0 0%
  • docs 17 14%
  • groundwork 5 4%
  • unclassified 8 7%

desde v1.2.30 · tag em

A carta

A carta do fundador, na íntegra

Read in English →

Oi,

Quando um agente precisa de você para uma mudança em produção, uma versão ou uma carta, o passo deve parar numa linha e numa confirmação, e nunca chegar até você como um comando para digitar. É disso que esta versão trata. O cockpit mostra um único chip, needs you · N, e F abre a lista por trás dele (#8417, #8413). Uma confirmação aprova uma linha, e o processo da própria FlowForge a executa, nunca um agente (#8421, #8431). Num Mac, uma confirmação que muda a produção ou chega ao público também é assinada com o Touch ID (#8445).

Mais duas coisas da semana. Um host da FlowForge parado não gasta mais as 5.000 chamadas por hora do GitHub (#8608). E a única quebra que me foi relatada esta semana está corrigida: no Plan a Feature, um brief ratificado volta a ser passado adiante (#8797).

Teste três coisas primeiro: aperte F para abrir a lista needs you (#8417); abra o FlowForge Desktop uma vez, para que ele registre a sua chave do Touch ID (#8445); e aperte S e vá até a aba Databases para conectar um banco de dados. Depois, feche e abra de novo cada cockpit aberto e o FlowForge Desktop. Antes de começar, leia Ainda não no fim: três limites continuam em aberto (#8550, #6661, #8695, #8697). Se algo quebrar ou parecer errado, responda à carta ou abra um ticket. Uma captura de tela, e a tela em que ela foi tirada, resolve a maioria dos relatos de uma vez.

Um abraço, Alex

Uma confirmação para o que só uma pessoa pode fazer, assinada com o Touch ID. 109 pull requests mesclados desde a 1.2.30. Quando um agente precisa de você, para uma mudança em produção, uma versão ou uma carta, o cockpit agora mostra um único chip, needs you · N, e uma tecla abre a lista. Cada linha diz em palavras simples o que ela muda e em que evidência se apoia; uma confirmação a aprova, e o processo da própria FlowForge a executa, nunca um agente e nunca você num terminal. Num Mac, uma confirmação que muda a produção ou chega ao público é assinada pela chave do Secure Enclave do FlowForge Desktop e pede o Touch ID. O banco de dados e a nuvem são alcançados por portas que planejam, ensaiam e leem de volta. Um host do GitHub parado não gasta mais a cota horária dele. A base do GitLab está posta, e as configurações da equipe podem vir do servidor da sua empresa. Um brief ratificado no Plan a Feature volta a ser passado adiante. O que ainda não está pronto está listado no fim.

Uma confirmação para o que só uma pessoa pode fazer

  • 🔴 Um chip, uma lista, uma tecla por linha. O cockpit mostra needs you · N; F abre a lista que ele anuncia, cada passo em palavras simples e nunca um comando no log. Uma linha é concedida ou deixada para depois com uma tecla, e uma linha concluída sai (#8417, #8413).
  • 🔴 O FlowForge Desktop mostra a mesma lista, com as mesmas palavras. Uma confirmação em qualquer uma das duas telas fecha a linha nas duas (#8418), e o botão de confirmação do desktop nomeia a operação antes de pedir o Touch ID (#8642).
  • 🔴 Uma confirmação executa o passo. A evidência é lida de novo na confirmação, a aprovação fica presa a ela, e o resultado é gravado por quem executou (#8421). Uma execução irreversível é uma única confirmação informada, e o processo da própria FlowForge a executa, nunca um agente (#8431).
  • Um passo nomeia o que você guarda, e a FlowForge recusa um passo que um agente poderia executar sozinho (#8415). Um único registro carrega tudo o que um passo precisa: quem o executa, o que ele guarda, a operação exata e uma confirmação presa à evidência dele (#8414). Passos que já foram feitos se fecham sozinhos (#8416).
  • Se um agente escreveu, um agente executa. O ACE e todo worker carregam essa regra em toda instalação (#8419), e flowforge founder-touch-audit, com a sua linha no doctor, sinaliza qualquer sessão que entregou a uma pessoa um comando para digitar (#8423).
  • O promote é uma confirmação com a evidência da versão nela (#8437). "Atualizar para a versão X" é uma confirmação, e o agente prova que as duas cópias instaladas são idênticas (#8438). Uma carta ou um aviso é uma confirmação: o agente prepara as imagens, a pré-checagem e o seed, e a linha mostra a evidência (#8439).
  • A FlowForge avisa sozinha quando a produção está atrás da linha da versão (#8427). Um pacote de build que falta é reconstruído, conferido contra o que está no ar e dito numa frase (#8444).
  • Os passos rodam a partir da própria cópia fixada, o checkout compartilhado da lane só fica preso enquanto uma execução está aberta, e os worktrees removíveis saem sem uma pergunta para cada árvore (#8441). Projetos que ninguém toca há duas semanas ficam quietos sozinhos (#8443), e o daemon avisa quando não consegue ler um projeto (#8442).

O Touch ID assina toda confirmação em produção ou pública

  • 🔴 Num Mac, uma confirmação que muda a produção ou chega ao público precisa levar uma assinatura do Touch ID, feita pela chave do Secure Enclave do FlowForge Desktop. A chave nunca sai do enclave, então nenhum agente na máquina consegue produzir uma assinatura. A porta confere a assinatura antes de gravar a aprovação e de novo antes de cada execução feita sob ela; uma assinatura copiada para outro projeto, outra operação ou outra versão não é validada (#8445).
  • Abra o FlowForge Desktop uma vez para registrar a chave. A primeira chave fica fixada, e flowforge presence status e a linha presence do doctor dizem se esta máquina está registrada, fixada e apoiada por um Secure Enclave (#8445, #8548).
  • No Linux, a confirmação continua sem assinatura, como antes, e diz isso em todas as telas (#8445).

O banco de dados e a nuvem, por portas

  • A porta do banco de dados chega à produção pelo session pooler, e o registro dela muda com uma confirmação (#8424). As migrações declaram a ordem delas, e uma migração mesclada continua pendente até que um passo a nomeie (#8425); flowforge db owed mostra quanto um banco de dados ao vivo está atrás da linha da versão.
  • Um conjunto de migrações de classe dono é uma confirmação: o processo da própria FlowForge aplica o conjunto ordenado com o direito do dono, emprestado uma vez, e outro agente lê cada uma de volta (#8428). A porta aceita o ensaio real no PostgreSQL 17 vindo do CI, e um ensaio que falha sai com código diferente de zero (#8426). Construir um índice online é uma mudança normal, e uma movimentação longa de dados é cadenciada pela porta (#8430). O papel somente leitura lê a telemetria que não é pessoal, então as leituras nunca precisam de uma pessoa (#8429).
  • A porta da plataforma consulta o registro de concessões (grant ledger), e uma stack é registrada com uma confirmação fora do repositório (#8432). Ela planeja a partir de um commit revisado, constrói o que a stack declara, resume o plano com as próprias palavras e recusa uma mudança sabidamente ruim (#8433). Uma confirmação aplica exatamente o plano que você viu, e os segredos gerados são gravados sem que ninguém os veja (#8435).
  • As credenciais de dono e de admin saem do alcance de todo agente (#8422). Um segredo vai para o cofre de chaves da FlowForge, nunca para um shell (#8440). Papéis de nuvem com escopo e um principal da porta substituem a chave de admin, e os segredos saem do estado do Terraform (#8434). As quatro gravações de versão de que o engenheiro de versão precisa entram na permissão permanente (#8436).
  • A stack do site recusa os planos que quebrariam o checkout, inclusive um que torna a função do checkout chamável por qualquer coisa que não seja o site (#8398, #8736).

A cota horária do GitHub, preservada

  • 🔴 Um host parado não gasta mais as 5.000 chamadas por hora do GitHub. Um merge em espera só é conferido de novo quando muda, um pull request pronto nunca é virado de novo, e o nome do repositório é pedido uma vez por hora (#8608). Os portões de merge leem um pull request uma vez por passagem, pelo governador de orçamento (#8625).
  • O orçamento mantém uma única leitura e recusa uma vinda do outro medidor do GitHub, então as leituras em segundo plano não veem mais folga perto de um piso que não existe (#8625). A fila de ondas lê o governador com honestidade (#8377), e uma leitura de token que passava por fora dele agora passa por ele (#8753).

GitLab: a base

  • Uma interface comum para todo servidor git: um registro de tipos, cinco faces, uma referência opaca de repositório, uma única taxonomia de erros e as capacidades (#7198). O adaptador do GitHub por trás dela roda os comandos de hoje, byte a byte (#7199), e os registros de merge têm como chave a forge, o repositório e o número (#7200).
  • Um cliente do GitLab: o transporte REST v4 com o token lido do chaveiro (keychain) pelo nome (#7202), os merge requests (#7203), as verificações, os pipelines e as notas de merge request (#7204), e o vocabulário de GitLab da guarda da lane, testado contra fixtures gravadas (#7201). Onde a escolha da forge é lida: uma substituição, a linha do repositório da empresa, a máquina e, por fim, o GitHub (#7206).
  • flowforge gitlab token set|rotate|status|verify|remove guarda o token de cada pessoa que desenvolve no chaveiro dela: julgado na instância antes de ser guardado, só escopos de leitura, 90 dias no máximo, um lembrete 14 dias antes de expirar e uma linha de auditoria para cada ato (#7207). flowforge doctor --forge-contract sonda o contrato de um remoto; ele foi medido no GitHub e no Gitea (#6661).

Configurações da equipe vindas do servidor da sua empresa

  • O app descobre quem é o admin da equipe pelo servidor, nunca por uma variável de ambiente (#8695).
  • Os valores de política da equipe ficam no servidor, e o valor de um admin vale mais que o da máquina. As Configurações mostram "Team value — set by on " e recusam uma edição local (#8697).

Plan a Feature

  • 🔴 Um brief ratificado volta a ser passado adiante. A checagem de passagem comparava o horário de renderização da página, então um brief apresentado, ratificado e revisado em minutos diferentes era sempre recusado; em português e em espanhol, ele era recusado até dentro de um único minuto. O horário de renderização e o carimbo de ratificação deixam de ser lidos como alegações, e um parágrafo alterado continua sendo recusado (#8797).

Merges e o corte

  • 🔴 Nenhum merge deixa trabalho para trás: uma única trava em toda porta, e todo merge aposenta o seu worktree, arquivando antes (#8363).
  • Um pull request fechado nunca chega a um portão de merge nem ao GitHub, e uma aprovação do fundador dada a um pull request libera somente esse (#8735). Um pull request virado nunca repete a virada por cima de uma revisão que disse NOT-GOLDEN (#8376).
  • O corte nunca paga duas vezes pela prova da lane: o push da main a reaproveita quando as árvores coincidem (#8374), e as suítes de portão da lane da 1.2.31 não incluem mais a própria prova da lane (#8803).

Mais estável por baixo do capô

  • Uma identidade por máquina: um id de máquina aleatório sob ~/.flowforge, enviado pelo exportador (#7617). As identidades de telemetria por processo se juntam à sua máquina (#5187), e toda sessão que o cockpit conduz tem a sua linha em sessions (#5942).
  • Help ▸ Symbols mantém uma coluna de significado por bloco em 80 e em 120 colunas (#8378); o decodificador de Workers & Fleet descreve as linhas como elas são renderizadas (#8379); o texto colorido por execução fica em negrito onde a cor não tem contraste, e o kanban nomeia uma execução enquanto a fila a segura (#8380).
  • A base de custo e saldo no servidor: a chave da chamada cobrável (#6090), o custo pelo dia do evento-base (#6092), o denominador de cobertura (#6093), a fila do dia (#6095), tarefas em segundo plano que marcam o que mudou dentro de orçamentos de página e de tempo (#7619), vocabulários de eventos como tabelas (#7620), os três índices de leitura da equipe (#7613), os heaps brutos particionados por mês (#7614), o lote de endurecimento (#7612), a lane de saúde (#7611), o grupo de banco de dados do doctor (#7621), as migrações pendentes numa só ordem ensaiada (#8401, #7609, #7610) e os corpos do motor de saldo do console adotados (#8772).
  • A nossa página de roadmap da 1.3.0 é construída por flowforge roadmap page build (#8104); ela lê as sprints dela da versão e explica cada exclusão (#8465, #8737), e o build de atualização dela roda fora do orçamento do host (#8770).
  • O manual antigo diz a verdade: a linha de instalação, o verbo de atualização, os pré-requisitos, o login e onde obter o Desktop (#8222). A página de privacidade diz que as visitas são contadas por link, campanha e site de origem, nunca por pessoa (#8147).

Estudos, registros e alicerces

Nada disto muda o que você roda. Cada item aparece aqui só como o que é.

  • O estudo de uma confirmação e o plano dele, pronto para disparar (#8404), a emenda da lane de direitos (#8420), o estudo da chave de segurança e as suas unidades de trabalho (#8553), o spike da chave de segurança (#8643), quais chaves se movem na máquina do fundador (#8422) e o roteiro e o avaliador do passo a passo num Mac novo (#8446).
  • Os registros do banco de dados: a ADR-0126 revisão 1 (#7615), a regra de numeração das migrações (#7623), a leitura de redução no dia 10 (#7624) e os três gêmeos de configurações do console como plano (#7110).
  • A porta de candidatos de login preparada para a aplicação em produção (#8711). O escopo de tickets da 1.3.0 posto no papel (#8727), os branches de arquivo classificados (#8364) e as regras do X na postura de canal (#7847).
  • Estas notas de versão e a carta (#8809).

Agentes — 53: três mudaram

Nenhum agente foi adicionado ou removido. Três definições mudaram com as portas de uma confirmação:

  • Mudou fft-dba — lê flowforge db owed para ver quanto um banco de dados ao vivo está atrás da linha da versão, ensaia uma migração em cadeia na execução do PostgreSQL 17 do CI e prepara um conjunto de classe dono com flowforge db manifest; a sua confirmação empresta o direito do dono, o processo da própria FlowForge aplica o conjunto, e ele lê cada membro de volta. Ele continua sem nunca guardar a credencial do dono (#8428, #8426, #8427).
  • Mudou fft-devops-agent — planeja pela porta da plataforma contra as stacks que você registrou com uma confirmação, pede exatamente o plano que ele barrou, troca um segredo sem ver o valor dele e deixa a verificação para outro agente (#8432, #8433, #8434, #8435).
  • Mudou fft-release-engineer — prepara o promote como uma confirmação com a sua evidência, registra o veredito do ensaio do candidato e pede que você aperte "Update" em vez de lhe entregar um comando (#8437, #8438).

Um passo de configuração

  • Abra o FlowForge Desktop uma vez em cada Mac depois de atualizar, para que ele registre a sua chave do Touch ID. Até que isso aconteça, uma confirmação que muda a produção ou chega ao público espera nessa máquina e diz por quê (#8445).

Ainda não

  • Uma chave do Touch ID perdida falha de forma fechada. Se a chave fixada sumiu (um Mac reinstalado, uma máquina nova), as confirmações em produção e as públicas nesse projeto são recusadas; recuperar a chave não está nesta versão (#8550).
  • O GitLab ainda não consegue conduzir um projeto de ponta a ponta. Esta versão põe a base: a interface comum, o cliente, os merge requests, as verificações e a guarda do token; a sonda de contrato foi medida no GitHub e no Gitea, não no GitLab (#6661).
  • O admin da equipe e a política da equipe vindos do servidor esperam pelo servidor da FlowForge. As mudanças do servidor estão mescladas e são aplicadas ao banco de dados de produção da FlowForge como um passo à parte; até lá, o app lê as configurações da sua própria máquina, como na 1.2.30 (#8695, #8697). O mesmo vale para o trabalho de custo e saldo no servidor listado acima.

Atualizar

  • flowforge update numa instalação existente, ou curl -fsSL https://get.flowforgesoft.com/install.sh | sh para uma nova. Os dois gravam o mesmo binário de release em /usr/local/bin e em ~/.flowforge/bin, juntos. flowforge update --repair reinstala os arquivos instalados sem a rede. Depois, feche e abra de novo cada cockpit aberto e o FlowForge Desktop.

v1.2.31 — 119 PRs, 221k lines, made with FlowForge