Skip to content

Releases: yanpitangui/komento

v0.2.0-alpha

v0.2.0-alpha Pre-release
Pre-release

Choose a tag to compare

@yanpitangui yanpitangui released this 10 Jun 22:48
fc99003

Breaking changes

  • KomentoOptions.Experiments removed — the static list of experiment IDs is gone. Pass IDs explicitly to UpdateAsync(configs, experimentIds) or use KomentoExperiments.AllIds from the new source generator. Pass an empty set to load all experiments.

New packages

  • Komento.Generators — Roslyn source generator that reads komento.json from AdditionalFiles and emits a KomentoExperiments class with AllIds: FrozenSet<string> and a typed Id constant per experiment. Eliminates magic strings at compile time.

    { "Experiments": ["checkout-flow", "dark-mode"] }
    KomentoExperiments.CheckoutFlow.Id   // "checkout-flow"
    KomentoExperiments.AllIds            // FrozenSet with all IDs
  • Komento.Http — generic HttpExperimentSource<TResponse> backed by a named HttpClient. Supply a mapper from your response type to IEnumerable<ExperimentConfig>; all HTTP concerns (base address, auth, retry) are configured separately via the standard AddHttpClient pattern.

    builder.Services
        .AddKomento()
        .AddHttpSource<ApiResponse>(r => r.Experiments.Select(e => new ExperimentConfig { ... }))
        .AddPeriodicRefresh(TimeSpan.FromMinutes(5));
    
    builder.Services
        .AddHttpClient("Komento.Http", c => c.BaseAddress = new Uri("https://flags.internal/experiments"))
        .AddStandardResilienceHandler();

New features

  • InMemoryExperimentSource — in-process test double for controlling flag state in tests without mocking IExperimentClient. Fluent Set / Remove API, same pattern as LaunchDarkly TestData and Unleash FakeUnleash.

  • AddPeriodicRefresh — background service that polls the registered IExperimentSource on a PeriodicTimer schedule. Resolves TimeProvider from DI; inject FakeTimeProvider in tests for deterministic time control with no Task.Delay.

    .AddPeriodicRefresh(TimeSpan.FromMinutes(5))
    .AddPeriodicRefresh(TimeSpan.FromMinutes(5), KomentoExperiments.AllIds)
  • Auto-discoveryAppSettingsExperimentSource now loads all experiments when an empty set is passed. Small projects no longer need to enumerate IDs anywhere.

CI

  • Coveralls integration (replaced irongut/CodeCoverageSummary)
  • Coverage scoped to Komento.* source assemblies only via coverage.runsettings

v0.1.1-alpha

v0.1.1-alpha Pre-release
Pre-release

Choose a tag to compare

@yanpitangui yanpitangui released this 07 May 00:59
v0.1.1-alpha
67e6792

What's new

  • E2E sample — full Aspire-hosted demo with EcommerceApi and AdminApi showcasing NATS JetStream, PostgreSQL BinSet, OpenFeature, and JWT integration
  • Integration tests — TUnit + Aspire.Hosting.Testing suite covering all experiment evaluation paths end-to-end (10 tests)
  • BinSet publicBinSet.Build and BinSet.Contains are now part of the public API
  • Unified test framework — all unit tests migrated from xunit to TUnit; dotnet test now works across the entire solution on .NET 10 SDK via global.json MTP runner config
  • CI updated — workflows bumped to .NET 10 SDK

v0.1-alpha

v0.1-alpha Pre-release
Pre-release

Choose a tag to compare

@yanpitangui yanpitangui released this 01 May 17:51
0290f87

Initial alpha release of Komento.

Includes the core package, ASP.NET Core integration, and OpenFeature provider.