Pular para o conteúdo principal

Changelog

O que mudou em cada versão publicada do overpower, em cronologia reversa, montado dos fragmentos que cada pull request deixou.

Cronologia reversa, uma entrada por versão publicada. As entradas não são escritas à mão: cada pull request que muda comportamento deixa um fragmento em changelog.d/, e o lançamento os monta. Como o projeto está em 0.x, uma quebra não promove o primeiro dígito, e a régua inteira está em Release.

Os agrupamentos por minor existem para a coluna de navegação. Uma lista de trinta entradas sem heading é uma lista que ninguém percorre.

0.31.x​

0.31.0quebra

A fonte de um servidor virou endereço, e nada mais é clonado. Uma receita cujo servidor tem código próprio declara source: com git, ref, runner e entrypoint, e o overpower renderiza a linha do runner a partir deles, com o server.args aposto no fim. O diretório ~/.overpower/mcp/ deixou de existir, e é por isso que receita com fonte volta a instalar em escopo de projeto, com um arquivo escrito idêntico em toda máquina. O ref é obrigatório e o runner é vocabulário fechado, uvx ou npx, e os dois são recusados por nome fora dessas condições. O transport, o server.command e a precondição de runner passaram a derivados: declarar qualquer um deles ao lado de source: também é recusa por nome. O source: antigo, com a chave url, e o token de substituição da fonte deixaram de ser lidos, sem janela de compatibilidade. O doctor perdeu as duas conferências de clone e ganhou uma: re-roda a precondição do runner contra o PATH, offline. E o list --from passou a mostrar a origem e a ref na linha do servidor.

0.30.x​

0.30.0quebra

Um bundle passou a alcançar servidor MCP, e o items ganhou prefixo de espaço de nomes. Cada entrada de items carrega agora skill:<nome> ou mcp:<nome>, resolvido dentro do mesmo repositório, nas duas procedências. Não há janela de compatibilidade: entrada sem prefixo, ou com prefixo fora do conjunto fechado, é recusa por nome, e todo items já escrito precisa ganhar o skill:. Um bundle com skill e servidor escreve a pasta e a chave na mesma execução, e as telas somam corretamente um item que não tem árvore para pesar, porque a receita pesa uma chave e não bytes. O escopo continua um por execução: nada dentro do bundle escolhe escopo por item.

0.29.x​

0.29.0quebra

Um repositório caseiro declara tudo o que oferece num arquivo só, na raiz. O .overpower.yaml carrega bundles: e mcp: dentro dele, e passa pelo mesmo leitor que lê o catálogo que a wheel publica: um arquivo, um formato, um leitor. O .overpower/catalog.yaml e o .overpower/mcp/<slug>.toml deixaram de ser lidos, e não há janela de compatibilidade: achar a convenção antiga num repositório sem .overpower.yaml sai 3, nomeando os arquivos achados e o arquivo a escrever no lugar. O catálogo embutido migrou junto, as quatro receitas entraram na chave mcp: e o TOML saiu do produto, então as duas procedências passam pelo mesmo caminho. O --mcp --from deixou de andar pela árvore: a declaração é ancorada na raiz do repositório apontado, e a subpasta da URL segue estreitando apenas o alcance de --skill.

0.28.x​

0.28.0novidade

No escopo de máquina, o install pergunta o valor de cada slot e o escreve literal. Uma execução, e a configuração fica completa, em vez de terminar avisando que a variável é sua para exportar. A entrada é mascarada, o valor nunca é ecoado, e a variável já exportada é oferecida como padrão sem aparecer na tela. No escopo de projeto o slot continua sendo ${VAR} e nada mais, e o VS Code mantém o inputs[] com password: true, que é a única grafia medida em que o segredo fica guardado sob proteção do sistema. Sem terminal ou com --yes nada é perguntado, e o comportamento anterior fica intacto; valor já gravado é mantido e não perguntado de novo, com --force reabrindo a pergunta; resposta vazia grava a referência de volta. O --dry-run não pergunta, e anuncia quantos segredos seriam pedidos.

0.27.x​

0.27.3correção

A tabela de códigos de saída passou a nomear a exceção do --version. Ele responde e sai antes de o resto da linha ser lido, então overpower --version install --nope sai 0, igual a um --version sozinho: o Click resolve a flag no callback do grupo e nunca alcança o parse do subcomando, então o 2 que a linha malformada ganharia não chega a disparar. O 0 vale pelo que o --version fez, e não pelo que veio depois dele.

0.27.2correção

A recusa de runtime fora de escopo passou a nomear o conjunto certo. Ela dizia que o conjunto aceito pelo --runtime é função do escopo, 76 no projeto e 74 no global, que é o tamanho da tabela de skills sozinha. A flag valida contra a união dessa tabela com a de servidores MCP, 77 no projeto e 75 no global, porque o vscode alcança pela metade MCP nos dois escopos sem ter linha própria de skill. O comportamento não mudou.

0.27.1correção

O --dry-run passou a dizer o que ele faz de fato. A ajuda dele lia "imprime o plano e não escreve nada", verdade incompleta: uma execução seca também transforma um destino global já ocupado de pergunta em saída 3, do mesmo jeito que o --yes, e junto do --from ela busca a raiz remota antes de ter o que relatar. O comportamento é o de sempre; o que mudou é a tela que você consulta.

0.27.0mudança

A documentação saiu do repositório da ferramenta e passou a viver aqui. As dezenove páginas que moravam em website/ foram publicadas neste acervo, em português e em inglês, e o pacote no PyPI declara este endereço em Homepage e em Documentation.

O endereço antigo, thiagopanini.github.io/overpower, foi desligado em vez de ficar congelado: um site que ninguém atualiza e a busca continua indexando é pior que site nenhum. O que ficou lá é a memória de engenharia do projeto, os ADRs, os documentos de agente e a pesquisa, que nunca descreveram o produto para quem o usa.

