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`: