Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

  • Code Generation: Added the cs-godot-vector template override for Godot vector types.
  • Code Generation: Added the godot-editor template, which generates a Godot editor plugin that loads the configs in the editor and shows config ID properties as searchable dropdowns in the Inspector. It also generates the CfgIdPropHint and CfgIdPropType constants for exporting config IDs from game code.
  • Code Generation: The unity-editor template now registers a dropdown for every table that has a config ID, with the ID as its display name.
  • Code Generation: Added the ARCHMAGE_JAVA_OUTER_CLASS_NAME_SUFFIX and ARCHMAGE_GD_CLASS_NAME_SUFFIX environment variables for the enum code templates.
  • Code Generation: The Java outer class name and the GDScript class_name now end with Enum by default.
  • Code Generation: The generated C# ConfigAtlas registers the type converter of each CfgId type in a static constructor.
  • Code Generation: The C# JSON templates mark generated files with <auto-generated />.
  • Type System: Added switch|enum@<enumType> to hold enum items in switch columns. Data export (including --human-enum) and code generation treat the values as enum@<enumType>.
  • C# Code Generation: String config IDs now treat null as an empty ID in equality, hashing, conversion, and JSON output, and absent ref fields no longer serialize as null.
  • Code Generation: ref fields that target a virtual table now generate reference types instead of plain value types.
  • Code Generation: The generated L10n text accessors now return an empty string for blank l10n fields instead of failing.
  • Installation: Added a Windows installer for Windows 10 or later.
  • Type System: Added the ref@++ mark to designate preferred reference candidates when multiple ref values point to the same target entry, determining back-reference eligibility.
  • Type System: Added support for empty rgba color values, corresponding to implicit tree-node defaults.
  • Version Info: Added the --semver flag to specify the semantic version for the build, embedding it into the exported output (atlas.json / version.json).
  • Google Drive Integration: Wildcard pattern matching for Drive files now supports standard path matching semantics anywhere in the pattern.
  • Google Drive Pull Command: Added a major new archmage drive command suite (login, logout, list, download) to pull and sync spreadsheets from Google Drive to a local directory.
  • Data Export: Added the --omit-zero flag to automatically drop zero-valued object fields from the exported data payloads.
  • Logging: Added the --verbose / -v flag to raise selected debug logs to the info level.
  • Type System: The minmax data type now natively supports duration as a valid element type.
  • Type System: Added validation support for backref and backref-n fields.
  • Schema Generation: Added the --schema flag to generate .schema sidecar files that describe the exact types and structures of the parsed data.
  • Type System: Added support for using enum types as map keys.
  • Data Traversal: Introduced --jq and --jq-code flags to render jq-compatible node paths for easier downstream data traversal.
  • Weighted Pool (wtpool): Added support for using tree object ({}) and compact object (>>object) as item types within weighted pools.
  • Weighted Pool (wtpool): Added support for the synclen validation option.
  • Type System: Added the keyOnly option for both compact (>>map[K]V) and multi-column (map[K]V) map types.
  • Data Export: Added the --readable flag to emit human-friendly data formats during export.
  • Data Export: Added --human-wtpool to export weighted pools in an intuitive key-value structure instead of raw arrays.
  • Data Export: Added the --human-ref flag to output readable reference and back-reference values.
  • Data Export: Added the --human-duration and --human-enum flags for human-friendly output of durations and enumerations.
  • Data Export: Added the --emit-anchors flag to export configuration anchors as string literals.
  • Data Export: Added the --l10n-literal flag to disable l10n aggregation.
  • Data Export: Added the --path-as-is flag to preserve exact path values during export.
  • Data Export: Added --tree-float-type and --tree-int-type flags to explicitly control the type of numeric values in tree data structures.
  • Data Export: Added yaml as a natively supported output format for localization (l10n) data exports.
  • Data Export: Added support for configuring the JSON export indentation style via environment variables.
  • Logging: Added the --flush-on-progress flag to flush logs upon progress updates.
  • Minmax Type: Added support for the minmax data type across compact, multi-column, and tree structures, including full code generation support for C# and Go.
  • Spreadsheet Conventions: Added lookback operators (<1, <2, <3) in the header region to reuse values from preceding columns.
  • Data Constraints: The nonzero validation option is now fully supported for compact vectors and multi-column tuples/vectors.
  • Data Constraints: Added the synclen option to enforce equal-length containers.
  • Type System: Added the anchor type to enable named config-id lookups within reference fields.
  • Type System: Added support for hex color rgba values (e.g., #RRGGBB / #RRGGBBAA).
  • L10n Key Access: Added built-in L10nKey() / GetL10nKey() accessor methods to the generated enum code across all supported languages.
  • C# Code Generation: Added ConfigAtlas.Instance for global atlas singleton access.
  • C# Code Generation: Enabled direct configuration lookup using strongly-typed Config ID structs (e.g., id.Cfg).
  • C# Code Generation: Added support for mapping to external C# vector types and enabled nullable reference types.
  • Code Generation: Added the --unity flag to support mapping to Unity’s built-in vector types.
  • Data Bundling: Added the --add-meta flag to the bundle subcommand to inject __meta__ root nodes into the final output.
  • Virtual Tables: Added extensive support for virtual tables, including conflict checking and cross-file reference/backref resolution.
  • Data Export: Added the --no-atlas flag to the export subcommand to skip atlas.json generation.
  • Export Capabilities: The --l10n-output-formats option now accepts multiple comma-separated formats, generating them simultaneously in a single pass.
  • Format Conversion Utility: Added the conv subcommand to explicitly convert tree-structured config files to JSON.
  • Type System: Added the switch behavior type as a multi-branch selector to determine active fields in conjunction with the Case header.
  • Type System: Added the discard option to drop fields from the output while keeping them available for validation.
  • External Enums: Added code generation support for mapping external enum types across all language templates.
  • Version Info: Introduced the --vcs flag, automatically bundling Git branch, commit ID, and author metadata directly into the output.
  • Data Bundling Utility: Added the bundle subcommand to merge multiple tree-structured data files into a single JSON file.
  • Initial release.