Versão
v1.2.29
O que foi entregue, em números
- 97
- PRs integrados
- 412,393
- Linhas adicionadas
- 43,871
- Linhas de código
- Código
- 43,871
- Testes
- 88,729
- Docs
- 279,793
- Soma · código + testes + docs
- 412,393
de 97 integrados
- bug 43 44%
- feature 27 28%
- polish 0 0%
- docs 17 18%
- groundwork 6 6%
- unclassified 4 4%
desde v1.2.28 · tag em
A carta
A carta do fundador, na íntegra
Oi,
Na 1.2.28, iniciar uma sprint em ondas não estava em tela nenhuma, um segundo início era recusado sem uma palavra, voltar jogava você para fora do Waves, e o widget de ondas crescia a cada execução. Esta versão trata de uma coisa só: agora você pode iniciar uma sprint em ondas, colocar uma na fila ou rodar uma segunda ao lado da primeira, pelo War Room (#7712), pelo Waves (#7713, #7714) ou pedindo ao ACE (#7725, #7726), sem terminal.
A mudança que eu mostraria primeiro é o widget. A linha de cada execução agora diz quantos tickets estão trabalhando, esperando e mesclados, e em qual onda ela está (#7720). Ele mantém uma altura só e, quando há mais execuções do que linhas, vira a página em vez de crescer. Uma execução que precisa de você aparece em todas as páginas (#7721).
Você está entre as primeiras pessoas a rodar esta versão, então esta página foi escrita para você: o que mudou, o que testar primeiro, o que precisa de um passo seu e o que ainda não está pronto. Teste três coisas primeiro: aperte S numa sprint do War Room e depois enter (#7712), aperte p no Waves para pausar e reiniciar a fila (#7714) e aperte < ou > na tela inicial do cockpit para escolher a execução que a linha de ondas mostra (#7722). Algumas teclas mudaram de lugar. No Waves, Q, R e a apertadas por hábito não mudam nada e dizem qual é a nova tecla (#7724); no War Room, o filtro atrasadas / adiantadas passou de S para B (#7712). Depois, feche e abra de novo cada cockpit aberto e o FlowForge Desktop. Antes de começar, leia Ainda não no fim: a última checagem desta versão achou uma coisa que ainda pode dar errado quando muitas execuções dividem a máquina. 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
Comece, enfileire e rode sprints lado a lado, a partir do cockpit. 95 pull requests mesclados, e esta seção cobre todos eles. Na 1.2.28, o caminho para iniciar uma sprint em ondas não estava em tela nenhuma, enfileirar pelo cockpit não funcionava, um segundo início era recusado sem uma palavra, voltar jogava você para fora do Waves, e o widget de ondas contava só os tickets mesclados e crescia a cada execução. Na 1.2.29 você pode iniciar uma sprint em ondas, colocar uma na fila ou rodar uma segunda ao lado da primeira: pelo War Room, pelo Waves ou pedindo ao ACE. Toda tela do Waves mostra o próximo passo e, quando uma tecla é recusada, diz por quê e o que fazer, ali mesmo. Voltar leva você de volta. O widget de ondas mostra o que cada execução que está nele está fazendo, com os mesmos símbolos para uma execução ou para várias, e vira a página em vez de crescer. A ajuda no Waves e no War Room é uma tabela curta com as teclas daquela tela, e o ACE agora consegue parar ou pausar uma execução que você nomear. F numa execução dispara a próxima onda dela na hora. O War Room e o Gantt começam pelo que está vencido, pelo ritmo de cada sprint e por quantos tickets ela fecha por dia. As teclas que mudaram estão listadas no fim da primeira seção, cada uma como o que agora funciona. O elenco continua em 52; um especialista mudou. O que ainda não está pronto está listado no fim, com o único limite que a última checagem desta versão achou no binário construído.
Comece, enfileire e rode sprints lado a lado
- 🔴 Comece ou enfileire uma sprint direto do War Room. Numa sprint, na lista ou no board dela,
Sabre uma escolha sobre o War Room: iniciá-la agora, colocá-la na fila ou ver as ondas dela. Dois apertos,Se depoisenter, iniciam a sprint, e você continua na mesma linha. A linha acima do rodapé então dizStarted as run A. Watch it in Waves · Q. Com o limite cheio, a escolha começa em "Add to the queue" e também oferece aumentar o limite e iniciar (#7712, #7710). - 🔴 Adicione uma sprint pela visão geral do Waves.
Sage na linha sob o cursor. Numa linha em execução, ou sem linha, abre Pick a sprint: as sprints abertas, lidas de novo a cada abertura, filtradas conforme você digita.entertransforma a escolha na decisão daquela sprint. Se as sprints não puderem ser lidas, a folha diz isso e oferece tentar de novo (#7713). - 🔴 Toda porta lê as sprints no momento em que você age. O formulário de adicionar não mostra mais "nothing to add" numa fila vazia ou retida,
Qnuma sprint aberta não diz mais que ela "is not open to add", e enfileirar não responde mais que uma sprint "is not a milestone of this project" (#7701). Um projeto escolhido na lista de projetos lê as sprints e as iniciativas dele já na primeira abertura, então o War Room não diz mais "Initiatives didn't load" até um reinício (#7706, #7790). - 🔴 O que está na fila começa sozinho, e você o conduz pelo cockpit.
pno Waves deixa a fila rodar ou a pausa, e a faixa, o divisor da fila e toda linha em espera dizem qual dos dois. Numa execução travada,Soferece retomá-la, ou pular o ticket em que ela parou, depois de uma confirmação que nomeia o ticket e a execução. Settings ▸ Waves tem uma chave Queue que diz por quê quando a fila se pausou sozinha (#7714). Uma única porta faz todo movimento da fila para o cockpit, a linha de comando e o ACE, então um movimento é conferido do mesmo jeito onde quer que você o faça (#7705). Start nowinicia a sprint quando há espaço. Antes disso, logo depois de o War Room se atualizar, ele podia responderWhat runs now did not loade não iniciar nada. Um início que não acontece agora grava o motivo no log do cockpit (#7852).- Um ticket mesclado que espera a sua aprovação não trava mais a execução dele. A execução o conta como entregue e segue para a próxima onda; antes disso, um pull request de acompanhamento que citasse o mesmo ticket podia parar a execução depois de três tentativas (#7786).
- Uma execução não recusa mais os próprios tickets. Num projeto escolhido na lista de projetos, uma execução podia recusar o próprio ticket centenas de vezes por segundo e nunca iniciar a primeira onda. Agora as vagas dela são dela, uma execução recusada espera antes de tentar de novo, e uma execução que não consegue iniciar uma onda grava o motivo no log do cockpit, uma vez só (#7855).
- Uma segunda sprint roda ao lado da primeira numa só decisão. A escolha nomeia o limite uma vez (
Limit 1 — one sprint at a time · 0 running) e o que cada opção vai fazer (#7710). - Um início recusado guarda a sua letra. Antes disso, cada início recusado gastava uma letra de execução, e as execuções apareciam como A e depois D. Agora um início é conferido antes de ser registrado (#7702). Uma execução iniciada pelo ACE ou pela linha de comando recebe uma letra como qualquer outra (#7718).
- Pare ou pause qualquer execução pela linha dela ou pela tela dela, e fique onde está. Com duas execuções vivas,
XePagem na execução sob o cursor; antes disso, toda execução além da primeira respondia "runs elsewhere". A confirmação de parar nomeia a execução e a sprint, e a resposta diz o que aconteceu:Stopped run B. Work already going finishes.Uma execução conduzida por outro cockpit diz isso. Uma execução parada agora freia só os próprios tickets: com o auto-merge ligado, um pull request revisado e verde em outro lugar da máquina é mesclado como antes (#7716, #7745). - Dispare na hora a próxima onda de uma execução, pela linha dela ou pela tela dela.
Fpede àquela execução que inicie a próxima onda na hora; uma execução pausada dá esse único passo e continua pausada. Quando a próxima onda espera por uma anterior,Fdiz isso:Not fired — run B's next wave (≈2) waits for ≈1 to finish.Com o auto-merge desligado, o rodapé de uma execução não oferece essa tecla (#7800). - Toda execução que o cockpit guarda é uma linha na visão geral do Waves, inclusive uma iniciada pela linha de comando ou pelo ACE (#7717).
- A tela de uma segunda execução é sobre aquela execução: o nome dela no quadro, os tickets dela com títulos e o cabeçalho dela nas mesmas palavras da primeira execução (#7715). O detalhe da execução nunca é um beco sem saída: as teclas percorrem a execução na tela, um merge alcança toda execução que espera por ele, e o breadcrumb nomeia a execução mostrada (#7742).
- Quem nunca iniciou uma execução vê por onde começar. Uma linha,
step 1 of 4 · Sprints start in the War Room, acompanha a pessoa pelo primeiro início e some quando a primeira execução dela está rodando (#7719).
Teclas que mudaram, cada uma como o que agora funciona (#7711, #7712, #7713, #7714, #7716, #7722, #7724, #7800):
esceqvoltam um nível. Só a visão geral do Waves sai do Waves, e ela volta para onde você a abriu. Parar uma execução, disparar uma onda ou abrir um ticket deixa você onde estava (#7711).Snuma sprint do War Room a inicia ou a enfileira. O filtro behind / ahead passou paraB, que alterna behind → ahead → off (#7712).Qnuma sprint do War Room abre o Waves com a escolha daquela sprint na tela, entãoQe depoisentera iniciam (#7712).- No Waves,
Sadiciona uma sprint:Se depois1a inicia ao lado das outras, eSe depois2a coloca na fila. Apertadas por hábito,Q,Reanão mudam nada e respondem com a nova tecla, por exemploQ has moved. S, then 2, adds a sprint to the queue.(#7713, #7724). - No board de uma sprint em modo de ondas,
Qabre o Waves nessa sprint.Lresponde com a nova tecla dele (#7724). pno Waves pausa a fila ou a deixa rodar (#7714).XePparam ou pausam a execução sob o cursor, na linha dela ou na tela dela (#7716), eFali dispara na hora a próxima onda daquela execução (#7800).<e>viram as execuções no Waves, ondetabcontinua funcionando. Na tela inicial do cockpit, elas escolhem a execução que a linha de ondas mostra (#7722).wabre o Waves a partir do rodapé da tela inicial em todas as larguras, inclusive 120 colunas (#7722).?no Waves e no War Room lista o que mudou em Moved in 1.2.29, no fim das teclas daquela tela (#7724, #7802).
O widget de ondas mostra como está cada execução
- 🔴 A linha de cada execução diz quantos tickets estão trabalhando, esperando e mesclados, e em qual onda ela está. Por exemplo
▶ 1 working ⋯ 3 waiting ✓ 0 of 4 merged, ao lado dewave ≈1 of 3. A linha principal é sempre uma execução, nas mesmas palavras e símbolos da linha dela. “Running” agora significa uma execução, e “working” um ticket; “stuck” substitui “parked” (#7720). - 🔴 O widget mantém uma altura só e vira a página em vez de crescer. Com mais execuções do que linhas, a linha principal mostra
page 1 of 2, e a página vira sozinha. Uma execução que precisa de você fica fixada em todas as páginas, e toda execução no widget mantém o nome, nunca só a letra (#7721). - O widget lista toda execução que a visão geral do Waves lista, inclusive uma iniciada pela linha de comando ou pelo ACE que ainda não disparou a primeira onda, então a contagem dele bate com a da visão geral (#7853).
- A linha principal conta os tickets trabalhando em todas as execuções, por exemplo
2 runs · 8 working, como o painel Workers, e uma execução retomada conta a sprint inteira, inclusive os tickets fechados antes de ela começar (#7851). - Você escolhe a execução que a linha de ondas mostra.
<e>na tela inicial do cockpit levam a linha à execução seguinte ou anterior, e ela dizby handenquanto a sua escolha vale. Uma execução que passa a precisar de você toma a linha uma vez; quando ela é resolvida, a sua escolha volta (#7722). - Uma execução travada continua no widget. A linha dela nomeia o ticket em que parou e o caminho adiante:
w, then S: resume or skip · X: abandon(#7786). - Uma execução parada não esconde mais uma execução viva na faixa de ondas. Uma execução parada que o cockpit ainda guarda não apaga mais a execução ao lado (#7731), e os números de uma execução parada não são mais pintados de novo como se estivesse rodando (#7752).
Toda tela do Waves mostra o próximo passo
- 🔴 O próximo passo e a resposta a uma tecla recusada ficam no mesmo lugar em toda tela do Waves, logo acima do rodapé. A linha do próximo passo ocupa uma linha, em todos os estados:
Queue paused. Nothing starts. Turn it on · p,Nothing needs you. Add a sprint any time · S. Depois de uma tecla recusada, a resposta diz o que não aconteceu e o único caminho adiante, e a tecla seguinte a apaga (#7708). - 🔴 Uma recusa diz o que não aconteceu e o que fazer em seguida, sem comando e sem "founder". Um início recusado pelo limite nomeia o limite e as execuções vivas, e oferece aumentar o limite ou enfileirar, nunca "stop the other run". A recusa do auto-merge perdeu os números de ADR (#7703).
- Uma sprint que espera na fila diz por quê em palavras simples:
the limit is reachedouthe queue is paused, nunca "width", "held" ou "Autorun". Parar ou desistir nomeia a execução:Stopped run A,Gave up run A(#7854). - Uma onda em espera diz
waitinge pelo que espera, numa colunaWAITS FOR(≈1 to merge), e o rodapé de uma execução parada ofereceX give up, com uma confirmação (#7866). - Nada numa tela do Waves é cortado pelo meio. Cada tela é montada para as linhas que tem, inclusive em 80×24, e o editor da fila mostra um grupo de campos por vez (#7709).
- 🔴
?mostra as teclas daquela tela numa tabela curta, em toda tela do Waves e no War Room, agrupadas pelo que cada tecla afeta, e cabe numa tela de 120×40.?de novo abre What marks mean: uma linha por marca, o que ela significa e um exemplo como a tela a desenha.enterna última linha liga ou desliga os primeiros passos (#7802). - O painel Workers e o ACE falam em palavras simples. O título do painel diz
3 of 9 workers · 3 here, o grupo de uma execução dizA · <sprint> · ≈1 · 1 worker · 1 bug · merges into main, um ticket que espera dizwaits for #7513, e o ACE relata um início comoStarted <sprint> as run A. Wave ≈1 begins; later waves follow as tickets merge.(#7803). - O War Room conta as ondas a partir de 1 e as nomeia com clareza:
Waves of <sprint> · 3 waves · ≈1: 1 ready,waits for ≈1, e uma marca do Waves que diz▶ 1 running · 0 waiting · Q Waves(#7723).
Fale com o ACE
- 🔴 O ACE encontra a sprint que você quer a partir de poucas palavras, pelo número ou pelo começo de cada palavra, ignorando acentos e travessões. Uma correspondência vem com as escolhas e as teclas dela, várias vêm como até cinco para você escolher, e nenhuma vem com a mais próxima. Quando o limite está cheio, o ACE oferece a correção (#7725).
- O ACE faz o Waves pela mesma porta do cockpit, e ensina a tecla. Peça para ele iniciar ou enfileirar uma sprint, mover ou remover uma, aumentar o limite, pausar a fila, ou retomar ou pular uma execução travada: ele diz o que aconteceu com as palavras do próprio produto e nomeia a tecla que faz o mesmo no Waves. Ele nunca entrega um comando para você digitar (#7726).
- Peça ao ACE para parar, pausar ou retomar uma execução pelo nome: "stop run B", "pause the newsletter run", "resume #224". O ACE pergunta antes de parar, depois diz o que aconteceu com as palavras do próprio cockpit e nomeia a tecla que faz o mesmo:
Xna linha da execução a para,Pa pausa ou a retoma (#7801).
Atrasos, ritmo e velocidade num relance
- 🔴 O War Room começa pelo que está vencido. A faixa dele põe primeiro os tickets vencidos, entre os que ainda estão abertos, e depois as sprints atrasadas, adiantadas e no prazo, em blocos. A faixa de cada sprint acrescenta os vencidos dela, o ritmo dela e quantos tickets ela fecha por dia, com um gráfico pequeno dos fechamentos por dia (#7515, #7885).
- 🔴 A faixa do Gantt é uma fileira de cartões: cronograma em dias, ritmo, tickets fechados por dia desde o início com um gráfico pequeno, progresso, e quantos tickets terminaram no prazo (#7516).
- Todo número diz o que mede, e o War Room e o Gantt o calculam do mesmo jeito. "Behind" conta sprints e "past due" conta tickets; a velocidade aparece como tickets fechados e fechados por dia desde o início; uma sprint que vence hoje mostra o mesmo número nas duas telas. O War Room diz que o Waves conta um ticket como feito quando o pull request dele foi mesclado, e o War Room quando ele foi fechado (#7514).
- O War Room não conta nenhum ticket como no prazo antes de as datas serem lidas. A faixa diz
… dates not read yetem vez de um número que ela não consegue justificar (#7513).
O épico como escopo próprio
tnuma linha◉ EPICabre o Gantt do próprio épico. Ele mostra os tickets do próprio épico em todas as sprints que ele atravessa, e nunca se alarga em silêncio para a sprint (#5212).- Alicerces para épicos: uma regra de pertencimento para um épico (#6155), o Gantt toma o escopo de um único valor tipado e todo título nomeia o que mostra (#6154), o board do War Room carrega um único escopo tipado e zera o estado das ondas quando ele muda (#6156), e o elenco de um épico pode ser lido em todas as sprints dele (#6158).
A versão, com um só sim
- 🔴 O corte pede o seu único sim por último, depois que todo portão de máquina passou e a lane está comprovadamente verde, e uma lane vermelha nunca chega até você. Um corte que foi mesclado e depois parou retoma sem um novo sim. A espera pelo CI da main é medida a partir da suíte mais lenta, e uma suíte instável ganha uma nova execução e é reportada (#7672).
- Responda ao sim do corte onde você está:
Fno cockpit, a faixa do app desktop ou, como alternativa, um terminal (#7677). - As suítes de portão do corte rodam toda noite em cada lane de versão ativa, então uma quebra aparece na manhã seguinte, e não no dia do corte (#7678).
Ratifique e faça o merge
- Ratifique pela gaveta Documents, com três desfechos: Ratify, Not yet com o que está errado (registrado e depois enviado ao worker do pull request), ou fechar e não registrar nada (#7689).
- Abrir um documento o leva para a gaveta dentro do FlowForge Desktop, e não para o visualizador do sistema (#7773).
- Um plano ratificado abre e dispara a partir de um cockpit em qualquer branch.
ona sprint de um plano abre o documento dele, como cópia só de leitura quando o cockpit está em outro branch, e disparar ou enfileirar o plano o lê da própria linha de versão dele, em vez de responder que ele não está lá (#7795). - Um merge que espera pela sua decisão fica retido até você responder. Toda porta de merge lê um único registro das suas decisões abertas, auto-merge incluído (#7697).
- Um pull request revisado é marcado como pronto em toda porta de revisão, e o diálogo de merge recomenda a partir das linhas que falharam, em vez de sempre pedir uma revisão (#7682).
Mais estável por baixo do capô
- Nenhum teste e nenhum build de desenvolvimento pode gravar o seu arquivo de configurações. Um teste tinha redefinido a configuração de workers paralelos de uma conta (#7764).
- Uma prova ao vivo não consegue mais alcançar o seu cockpit em execução (#7696).
- O lembrete se retira enquanto um worker espera pela sua resposta, e o recap do ACE só fica retido num bloco de pessoa conhecido (#7767).
- Um pull request revisado que só precisa ter os conflitos resolvidos pode sofrer rebase e push sem override; o push é conferido com o git, e uma nova revisão continua devida (#7766).
- O brief mostra cada opção de resposta por inteiro. As opções da pergunta em foco quebram a linha sob a letra delas em vez de serem cortadas em uma linha, uma pergunta mais alta que o painel rola e diz quanto falta, e o brief usa uma janela larga (#7793).
- As mudanças do editor da fila passam pelas mesmas conferências que qualquer outro movimento da fila. Se uma mudança de uma edição for recusada, nada daquela edição é salvo (#7806).
- Aumentar o limite pela escolha de uma sprint fica registrado no log do mesmo jeito que
+no Waves, para que a checagem da versão consiga vê-lo (#7789). - As suítes de portão da lane 1.2.29 estão verdes, cada vermelho rastreado até o merge que o causou (#7869).
- As execuções de testes do TUI esperam numa fila curta e ordenada, revisões primeiro, em vez de uma fila longa (#7734).
- O relógio CONTEXT do cockpit fica acima do medidor, e não sobre ele (#7680).
- Iniciar uma sessão não reescreve mais o CLAUDE.md de um projeto só por causa do carimbo de versão, e um merge não relata mais um worker em andamento num pull request que já foi mesclado (#7673).
Estudos, registros e alicerces
Nada disto muda o que você roda. Cada item aparece aqui só como o que é.
- O estudo de Waves sobre o qual esta versão é construída: a auditoria ao vivo da 1.2.28, o desenho e dois planos (#7683). O caminho mais curto para cada tarefa do Waves, contado na 1.2.28 e no desenho da 1.2.29 (#7707).
- O teste de jornada que toda mudança do Waves nesta versão deixou verde (#7699), e a repetição dele no binário construído (#7700). A checagem da versão, que repetiu a jornada inteira no build candidato desta versão, em quatro tamanhos e aparências: a execução final dela, no build com todas as mudanças acima, confirma 21 dos 22 passos, e o que ela achou com muitas execuções ao mesmo tempo é o limite listado em Ainda não (#7728). O kit para observar duas pessoas usando o Waves na versão lançada: um guia de moderação, cartões de tarefa e um modelo de relatório (#7729). O arquivo de teclas do painel Waves foi dividido para abrir espaço (#7704).
- Uma carta mensal que qualquer pessoa consegue ler: as ideias do estudo da newsletter e o plano dele, para a aprovação do fundador (#7779). Toda carta de versão agora ensina dois agentes conectados e uma funcionalidade, com uma imagem para tudo de que fala (#7774).
- O manual do Waves, um PDF em inglês e em português que ensina um plano, uma primeira onda, uma segunda onda e a fila, com telas reais deste build (#7886).
- O estudo do roteiro de versões: onde uma versão está e o que falta, a uma tecla do War Room e na web; ideias e desenhos para as respostas do fundador, nada construído (#7870).
- Estas notas de versão e a carta (#7730).
- Um registro local de como o Waves é usado, guardado nesta máquina em
~/.flowforge/logs/waves-events.jsonl: quais telas do Waves abrem e fecham, e o que cada ação sobre uma execução ou sobre a fila respondeu, só pelo nome da ação. Ele nunca registra uma tecla apertada, texto digitado ou o que está na tela, e não tem código de rede (#7727). - Duas decisões escritas para o fundador responder: o que uma onda calma ou forte definiria (#7805), e um só significado por letra para as teclas de ticket do próprio War Room, em que nada muda até ser ratificado (#7804).
- Down-merges levaram o corte da v1.2.28 para a linha 1.3.0 (#7674) e mantiveram a 1.2.29 e a 1.3.0 em sintonia; o segundo trouxe para a 1.2.29 o trabalho de vencidos, ritmo e velocidade (#7876, #7884).
Agentes — 52, sem mudança na contagem: um especialista alterado
- Alterado
fft-release-engineer— conduz o corte para que você dê um único sim, o último: comprova a lane verde antes de perguntar, repassa o pedido para você responder comFno cockpit, na faixa do desktop ou num terminal, retoma sem um novo sim um corte que foi mesclado e depois parou, e registra como bug cada teste instável que encontra (#7672, #7677). - Skill nova
flowforge-waves, levada pelo ACE: ele inicia, enfileira e muda o Waves, e para, pausa ou retoma uma execução que você nomear, pelas ferramentas do Waves, nunca por um comando. Ele pergunta antes de parar uma execução. Ele encontra primeiro a sprint, age sobre a correção que uma recusa oferece, repassa o que o produto disse e nomeia a tecla que faz o mesmo; um teste falha se ele nomear uma ferramenta ou uma tecla que não existe mais (#7726, #7801).
Um passo de configuração
- Feche e abra de novo cada cockpit aberto e o FlowForge Desktop depois de atualizar, para que as novas telas do Waves, as teclas e o widget sejam os que estão rodando.
Ainda não
- Por enquanto, o widget vira a página a cada 30 segundos. Esse tempo é provisório e será definido a partir do que as pessoas precisarem (#7721).
- Com 6 ou mais execuções ao mesmo tempo, as execuções seguintes podem esperar por uma vaga, e uma execução iniciada pela linha de comando pode não começar (#7916, corrigido na 1.2.30).
Atualizar
flowforge updatenuma instalação existente, oucurl -fsSL https://get.flowforgesoft.com/install.sh | shpara uma nova. Os dois gravam o mesmo binário de release em/usr/local/bine em~/.flowforge/bin, juntos.flowforge update --repairreinstala os arquivos instalados sem a rede. Depois, feche e abra de novo cada cockpit aberto.