OpenAC.Net.NFSe 1.8.1

Prefix Reserved
dotnet add package OpenAC.Net.NFSe --version 1.8.1
                    
NuGet\Install-Package OpenAC.Net.NFSe -Version 1.8.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OpenAC.Net.NFSe" Version="1.8.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OpenAC.Net.NFSe" Version="1.8.1" />
                    
Directory.Packages.props
<PackageReference Include="OpenAC.Net.NFSe" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OpenAC.Net.NFSe --version 1.8.1
                    
#r "nuget: OpenAC.Net.NFSe, 1.8.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OpenAC.Net.NFSe@1.8.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OpenAC.Net.NFSe&version=1.8.1
                    
Install as a Cake Addin
#tool nuget:?package=OpenAC.Net.NFSe&version=1.8.1
                    
Install as a Cake Tool

OpenAC.Net.NFSe

NuGet Version NuGet Downloads Discord License: MIT Target Frameworks Target Frameworks

Biblioteca .NET multiplataforma para geração, assinatura, transmissão, consulta e impressão de NFS-e (Nota Fiscal de Serviço Eletrônica) para centenas de municípios brasileiros.

Desenvolvida pelo time OpenAC .Net, a biblioteca abstrai as particularidades dos diversos provedores municipais e padrões existentes (ABRASF 1.0, ABRASF 2.0x, DSF, Ginfes, SigISS, Betha, IPM, Governos próprios, entre outros).


🚀 Funcionalidades

  • Emissão e Transmissão de RPS / NFS-e:
    • Emissão Síncrona e Assíncrona.
    • Envio de RPS individual ou em lote.
    • Substituição de NFS-e / RPS.
  • Cancelamento de NFS-e:
    • Cancelamento por código de motivo, justificativa ou pedido assinado.
  • Consultas:
    • Consulta de Situação do Lote.
    • Consulta de Lote de RPS.
    • Consulta de NFS-e por RPS.
    • Consulta de NFS-e por período / faixa de datas.
    • Consulta de Link da NFS-e.
  • Impressão do DANFSe em PDF:
    • Motor de impressão OpenAC.Net.NFSe.DANFSe.PDFSharp baseado em PDFsharp 6.x e QRCoder.
    • 100% Open Source / MIT, sem custos de licença ou marcas d'água de terceiros.
    • Fontes TrueType embutidas e geração de PDF em memória para Windows, Linux e macOS.
    • Suporte à customização de cabeçalhos, logos da prefeitura e do prestador, discriminação de itens em tabela ou texto livre e criptografia por senha.
  • Assinatura e Validação Digital:
    • Assinatura digital XML com certificados A1 e A3 (DFeSignature).
    • Validação de esquemas XML / Schemas XSD oficiais.
  • Comunicação HTTP:
    • Reutilização de conexões por certificado, TLS, proxy e validação do servidor.
    • Transporte substituível por INFSeHttpTransport e armazenamento por INFSeDocumentStore.
    • Métodos Async com CancellationToken, preservando a API síncrona existente.
  • Integração ASP.NET Core:
    • Registro por escopo com AddOpenNFSeWeb e clientes independentes por empresa.
    • IHttpClientFactory, timeouts por operação, retentativas para métodos HTTP seguros e circuit breaker.
    • Logs, rastreamento e métricas de operações.
    • DANFSe em memória e respostas HTTP para Minimal APIs.
  • Demo Avalonia:
    • Interface Fluent com tema azul para Windows, Linux e macOS.
    • Operações fiscais, configurações, catálogo de municípios e geração de DANFSe.
  • Alta Performance:
    • Serialização e desserialização XML baseada em Source Generators (OpenAC.Net.DFe.Core).
  • Suporte à Reforma Tributária (IBS / CBS):
    • Estruturas prontas para os novos tributos municipais e federais.

🏛️ Provedores e Padrões Suportados

A biblioteca suporta os principais padrões de mercado e provedores municipais:

Padrão / Provedor Padrão / Provedor Padrão / Provedor
ABRASF v1.00 ABRASF v2.00 a v2.04 Abaco
ABase Agili Assessor Público
Betha (v1 e v2) BHISS (Belo Horizonte) Citta
Conam Coplan DBSeller
DSF / ISSDSF Equiplano FintelISS
Fiorilli Fisco FissLex
GIAP Ginfes GISS / SigISS
GovBR IPM (v1 e v2) ISSCampinas
ISSCuritiba ISSGoiania ISSIntegra
ISSNet ISSPortoVelho ISSRecife
ISSRio (Nota Carioca) ISSSJP ISSSaoPaulo (Paulistana)
ISSVitoria ISSe Megasoft
MetropolisWeb Mitra NFe Cidades (GovDigital)
Prodata Pronim (v1, v2, v203) RLZ Informática
SiapNet Sigep SigissWeb
SimplISS (v1 e v2) Sintese SmarAPD
SpeedGov SystemPro Thema
Tinus Tiplan (v1 e v2) WebISS (v1 e v2)

📦 Instalação

Adicione os pacotes via NuGet:

1. Componente Principal (NFS-e)

dotnet add package OpenAC.Net.NFSe
Install-Package OpenAC.Net.NFSe

2. Componente de Impressão (DANFSe em PDF via PDFsharp)

dotnet add package OpenAC.Net.NFSe.DANFSe.PDFSharp
Install-Package OpenAC.Net.NFSe.DANFSe.PDFSharp

3. Integração Web e DANFSe para ASP.NET Core

Os projetos Web suportam .NET 8, 9 e 10:

dotnet add package OpenAC.Net.NFSe.Web
dotnet add package OpenAC.Net.NFSe.DANFSe.PDFSharp.Web

Para usar os projetos diretamente a partir deste repositório, adicione referências aos respectivos arquivos .csproj em src.

Compatibilidade

Projeto Frameworks
OpenAC.Net.NFSe .NET Framework 4.6.2, 4.7.0 e 4.8; .NET Standard 2.0; .NET 6, 7, 8, 9 e 10
OpenAC.Net.NFSe.DANFSe.PDFSharp .NET Framework 4.6.2 e 4.8; .NET Standard 2.0; .NET 8, 9 e 10
OpenAC.Net.NFSe.Web e OpenAC.Net.NFSe.DANFSe.PDFSharp.Web .NET 8, 9 e 10
Demo Avalonia e exemplo ASP.NET Core .NET 8

🛠️ Como Usar

1. Inicializando e Configurando o Componente

using OpenAC.Net.DFe.Core.Common;
using OpenAC.Net.NFSe;

using var openNFSe = new OpenNFSe();

// Configurações Gerais
openNFSe.Configuracoes.Geral.RetirarAcentos = true;
openNFSe.Configuracoes.Geral.Salvar = true;

// Configurações dos WebServices / Cidade
openNFSe.Configuracoes.WebServices.Ambiente = DFeTipoAmbiente.Homologacao;
openNFSe.Configuracoes.WebServices.CodigoMunicipio = 3550308; // Código IBGE (Ex: São Paulo - SP)
openNFSe.Configuracoes.WebServices.Usuario = "usuario_ws";
openNFSe.Configuracoes.WebServices.Senha = "senha_ws";

// Configurações dos Arquivos
openNFSe.Configuracoes.Arquivos.PathSalvar = @"C:\NFSe\Arquivos";
openNFSe.Configuracoes.Arquivos.PathSchemas = @"C:\NFSe\Schemas";

// Configurações do Certificado Digital
openNFSe.Configuracoes.Certificados.Certificado = @"C:\Certificados\certificado.pfx";
openNFSe.Configuracoes.Certificados.Senha = "123456";

// Dados do Prestador Padrão
openNFSe.Configuracoes.PrestadorPadrao.CpfCnpj = "12345678000195";
openNFSe.Configuracoes.PrestadorPadrao.InscricaoMunicipal = "12345678";

2. Criando e Emitindo uma Nota Fiscal de Serviço (RPS)

using System;
using OpenAC.Net.NFSe.Nota;

// Limpa notas anteriores
openNFSe.NotasServico.Clear();

// Adiciona um novo RPS
var nota = openNFSe.NotasServico.AddNew();

// Identificação do RPS
nota.IdentificacaoRps.Numero = "100";
nota.IdentificacaoRps.Serie = "1";
nota.IdentificacaoRps.Tipo = TipoRps.RPS;
nota.IdentificacaoRps.DataEmissao = DateTime.Now;

// Regime Tributário
nota.RegimeEspecialTributacao = RegimeEspecialTributacao.SimplesNacional;
nota.OptanteSimplesNacional = NFSeSimNao.Sim;
nota.IncentivadorCultural = NFSeSimNao.Nao;

// Prestador
nota.Prestador.CpfCnpj = "12345678000195";
nota.Prestador.InscricaoMunicipal = "12345678";
nota.Prestador.RazaoSocial = "EMPRESA PRESTADORA DE SERVICOS LTDA";

