Skip to content

0.5.0

Choose a tag to compare

@MatthewKennedy MatthewKennedy released this 14 May 11:03
· 10 commits to main since this release
23f3476

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-HHMMSS in captured dir names need updating to YYYY-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

Full diff

#9