packages feed

settei-0.2.0.0: CHANGELOG.md

# Changelog for settei

## 0.2.0.0 — 2026-07-19

- `Settei.Prelude` is now documented as internal to the settei package family and is
  excluded from the PVP-stable public surface; adopters should import the documented
  public modules instead. Its exports track the `lens` package and may change in any
  release.
- Add a `Functor` instance for `Decoder`; a newtype-wrapping decoder is now
  `SecretText <$> textDecoder`.
- Add decoder combinators `listDecoder`, `nonEmptyDecoder`, `parsedDecoder`,
  `rationalDecoder`, and `doubleDecoder`, all preserving the secret-safe
  failure contract (failures carry only the setting key and an expectation).
- `boundedIntegralDecoder` failures now state the accepted range, for example
  `integer between -32768 and 32767`.
- Document `enumDecoder`'s case-sensitive matching.
- Add `whenConfig`, `whenEq`, and `fallbackTo` to `Settei.Config`. Each combinator
  desugars to the existing `Functor` and `Selective` operations without changing the
  inspectable declaration algebra.
- Add `publicShowSetting` and `withRenderer` to `Settei.Setting` for concise typed-default
  rendering; secret settings continue to redact regardless of attached renderers.
- The text renderer's Kubernetes suffix appends `(modified TIME)` when an origin carries
  the `kubernetes.file-modified` annotation. JSON output is unchanged because it already
  emits the full annotation map.

## 0.1.0.0 — 2026-07-19

- Initial experimental release.
- Add inspectable Applicative and Selective configuration declarations.
- Add hierarchical resolution, ordered provenance, named defaults, secret-safe errors,
  static schemas, and versioned text and JSON reports.
- Merge duplicate setting sensitivities most-restrictively in schemas and reports, so a
  key declared `Secret` anywhere cannot be weakened by a conflicting `Public`
  declaration; add `redactReportedValue` as a one-way collapse of any retained display
  representation to the redaction marker.
- Add the structured `SensitivityConflict` resolution error for mixed-sensitivity keys,
  rendered in JSON with the additive `sensitivity-conflict` kind.
- Breaking: `resolve` now returns `ResolveResult` unconditionally. The typed outcome
  moved to its `answer` field, while the provenance report and warnings are available
  for every resolution attempt, including failures.
- Make repeated `annotateSource` calls merge source-wide annotations, with annotations
  from later calls winning on name collisions.
- Add `sourceFromPairs`, `SourceConstructionError`, and
  `sourceUnaddressableLeaves` for validated custom-source construction and inspection.
- Render exact terminating rational values as decimals in reports while retaining exact
  fraction notation for non-terminating values.