// Tomador
nota.Tomador.CpfCnpj = "98765432000100";
nota.Tomador.RazaoSocial = "CLIENTE TOMADOR DE SERVICOS S/A";
nota.Tomador.Endereco.Logradouro = "AVENIDA PAULISTA";
nota.Tomador.Endereco.Numero = "1000";
nota.Tomador.Endereco.Bairro = "BELA VISTA";
nota.Tomador.Endereco.Municipio = "SAO PAULO";
nota.Tomador.Endereco.Uf = "SP";
nota.Tomador.Endereco.Cep = "01310100";
nota.Tomador.DadosContato.Email = "financeiro@cliente.com.br";

// Serviço
nota.Servico.ItemListaServico = "01.07";
nota.Servico.Discriminacao = "Desenvolvimento e manutenção de software sob medida.";
nota.Servico.Valores.ValorServicos = 2500.00M;
nota.Servico.Valores.BaseCalculo = 2500.00M;
nota.Servico.Valores.Aliquota = 2.00M;
nota.Servico.Valores.ValorIss = 50.00M;
nota.Servico.Valores.ValorLiquidoNfse = 2450.00M;

// Envio do Lote de RPS
var retorno = openNFSe.Enviar(lote: 1, sincrono: false);

if (retorno.Sucesso)
{
    Console.WriteLine($"Sucesso! Protocolo: {retorno.Protocolo}");
}
else
{
    foreach (var alerta in retorno.Alertas)
        Console.WriteLine($"Alerta: {alerta.Codigo} - {alerta.Descricao}");
    foreach (var erro in retorno.Erros)
        Console.WriteLine($"Erro: {erro.Codigo} - {erro.Descricao}");
}

3. Gerando e Imprimindo o DANFSe em PDF

Utilizando o pacote OpenAC.Net.NFSe.DANFSe.PDFSharp:

using OpenAC.Net.NFSe.DANFSe.PDFSharp.Extensions;

// 1. Exportar diretamente para arquivo PDF
openNFSe.ImprimirPDF(@"C:\NFSe\Danfse.pdf", opt =>
{
    opt.CabecalhoLinha1 = "PREFEITURA MUNICIPAL DE SÃO PAULO";
    opt.CabecalhoLinha2 = "SECRETARIA MUNICIPAL DA FAZENDA";
    opt.ExibirQRCode = true;
    opt.Homologacao = false;
});

// 2. Exportar para uma Stream (ex: download em API Web / ASP.NET Core)
using var ms = new MemoryStream();
openNFSe.ImprimirPDF(ms);
var bytes = ms.ToArray();

// 3. Obter os bytes do PDF diretamente
byte[] pdfBytes = openNFSe.GerarPDF();

// 4. Imprimir / Visualizar na tela
openNFSe.Imprimir(opt => opt.MostrarPreview = true);
Proteção e Criptografia do PDF com Senha:
openNFSe.ImprimirPDF(@"C:\NFSe\Danfse_Protegido.pdf", opt =>
{
    opt.Seguranca.SenhaUsuario = "123456";          // Senha exigida para abrir o PDF
    opt.Seguranca.SenhaProprietario = "adminMaster"; // Senha do proprietário
    opt.Seguranca.PermitirImpressao = true;
    opt.Seguranca.PermitirModificacao = false;
    opt.Seguranca.PermitirCopiarConteudo = false;
});

4. Consultas

// Consulta de NFS-e por Número do RPS
var retornoRps = openNFSe.ConsultaNFSeRps(numero: 100, serie: "1", tipo: TipoRps.RPS);

// Consulta de Situação do Lote
var retornoSituacao = openNFSe.ConsultarSituacao(lote: 1, protocolo: "123456789");

// Consulta de Lote de RPS
var retornoLote = openNFSe.ConsultarLoteRps(lote: 1, protocolo: "123456789");

5. Cancelamento de NFS-e

var retornoCancelamento = openNFSe.CancelarNFSe(
    codigoCancelamento: "1",
    numeroNFSe: "202600000000100",
    motivo: "Erro na discriminação dos serviços."
);

if (retornoCancelamento.Sucesso)
{
    Console.WriteLine("NFS-e cancelada com sucesso!");
}

6. Operações Assíncronas e CancellationToken

O componente também implementa IOpenNFSeClient, com versões assíncronas das operações municipais:

using var cancellation = new CancellationTokenSource(TimeSpan.FromSeconds(100));

var retornoConsulta = await openNFSe.ConsultaNFSeAsync(
    numeroNfse: 100,
    cancellationToken: cancellation.Token);

// Após preencher NotasServico, envie o lote:
var retornoEnvio = await openNFSe.EnviarAsync(
    lote: 1,
    sincrono: false,
    cancellationToken: cancellation.Token);

