O cronômetro, a claquete e o registro de tempo que o Temporama usa em set de filmagem, extraídos do app e transformados em módulo autônomo. Um arquivo de script, um de estilo, nenhuma dependência. Funciona nesta página, funciona na sua.
atalhos — espaço inicia e pausa · V volta · C claquete · R REC e CORTA · Z zera. Ligue o som: o relógio de set é feito para ser ouvido, não olhado.
É a distinção que dá sentido a todo o resto, e a que mais se perde quando alguém refaz isso do zero: gravar e cronometrar são dois instrumentos diferentes. O material corre com o cronômetro parado, e o cronômetro corre em ensaio que ninguém grava.
Por isso, ao ligar o REC o módulo abre um registro sem duração — que aparece
como GRAVANDO e só fecha no CORTA. Um registro aberto não é dado faltando: é o
estado real de uma tomada em curso. E cada volta do cronômetro carrega a marca
REC do instante em que aconteceu, que é o que depois separa ensaio de
tomada aproveitável.
A claquete é o terceiro instrumento. A batida numera o Take e carimba o timecode de parede — não o start do cronômetro. É esse carimbo que faz a planilha bater com o material na ilha de edição.
Preenchida a Meta em segundos, cada volta se classifica sozinha. Os limiares são os mesmos do app em produção, não uma reinvenção:
| faixa | quando | o que quer dizer |
|---|---|---|
| no alvo | dentro de ±1s da meta | a tomada tem a duração prevista |
| entrando | de 1s a 3s abaixo | curta, mas aproximando — nem acerto nem erro |
| passou | mais de 1s acima | estourou o previsto |
| — | sem meta, ou muito abaixo | não se classifica |
A cor da faixa é cor de estado, nunca cor de dado. Verde, âmbar e vermelho aqui dizem se a volta bateu a meta — não identificam cena, take nem operador. Por isso todo estado vem com palavra junto: quem não separa verde de vermelho lê a mesma informação que os demais.
O CSV sai com as mesmas colunas do Temporama — Cena, Take, Vai, REC,
Horario, TC_Batida, Tempo, Favorito, Operador, Anotacao, Tipo — de propósito: a planilha
exportada daqui abre no mesmo lugar que a exportada do set. Vai com BOM, senão o Excel em
português abre acento quebrado.
O PDF é o relatório do set: cena e take atuais, quantos registros, quantos com REC, quantos marcados como aproveitáveis, o tempo somado, e a tabela completa com o histórico. Ele é montado à mão, em cerca de sessenta linhas, sem nenhuma biblioteca — arrastar 300 KB de dependência para dentro do projeto de quem recebe o módulo contradiria a ideia de ferramenta que se leva embora.
São seis, e nenhuma foi escolhida por gosto. Cada uma passou por um validador antes de entrar, com dois pisos: contraste WCAG do texto sobre o painel, mínimo 4,5:1 (o pior aqui é 14:1), e separação entre as três cores de meta medida em ΔE OKLab, mínimo 8 — inclusive com protanopia e deuteranopia simuladas.
O segundo piso reprovou três paletas na primeira rodada, e sempre no mesmo par: verde e âmbar desaparecem um no outro em protanopia. A saída não foi escurecer, foi puxar o verde para o teal e o vermelho para o carmim — o canal azul é o que o daltonismo preserva. É por isso que nenhum verde aqui é verde puro.
Os números de cada tema estão em PROVA-TEMAS.md, e o validador que os produziu está junto, em validar-temas.py: se você trocar as cores para as suas, rode ele antes — a medida vale mais que a nossa opinião sobre a sua paleta.
Trocar é um atributo: <div id="onde" data-tema="papel">. O
temas.css é opcional — o relogio.css sozinho
já traz o Noite embutido, e quem quiser uma paleta só não carrega o peso das outras cinco.
Dois arquivos e três linhas. Nada mais:
<link rel="stylesheet" href="https://usapi.temporama.com.br/relogio/relogio.css">
<script src="https://usapi.temporama.com.br/relogio/relogio.js"></script>
<div id="onde"></div>
<script>
const rl = new Relogio('#onde', { meta: 30, formato: '24', projeto: 'Meu Curta' });
rl.on('volta', r => console.log(r.classe, r.duracao));
rl.on('batida', r => console.log('take', r.take, 'TC', r.tc));
rl.on('rec', ( ) => console.log('gravando'));
rl.on('corta', r => console.log('fechou com', r.duracao));
rl.registros; // os dados crus, a qualquer momento
rl.csv(); // a planilha como string
rl.baixarPdf(); // o relatório
</script>
Ou baixe e hospede você mesmo: relogio.js ·
relogio.css · LEIA-ME.md ·
VERSAO.txt (com o sha256 de cada arquivo).
Todo o CSS é escopado em .rl e o tema são cinco variáveis
--rl-*: o módulo não repinta a página de quem o recebeu.
Esta é a próxima versão, e ainda não é a que roda no app. O Temporama em produção está no marco v1.44, cujo relógio vive acoplado ao set — importa store, teleprompter, departamentos e fila offline, e conversa por socket. Este módulo é o mesmo relógio desacoplado, e o compromisso assumido em 09/08/2026 é que ele entra no app no próximo lançamento, o v1.45. Até lá, o que está aqui é amostra pública e é honesto dizer isso: é código que roda, não é código que já embarcou.
O que o módulo ainda não faz, e o app faz: sincronizar entre aparelhos por socket, teleprompter acoplado, e a reconciliação de quem estava gravando quando dois aparelhos discordam. Isso é do set, não do módulo — e é a fronteira que separa o que se democratiza do que é da casa.
Sobreviver a uma recarga ele já faz, com { persistir: true } —
e faz melhor que o app: além do registro aberto do REC, guarda os registros inteiros, a
cena, o take e a meta. Vem desligado, porque módulo que escreve no navegador de quem o
instalou sem ninguém pedir é módulo mal-educado. O cronômetro em curso, esse não volta:
performance.now() zera na recarga, e um cronômetro que mente é pior que um
que zera.