Histórico de releases
Versões disponíveis
A maior versão verificada aparece primeiro. Releases anteriores permanecem disponíveis para compatibilidade e recuperação.
Catálogo atualizado em 13/10/2026
Versão 2.1.3
Publicada em 13/10/2026
Atualizada em 13/10/2026
Versão atual
# GTI IoT App 2.1.3
Suporte a impressoras da família Eltron (Zebra LP/TLP 2844), que falam **EPL2** e
não ZPL. Encontrado na serigrafia da JJP Plásticos, em 13/10/2026, com a
impressora na bancada.
## Por que era preciso
A TLP 2844 é de 4 polegadas e 203 dpi como a ZD220 — mesmo estoque de etiqueta,
mesmo layout — mas fala outro dialeto. A fila dela no Windows instala como
`ZDesigner TLP 2844`, e o aplicativo escolhia fila térmica procurando "zdesigner"
no nome: selecionava essa impressora para o perfil ZPL e enviava ZPL. Saía papel em
branco, sem erro e sem registro. **O nome do driver mente sobre a linguagem.**
## Incluído
- **linguagem EPL**, com a mesma arte do ZPL — a etiqueta já é uma imagem raster,
então a saída é idêntica ponto a ponto;
- **escolha de fila por linguagem**, não por nome: a família 2844 é reconhecida
como EPL, e o perfil ZPL passa a recusá-la explicitamente;
- **perfil escolhido pela linguagem do trabalho**: escolher Zebra EPL na página
passa a usar o perfil EPL, em vez de sempre o perfil ativo;
- **deslocamento respeitado no EPL**: o ajuste de alinhamento do perfil era
ignorado em silêncio nessa linguagem. Impressora com desalinhamento mecânico
passa a ter conserto por configuração, com recusa — e não corte silencioso —
quando o deslocamento passa da área imprimível;
- **Ctrl+F5** recarrega ignorando o cache. Sem isso, página trocada no servidor
continuava vindo da cópia local, e o sintoma não parecia ter relação com a causa.
## Correções silenciosas, que não davam sinal nenhum
- a tabela de perfis só aceitava `zpl` e `ppla`; o perfil EPL nunca entrava, e a
inserção engolia a violação. Bases existentes são migradas;
- a lista de linguagens estava escrita à mão em **cinco** lugares e cada um recusava
num ponto diferente do caminho. Agora há uma só, e um teste reprova cópias novas.
## Validação concluída
- 386 testes automatizados aprovados e 5 pulados; `ruff check src tests ops` limpo;
- impressão verificada na própria TLP 2844, pelo caminho do usuário final, com
leitura confirmada nas três formas: código de barras, QR e OCR;
- velocidade e densidade medidas na impressora, comparando duas provas.
## Observações
- Requer o servidor com suporte a EPL. Sem isso a opção não aparece na página.
- Velocidade, densidade e intervalo entre etiquetas ainda estão fixos no servidor,
embora o perfil local tenha esses campos. Em cliente com etiqueta ou impressora
diferente, precisarão ser ajustados no código até que passem a vir do perfil.
Windows x64
gti-iot-app_2.1.3_windows-x64.exe · 25.2 MB
4fd0682a52958593808d84566942101c13abca9741fe09b56fd252f488ad5c46
Baixar
Versão 2.1.2
Publicada em 13/10/2026
Atualizada em 13/10/2026
Versão anterior
# GTI IoT App 2.1.2
Uma instância por sessão do Windows. Encontrado em atendimento na JJP Plásticos,
em 13/10/2026: o aplicativo abria de novo a cada clique e o computador do cliente
chegou a ficar com **três ícones na bandeja** — três processos disputando a mesma
base local e a mesma fila de impressão.
## O defeito
A guarda de instância única existia e nunca disparava. `ctypes.get_last_error()`
só devolve valor quando a função é declarada com `use_last_error=True`; com
`ctypes.windll` ela lê o erro que o próprio ctypes guardou, que nunca é
preenchido, e devolve zero. Então `ERROR_ALREADY_EXISTS` jamais era visto e toda
abertura passava como se fosse a primeira.
No mesmo trecho, `CreateMutexW` estava sem `restype`: o identificador de 64 bits
voltava truncado, e o fechamento operava sobre um valor que não era o do mutex.
## Incluído
- **uma instância por sessão**, com o mutex nomeado funcionando de verdade;
- **abrir duas vezes deixa de ser erro**: era registrado como
`application_start_failed`, com rastro de exceção, poluindo justamente o log de
quem foi investigar. Agora sai em silêncio, com uma linha de informação.
## Validação concluída
- 377 testes automatizados aprovados e 5 pulados; `ruff check src tests ops`
limpo. Quatro testes novos exercitam o mutex de verdade no Windows, e o
primeiro **reprova a versão anterior**, que aceitava a segunda instância.
## Observações
- Quando a segunda abertura é recusada, o aplicativo sai em silêncio. O ideal
seria trazer a janela existente para frente, já que a pessoa clicou porque quer
vê-lo; isso mexe no shell e ficou para depois.
Windows x64
gti-iot-app_2.1.2_windows-x64.exe · 25.2 MB
7369367aceecc2fe5ae8dd6a49298a56b012c8afa3fb498c23400fd180c45936
Baixar
Versão 2.1.1
Publicada em 13/10/2026
Atualizada em 13/10/2026
Versão anterior
# GTI IoT App 2.1.1
A 2.1.0 consertou a tela e o log, e a impressão continuou falhando na estação da
JJP Plásticos. A causa era outra e mais abaixo, e atingia **todas** as chamadas
HTTPS do aplicativo. Esta versão fecha isso, e mais dois defeitos encontrados no
mesmo atendimento.
## O defeito principal
No mesmo computador, a página de produção abria e a chamada de API morria em
`CERTIFICATE_VERIFY_FAILED — unable to get local issuer certificate`. A diferença
é quem valida: o WebView2 usa o Schannel do Windows, que busca a raiz sob demanda
no programa de raízes da Microsoft; os clientes HTTP usavam o OpenSSL do Python,
que só enxerga o que já está fisicamente na loja de certificados daquela máquina.
Na estação da JJP não havia **nenhuma** raiz Sectigo — nem em `LocalMachine` nem
em `CurrentUser` — e a nossa cadeia é Sectigo Public Server Authentication Root
E46, via ZeroSSL. Sem ativar, a estação não vincula, e a página responde *"Não foi
possível conectar este computador à impressão"*: o mesmo sintoma do defeito
anterior, o que fez parecer que a atualização não tinha mudado nada.
Eram **três** clientes HTTP com saída própria — estação, verificação de
atualização e gateway. Consertar um deixava os outros dois quebrados na mesma
máquina, pelo mesmo motivo, e foi o que aconteceu na primeira tentativa.
## Incluído
- **TLS validado pela cadeia do Windows em todos os pontos de saída**, por um
módulo único. Deixa de depender da loja local de cada estação, o que tornaria
cada computador novo um incidente, e passa a funcionar também atrás de proxy
corporativo que reassina TLS. Sem o pacote disponível, volta ao contexto
padrão, que ainda verifica o certificado — falhar aberto aqui seria desligar a
verificação. Um teste reprova qualquer cliente HTTP novo que esqueça o
contexto;
- **o botão "Verificar atualização" dizia apenas "tente novamente"**. O código
era `except URLError: return _FETCH_ERROR`, sem uma linha de log — e o motivo
real era certificado, não rede, de modo que tentar de novo nunca resolveria.
Agora o motivo vai para o log, separando falha de certificado de falha de
alcance;
- **a tela de login abria no host geral, não no do cliente**. O operador caía no
login central a cada abertura e perdia a empresa escolhida em "Trocar empresa".
Era deliberado, com a justificativa de que sem barra de endereço o operador não
poderia conferir o destino — premissa que caiu quando o shell ganhou barra de
navegação. A origem lembrada passa pela mesma verificação de confiança da
barra, então origem desconhecida ou de outro ambiente cai na raiz do ambiente;
- **log da tela "Configurar impressão"**, que não escrevia nada entre abrir e
fechar. Passa a registrar filas encontradas, perfil e fila escolhidos,
tentativa de gravar, resultado, exceção com rastro, e o motivo quando o botão
se recusa a gravar — dizendo qual das duas caixas está vazia;
- **erro de certificado que se identifica**, na estação e no gateway: deixa de
ser "Servidor indisponível", que manda procurar rede, e passa a dizer que a
cadeia não pôde ser montada nesta máquina, marcado como não transitório;
- **versão no executável**: o instalado não declarava versão nenhuma, e
`FileVersion` voltava vazio, sem como confirmar o que estava na máquina do
cliente. Os três executáveis passam a carregar o recurso de versão, lido da
mesma fonte única que o build confere.
## Validação concluída
- 371 testes automatizados aprovados e 5 pulados; `ruff check src tests ops`
limpo;
- prova contra produção reproduzindo a condição da estação: com loja de confiança
vazia o OpenSSL falha com a mensagem idêntica à do cliente, e pela cadeia do
Windows a mesma URL responde HTTP 200. O cliente real da estação atravessa o
TLS e chega à API.
## Observações
- Importar a raiz à mão em cada estação resolveria o sintoma e não a causa; esta
versão dispensa esse passo.
- A tela de perfil de impressão não teve o comportamento alterado além do log: se
o erro relatado persistir, o log agora o identifica.
Windows x64
gti-iot-app_2.1.1_windows-x64.exe · 25.2 MB
5f2d76b111a2d7209cfbde0a2712a4dd96dfdea07bcb2b15c6eb1776896dc8dd
Baixar
Versão 2.1.0
Publicada em 13/10/2026
Atualizada em 13/10/2026
Versão anterior
# GTI IoT App 2.1.0
Correção da impressão de etiqueta que não funcionava em produção, e dos defeitos
que esconderam a causa. Encontrados em atendimento na JJP Plásticos, em
13/10/2026, com o cliente esperando.
## O defeito principal
A identidade da estação era guardada numa chave única para os três ambientes,
enquanto o endereço do último acesso já era guardado **por ambiente**. Quem
ativava o computador em desenvolvimento e depois apontava para produção ficava
com uma estação que o outro servidor não conhece, e toda chamada autenticada
respondia 404 — para sempre, sem forma de desfazer pela interface.
A página agravava: ela só ativa o computador quando **não há** estação. Havendo
uma inválida, tentava vincular, recebia 404 e desistia pedindo para recarregar a
página, o que nunca resolveria.
Resultado para quem usa: *"Não foi possível conectar este computador à
impressão"* nos botões Zebra e Argox, enquanto o Imprimir PDF funcionava — porque
o PDF não passa pelo aplicativo local.
## Incluído
- **estação separada por ambiente**: desenvolvimento, teste e produção passam a
ter identidade própria, e cada um se ativa sozinho na primeira vez. Vínculo
antigo, sem ambiente, é descartado em vez de aproveitado: não há como saber de
qual servidor ele veio, e adivinhar errado reproduz exatamente o defeito;
- **erro de HTTP que diz onde falhou**: a mensagem passa a trazer método, URL e
um trecho da resposta, e o próprio cliente registra a falha no log. Antes o
log repetia "Servidor respondeu HTTP 404" milhares de vezes sem dizer de onde,
e foi isso que transformou um defeito simples numa investigação de horas;
- **janela "Configurar impressora" que travava**: as caixas de mensagem não
informavam a janela dona e nasciam atrás do diálogo. A tela parecia congelada,
nunca fechava, o perfil não era gravado — e a mensagem que explicaria a falha
ficava escondida;
- **log limpo de novo**: a leitura do status HTTP da navegação usava uma
propriedade que só existe no evento de requisição, e falhava a cada resposta.
Além de a barra de endereço nunca sinalizar erro, o log recebia um rastro de
erro por resposta — mais de setecentos em vinte minutos.
## Validação concluída
- 360 testes automatizados aprovados e 5 pulados; `ruff check src tests ops`
limpo;
- impressão verificada ponta a ponta em produção, na JJP Plásticos: três
etiquetas em Zebra ZD220/ZPL, com a sequência registrada no servidor;
- instalação verificada sobre a 2.0.0, preservando perfil de impressora e
configuração da estação.
## Observações
- Uma estação ativada por uma versão anterior será reativada automaticamente na
primeira impressão após a atualização. Nada precisa ser feito à mão.
- Corrigido também um teste que escrevia e apagava arquivos em
`C:\ProgramData` da própria máquina, o que impedia gerar o instalador sem
elevação e podia remover uma instância real do gateway.
Windows x64
gti-iot-app_2.1.0_windows-x64.exe · 25.2 MB
a6e6ad45ea4d3e55f7978da9bc56cb5a387434141bc3f1f7eea0c560a94801f5
Baixar
Versão 2.0.0
Publicada em 11/10/2026
Atualizada em 11/10/2026
Versão anterior
# GTI IoT App 2.0.0
Impressão de etiqueta da JJP em ZPL na Zebra e PPLA na Argox, com o layout batendo
com o original. Primeira versão principal: o incremento sai de 1.8.19 para 2.0.0
porque a impressão deixa de ser caminho único em PDF e passa a ser escolha do
operador, com calibração própria de cada impressora.
## Incluído
- impressão nativa Zebra/ZPL e Argox/PPLA, além do PDF, com escolha explícita e
memória da última opção;
- layout 100 × 81 mm fiel ao original: fontes, logo, QR Code e Code39, com a
descrição do produto limitada a três linhas para não cobrir lote e quantidade;
- calibração de alinhamento separada do layout e guardada **por impressora** —
na Zebra ZD220 testada, +4 mm corrigiu o corte à esquerda, sem afetar as outras;
- impressão reorganizada em componentes compartilhados pelo aplicativo e pela
linha de comando, o que permite diagnosticar impressora sem recompilar e
reinstalar;
- diálogo do Windows que abria atrás da janela, corrigido;
- autorização de reimpressão **antes** da seleção da impressora, e não depois;
- proteção contra duplicação de impressão;
- campo opcional para vários operadores, preservando quem é o responsável;
- zoom persistente e melhorias de responsividade;
- `ops/releases` para distribuir o mesmo binário nos três ambientes, com
checksum e validação antes da ativação.
## Validação concluída
- 339 testes automatizados aprovados e 5 pulados no aplicativo; `ruff check src
tests ops` limpo;
- 22 testes focados de etiqueta no servidor, mais `manage.py check` e
`makemigrations --check` sem pendência;
- `core.api.v2` com 135 testes e `service_management` com 151, após trazer o
`development` para a branch;
- impressão física na Zebra ZD220 por PDF e por ZPL, com texto no tamanho e na
posição corretos e leitura dos códigos aprovada;
- três pacotes gerados da mesma versão: instalador Windows, e `.deb` amd64 e
arm64 para o Gateway Linux.
## Observações de operação
- a escuridão foi ajustada de 15 para 20 **na configuração da impressora**, de
propósito fora do layout: é característica do ribbon e do papel, não da
etiqueta;
- a calibração fica no perfil de cada impressora e é preservada na atualização.
## Pendente
- validar instalação limpa, atualização e reversão pelo instalador publicado;
- impressão física na Argox OS-214 Plus;
- homologar no Azul antes da promoção ao Laranja.
Windows x64
gti-iot-app_2.0.0_windows-x64.exe · 25.2 MB
fa6298d6c45d3883764a63a60c5383f43882718d776c74abfc7202f93678b17d
Baixar
Versão 1.8.19
Publicada em 27/09/2026
Atualizada em 27/09/2026
Versão anterior
Log detalhado do Gateway V2 via endpoint proprio (sem header), impressao de etiqueta JJP (log por job, selecao de fila), fix de sensor. Instale por cima da versao anterior.
Windows x64
gti-iot-app_1.8.19_windows-x64.exe · 25.2 MB
e02a57afd2ee030b0b1bae5930a0a1f13be0a865f4a608bc36c9558564938bfd
Baixar
Versão 1.0.0
Cadastrada em 19/09/2026
Atualizada em 19/09/2026
Versão anterior
Windows x64
gti-iot-app_1.0.0_windows-x64.exe · 16.5 MB
51e08e61fc27c3ffee9f73e8c482de7452e7c857a23dfb32b2db48a96c273b4a
Baixar