0.26.x​

0.26.0mudança

O projeto saiu da organização e passou para o perfil pessoal. O nome não mudou, o dono sim: o repositório é ThiagoPanini/overpower, e é esse endereço que o pacote declara.

Os endereços antigos sobrevivem como redirecionamento do GitHub, e o projeto não trata redirecionamento como resposta: as 420 referências dentro da árvore foram reescritas uma a uma, do formato de issue que carimba o dono em toda entrada futura de changelog até os links dentro de docstring.

0.25.x​

0.25.2correção

O --yes passou a dizer o que faz. A ajuda dele lia "pula a confirmação, e nada além disso", e esse nada além disso carregava mais do que admitia: num terminal, -y sobre um destino de máquina já ocupado transformava uma pergunta que poderia escrever numa recusa com saída 3.

O comportamento continua o mesmo, e por decisão: quem aceita a sobrescrita é o --force, e só ele, porque um -y que apagasse em silêncio poria este comando ao lado do apt-get quando ele foi construído para ficar ao lado do pip. O que mudou é que a tela consultada para descobrir o que as opções fazem agora nomeia qual das duas levanta a recusa.

0.25.2correção

O install --help passou a mencionar o assistente. O --runtime anuncia "sem valor padrão" e "nem todo runtime está nas duas tabelas", e as duas frases juntas leem como exigência: a única tela que se consulta para saber o que as opções fazem concluía que overpower install --skill x é recusado. Num terminal não é, e a descrição do comando diz isso agora, ao lado da frase que registra que uma linha fora de terminal continua sendo recusada.

0.25.1correção

O doctor deixou de reportar 0 artifacts · 0 places num repositório cuja única instalação é um servidor MCP. A contagem vinha só da classe de cópia, árvores dentro de um caminho de runtime, então um enxerto escrito ficava duas linhas abaixo de um bloco intitulado o que está instalado sem estar no número.

As duas classes de aterrissagem contam agora, e a decisão veio de coerência e não de gosto. Elas são contadas em separado e somadas, nunca fundidas num conjunto só: o pool separa por tipo, então uma skill e um servidor podem compartilhar nome, e uma união responderia um onde o disco tem dois.

0.25.1correção

Um arquivo de configuração sem JSON dentro é recusado nas palavras deste produto, e não nas do parser. Um .mcp.json de 0 byte respondia Expecting value: line 1 column 1 (char 0), sobre um arquivo que não tem linha 1 nem coluna 1. Vazio e só espaço em branco passam a ser nomeados antes de o leitor ser chamado, cada um nas próprias palavras.

0.25.0​

0.25.0novidade

O bundle atravessou o --from. Um repositório declara as composições dele em .overpower/catalog.yaml na raiz, e install --bundle <slug> --from <url> equipa um contexto inteiro de trabalho num comando. O list --bundle <slug> --from <url> mostra o que o bundle nomeia primeiro, então a decisão é tomada com o conteúdo à vista.

O manifesto passa pelo mesmo leitor que lê o catálogo publicado, então um manifesto malformado é recusado nomeando o mesmo campo dos dois lados.

0.24.x​

0.24.0mudança

O único arquivo que o overpower escreve sobre o próprio conteúdo virou YAML. O catalog.toml virou catalog.yaml dentro da wheel, e o leitor que o decodifica passa por um módulo sancionado que responde object.

Nada responde diferente: o list, o install e o doctor imprimem o que imprimiam, byte a byte, e os mesmos arquivos aterrissam em disco. O que a mudança compra é um leitor. Ela custa uma garantia: o TOML não tinha tipo de chave além de string, então uma chave de tabela passa a ser conferida onde antes era convertida.

0.24.0correção

Uma descrição de skill escrita como bloco YAML deixou de chegar com o marcador de bloco dentro do texto. O description: > produzia "> primeira metade segunda metade", porque o frontmatter era lido por um parser escrito à mão em vez de por YAML. O parser feito à mão sumiu, e ele era invisível enquanto o produto só lia o próprio conteúdo.

0.23.x​

0.23.0mudança

O site de documentação passou a ser canônico, e o README.md encolheu para apontar para ele. As seis páginas da barra lateral de contribuição passaram a carregar prosa de verdade: o laço de desenvolvimento e os hooks locais, a doutrina de testes, como uma tela é testada por snapshot, o mapa de módulos e as duas raízes irmãs, como o conteúdo vendorizado é curado, e como um lançamento publica.

0.22.x​

0.22.0novidade

O --from passou a responder a pergunta que vem antes do nome, o que este repositório oferece? O list --from <url> sem seletor nenhum imprime a vitrine daquele repositório num comando, e o install --from <url> sem seletor abre o mesmo assistente que todo mundo já conhece, com o catálogo remoto no lugar do embutido.

A vitrine é ancorada: ela anda por <repositório>/skills/** mais <repositório>/.overpower/mcp/*.toml, e ignora o subcaminho da URL por inteiro, porque uma oferta é propriedade do repositório e não do caminho que alguém colou. O preço é declarado em vez de escondido, e 2 dos 75 SKILL.md medidos ficam fora da âncora e continuam instaláveis pelo nome.

0.21.x​

0.21.4correção

Um arquivo de configuração carregando a mesma chave duas vezes é recusado em vez de escrito. Todo parser medido resolve chave repetida pela última ocorrência, e o enxerto aterrissava na primeira: o install saía 0, reportava 1 write · 1 file, nomeava a chave no plano, e o runtime seguia lendo o valor antigo do usuário.

A recusa é estreita por construção: ela cobre as chaves que o enxerto de fato consulta para decidir onde aterrissar, e nada além disso.