Skip to content

Releases: ebogdum/konfigo

v2.0.1

25 Feb 13:58
af408c3

Choose a tag to compare

New Feature

  • -m flag: Merge arrays by union with deduplication instead of replacing. When enabled, merging ["a","b"] + ["b","c"] produces ["a","b","c"]. Default behavior (array replacement) is unchanged.

Usage

# Arrays merged by union (new)
konfigo -m -s base.yaml,override.yaml

# Arrays replaced (default, unchanged)
konfigo -s base.yaml,override.yaml

Deduplication uses deep equality, so nested objects in arrays are compared correctly.

Binaries

Pre-built binaries for Linux, macOS, Windows, FreeBSD, OpenBSD, and NetBSD (amd64/arm64).

v2.0.0

24 Feb 23:46
af20a50

Choose a tag to compare

Breaking Changes

Renamed the batch processing directive key in variables files from konfigo_forEach to forEach.

Migration

Update your variables files (-V):

# Before (v1.x)
konfigo_forEach:
  items:
    - ENV: dev
    - ENV: prod
  output:
    filenamePattern: "config-${ENV}.yaml"

# After (v2.0.0)
forEach:
  items:
    - ENV: dev
    - ENV: prod
  output:
    filenamePattern: "config-${ENV}.yaml"

All error messages and log output now reference forEach instead of konfigo_forEach.

Other Changes

  • Fixed README schema examples to match actual schema file format (the README previously showed konfigo_schema, konfigo_generate, konfigo_transform, konfigo_validate, konfigo_set which were never valid schema keys)
  • Updated all documentation references from konfigo_forEach to forEach
  • Updated all test fixtures to use forEach
  • Added llms.txt for LLM documentation
  • Rebuilt static documentation site

Release v1.0.5

24 Feb 22:59
79d6fe5

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix merge precedence to preserve CLI source order (last file wins)
  • Add nil guard in type validator to prevent panic on null values
  • Fix positional args support in ShouldShowHelp
  • Make file extension checks case-insensitive in discovery
  • Return parse errors instead of silently skipping failures
  • Resolve schema input/output refs relative to schema file directory
  • Clean up _internal key from generator output
  • Fix build script to exit on build errors
  • Fix validation scripts set -e interaction and remove dead code
  • Fix .gitignore to only exclude test output directories

Documentation

  • Remove references to non-existent CLI flags from docs
  • Add examples to the main README
  • Add the logo and include it in the README
  • Create CODE_OF_CONDUCT.md (Contributor Covenant v2.1)
  • Update changelog

Code Quality

  • Run gofmt across entire project
  • Add Go unit tests for validator, discovery, and generators
  • Add missing expected fixture files and update stale baselines
  • Organize .gitignore file

Dependencies

  • Upgrade esbuild and vitepress to fix security vulnerabilities
  • Bump gopkg.in/ini.v1 from 1.67.0 to 1.67.1
  • Bump github.com/BurntSushi/toml from 1.5.0 to 1.6.0
  • Bump esbuild from 0.25.5 to 0.27.2
  • Bump vitepress from 1.6.3 to 1.6.4
  • Bump vite (npm_and_yarn group)

Security

  • Resolved Dependabot alerts for preact, mdast-util-to-hast, and vite

Release v1.0.4

30 Jun 07:16
f9d20f3

Choose a tag to compare

v1.0.4

