feat: configurado o Jhonny.command para executar commit e push aut

- configurado o Jhonny.command para executar commit e push automaticamente quando houver alteracoes
- corrigida a cópia do JSON resumido dos perfis para a área de transferência

Resumo:
- 2 arquivos alterados
- 0 novos
- 2 modificados
- 0 removidos

 2 files changed, 99 insertions(+), 7 deletions(-)

Arquivos:
  - admin/Jhonny.command
  - code/cep-plugin/main.js
This commit is contained in:
João Henrique
2026-09-09 11:47:41 -04:00
parent 8e74835f1e
commit 1ff86f9c3b
2 changed files with 99 additions and 7 deletions
+3 -3
View File
@@ -14,8 +14,8 @@
# publicar painel quebrado.
#
# Uso:
# admin/Jhonny.command ciclo completo (pede confirmacao pro push)
# AUTO=1 admin/Jhonny.command nao pergunta antes do push
# admin/Jhonny.command ciclo completo (commit + push automaticos)
# AUTO=1 admin/Jhonny.command mantido por compatibilidade
# SKIP_BUILD=1 admin/Jhonny.command pula o build (so commit+push)
# SKIP_PYTHON=1 admin/Jhonny.command repassado ao PremiereMCP.command
# SKIP_RAG=1 admin/Jhonny.command repassado ao PremiereMCP.command
@@ -42,6 +42,6 @@ else
fi
step "2/2 - deploy.command (commit + push)"
"$ADMIN/deploy.command" || die "deploy.command falhou"
AUTO=1 "$ADMIN/deploy.command" || die "deploy.command falhou"
ok "Jhonny.command concluído"
+96 -4
View File
@@ -477,13 +477,105 @@ function tipoVideoCancelar() {
function tipoVideoCopiarJson() {
try {
var json = JSON.stringify({ tipo_de_video: tipoVideoDoFormulario() }, null, 2);
var copia = childProcess.spawn("pbcopy");
copia.stdin.end(json);
showToast("ok", "Configuração copiada em JSON para a IA.");
var tipo = tipoVideoDoFormulario();
var resumo = {
perfil_de_video: tipo.nome,
objetivo: {
principal: tipo.objetivo,
secundario: tipo.objetivo_secundario,
publico: tipo.publico,
mensagem: tipo.mensagem
},
narrativa: {
tipo: tipo.tipo_narrativa,
foco: tipo.foco_narrativo,
storytelling: tipo.storytelling,
estrutura: tipo.estrutura
},
emocao: {
objetivo: tipo.emocao,
intensidade: tipo.intensidade,
tom: tipo.tom,
construcao: tipo.construcao_emocao
},
formato: {
canais: tipo.canais,
proporcao: tipo.proporcao,
duracao_minima_segundos: tipo.duracao_minima,
duracao_maxima_segundos: tipo.duracao_maxima_segundos,
ritmo: tipo.ritmo
},
prioridades: tipo.prioridades,
elementos_de_edicao: {
broll: tipo.usa_broll,
legendas: tipo.usa_legendas,
textos: tipo.usa_textos,
graficos: tipo.usa_graficos,
zoom: tipo.usa_zoom,
cortes: tipo.cortes,
orientacao_de_broll: tipo.broll,
textos_e_legendas: tipo.texto
},
audio: {
musica: tipo.usa_musica,
intensidade_da_musica: tipo.intensidade_musica,
prioridade_da_voz: tipo.prioridade_voz,
tratamento: tipo.som
},
regras_de_edicao: tipo.diretriz,
restricoes: tipo.restricoes,
criterios_de_qualidade: tipo.qualidade
};
copiarTextoParaAreaDeTransferencia(JSON.stringify(resumo, null, 2));
} catch (erro) { showToast("err", erro.message); }
}
function copiarTextoParaAreaDeTransferencia(texto) {
function copiarComSelecaoDoPainel() {
var area = document.createElement("textarea");
area.value = texto;
area.setAttribute("readonly", "readonly");
area.style.position = "fixed";
area.style.left = "-9999px";
area.style.top = "0";
document.body.appendChild(area);
area.focus();
area.select();
var copiado = false;
try { copiado = document.execCommand("copy"); } catch (_) { copiado = false; }
document.body.removeChild(area);
if (copiado) showToast("ok", "JSON resumido copiado para a área de transferência.");
else showToast("err", "Não foi possível copiar o JSON. Selecione e copie manualmente.");
}
try {
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(texto).then(function () {
showToast("ok", "JSON resumido copiado para a área de transferência.");
}).catch(function () { copiarComPbcopy(texto, copiarComSelecaoDoPainel); });
return;
}
} catch (_) {}
copiarComPbcopy(texto, copiarComSelecaoDoPainel);
}
function copiarComPbcopy(texto, fallback) {
try {
var copia = childProcess.spawn("pbcopy");
var finalizado = false;
function concluir(copiado) {
if (finalizado) return;
finalizado = true;
if (copiado) showToast("ok", "JSON resumido copiado para a área de transferência.");
else fallback();
}
copia.once("error", function () { concluir(false); });
copia.once("close", function (codigo) { concluir(codigo === 0); });
copia.stdin.write(texto, "utf8");
copia.stdin.end();
} catch (_) { fallback(); }
}
// ---- Análises ---------------------------------------------------------------
// Aba que lê o banco de análises (.jhonny/analises.db) já produzido pelo
// Scanner e mostra/copiar os dois J-SOM: som (transcrição por cena) e