Repository navigation
v0.9.0
Headline
Mod 0.9 lets an app adopt generated files feature by feature. A checkout can hold several lineages, each with its own installed record. A lineage cannot take another lineage's files or a host-owned path, can require other lineages, and can claim existing files whose bytes already match, never overwriting ones that differ. A 0.8 checkout keeps working and moves to the new layout on its next update. The API is still experimental and supports POSIX checkouts only.
Added
- Maintenance holds many installed lineages per checkout, one record each under
.mod-maintenance/installed/. A 0.8installed.jsonkeeps working and migrates on that lineage's next write.Checkout::installed()lists every installed lineage (#183). - A path another installed lineage owns is a conflict (
owned_by:<name>). While one lineage has an unfinished update, other lineages are refused (pending:<name>). Artifacts can declarerequires(lineage names, at an exact version or*; an exact requirement blocks updating that lineage to another version,required_by:<name>) andhostOwnedpath prefixes that no other lineage may own, write or claim (host_owned:<name>) (#183). Checkout::inspect()andMaintenance::resume()take a reviewedclaimlist: existing files with identical bytes become owned without a write, and differing bytes are a conflict.Maintenance::diagnose()reportsclaimablepaths (#183).
What's Changed
- Keep one installed record per lineage by @jaspertey in #185
- Refuse paths owned by another lineage and check requires by @jaspertey in #188
- Enforce host-owned prefixes across lineages by @jaspertey in #190
- Claim identical existing files on inspect and resume by @jaspertey in #191
- Document lineages, ownership and claims by @jaspertey in #192
- Release 0.9.0 by @jaspertey in #193
Full Changelog: v0.8.0...v0.9.0