New Features

  • Added: addKeySuffix transformer - Adds suffixes to all keys within a map object
    • Usage: Transforms map keys by appending specified suffix to each key name
    • Fields: type: "addKeySuffix", path: "path.to.map", suffix: "_suffix"
    • Example: Transform {host: "localhost", port: 5432} to {host_prod: "localhost", port_prod: 5432}
  • Added: deleteKey transformer - Removes specified keys from configuration
    • Usage: Deletes configuration keys at specified paths (useful for removing sensitive data)
    • Fields: type: "deleteKey", path: "path.to.key"
    • Example: Remove secrets, temporary values, or deprecated configuration keys
  • Added: trim transformer - Trims whitespace or custom patterns from string values
    • Usage: Cleans up string values by removing unwanted characters from start/end
    • Fields: type: "trim", path: "path.to.string", pattern: "characters" (optional)
    • Default: Trims whitespace if no pattern specified
    • Example: " value " to "value" or "---token---" to "token" (with pattern: "-")
  • Added: replaceKey transformer - Replaces value with content from another path
    • Usage: Takes value from target path, places it at destination path, then deletes target
    • Fields: type: "replaceKey", path: "destination.path", target: "source.path"
    • Example: Move temporary/staged values to their final configuration locations

Enhancements

  • Enhanced: changeCase transformer now supports additional case formats
    • Added: kebab case support for kebab-case conversions
    • Added: pascal case support for PascalCase conversions
    • Supported formats: upper, lower, snake, camel, kebab, pascal
  • Enhanced: Transformer Definition structure with new fields
    • Added: suffix field for addKeySuffix transformer
    • Added: pattern field for trim transformer
    • Added: target field for replaceKey transformer
    • Improved: Variable substitution now supports all new transformer fields

Tests

  • Enhanced: Transformer test suite to include new transformer types
    • Added: Test schemas for addKeySuffix, deleteKey, trim, and replaceKey transformers
    • Added: Test cases covering all new transformer functionality and edge cases
    • Added: Error handling tests for new transformers (missing paths, type mismatches)
    • Added: Variable substitution tests for new transformer fields

Documentation

  • Enhanced: Transformation documentation with comprehensive coverage of new transformers
    • Added: Complete documentation for addKeySuffix transformer with examples
    • Added: Complete documentation for deleteKey transformer with use cases
    • Added: Complete documentation for trim transformer with pattern examples
    • Added: Complete documentation for replaceKey transformer with workflow examples
    • Updated: Transformation overview to include all eight available transformer types
    • Enhanced: Combined transformation examples showing new transformers in action

Release v1.0.3

30 Jun 06:45
9eb5355

Choose a tag to compare

Release v1.0.3

New Features

  • Added: timestamp generator - Generates current timestamp values in various formats
    • Formats: unix, unixmilli, rfc3339, iso8601, and custom Go time format strings
    • Usage: Perfect for adding creation timestamps, build times, or unique time-based values
  • Added: random generator - Creates random values in multiple formats
    • Formats: int:min:max, float:min:max, string:length, bytes:length, uuid
    • Usage: Ideal for generating test data, session tokens, or random configuration values
  • Added: id generator - Generates various types of identifiers using [a-zA-Z0-9] characters
    • Formats: simple:length, prefix:prefix:length, numeric:length, alpha:length, sequential, timestamp
    • Usage: Creates user IDs, session counters, trace IDs, and other unique identifiers

Enhancements

  • Enhanced: release.sh - Added automated build step and changelog reset functionality
    • Added: Automatic execution of builds.sh before release process
    • Added: Post-release changelog reset with user confirmation
    • Added: reset_changelog() function to prepare changelog for next development cycle
    • Added: Automatic backup creation when resetting changelog
    • Improved: Step numbering and workflow organization

Tests

  • Enhanced: Generator test suite to include new generator types
    • Added: Test schemas for timestamp, random, and id generators
    • Added: Test cases covering all new generator formats and edge cases
    • Added: Documentation for new generator test coverage

Documentation

  • Enhanced: Generator documentation with comprehensive coverage of new generators
    • Added: Complete documentation for timestamp generator with format examples
    • Added: Complete documentation for random generator with all format types
    • Added: Complete documentation for id generator with pattern examples
    • Updated: Generator overview to include all four available generator types

Release v1.0.2

26 Jun 22:48
b3eef54

Choose a tag to compare

[Latest Commit] - 2025-06-27

