From c28d5ba158083ef8d2c16aea0ad644aea01cfd6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20=C5=81api=C5=84ski?= Date: Mon, 12 Oct 2026 21:31:32 +0200 Subject: [PATCH] chore: push each package once and document limitations The first push glob already matched every package. The README now says that saves reload only the instance that made them, that concurrent edits are last-write-wins and that sensitive values are stored as plain text. --- .github/workflows/publish-nuget.yml | 18 +----------------- README.md | 6 ++++++ 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/.github/workflows/publish-nuget.yml b/.github/workflows/publish-nuget.yml index 2b2435b..f85531c 100644 --- a/.github/workflows/publish-nuget.yml +++ b/.github/workflows/publish-nuget.yml @@ -79,23 +79,7 @@ jobs: - name: Push to NuGet run: | - dotnet nuget push ./nupkgs/Kododo.ConfigWay.Core.*.nupkg \ - --api-key ${{ secrets.NUGET_API_KEY }} \ - --source https://api.nuget.org/v3/index.json \ - --skip-duplicate - dotnet nuget push ./nupkgs/Kododo.ConfigWay.*.nupkg \ - --api-key ${{ secrets.NUGET_API_KEY }} \ - --source https://api.nuget.org/v3/index.json \ - --skip-duplicate - dotnet nuget push ./nupkgs/Kododo.ConfigWay.UI.*.nupkg \ - --api-key ${{ secrets.NUGET_API_KEY }} \ - --source https://api.nuget.org/v3/index.json \ - --skip-duplicate - dotnet nuget push ./nupkgs/Kododo.ConfigWay.PostgreSQL.*.nupkg \ - --api-key ${{ secrets.NUGET_API_KEY }} \ - --source https://api.nuget.org/v3/index.json \ - --skip-duplicate - dotnet nuget push ./nupkgs/Kododo.ConfigWay.SqlServer.*.nupkg \ + dotnet nuget push ./nupkgs/*.nupkg \ --api-key ${{ secrets.NUGET_API_KEY }} \ --source https://api.nuget.org/v3/index.json \ --skip-duplicate diff --git a/README.md b/README.md index 5a0088a..0daa2fe 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,7 @@ Sensitive fields behave as follows: - The real value is never returned by the API. When a value is stored, the API returns `"***"`. When nothing is stored, it returns `null`. - Submitting an empty value is treated as "no change". To remove a stored sensitive value, use the reset button. - The reset button appears when a sensitive value is stored. Resetting deletes the stored value and lets the underlying configuration layer (appsettings.json, environment variable) take effect again without a restart. +- Sensitive values are masked in the UI and the API only. The store keeps them as plain text, so restrict access to the database accordingly. ## Customizing UI labels and descriptions @@ -204,6 +205,11 @@ app.UseConfigWay() > Use `IOptionsSnapshot` or `IOptionsMonitor` in your code to always get the latest values after a reload. +## Limitations + +- Changes are reloaded only in the instance that saved them. When the app runs as several replicas, the other replicas pick up the new values after a restart. +- Saves do not check for concurrent edits. If two people edit the same section at the same time, the last save wins. + ## Custom store You can replace the built-in in-memory store with any backend by implementing `IStore` from `Kododo.ConfigWay.Core`: