A autorização de contas de suporte passa a exigir que o usuário informe o motivo da solicitação no
momento do pedido, na página de login. Este motivo é exibido nas solicitações pendentes listadas
no processo “Administração do sistema > Segurança > Contas de suporte > Solicitações de autorização”
e nos registros de autorizações salvos na telemetria.
O processo “Administração do sistema > Servidores > Servidores” passa a validar que uma porta
configurada como HTTPS não pode ser informada também como HTTP. O cadastro também passa a exigir
que o nome do servidor na rede esteja preenchido caso seja informada uma porta HTTPS, pois
o certificado digital é emitido para o nome de rede público do servidor.
Foi criado o relatório “Administração do sistema > Ferramentas para chaves > Verificação de
integridade das referências” com o objetivo de encontrar inconsistências nas colunas lookup
das tabelas, como chaves inexistentes nas tabelas referenciadas.
O relatório “Administração do sistema > Segurança > Contas de suporte > Histórico de solicitações”
passa a apresentar a coluna “IP do solicitante”, que informa o endereço de IP do usuário de suporte
no momento da solicitação de autorização. O relatório também passa a contar com a opção
“Exibir removidos”. Se selecionada, esta opção exibe as solicitações de autorização de usuários
que não existem mais no sistema. Anteriormente, essas solicitações eram sempre exibidas.
O processo “Administração do sistema > Replicação de dados > Configurações” passa a permitir
testar a conectividade e a autorização das bases de dados configuradas por meio do novo botão
“Testar conexão”.
Engine
Foi criado o método
Classes.prototype.hasChildren
com o objetivo de verificar se uma classe de dados possui classes filhas.
Foi criada a opção forceHttp1 no construtor da classe
XMLHttpRequest
com o objetivo de forçar o uso do protocolo HTTP/1.1, mesmo quando o servidor remoto indica que
versões mais avançadas do protocolo HTTP são suportadas. Essa opção é útil para contornar problemas
na comunicação com servidores que não implementam corretamente a extensão Application-Layer Protocol
Negotiation (ALPN), utilizada na negociação da versão do protocolo HTTP.
O método Connection.fromConfig
passa a utilizar apenas os nomes de rede do servidor cadastrado ao tentar estabelecer conexões
HTTPS. Essa alteração otimiza o estabelecimento da conexão ao evitar tentativas com endereços IP
que sempre falhariam devido à validação do certificado digital do servidor.
Desenvolvimento
O processo de atualização de sistema passa a alertar o usuário caso ele selecione para remoção
colunas que possam ter conteúdo.
Web Framework
Foi criada a propriedade
ViewDefField.prototype.lookupDisplayWidth
com o objetivo de configurar a largura do campo da grade lookup que apresenta os
valores de exibição dos registros pesquisados. O sistema também passa a calcular automaticamente
um tamanho dinâmico com base na largura do campo quando essa propriedade não for configurada
de forma explícita.
Foi criada a propriedade
ViewDefField.prototype.showLookupClass
com o objetivo de indicar se o campo “Classe” da grade lookup deve ser exibido. Por padrão,
o campo “Classe” passa a ser exibido apenas se o campo lookup referenciar uma classe de dados
que possui filhas.
Extensão VS Code
O hover das chaves passa a contar com a opção Show data para as chaves de classes de dados
com cache ativo. Ao clicar nesta opção, os registros da classe são exibidos em uma grade de
resultados no painel inferior. A extensão também passa a contar com o comando
Engine DevTools: View Cached Data, que exibe os registros em cache passando uma chave
diretamente para o comando. Mais detalhes na documentação da extensão.
A extensão Engine DevTools passa a ser publicada no Open VSX Registry,
possibilitando seu uso em qualquer editor com suporte para extensões do VS Code, como o
Cursor e o Antigravity.
Defeitos corrigidos
Administração do sistema
O processo “Administração do sistema > Segurança > Grupos, papéis e usuários > Usuários” permitia
alterar a senha de usuários de suporte, o que poderia confundir os usuários, pois contas de suporte
utilizam autenticação gerenciada por um provedor de identidade externo. A alteração de senha de
contas de suporte neste processo não surtia efeito na autenticação, e quando necessária, deve ser
efetuada no próprio provedor de identidade.
A autorização automática das contas de suporte estava sendo desativada indevidamente após
30 dias da última ativação.
O relatório “Administração do sistema > Segurança > Contas de suporte > Histórico de solicitações”
não agrupava corretamente por usuário solicitante, quando esta opção de agrupamento era selecionada.
Engine
A configuração de diretórios locais na UnionFileSystem de um Engine Linux poderia
impedir a inicialização do sistema.
Ao tentar autorizar uma conta de suporte, poderia ocorrer o seguinte erro: “Não é permitido criar
ou ativar usuários, pois a quantidade máxima de usuários nominais autorizada foi atingida”.
A sessão do usuário utilizando uma conta de suporte poderia ser descartada logo após o login
caso fosse atingido o limite máximo de usuários simultâneos na base de dados.
Ao tentar criar uma conta de suporte utilizando um e-mail já em uso por outra conta que não fosse
de suporte, a mensagem de erro não era clara o suficiente.
A função formatNumber
poderia retornar valores incorretos caso fossem utilizados os parâmetros nMinDecimals e
nMaxDecimals com valores diferentes de zero.
O reuso de chaves em tabelas distintas da base de dados poderia provocar o travamento
do sincronismo do cache local.
O desempenho do método
Logger.getLogger
era significativamente inferior no Engine Linux em comparação ao Windows, afetando lógicas
que não reaproveitavam instâncias de loggers. O desempenho deste método passa a ser
equivalente nos dois sistemas operacionais a partir desta versão.
Ao passar parâmetros do tipo inteiro acima do limite de 32 bits para métodos nativos do Engine
poderia ocorrer uma falha na interpretação dos valores quando utilizado o runtime JavaScript V8.
A geração do profiler a partir da página Requests do Manage não exibia dados no Engine Linux.
Web Framework
O evento padrão de construção dos datasets das grades detalhes não considerava a
propriedade userKeyToValidatePermissions na criação do DataSet. A partir desta versão, o
filtro de visão passa a ser configurado por padrão, portanto, é importante observar que
poderão ser necessárias revisões das permissões de visualização das classes de dados das
grades detalhes após a atualização para esta versão. Caso necessário, o evento
createDataSet
pode ser utilizado para customizar a construção do DataSet para implementar um comportamento
diferente do padrão.
Fluxos de logins customizados poderiam gerar o erro “personalization has no properties”.
O sincronismo de dados da grade poderia falhar com o erro “Cannot read properties of null
(reading ‘removeAttribute’)” logo após a mudança de visão da grade.
Ao apresentar valores numéricos muito elevados em uma grade poderia ocorrer o erro
“Scaled value is too large to round”.
O controle de foco dos campos e a exibição da barra de edição da grade poderiam falhar
se o usuário alterasse a interação corrente do processo sem finalizar a edição das grades
da interação anterior.
O foco definido por meio do método
GridField.prototype.focus
poderia ser ignorado se logo após a sua chamada ocorresse a inserção de um registro.
Outras alterações
Administração do sistema
A configuração padrão do ajuste de permissões nas atualizações do sistema passa a ser
“Sempre criar permissões para novas classes e arquivos” em vez de “Criar apenas em
atualizações de VFS e Tabelas”. A configuração padrão pode ser alterada no processo
“Administração do sistema > Atualização > Gestão de permissões” caso se deseje manter
a configuração anterior.
Desenvolvimento
A atualização do sistema passa a ignorar arquivos e classes com nomes duplicados que sejam
filhos da classe “/Dados/Sistema/Órfãos”.
A API HTTP de replicação de dados passa a retornar status 500 (Internal Server Error) caso
a replicação de alguma das bases de dados configuradas falhe.
Engine
O construtor File
passa a gerar erro se for informado o modo “openRead” e o arquivo não existir. O modo “openRead”
passa a ser considerado obsoleto e a partir desta versão, o modo “openReadOnly” passa a ser
recomendado para abrir arquivos apenas para leitura.
Web Framework
Os valores escritos nos agrupamentos e totalizadores do SimpleLayout passam a ser sanitizados
por padrão. Se necessário, esse comportamento pode ser desativado por meio da propriedade
SimpleLayout.prototype.autoSanitize.