Skip to content

ConfigWay 2.1: feature flags - #10

Merged
jacalapa merged 4 commits into
mainfrom
feat/feature-flags
Oct 21, 2026
Merged

jacalapa merged 4 commits into
mainfrom
feat/feature-flags

Conversation

@jacalapa

Copy link
Copy Markdown
Contributor

Adds Kododo.ConfigWay.FeatureManagement: the editor manages Microsoft.FeatureManagement flags without redeploying. Set up with x.AddFeatureFlags() next to builder.Services.AddFeatureManagement(); the app's code does not change.

  • Flags saved in the editor are kept in the ConfigWay store and take the place of the configured flags with the same id. Reset brings the configured flag back.
  • Feature flags view: switches with undo, forms for the percentage, time window and targeting filters, JSON for other filters, a check for a user and groups.
  • A filter the app has not registered is refused: feature management throws whenever it checks such a flag.
  • ReloadInterval for every ConfigWay app: replicas sharing a store pick up each other's changes.
  • Extension points used by the package: StoreConfigurationProvider / AddProvider, AddUiExtension, GetCapabilities.
  • Way.Shell 2.1.1, the demo on real flags, README and screenshots.

Tests: 192 core, 104 feature flags (net8/9/10), 26 PostgreSQL, 26 SQL Server. Browser scenarios against the demo: e2e/check.mjs 32/32 and e2e/flags.mjs 53/53 in Chrome, Edge, Firefox and WebKit. The demo image was built and checked locally.

Jacek Łapiński added 4 commits October 21, 2026 21:25
- StoreConfigurationProvider and ConfigurationBuilder.AddProvider: a package can expose values
  kept in the store under keys of its own. ConfigWay reads the store once for every provider
  and reloads them together after a save.
- ConfigurationBuilder.ReloadInterval: each replica checks the store and reloads when a setting
  was added, changed or removed, so a save reaches the other replicas.
- AddUiExtension and GetCapabilities: the requests of an extension are mapped under the
  editor's API with its authorization, and the UI learns which extensions are there.
- Way.Shell 2.1.1.
A new package, set up with x.AddFeatureFlags(). Flags saved in the editor are kept in the store,
one setting per flag with the flag in the Microsoft feature management schema, and take the place
of the flags with the same id in the application's configuration. Feature management merges the
flags by id; the flags of the store also come after the app's own ones should it merge by index.

- GetFeatureFlags: the flags of both schemas with their source, override and registered filters.
- SaveFeatureFlag: checks the built-in filters' parameters, refuses filters the app has not
  registered (checking such a flag throws) and keeps what the editor does not edit, e.g. variants.
- ResetFeatureFlag: back to the configured flag, or deletes a flag only ConfigWay has.
- EvaluateFeatureFlag: the app's feature manager for a given user and groups.

The package is built, tested and published with the others.
The editor shows a Feature flags view, at the top of the menu, when the app added
Kododo.ConfigWay.FeatureManagement.

- The list: a switch per flag that saves at once, with an undo; what the conditions do; badges
  for overrides, flags only ConfigWay has, the .NET schema and variants; search.
- The editor: forms for the percentage, time window (local time, stored in UTC) and targeting
  filters, JSON for other filters, any or all of the conditions, reset or delete, and a check of
  the saved flag for a user and groups. The API's errors are shown on their condition.
- English and Polish. @kododo-dev/way-shell 2.1.1.

The demo uses real flags from appsettings instead of an options class, and its home page shows
them for a visitor picked with ?user=. Browser scenarios: e2e/check.mjs and e2e/flags.mjs.
The README describes the feature flags package and the screenshots show the editor in Way.Shell,
with the Feature flags view. docs/feature-flags.md is the plan of the work.
@jacalapa
jacalapa merged commit 3c864e8 into main Oct 21, 2026
3 checks passed
@jacalapa
jacalapa deleted the feat/feature-flags branch October 21, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant