Changelog
Mudanças do Alfameta DB Studio e da plataforma sql.alfameta.agr.br.
Regra de manutenção
Toda mudança de versão deve atualizar esta página, o README.md e, quando envolver publicação, o server/deploy/DEPLOY.md.
Cada item novo precisa informar data/hora em America/Cuiaba, objetivo, comportamento visível para o usuário, atalhos novos e exemplos práticos quando houver.
Versão 1.4.26
29\06\2026 11:14:00 -04:00 - America/Cuiaba
- Topo com barra de menu (dropdowns) + barra enxuta: o topo deixou de ser
uma única barra lotada que cortava opções quando a janela estreitava. Agora há uma
barra de menu com listas suspensas —
Conexão,SQL,Ferramentas,ExibireAjuda— e, abaixo dela, uma barra enxuta só com o essencial de 1 clique: o combo deConexão+ Atualizar,Executar (F5)/Cancelar, o combo deCliente+Restaurar basee o login à direita. - Nada some mais: Nova aba, Formatar, Salvar SQL, Histórico, Notebook Debug, Assistente, Tema, configurações de MySQL/PostgreSQL, PostgreSQL via SSH, Clientes/Restaurar backup, Analisar log de transação e Novidades/Changelog continuam todos acessíveis — agora organizados nos menus. O combo de conexão também encolhe junto com a janela.
Versão 1.4.25
27/06/2026 03:10:00 -04:00 - America/Cuiaba
- Notebook Debug — parâmetros com
default null: corrigido o "Column '...' not found" que derrubava os parâmetros. A leitura da assinatura estava colando odefault nullno TIPO do parâmetro (ex.: tipo viravainteger default null), e oCREATE VARIABLEdo prelúdio quebrava com "Syntax error near 'default'" — como é erro de sintaxe, o SQL Anywhere rejeitava o lote inteiro e NENHUM parâmetro era criado. Agora o tipo e o default são separados corretamente; todos os parâmetros são semeados.
Versão 1.4.24
27/06/2026 02:05:00 -04:00 - America/Cuiaba
- Notebook Debug — variáveis locais da procedure: corrigido
"Column '...' not found" em
IF/SETque usam variáveis declaradas no corpo (declare <var> <tipo>, não parâmetros). Agora essas variáveis também são criadas como variáveis de conexão no prelúdio, e a etapa dedeclarelocal vira um aviso inofensivo.
Versão 1.4.23
27/06/2026 01:20:00 -04:00 - America/Cuiaba
- Notebook Debug — re-execução das #temp: ao rodar de novo, as etapas de
SELECT INTO #tempdavam "Item '#CN' already exists". Agora o drop de colisão roda em execução separada antes (a#tempprecisa ficar sozinha no comando para sobreviver), então dá pra reexecutar à vontade. - Notebook Debug — ramos colados sem ';': corrigido "Syntax error near
'elseif'" quando o último statement de um ramo (ex.: um UPDATE) vinha colado ao
elseif/elsesem ponto e vírgula — agora são separados em etapas. - Restaurar backup — extrator embutido: o app passa a acompanhar o
UnRAR.exe, então a restauração extrai o.rarmesmo em máquinas sem WinRAR/7-Zip instalados (nunca falta extrator).
Versão 1.4.22
27/06/2026 00:30:00 -04:00 - America/Cuiaba
- Notebook Debug — temporárias
#temppersistem entre as etapas: corrigido o Table '#CN' not found nas etapas seguintes. A causa (confirmada no servidor real): a contagem/amostra automática (select count/top 200) era anexada ao MESMO comando doSELECT INTO #temp, e o SQL Anywhere descarta a temporária ao fim do request quando ela é referenciada no mesmo batch. Agora a inspeção roda em execução separada e a#tempsobrevive para as próximas etapas.
Versão 1.4.21
26/06/2026 23:40:00 -04:00 - America/Cuiaba
- Reconexão automática: depois de restaurar uma base (o servidor reinicia), a conexão ficava "The connection has been disabled" e era preciso fechar e abrir o app. Agora, ao executar, o app detecta a conexão caída, mostra "reconectando...", reconecta sozinho e reexecuta — segue o trabalho sem reiniciar nada.
Versão 1.4.20
26/06/2026 22:55:00 -04:00 - America/Cuiaba
- Usa a base local primeiro: ao restaurar, o app olha antes a pasta local — se já existe uma versão extraída, ele usa a mais recente (rápido, sem ir à rede). A seta do botão tem "Buscar o mais recente na REDE" para forçar baixar o backup novo.
- Para o serviço ativo antes de subir: se já há um servidor com o mesmo nome
rodando, o app o derruba antes (evita "A database server with that name has already
started"). Comando configurável (padrão
dbstop). - Combo pesquisável: digite para filtrar o cliente na barra superior (útil quando há muitos), selecione e mande restaurar.
Versão 1.4.19
26/06/2026 21:50:00 -04:00 - America/Cuiaba
- Restaurar pela tela principal: quando há clientes cadastrados, aparece um combo de clientes + botão "Restaurar base" na barra superior. É só selecionar o cliente e mandar restaurar — o progresso aparece na barra de status e roda em segundo plano (dá pra continuar trabalhando / trocar de cliente).
- Extrator automático: a restauração agora detecta sozinha o
UnRAR.exe/Rar.exe(WinRAR) ou o7z.exe(7-Zip) — não precisa mais configurar o caminho na primeira vez. - Progresso em segundo plano: barra de andamento e log durante a restauração; dá pra fechar a janela de clientes que ela continua preparando a base.
Versão 1.4.18
26/06/2026 20:30:00 -04:00 - America/Cuiaba
- Clientes / Restaurar backup (Config → Clientes / Restaurar backup): cadastre
cada cliente (caminho de rede dos backups, pasta local, nome do serviço, base/dicionário, DSN)
e, com um clique em Restaurar último backup, o app pega o
.rarmais recente da rede, copia para a pasta local, extrai, localiza a base/dicionário, sobe o serviço e restaura o dicionário — com log de progresso. Os comandos do extrator/serviço/dicionário são configuráveis (placeholders{archive} {outdir} {service} {db} {dictionary}). - Notebook Debug — ramos IF/ELSE: corrigido o Syntax error near 'else'
em etapas de INSERT/UPDATE dentro de
if … then … else … end ifsem ';' nos ramos. Agora os ramos then e else viram etapas separadas e válidas. - Procedure/função mais legível ao abrir: ao carregar a definição para edição, o app insere uma linha em branco entre os blocos (um update/insert/select por bloco), sem reformatar o resto — preserva indentação e conteúdo.
Versão 1.4.17
26/06/2026 18:40:00 -04:00 - America/Cuiaba
- Notebook Debug — passo a passo de ponta a ponta: reescrito o motor de
execução das etapas (validado contra o servidor real). Etapas
IF/ELSEIFagora são avaliadas como um SELECT (em vez de quebrar com Syntax error near ';'); os parâmetros da procedure viram variáveis de conexão (botão Parâmetros para informar valores — ex.: CodEmpresa, CodConfirmacaoNegocio), então osSETe osIFque os usam funcionam; e a criação da tabela temporária faz um drop tolerante antes, eliminando o Item já existe ao reexecutar ou quando duas procedures usam o mesmo nome. - Fechar várias abas: o menu de contexto da aba ganhou Fechar as outras, Fechar abas à direita, Fechar abas à esquerda e Fechar todas.
- Reordenar resultados pelo teclado: Ctrl+Shift+↑/↓ move o resultado atual para cima/baixo (complementa o arraste na lista lateral).
Versão 1.4.16
26/06/2026 16:05:00 -04:00 - America/Cuiaba
- Notebook Debug — execução das etapas: a 1ª etapa
(
declare local temporary table Dados) dava Syntax error near 'declare' porqueDECLARE LOCAL TEMPORARY TABLEnão roda fora de um bloco/procedure — e, como a tabela não era criada, todas as etapas seguintes falhavam com Table 'dados' not found. Agora a etapa é executada comoCREATE LOCAL TEMPORARY TABLE ... ON COMMIT PRESERVE ROWS, criando a tabela e preservando as linhas entre as etapas. O passo-a-passo do debug funciona de ponta a ponta.
Versão 1.4.15
26/06/2026 15:20:00 -04:00 - America/Cuiaba
- Navegador de resultados: ao executar vários comandos, aparece uma lista lateral (à direita dos resultados) com o título resumido de cada um — Resultado 1 — Cliente — 97 linha(s), etc. Clicar em um item rola direto até ele e o destaca como ativo; clicar num bloco também o marca na lista.
- Reordenar resultados: arraste um item na lista lateral para mudar a posição dos blocos (por exemplo, trazer o 6º resultado para o topo para analisar primeiro). É só ordem de análise — não reexecuta nada.
Versão 1.4.14
26/06/2026 14:10:00 -04:00 - America/Cuiaba
- Notebook Debug — correção definitiva do SplitterDistance: a exceção
SplitterDistance deve ficar entre Panel1MinSize e Width - Panel2MinSizeainda ocorria porque o divisor interno nascia com largura padrão (~150px) menor que seus mínimos. Os mínimos foram reduzidos (40/60) e a posição confortável é aplicada só quando a aba já tem largura real. Abrir/analisar procedure em Notebook Debug não trava mais. - Caixa de pesquisa permanente: uma barra de busca fixa no topo da área central abre a pesquisa global (a mesma do Ctrl+K) já filtrando pelo que você digitar — tabelas, views, procedures, funções, triggers, conexões e ações.
- Painel "Marcadores": só aparece quando a aba atual tem marcadores; sem marcadores, ele some e a lista de consultas salvas ocupa todo o espaço.
Versão 1.4.13
26/06/2026 11:30:00 -04:00 - America/Cuiaba
Correções
- Ordenação de colunas de data: colunas
DATE/TIMESTAMPagora ordenam cronologicamente. Antes, como o valor era comparado como texto,31/10/2014vinha antes de30/06/2020. Clique no cabeçalho para alternar crescente/decrescente. - PostgreSQL via SSH: a descoberta de bancos parou de falhar com
printf: usage/base64: invalid input. O comando remoto passou a ser enviado como um único argumento, preservando as aspas ao ser interpretado pelo shell do servidor. - Notebook Debug: corrigido o erro
SplitterDistance deve ficar entre Panel1MinSize e Width - Panel2MinSizeao abrir/analisar uma procedure em telas/abas estreitas.
Resultados e suporte
- Ver todos os resultados: ao rodar vários SELECTs, a área de resultados agora rola verticalmente e dá acesso a todas as grades (antes só ~3 apareciam). Cada grade mantém uma altura padrão e pode ser ampliada, recolhida ou fechada de forma independente.
- Copiar mensagem de erro: a mensagem do resultado (incluindo o erro com o SQLSTATE) agora é copiável — botão direito no cabeçalho do resultado (Copiar mensagem / Ver mensagem...) e duplo-clique na barra de status. Facilita acionar o suporte.
Editor
- Auto-join no
ON: o preenchimento automático da condição de junção por chave (que já funcionava apósWHERE) agora também dispara apósJOIN ... ON. Continua disponível manualmente comCtrl+J. - Ponto e vírgula automático: ao concluir um
SELECTsimples de uma tabela (ou uma chamadaEXEC/CALL) e pressionar Enter, o editor adiciona;ao final, marcando o comando como independente. Não acontece se a linha ainda espera continuação (termina emwhere,join,on, operador, etc.).
Pesquisa global (Ctrl+K)
- Religada a pesquisa geral em Ctrl+K: encontra e abre tabelas, views, procedures, funções, triggers, conexões e ações/menus (Nova aba, Executar, Formatar, Histórico, Notebook Debug, listagens F7-F10). A tela já existia, mas o atalho não estava ligado — por isso não aparecia.
Login
- O sistema passou a exigir login: na primeira utilização o login é solicitado e, enquanto não houver um usuário identificado, a execução de comandos fica bloqueada com um aviso para entrar. Quem já entrou uma vez continua trabalhando normalmente (inclusive offline, com reconexão automática e sincronização da auditoria).
Versão 1.4.12
25/06/2026 17:56:27 -04:00 - America/Cuiaba
Notebook Debug nativo - primeiro MVP
- Nova ação Notebook Debug na toolbar cria uma aba de análise a partir da procedure ou SQL aberto.
- O menu do editor ganhou Criar Notebook Debug; com seleção usa só o trecho selecionado, sem seleção usa a aba inteira.
- O Object Explorer ganhou Analisar em Notebook Debug para procedures/functions, carregando a definição e abrindo a análise sem destruir a aba original.
- A aba mostra timeline lateral, detalhe da etapa e comandos Executar próxima, Executar até aqui, Executar tudo, Reiniciar e Ver SQL.
Parser inicial para SQL Anywhere
- Core ganhou modelos de notebook: documento, parâmetros, etapas, execução, alertas e tipos de etapa.
- Tokenizer ignora comentários e strings, preserva linhas de origem e separa comandos por
;. - Parser corta o corpo de
CREATE/ALTER PROCEDUREe reconheceDECLARE LOCAL TEMPORARY TABLE,SELECT INTO #temp,INSERT,UPDATE,DELETE,SET,IF/ELSEIF/ELSE,CALL/EXECeSELECTfinal. - Para alvos
Dadose#temp, o MVP acrescenta inspeção automática comcount(*)etop 200, usando as grades existentes.
Limites do MVP
Ainda não há conexão dedicada de debug, transação/rollback isolado, snapshots completos antes/depois, presets de parâmetros ou Step Into real. Esses itens ficaram documentados para as próximas fases do PRD.
Fluxo inicial:
Abrir procedure -> Notebook Debug -> Executar ate aqui -> ver etapa + preview em grade
Versão 1.4.11
25/06/2026 17:12:08 -04:00 - America/Cuiaba
Correção de encoding ao editar procedures
- Ao abrir procedure, function, view ou trigger para edição, o app detecta padrões de texto UTF-8 interpretado como Windows-1252, como
DEVOLUÇÃO. - O editor corrige automaticamente casos seguros antes de montar o
ALTER, preservando acentos comoSAÍDAeDEVOLUÇÃO. - Antes de executar com F5 ou Ctrl+E, o SQL também passa pela mesma verificação para evitar gravar procedure com acentos corrompidos.
Antes:
'*SA�DA' e '4-DEVOLUÇÃO'
Depois:
'*SAÍDA' e '4-DEVOLUÇÃO'
Assistente e relatório HTML
- O contexto enviado para a IA é normalizado antes do envio, reduzindo respostas que tratavam
Ãcomo se fosse regra de negócio. - A resposta recebida do CLI da IA também é normalizada antes de aparecer no painel e antes de gerar o HTML.
- O prompt do assistente orienta explicitamente que sequências como
Ã,Â,â€e�são problema de encoding.
Versão 1.4.10
25/06/2026 14:42:01 -04:00 - America/Cuiaba
Atualizado em 25/06/2026 15:09:01 -04:00 - America/Cuiaba.
Descoberta PostgreSQL via SSH
- O menu Config → PostgreSQL via SSH passa a listar aliases encontrados no
~/.ssh/config, mesmo sem perfil PostgreSQL salvo. - Ao clicar em um alias sem perfil, o app usa o
sshlocal em modoBatchModee executa uma descoberta read-only no servidor. - A descoberta procura portas PostgreSQL locais por
ss/netstate containers Docker pordocker ps/docker inspect. - Os candidatos encontrados viram túneis temporários; o app usa as credenciais de Configurar PostgreSQL... para listar os bancos.
Exemplo:
Host classificadora no ~/.ssh/config
Config → PostgreSQL via SSH → classificadora (detectar PostgreSQL)
Resultado: bancos PostgreSQL encontrados no Docker aparecem na combo de conexões.
Redimensionamento de resultados
- Cada resultado expandido ganhou uma faixa azul própria para arrastar a altura.
- A faixa fica separada da barra de rolagem horizontal, reduzindo confusão no uso diário.
- O cabeçalho das colunas ficou mais alto para evitar corte de nome/tipo em várias grades recolhidas/expandidas.
Atalhos de produtividade
- F6 soma a coluna atual da grade e fixa o total no rodapé do resultado.
- F7 abre a pesquisa de tabelas.
- F8 abre a pesquisa de procedures.
- F9 abre a pesquisa de funções.
- F10 abre a pesquisa de triggers.
Exemplo:
Clique em ValorTotal na grade e pressione F6.
Resultado: Σ ValorTotal: 3.570.077.964 (392)
Legenda das bolinhas na grade
- Vermelho: coluna de chave primária (PK).
- Amarelo: coluna de chave estrangeira (FK).
- Azul: coluna que participa de índice comum.
Assistente em HTML
- O painel Assistente ganhou a ação Abrir HTML.
- A última resposta da IA é transformada em relatório HTML com títulos, listas, blocos SQL e layout claro para suporte, cliente ou programador.
- O arquivo é criado temporariamente no computador e aberto no navegador padrão.
Versão 1.4.9
25/06/2026 13:47:50 -04:00 - America/Cuiaba
Pacote menor .NET 8 no auto-update
- O auto-update agora prefere a versão menor .NET 8 quando ela está disponível no servidor.
- Se faltar .NET 8 Desktop Runtime x64 ou x86, o instalador do próprio pacote menor é chamado ao aplicar a atualização.
- O rodapé/status explica o motivo do pacote escolhido, incluindo o runtime que será instalado.
Exemplo de status:
Baixando versão menor .NET 8: 50% (1.0 MB de 2.0 MB)
Pacote: versão menor .NET 8 (2.0 MB) - instalará .NET 8 Desktop Runtime x86 ao aplicar
Sybase 32/64 bits
- O app continua respeitando o DSN selecionado manualmente na combo.
Alfameta [32 bits]usaWorker32.exee precisa runtime x86 no pacote menor.Alfameta [64 bits]usaWorker64.exee precisa runtime x64.- Quando a preferência salva for 32 bits e existir o mesmo DSN em 64 bits, o próximo início promove automaticamente para 64 bits.
Indicadores PK, FK e índice na grade
- Cabeçalho da grade mostra bolinha vermelha para chave primária.
- Bolinha amarela identifica coluna de chave estrangeira.
- Bolinha azul identifica coluna participante de índice comum.
- No Sybase ASA 9, a leitura usa
SYSCOLUMN.pkey,SYSFKCOLeSYSIXCOL, refletindo o que aparece no Sybase Central.
Versão 1.4.8
25/06/2026 13:13:53 -04:00 - America/Cuiaba
Marcadores de análise no editor
- Duplo clique na margem esquerda da linha cria uma bolinha vermelha de marcação.
- Duplo clique em uma linha já marcada abre a anotação do marcador.
Ctrl+2atéCtrl+9cria ou move um marcador numerado para a linha atual.- A lista lateral Marcadores mostra atalho, linha e preview/anotação. Duplo clique nela navega direto para a linha.
- Os marcadores são salvos junto com a aba, para continuar a análise depois de fechar e abrir o aplicativo.
Exemplo:
Ctrl+2 na linha do calculo de PIS
Anotacao: "validar aliquota quando UF cliente <> UF empresa"
Depois, duplo clique em "Ctrl+2 L597 ..." na lista lateral volta direto para a regra.
Busca no editor com Ctrl+F
- A busca agora ignora maiúsculas/minúsculas por padrão e aceita trecho parcial.
- Mostra uma lista de ocorrências com linha, coluna e preview.
- Os botões anterior/proximo navegam por ocorrência sem precisar fechar a janela.
Execução por seleção
F5eCtrl+Eexecutam somente o trecho selecionado quando houver seleção no editor.- Sem seleção, continuam executando o script inteiro da aba.
SELECT
NomeFantasia,
TipoCliente,
Endereco
FROM Cliente;
Resultados, grade e navegação SQLDbx
- Resultados podem ser recolhidos/expandidos pelo cabeçalho, pelo botão
-/+ou por duplo clique no título. - Somatórios ficam visíveis quando o resultado está recolhido.
- O estado recolhido/expandido é salvo na aba.
- Cabeçalho da grade mostra tipo completo em linha separada:
VARCHAR (60),NUMERIC (15,2),INT. - Colunas de tabela simples podem mostrar metadados de catálogo quando o banco/driver informar.
- Menu da grade gera
SELECT,INSERT,UPDATE,DELETE,WHERE IN,ORDER BY,GROUP BYeCREATE TABLE. - Copy Special e Export To Excel respeitam seleção de célula, coluna, várias colunas ou linhas.
Abas, atalhos e contexto do editor
Ctrl+Ncria nova aba e já foca o editor.- Abas ganharam botão
x; clique no ícone pede confirmação, enquanto fechamento pelo menu, botão do meio ouCtrl+Wfecha direto. F7/F8/F9/F10abrem pesquisa de tabelas, procedures, funções e triggers.- Botão direito em nome de tabela no editor abre
SELECT * FROM ...,Executar SELECT - consultae geração de scripts.
Download, versão menor e auto-update
- A página publica o ZIP portátil e o ZIP menor dependente de .NET 8, com tamanho real de cada arquivo.
- A versão menor inclui
Instalar-AlfametaDbStudio.cmd, que verifica/instala .NET 8 Desktop Runtime x64 e x86 automaticamente. - O auto-update baixa em segundo plano, mostra pacote escolhido, tamanho, porcentagem, velocidade e ETA, e pergunta para instalar quando terminar.
Web, documentação e deploy
- Logo/ícone da aplicação aplicados no executável, favicon e cabeçalho web.
index.htmlpassou a ser servido sem cache para evitar página antiga no navegador.- Changelog HTML criado e linkado na tela de download.
- README e DEPLOY documentam os dois pacotes, comandos de publicação e validação pós-deploy.
Versão 1.4.6 e 1.4.7
25/06/2026 - histórico registrado durante a estabilização de deploy
- Publicação da versão no servidor em
/opt/alfametasql. - Correção da página de download para exibir logo e informações de tamanho dos pacotes.
- Validação de
/api/version,/downloade/download/net8. - Documentação do fluxo de upload, Docker Swarm e validação pública.
Versões 1.4.4 e 1.4.5
24/06/2026 a 25/06/2026 - histórico reconstruído
- Primeira página pública em
sql.alfameta.agr.brcom download do cliente Windows. - Exibição da versão publicada e data de build.
- Login no painel web para auditoria e administração.
- Preparação da alternativa de pacote menor com .NET 8 instalado no ambiente.
Base inicial do Alfameta DB Studio
Histórico anterior agrupado porque ainda não havia changelog formal