Release Script Enhancement

Modified Files

  • Enhanced: release.sh - Integrated automatic changelog extraction for GitHub releases

New Features

  • Added: extract_changelog_for_version() function to automatically extract release notes from CHANGELOG.md
  • Enhanced: Release creation process now automatically uses changelog content for GitHub releases
  • Improved: Fallback mechanism when version-specific content isn't found in changelog
  • Added: Automatic cleanup of temporary files during release process

Configuration Changes

  • Updated: Default notes_file configuration to use CHANGELOG.md
  • Enhanced: Release notes extraction supports various changelog formats (with/without brackets, version prefixes)

Internal Architecture Changes

New Packages and Modules

CLI Package (internal/cli/)
  • Added: commands.go - Command execution logic and coordination
  • Added: flags.go - Flag definitions, parsing, and validation
  • Added: help.go - Help text generation and display
Configuration Package (internal/config/)
  • Added: batch.go - Batch processing configuration
  • Added: config.go - Core configuration structures
  • Added: environment.go - Environment handling
Error Handling (internal/errors/)
  • Added: errors.go - Centralized error handling system
Features Package (internal/features/)
  • Added: generator/ - Code generation features (concat.go, registry.go, types.go)
  • Added: input_schema/ - Input schema validation (loader.go, validator.go)
  • Added: transformer/ - Data transformation features (add_key_prefix.go, change_case.go, registry.go, rename_key.go, set_value.go, types.go)
  • Added: validator/ - Validation engine (engine.go, number.go, numeric_validator.go, registry.go, string_validator.go, type_validator.go, types.go)
  • Added: variables/ - Variable handling (resolver.go, substitution.go, types.go)
Core Services
  • Added: logger/logger.go - Centralized logging system
  • Added: marshaller/ - Output formatting (env.go, json.go, marshaller.go, registry.go, toml.go, yaml.go)
  • Added: merger/merger.go - Configuration merging logic
  • Added: parser/ - Input parsing (detector.go, env.go, ini.go, json.go, parser.go, registry.go, toml.go, yaml.go)
  • Added: pipeline/ - Processing pipeline (batch.go, coordinator.go, optimized.go, pipeline.go, single.go)
  • Added: reader/ - File reading (discovery.go, reader.go, stream.go)
  • Added: util/ - Utility functions (type_inference.go, util.go)
  • Added: writer/ - Output writing (directory.go, target.go, writer.go)

Modified Schema Package (internal/schema/)

  • Removed: generator.go, transformer.go, validator.go - Functionality moved to internal/features/
  • Modified: vars.go moved to internal/features/variables/resolver.go
  • Added: processor.go - Schema processing logic

Test Infrastructure Changes

  • Added: Batch processing tests (test/batch/)
  • Added: Environment integration tests (test/env-integration/)
  • Added: Format conversion tests (test/format-conversion/)
  • Added: Generator tests (test/generators/)
  • Modified: test/common_functions.sh - Updated common test functions

Summary

  • 58 new files in internal/ package
  • 200+ new test files across multiple test suites
  • Complete modularization of the codebase with feature-based architecture
  • Comprehensive test coverage for batch processing, environment integration, format conversion, and generators

Key Improvements

  1. Modular Architecture: Complete restructuring into feature-based modules
  2. Enhanced Testing: Comprehensive test suites for all major features
  3. Better Separation of Concerns: Clear separation between CLI, processing, and feature logic
  4. Improved Maintainability: Registry-based pattern for extensible functionality
  5. Robust Error Handling: Centralized error management system

Release v1.0.1

14 Jun 07:56

Choose a tag to compare

What's Changed

  • Bump github.com/BurntSushi/toml from 1.4.0 to 1.5.0 by @dependabot in #2

New Contributors

Full Changelog: v1.0.0...v1.0.1

Release v1.0.0

14 Jun 05:07
206b2ff

Choose a tag to compare