# Change Log
## [3.5.6] - 2024-11-23
### Changed
- (internal) Parallelized analyze
## [3.5.5] - 2024-11-21
### Added
- `server.log` config
## [3.5.4] - 2024-11-20
### Added
- `checkpointed` boolean on `run` and `analyze` output, indicating if the checkpoint was used
### Fixed
- `checkpoint update` run without args always forced a help message
### Changed
- `analyze` and `run` no longer query the change provider when a checkpoint does not exist
- `--changes` and `--change-targets` flags on `analyze` are disabled if no checkpoint is available to guide change detection
- (internal) `Cargo.lock` to git
- (internal) Removed `hex` dependency
- (internal) Removed `flume` dependency
- (internal) Changed resolver to "2"
- (internal) Update CI to use locked cargo commands
## [3.5.3] - 2024-11-19
### Added
- `config generate` API for generating a configuration file that is synchronized with its source file
- Initial implementation of lock server, preventing parallel monorail use for a subset of APIs
## [3.5.2] - 2024-11-15
### Added
- `target render` API for creating a visual representation of the target graph
## [3.5.1] - 2024-11-14
### Changed
- Removed `--target (-t)` flag from `monorail analyze`
### Fixed
-Issue preventing `monorail run` from returning non-zero exit codes
## [3.5.0] - 2024-11-13
### Changed
- `--arg, --arg-map, and --arg-map` are now `--target-argmap, and --target-argmap`
- Default commands directory from `monorail` to `monorail/cmd`
### Added
- Optional per-target base argmaps
- Default argmaps directory of `monorail/argmap`
### Changed
## [3.4.1] - 2024-11-12
### Changed
- `--arg, --arg-map, and --arg-map` may all be specified simultaneously, and are processed with a precendece order
- Support for multiple `--arg-map` and `--arg-map-file` arguments and merging of them
### Removed
- `command.definitions.args` has been removed in favor of multiple arg-map/arg-map-file support
## [3.3.1] - 2024-11-11
### Changed
- Configuration `output_dir` changed to `out_dir` for consistency
### Fixed
- Graph cycle detection when specific targets are specified to `analyze` and `run`
## [3.3.0] - 2024-11-08
### Changed
- Omit null fields in serialized run results structure
- Adjusted run results structure to reduce duplication and improve logical grouping
- The `invocation_args` field in the run results structure is now `invocation`
## [3.2.1] - 2024-11-08
### Added
- `--arg`, `--arg-map`, and `--arg-map-file` arguments to `monorail run` for providing runtime arguments to commands
### Changed
- `--fail-on-undefined` now always defaults to `false`, instead of `true` when one or more targets is supplied to `monorail run`
### Fixed
- Improved error clarity for configuration file-related issues
## [3.2.0] - 2024-11-02
### Changed
- Disallow unknown fields in `Monorail.json`
- Allow target file contains check to traverse subtree
## [3.2.0] - 2024-11-02
### Changed
- The `commands.path` field now always defaults to `monorail`, relative to the target path
- The `commands.definitions.<command_name>.path` field is now interpreted relative to the repository root
- The `commands.definitions.<command_name>.args` field now applies to mapped definitions and discovered commands
## [3.1.1] - 2024-11-02
### Fixed
- Fixes staged changes not appearing in changesets when a checkpoint is not present (@neopug)
## [3.1.0] - 2024-10-31
### Added
- `--commands` flag for `monorail target show` for displaying available commands for targets
- Command sequence support and the `--sequences` (`-s`) flag for `monorail run`
### Changed
- The `--command` argument for `run` and `log show` has changed to `--commands` for consistency
- The `--target` argument for `run`, `analyze`, and `log show` has changed to `--targets` for consistency
- The `--start` (`-s`) argument for `run` and `analyze` has changed to `--begin` (`-b`)
## [3.0.6] - 2024-10-30
### Changed
- `monorail log show` and `monorail log tail` now return an error if neither --stdout nor --stderr are provided
## [3.0.4] - 2024-10-28
### Added
- `monorail out delete --all` for purging all run, result, log, and tracking data
## [3.0.3] - 2024-10-27
### Added
- An optional `--id` (`-i`) can be provided to `checkpoint update` to provide and id to use, instead of inferring one from end of history
### Changed
- `checkpoint update` now always stores inferred references fully resolved instead of the HEAD alias
## [3.0.2] - 2024-10-27
### Added
- A RFC3339 timestamp to all success and error output structs
### Changed
- Verbose logging timestamp format adheres strictly to RFC3339
## [3.0.1] - 2024-10-26
### Changed
- Removed serialization of null fields in `monorail config show`
## [3.0.0] - 2024-10-26
Dependency graph, parallel execution, replaced extensions with `monorail run`, and checkpoint rework.
### Added
- Replaced `monorail-bash` for running user-defined commands with `monorail run`
- Generate a target DAG from target `uses` definitions
- Parallel execution of user defined executables guided by the target DAG
- Tracking table for storing the change detection checkpoint and for future internal use
- Collection of compressed logs and results
- Real-time log streaming
### Changed
- Replaced tag-based checkpoints with a universal checkpoint file
- Replaced `monorail checkpoint create` with `monorail checkpoint update`
- Removed `git.trunk`, `git.remote`, and `git.tags_refspec_prefix` configuration
- Removed `extension` configuration
- Removed `libgit` integration and `use_libgit2_status` argument
## [2.0.0] - 2024-09-03
A large internal refactor to improve speed and flexibility.
### Added
### Changed
- Replaced `inspect change` command with `analyze`
- Replaced `release` command with `checkpoint create`
- Updated tutorial and documentation to reflect changes
- Removed concept of `group` and `project`, replaced with `target`
- Replaced `depend` with `uses`, and is no longer required to be pre-declared on a top level target (previously, `depend` entries had to be declared on the parent group)
- Multiple `Monorail.toml` fields now have defaults: `vcs.use = "git"`, `vcs.git.trunk = "master"`, `vcs.git.remote = "origin"`, and `extension.use`
- Changed checkpoint tag messages from plain text to JSON, and added change count
### Fixed
- Minor tag message formatting issue when using git tags for checkpointing
## [2.1.0] - 2024-09-05
### Changed
- '-d' working directory flag changed to '-w'
- Delete local git tag when a checkpoint fails to push
- Changed checkpoint id format from incrementing semver to incrementing `monorail-N`, N > 0