@hackage / settei

Typed, layered, explainable configuration

Latest0.2.0.0

Changelog

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.