What's Changed
- Add repository-local SwiftFormat configuration by @adamtheturtle in #49
- Lint prose with Vale to ban em dashes by @adamtheturtle in #50
- Add Dependabot configuration by @adamtheturtle in #51
- Add Dependabot auto-merge workflow by @adamtheturtle in #54
- Bump actions/checkout from 5 to 7 by @dependabot[bot] in #52
- Switch Vale to the upstream ai-tells package by @adamtheturtle in #55
- Bump astral-sh/setup-uv from 9.0.0 to 10.0.1 by @dependabot[bot] in #57
- Reject trailing commas in JSON configs by @adamtheturtle in #76
- Fail closed on excessively deep JSON by @adamtheturtle in #109
- Reject cyclic JSON containers before serialization by @adamtheturtle in #110
- Reject dangling symlinks during configuration reads by @adamtheturtle in #111
- Reject invalid TOML text encodings by @adamtheturtle in #112
- Reject non-file home directory URLs by @adamtheturtle in #113
- Validate default backup suffixes by @adamtheturtle in #114
- Keep transaction lock identity stable by @adamtheturtle in #115
- Reject NUL characters in backup suffixes by @adamtheturtle in #116
- Validate server specs before generating snippets by @adamtheturtle in #117
- Protect replacement temporaries with private permissions by @adamtheturtle in #118
- Parse TOML table headers before comments by @adamtheturtle in #119
- Reject incompatible TOML server ancestors by @adamtheturtle in #120
- Preserve nested custom TOML tables by @adamtheturtle in #121
- Reject descendants of owned TOML keys by @adamtheturtle in #122
- Preserve blank lines in custom TOML values by @adamtheturtle in #123
- Handle TOML byte order marks consistently by @adamtheturtle in #124
- Preserve mixed TOML line endings by @adamtheturtle in #125
- Reject symlinked configuration directories by @adamtheturtle in #126
- Validate configuration filenames by @adamtheturtle in #127
- Fix throwing README directory example by @adamtheturtle in #128
- Fix README restore format argument by @adamtheturtle in #129
- Reject NUL in configuration path components by @adamtheturtle in #133
- Handle absent TOML in README example by @adamtheturtle in #130
- Bind configuration reads to opened descriptors by @adamtheturtle in #134
- Serialize backup restoration transactions by @adamtheturtle in #135
- Bind configuration identity to file contents by @adamtheturtle in #136
- Use separate JSON and TOML paths in README by @adamtheturtle in #131
- Derive rollback state from prepared identity by @adamtheturtle in #137
- Document the TOML parser dependency by @adamtheturtle in #132
- Report unsafe backup path kinds by @adamtheturtle in #140
- Avoid interpolating server names in shell hints by @adamtheturtle in #142
- Reject multiply linked configurations by @adamtheturtle in #143
- Validate server specs before filesystem access by @adamtheturtle in #144
- Preserve invalid backup error details by @adamtheturtle in #145
- Reject NUL bytes in process arguments by @adamtheturtle in #147
- Report rollback cleanup failures by @adamtheturtle in #148
- Validate only backup policy during restoration by @adamtheturtle in #141
- Serialize public configuration writes by @adamtheturtle in #138
- Restore backups with an atomic exchange by @adamtheturtle in #149
- Classify targets before public writes by @adamtheturtle in #139
- Preserve concurrent updates during verification by @adamtheturtle in #151
- Bound public configuration writes by @adamtheturtle in #146
- Sync restored configuration state by @adamtheturtle in #155
- Distinguish committed Linux write failures by @adamtheturtle in #150
- Bind restore displacement to the checked file by @adamtheturtle in #153
- Bind restore activation to the validated backup by @adamtheturtle in #154
- Bind replacement writes to the temporary descriptor by @adamtheturtle in #156
- Bind replacement to the checked target by @adamtheturtle in #157
- Bind writes to the selected configuration directory by @adamtheturtle in #158
New Contributors
- @dependabot[bot] made their first contribution in #52
Full Changelog: 0.3.1...0.4.0