Versão 83

Melhorias

Administração do sistema

  • 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 método Classes.prototype.getAncestors retornava a própria classe na lista de classes ancestrais.
  • 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.