Skip to content

Get B-rolls v2.3.7 — Engenheiro de Vídeo

Choose a tag to compare

@engenheirodevideo engenheirodevideo released this 16 Sep 19:05
· 202 commits to main since this release
9421472
  • Adiciona variáveis opcionais que fixam caminhos de ferramentas: GB_YTDLP_PATH, GB_VENV_PATH, GB_FFMPEG_PATH e GB_FFPROBE_PATH. Valem tanto pelo ambiente do processo quanto pelo .env da skill ou por python3 scripts/gb.py --env-file CAMINHO <subcomando> …, com --env-file na raiz do parser, antes do subcomando.
  • Define a precedência: variável explícita vence a descoberta atual. Com a variável ausente ou vazia, o comportamento é idêntico ao anterior — .venv/Scripts e .venv/bin para yt-dlp, PATH para ffmpeg/ffprobe.
  • Recusa caminho inválido em vez de voltar em silêncio à descoberta: um destino inexistente, sem permissão de execução ou, no caso de GB_VENV_PATH, que não seja diretório, encerra o comando com erro nomeando a variável e o caminho.
  • doctor passa a listar os pins ativos em tool_paths, uma linha por variável, e reflete o pin em executables. Sem variáveis definidas, tool_paths sai vazio.
  • Não há GB_PYTHON_PATH: o código não reinvoca o interpretador Python em nenhum ponto.
  • Adiciona tests/test_env_paths.py com 16 regressões offline de precedência, padrão inalterado, erro de caminho inválido e layouts .venv POSIX e Windows.
  • Torna a CLI autoexplicativa: help em todos os subcomandos e argumentos, --version na raiz e doctor com veredito summary (ok, missing com o comando que resolve, optional) além de get_brolls e python — a chave runtime passou a se chamar python.
  • Nomeia o instalador no erro de yt-dlp ausente e separa "FFmpeg/ffprobe não encontrado" de "arquivo/intervalo inválido", apontando doctor nos dois casos.
  • Adiciona o comando de plugin /get-brolls-setup (commands/get-brolls-setup.md), que executa --check, o instalador do sistema e o doctor pela raiz do plugin e reporta o veredito em uma linha.
  • Documenta o acionamento do plugin (contexto, /get-brolls:get-brolls, /get-brolls-setup) e acrescenta o bloco "Primeiro B-roll em 5 minutos" nos dois READMEs, com fonte sem chave, servidor local do Storyboard e saída esperada.
  • Os dois SKILL.md passam a mandar servir brolls/ em 127.0.0.1:8767 e avisar que file:// pode desativar o salvamento local antes da exportação do JSON.
  • Substitui a description dos dois SKILL.md por uma descrição bilíngue com o que a skill faz, quando acioná-la e o que está fora de escopo; os READMEs distinguem a skill de coletores genéricos de download.
  • Troca os cinco marcadores do teste do espelho por um contrato estrutural: corpo da raiz e do espelho comparados linha a linha, com os caminhos ${CLAUDE_PLUGIN_ROOT} normalizados e apenas a seção "Instalação e contexto" autorizada a divergir.
  • Reescreve GEMINI.md como configuração real: o Gemini CLI carrega GEMINI.md a partir do diretório de trabalho, então o roteador precisa ser importado por @/caminho/absoluto/.../SKILL.md no GEMINI.md do usuário.
  • Os dois SKILL.md mandam ler o CHANGELOG quando o doctor reportar uma versão diferente da documentada.
  • SECURITY ganha a tabela de egress (instalação, execução e o que nunca sai da máquina) e a declaração de ausência de telemetria.
  • Os instaladores explicam a falha do pip: informam o Python em uso e a faixa validada do conjunto fixado (3.11–3.13), continuando fail-fast. A matriz de CI segue em 3.11/3.13 porque pycryptodomex==3.23.0 ainda não publica wheel cp314.
  • Adiciona .github/ISSUE_TEMPLATE/bug_report.md (SO, versão do Python e saída completa do doctor), config.yml com issues em branco habilitadas e PULL_REQUEST_TEMPLATE.md com o bloco de verificação do AGENTS.
  • Adiciona .github/workflows/release.yml: em tags v*, extrai a seção da versão no CHANGELOG e publica a release pelo gh, sem sobrescrever uma release existente e sem novas actions de terceiros.
  • Documenta que skills/ e .claude-plugin/ são artefatos do plugin e podem ser omitidos ao copiar para o Codex, e registra no GUIDE a permissão opcional python3 */gb.py *.
  • Aceita GB_FONT_FILE no .env (fonte TrueType do contact sheet dos helpers Bash opcionais) e faz o erro de variável desconhecida nomear a variável recusada e o conjunto aceito.
  • Torna AGENTS.md o hub principal do repositório: uma tabela "Mapa do repositório" roteia cada público — operar a skill (SKILL.md e o espelho do plugin), instalação por agente (Codex, skill e plugin do Claude Code, Gemini CLI), GUIDE, QUALITY, CONTRIBUTING, SECURITY e CHANGELOG — sem remover nenhuma regra de manutenção existente. CLAUDE.md e GEMINI.md viram roteadores finos que apontam primeiro para o hub, e os dois READMEs nomeiam AGENTS.md como índice de agentes e mantenedores.
  • Adiciona o subcomando status --project, que responde "onde estamos?" lendo o estado já gravado (manifesto, candidatos, decisões e journal) e devolve contagem e lista de IDs por etapa: candidatos encontrados, prévias geradas, decisões pendentes/aprovadas/rejeitadas, itens com permit registrado, itens entregues e verificados, além do próximo passo do fluxo. É somente leitura: não grava manifesto, candidatos, prévias, clipes nem eventos.
  • Padroniza o relato de progresso: search, resolve, preview, review, import-review, permit, fetch e verify passam a devolver um campo summary com uma linha em português no formato verbo + objeto + resultado. O campo é aditivo — nenhuma chave existente muda de nome, tipo ou posição.
  • Documenta o status e a convenção do campo summary no GUIDE, acrescenta uma frase sobre status --project na seção "Revisão e entrega" dos dois SKILL.md e cita o comando na seção de terminal dos dois READMEs.
  • Fixa o padrão editorial literal primeiro nos dois SKILL.md, no GUIDE e nos READMEs: o material padrão é footage, print ou imagem real do fato, pessoa, produto, notícia ou tela que a narração cita; bancos de stock (Pexels/Pixabay) entram somente quando o usuário pedir stock explicitamente.
  • Registra a divisão de responsabilidade editorial: as condições de uso do material são de quem produz o vídeo; a skill responde pela fidelidade/literalidade e pelo registro de origem de cada asset. O fluxo de permit e proveniência continua sendo o mecanismo desse registro, sem alteração de lógica.
  • Adiciona tests/test_status.py (9 regressões offline do status, do campo summary e da garantia de somente leitura) e três regressões do hub em tests/test_repository.py.