Os provedores municipais continuam síncronos internamente. Os métodos Async executam em uma thread de trabalho e propagam o cancelamento até a requisição HTTP. Operações assíncronas são serializadas por cliente; use clientes independentes para processar empresas ou operações em paralelo e mantenha suas configurações e notas estáveis durante a execução.

As operações e os formatos aceitos dependem do provedor e da versão cadastrados para o município. No envio, sincrono seleciona a modalidade de processamento do lote pelo provedor; o sufixo Async identifica a API com cancelamento do componente.


🌐 ASP.NET Core e Multiempresa

Exemplo de registro em Program.cs, com configurações fornecidas pelo host:

using OpenAC.Net.DFe.Core.Common;
using OpenAC.Net.NFSe;
using OpenAC.Net.NFSe.DANFSe.PDFSharp.Web.Service;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenNFSeWeb(config =>
{
    config.WebServices.Ambiente = DFeTipoAmbiente.Homologacao;
    config.WebServices.CodigoMunicipio = builder.Configuration.GetValue<int>("NFSe:Municipio");
    config.PrestadorPadrao.CpfCnpj = builder.Configuration["NFSe:CpfCnpj"] ?? "";
    config.PrestadorPadrao.InscricaoMunicipal = builder.Configuration["NFSe:InscricaoMunicipal"] ?? "";
    config.Certificados.Certificado = builder.Configuration["NFSe:Certificado"] ?? "";
    config.Certificados.Senha = builder.Configuration["NFSe:SenhaCertificado"] ?? "";
    config.Arquivos.PathSchemas = Path.Combine(AppContext.BaseDirectory, "Schemas");
}, options =>
{
    options.TimeoutOperacao = TimeSpan.FromSeconds(100);
    options.TimeoutTentativa = TimeSpan.FromSeconds(30);
    options.PersistenciaHabilitada = false;
});

builder.Services.AddOpenDANFSeWeb(options => options.ForcarDownload = true);

var app = builder.Build();

app.MapGet("/nfse/{numero:int}", async (
    int numero, IOpenNFSeClient client, CancellationToken cancellationToken) =>
    await client.ConsultaNFSeAsync(numero, cancellationToken: cancellationToken));

app.MapGet("/nfse/{numero:int}/pdf", async (
    int numero, IOpenNFSeClient client, IOpenDANFSeWeb danfse,
    CancellationToken cancellationToken) =>
{
    var retorno = await client.ConsultaNFSeAsync(numero, cancellationToken: cancellationToken);
    if (!retorno.Sucesso || retorno.Notas.Length == 0)
        return Results.BadRequest(retorno);

    return await danfse.GerarResultadoAsync(retorno.Notas, cancellationToken: cancellationToken);
});

app.Run();

IOpenNFSeClient é criado por escopo, com configuração e notas independentes. Configure o certificado explicitamente por CertificadoBytes ou caminho PFX/P12 existente. A integração Web valida a chave privada e a validade do certificado e não abre seleção interativa.

Para várias empresas, implemente INFSeConfigurationProvider<ConfigNFSe> e INFSeCertificateProvider e registre:

builder.Services.AddOpenNFSeWebMultiTenant<EmpresaConfigurationProvider, EmpresaCertificateProvider>();

Resolva IOpenNFSeClientFactory no consumidor e crie um cliente para a empresa autenticada:

using var client = await factory.CreateAsync(empresaId, cancellationToken);
var retorno = await client.ConsultaNFSeAsync(numero, cancellationToken: cancellationToken);

Os providers devem retornar configurações novas por cliente e ser seguros para concorrência. Handlers são isolados por empresa, certificado, endpoint, TLS, proxy e regras de comunicação. O catálogo de municípios é compartilhado pelo processo e deve ser configurado na inicialização do host.

As tentativas automáticas seguem WebServices.Tentativas e IntervaloTentativas, apenas para métodos HTTP seguros. POSTs, inclusive consultas SOAP, emissão e cancelamento, não são repetidos automaticamente. Rejeições fiscais permanecem em RetornoWebservice; falhas técnicas de transporte geram NFSeTechnicalException, e cancelamentos geram OperationCanceledException.

A persistência Web é desabilitada por padrão. Para ativar, configure PersistenciaHabilitada, CaminhoDocumentos e as flags de salvamento correspondentes. O armazenamento separa documentos por empresa e categoria, sem sobrescrever arquivos em colisões de nome. O DANFSe Web gera PDFs em memória e devolve byte[], stream ou IResult.

Consulte os detalhes de configuração Web, DANFSe Web e o exemplo ASP.NET Core.


🖥️ Demo Avalonia com Tema Azul

O demo usa Avalonia Fluent e segue a organização do NFSe.Nacional, com navegação entre Operações, Configurações e Municípios. Funciona em Windows, Linux e macOS com .NET 8.

