0.5.0
Snapshots are timestamped; fp apply knows what "latest" means
Two coupled changes that retire the single-named-slug-per-release convention in favour of accumulating timestamped snapshots that the chart picks latest from at deploy time.
fp snapshot — timestamp default
fp snapshot with no --slug now produces a UTC timestamp dir:
$ fp snapshot
# → web/imports/2026-05-14T10-56-09Z/The pre-existing cascade (state.LastSlug → git branch → composer name → timestamp) is removed. --slug=<name> is still the explicit override for milestone markers (e.g. --slug=pre-2026-rebrand).
New sub-second collision guard: firing fp snapshot && fp snapshot within the same UTC second refuses with wait a moment and re-run, or pass --slug=<name> — pre-clean no longer silently wipes the prior capture. Only fires for the timestamp-default path; explicit --slug=foo keeps its iterate-on-named-slug overwrite behaviour.
fp apply — pick latest with no arg
fp apply # NEW: picks latest by manifest.created
fp apply 2026-05-14T10-56-09Z # explicit slug (unchanged)
fp apply web/imports/sts-launch # path (unchanged)Walks [snapshot].output_dir, reads each manifest.yaml, applies the snapshot whose created is highest — same logic the charts install Job uses at deploy time, so local apply and in-cluster apply target the same snapshot from the same source of truth.
Helper exported as apply.PickLatest() for future fp init reuse.
Why this matters
The old convention required designers to git rm the previous snapshot dir on each release (otherwise the chart's install Job hard-failed on >1 manifest.json). That destroyed history at the filesystem layer — only the git log carried "what did the design look like 3 iterations ago". Timestamps let snapshots accumulate; git log + commit messages carry the human-readable "what changed".
Breaking
- Scripts that grep for
snapshot-YYYYMMDD-HHMMSSin captured dir names need updating toYYYY-MM-DDTHH-MM-SSZ. - Requires
charts≥ v0.12.0 once tenants accumulate multiple snapshots — pre-v0.12.0 install Jobs still hard-fail on >1.
Cross-repo
See workspace .aidocs/timestamp-snapshot-slugs.md for the full plan. The matching docs sweep (site-template README, docs designer-flow) is in flight.
Upgrading
brew upgrade fp
fp version # → v0.5.0