Key Value Store release notes
Strict credential projection validation
This update intentionally changes validation for existing version 1 nodes. Previously, malformed containers and many invalid rows were silently treated as empty or dropped. Whitespace-only names could survive. These cases now fail with a field or one-based row error, without echoing credential names or values. There is no permissive compatibility mode or alias.
Migration
- Review every credential used by this node, including credentials imported through tooling. Restore the documented
pairs.valuesarray shape, remove unexpected nested fields, and supply stringnameandvaluefields on each row. - Remove unwanted rows or leave both fields exactly empty. A missing field, whitespace-only key, or empty key with a populated value is not a blank placeholder.
- Give each populated row a nonblank, unique key. Rename exact reserved keys
__proto__,constructorandprototype, and update downstream references. Previously filtered reserved rows now fail. - Convert intended nonstring values explicitly to strings in the credential. An empty-string value is valid and needs no replacement. The node does not coerce numbers/booleans or parse JSON.
- Resolve duplicate names even when using Pairs Array Only. Duplicate names already failed during node setup; strict normalization now applies the same rule at the shared helper boundary. Duplicate errors now report the row rather than exposing the name.
- Select one of the three supported formats in imported workflows. Invalid
outputFormatvalues previously produced{}; they now fail instead.
Exact matching preserves meaningful key whitespace, case and Unicode representation, and all value whitespace. Only whitespace-only names are rejected; keys are not trimmed. Arrays keep row order after removal of exact blank placeholders.
Preserved contracts
- Node and credential name
keyValueStore, node version1, collection fieldspairs/values/name/value, and format identifiersboth/object/arrayremain unchanged. - Successful shapes remain
{ values, pairs },{ values }, or{ pairs }, with one independently copied, paired item per input. - Input JSON/binary is replaced, and empty configurations and valid empty-string values remain supported.
- Shared setup failures throw before projection, including with Continue On Fail; there is no new per-item error-output contract.
- Credential values are still actual downstream data despite editor password masking and sensitive-output metadata.
See credential rules, output behavior, and the overview.