Execute a partir da raiz do repositório:

dotnet run --project src/OpenAC.Net.NFSe.Demo/OpenAC.Net.NFSe.Demo.csproj
  • Operações: carregar XML, gerar RPS de exemplo, enviar lotes, consultar, cancelar/substituir notas e gerar ou visualizar DANFSe.
  • Configurações: certificado, prestador, ambiente, autenticação do provedor, timeout e caminhos de arquivos.
  • Municípios: pesquisar, cadastrar, editar, copiar, excluir, selecionar, importar e exportar o catálogo, com URLs por ambiente e parâmetros do provedor.

Resultados, XMLs, envelopes HTTP/SOAP e logs aparecem em abas. A interface apresenta progresso e permite cancelar a operação. O ambiente inicial é homologação.

As configurações ficam em LocalApplicationData/OpenAC.Net/NFSe.Demo/opennfse.config. O demo importa um opennfse.config legado do diretório de trabalho na primeira execução. Senhas e chaves de autenticação devem ser informadas a cada execução e não são gravadas pelo novo demo. Veja o guia do demo.


📁 Estrutura da Solução

  • OpenAC.Net.NFSe: Biblioteca principal contendo o core, provedores municipais, webservices, serializadores e modelos de dados.
  • OpenAC.Net.NFSe.DANFSe.PDFSharp: Gerador e impressor do DANFSe em PDF via PDFsharp 6.x e QRCoder (100% MIT / Open Source).
  • OpenAC.Net.NFSe.Web: Integração ASP.NET Core com DI, fábrica multiempresa, transporte HTTP, resiliência, observabilidade e persistência opcional.
  • OpenAC.Net.NFSe.DANFSe.PDFSharp.Web: Geração de DANFSe em memória e respostas HTTP para ASP.NET Core.
  • OpenAC.Net.NFSe.Web.Exemplo: Exemplo de API com consultas, emissão e geração de DANFSe.
  • OpenAC.Net.NFSe.Demo: Aplicativo Avalonia com tema azul, operações fiscais, configurações e cadastro de municípios.
  • OpenAC.Net.NFSe.Test: Suíte de testes unitários e de integração com xUnit.

📚 Documentação e Guias


🤝 Como Contribuir

Contribuições são muito bem-vindas! Para contribuir:

  1. Faça um Fork do projeto.
  2. Crie uma Branch para a sua feature (git checkout -b feature/novo-provedor).
  3. Commit suas alterações (git commit -m 'feat: adiciona suporte ao provedor XYZ').
  4. Push para a branch (git push origin feature/novo-provedor).
  5. Abra um Pull Request.

💖 Apoie o Projeto OpenAC .Net

Se o OpenAC.Net.NFSe é útil para você ou sua empresa e você deseja apoiar a continuidade e evolução da biblioteca:

  • Participe da nossa comunidade no Discord.
  • Deixe uma estrela ⭐ no GitHub.
  • Compartilhe com outros desenvolvedores da comunidade .NET.

📄 Licença

Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 is compatible.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on OpenAC.Net.NFSe:

Package Downloads
OpenAC.Net.NFSe.DANFSe.QuestPdf

Biblioteca de impressão de DANFSe usando o QuestPdf.

OpenAC.Net.NFSe.DANFSe.FastReport.OpenSource

Biblioteca de impressão de DANFSe usando o FastReport OpenSource.

OpenAC.Net.NFSe.DANFSe.PDFSharp

Biblioteca para geração e impressão de DANFSe (Documento Auxiliar da NFS-e) em PDF usando PDFsharp (100% Open Source / MIT).

OpenAC.Net.NFSe.Web

Integração da OpenAC.Net.NFSe com DI, logging e serviços do ASP.NET Core.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.8.1 251 10/28/2026
1.8.0 1,673 8/21/2026
1.7.6 540 8/8/2026
1.7.5 2,189 6/16/2026
1.7.4 205 6/9/2026
1.7.3 608 5/18/2026
1.7.2 302 5/8/2026
1.7.1 3,799 2/7/2026
1.7.0 324 1/17/2026
1.6.4 872 12/15/2025
1.6.3 440 11/7/2025
1.6.2 14,596 6/14/2025
1.6.1 2,518 3/22/2025
1.6.0.1 14,665 9/24/2024
1.5.1 2,580 8/16/2024
1.5.0.2 1,044 3/13/2024
1.5.0.1 459 2/6/2024
1.5.0 4,915 2/12/2023
1.5.0-rc.2 398 4/27/2022
1.5.0-rc.1 308 4/26/2022
Loading failed