Skip to main content

CHANGELOG.md

# Changelog

## 0.1.0 (2026-06-12)

Initial release.

- `DurableStash` — a [LiveStash](https://hex.pm/packages/live_stash) adapter
  backed by [DurableServer](https://hex.pm/packages/durable_server): one
  durable process per browser session, persisted to S3-compatible object
  storage. State survives live navigation, reconnects, LiveView crashes, and
  redeploys; recovery happens on every mount.
- Per-key diff writes with key-wise merge — concurrent tabs writing different
  keys cannot clobber each other.
- Per-key recovery scopes: `:session` (recover on every mount) and
  `:reconnect` (recover only on rejoins — crashes, Wi-Fi drops, deploys —
  and clear on fresh navigation; right for form drafts).
- `vsn`/`migrate` options for versioning the stored shape; mismatches without
  a migration discard to defaults.
- JSON-safety guards (`on_invalid_value: :raise | :log`) and JSON
  normalization at stash time, so recovered values are identical in dev and
  prod.
- `DurableStash.TestBackend` — an in-memory `DurableServer.StorageBackend`
  with faithful etag CAS, for tests and local development without S3.