-
# ConfigKit v0.8.0
released this
2026-10-17 05:00:08 +00:00 | 276 commits to main since this releaseThis minor release adds explicit input placement, relative import destinations,
shared source-version checking, and opt-in composition of identified sequence
records. Applications can assemble independently authored configuration fragments
into one final configuration while retaining source locations, provenance,
history, and sensitivity information.Changes
- Add
Destinationto ordinary load options and layered inputs. A source mapping
can contribute beneath literal application keys without being rewritten by the
consumer. Imports inherit that destination or append a relative YAML
destination. Physical import paths and resource contexts remain relative to
their declaring sources. See input destinations,
import syntax, and the
mounted collection example. - Add
SourceVersionModeIfPresentandSourceVersionModeRequiredto apply one
application-owned version checker across main, underlay, imported, and selected
overlay documents. Enabled modes check source-local declarations and consume
accepted non-main headers before composition. Detached, sensitivity-aware
evidence is available throughSourceInfo.VersionCheck. Acceptance remains
application policy; ConfigKit does not require declarations to equal the main
version. See shared source-version checks. - Add explicit
PlacementModeSequenceItemplacement for ordinary and layered
inputs, andplacement: sequence-itemfor path and glob imports. A source
mapping becomes one item at its destination; ordinary helper imports compose
within that item and can supply its identity. See
imports. - Add
Definition.SequenceCompositionsregistrations for strict composition at
selected literal paths using one string identity field. Distinct records append
in contribution order, while duplicate identities conflict. Higher-priority
sequences still replace lower-priority sequences wholesale. Registration does
not add identity-based overlays or final identity validation after defaults and
application resolution. See the composition contract
and maintained prompt catalog. - Extend source inspection with destination and placement evidence, including
whether a nested destination is unresolved in an intermediate or failed-load
snapshot. Preserve source-specific history, consumed-header sensitivity, and
explanations of descendants removed by sequence replacement as records are
assembled. Source locations continue to identify authored coordinates.
Compatibility and upgrade
The new behavior is opt-in: zero-valued destinations retain root placement,
mapping placement remains the default, unregistered sequences retain strict
conflict behavior, and the default source-version mode preserves the existing
main-only version policy. Recursive mapping precedence, whole-sequence
replacement between tiers, and application-owned final validation remain intact.Public option, definition, input, and source-information structs gain fields.
Consumers using unkeyed literals for affected structs must switch to keyed
literals or update them.SourceInfonow contains aPathand is no longer
comparable with==or usable directly as a map key; compare the relevant fields
or select an application-appropriate key instead. Existing keyed literals need
no changes to retain the previous loading behavior.Select this version and rebuild:
go get gitea.maximumdirect.net/eric/ConfigKit@v0.8.0The consumer minimum remains Go 1.26.0. The YAML dependency remains
go.yaml.in/yaml/v4 v4.0.0-rc.6, and the maintainer tool dependency remains
ReleaseKit v0.4.1. Linux amd64 and arm64 remain release-validated targets;
macOS remains best-effort. Publication follows the existing
release procedure.Downloads
- Add