Correções da revisão tripla

  • status passa a ser somente leitura de verdade: abre o ledger sem criar brolls/candidates, previews e clips, relata uma gravação interrompida como journal.recovered_write: "pending" sem concluí-la e recusa um projeto inexistente com "Projeto não encontrado em …; nenhum arquivo foi criado.", sem escrever nada — nem diagnóstico.
  • status deixa de pedir a trava exclusiva do projeto: agora responde mesmo durante um fetch em andamento, em vez de falhar com "Outro comando está usando este projeto".
  • status deixa de morrer com o projeto: RULES.md inválido vira rules_error no relatório, events.jsonl e references.json corrompidos degradam para contagem com error, e uma mudança de formato-alvo nas regras vira format_pending mais um aviso de que o próximo comando invalidará as aprovações.
  • release.yml ganha portões antes de publicar: confere __version__ contra a tag, roda python3 -m unittest discover -s tests, extrai a seção do CHANGELOG por comparação literal (a versão não é mais tratada como expressão regular) e marca --prerelease quando a tag tem hífen.
  • Restaura as GitHub Actions fixadas nas v7 (actions/checkout 7.0.1 e actions/setup-node 7.0.0) que uma alteração anterior havia rebaixado para v4, e passa a usar o mesmo checkout no release.yml. A regressão compara apenas a referência fixada por SHA, sem exigir o comentário da versão.
  • Os pins GB_*_PATH resolvem para caminho absoluto antes de validar, então um valor relativo não muda de significado conforme a pasta atual; um diretório fixado informa "não é um arquivo executável"; e GB_VENV_PATH sem yt-dlp dentro falha nomeando a variável, a pasta e os layouts procurados, em vez de cair em silêncio no PATH.
  • doctor fica resiliente a pin inválido: em vez de encerrar com erro, publica o pin quebrado em summary.missing com a mensagem do erro, sugere o instalador pelo caminho absoluto da skill e acrescenta o bloco resolved com o executável absoluto realmente usado por ferramenta. Os demais comandos continuam falhando de imediato.
  • O teste do espelho passa a cobrir também a seção "Instalação e contexto": só linhas de mecânica de instalação podem divergir da raiz, a indentação conta e uma linha que normaliza para vazio falha em vez de sumir.
  • Ajustes de relato: o summary de search mantém a observação do provedor, approve e reject ganham a própria linha, singular e plural concordam com as contagens, preview diz quando gerou somente referência estática e resolve recusa --file/--url vazios nomeando a opção.