Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions .changes/unreleased/features-Added-20260411-152329.yaml

This file was deleted.

7 changes: 0 additions & 7 deletions .changes/unreleased/fixes-Fixed-20260411-144545.yaml

This file was deleted.

7 changes: 0 additions & 7 deletions .changes/unreleased/library-Fixed-20260411-155303.yaml

This file was deleted.

7 changes: 0 additions & 7 deletions .changes/unreleased/library-Fixed-20260411-160000.yaml

This file was deleted.

40 changes: 40 additions & 0 deletions .changes/v0.13.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
## v0.13.0 - 2026-04-11


### Features


#### Added

##### Multi-target file mappings in `repoverlay.ccl`

A source file can now map to multiple target paths using duplicate keys in the `mappings` section:

``` mappings = .editorconfig = .editorconfig .editorconfig = packages/frontend/.editorconfig ```

This copies the source file to every listed target. Single-value mappings continue to work as before. All targets are tracked in the overlay state file, so `remove` cleans up every copy.


### Fixes


#### Fixed

##### Log warnings when .ccl state files fail to parse instead of silently skipping

Previously, corrupted or unparseable .ccl state files were silently ignored. Now repoverlay logs a warning message identifying the problematic file before skipping it, making it easier to diagnose configuration issues.


### Command: `library`


#### Fixed

##### Surface file read errors in show_file_diff instead of silently treating as empty

Previously, if reading either the existing or overlay file failed in show_file_diff, the error was silently swallowed and the file was treated as empty. Now the function logs a warning and prints a user-visible warning message identifying the problematic file before returning early.

##### Validate overlay names reject path separators in release builds

`OverlayName` previously only checked for forward slashes via `debug_assert`, meaning invalid names with path separators (including backslashes) could slip through in release builds. Added `OverlayName::try_new` which returns an error for names containing `/` or `\`, and updated all user-input paths to use it.

41 changes: 41 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,47 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## v0.13.0 - 2026-04-11


### Features


#### Added

##### Multi-target file mappings in `repoverlay.ccl`

A source file can now map to multiple target paths using duplicate keys in the `mappings` section:

``` mappings = .editorconfig = .editorconfig .editorconfig = packages/frontend/.editorconfig ```

This copies the source file to every listed target. Single-value mappings continue to work as before. All targets are tracked in the overlay state file, so `remove` cleans up every copy.


### Fixes


#### Fixed

##### Log warnings when .ccl state files fail to parse instead of silently skipping

Previously, corrupted or unparseable .ccl state files were silently ignored. Now repoverlay logs a warning message identifying the problematic file before skipping it, making it easier to diagnose configuration issues.


### Command: `library`


#### Fixed

##### Surface file read errors in show_file_diff instead of silently treating as empty

Previously, if reading either the existing or overlay file failed in show_file_diff, the error was silently swallowed and the file was treated as empty. Now the function logs a warning and prints a user-visible warning message identifying the problematic file before returning early.

##### Validate overlay names reject path separators in release builds

`OverlayName` previously only checked for forward slashes via `debug_assert`, meaning invalid names with path separators (including backslashes) could slip through in release builds. Added `OverlayName::try_new` which returns an error for names containing `/` or `\`, and updated all user-input paths to use it.


## v0.12.0 - 2026-03-27


Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "repoverlay"
version = "0.12.0"
version = "0.13.0"
edition = "2024"
rust-version = "1.91"
authors = ["Tyler Butler <tyler@tylerbutler.com>"]
Expand Down
Loading