diff --git a/planning/releases/0.1.5.md b/planning/releases/0.1.5.md new file mode 100644 index 0000000..4f0a74b --- /dev/null +++ b/planning/releases/0.1.5.md @@ -0,0 +1,35 @@ +# compose2pod 0.1.5 — named volumes + +A patch release accepting Compose named volumes, previously a hard error. +Compose files that declare a top-level `volumes:` block or reference a named +volume in a service (e.g. `pgdata:/var/lib/postgresql/data` for database data +persistence) now convert without editing the compose file. + +## Fix + +- **Named volumes are accepted.** A service volume whose source is a bare + identifier rather than a host path (a Compose named volume) is emitted + verbatim as `-v :`. Podman creates the volume implicitly on + first reference — the same behavior as plain `podman run -v` — so no + explicit `podman volume create` step is needed. The volume persists on the + host after the pod is removed, identical to `docker compose down` without + `-v`. +- **Top-level `volumes:` is accepted (ignored).** Mirrors the existing + top-level `networks` treatment: the block's `driver`/`driver_opts` and + `external` settings are never read, since implicit creation with default + options is what podman does regardless. A non-default driver or an + `external: true` volume that should pre-exist has no special handling. + +## Downstream + +No action needed — additive and backward compatible. Documents that previously +failed with `unsupported top-level keys: ['volumes']` or "named volume ... is +not supported" now emit a pod script; nothing that converted before changes. + +## Internals + +- `architecture/supported-subset.md` documents the bind-mount vs named-volume + disambiguation (source starts with `.`/`/` vs bare identifier) and the + default-driver-only limitation. +- 95 tests at 100% line coverage (enforced); `ruff select=ALL`, `ty`, and + `eof-fixer` clean.