✨ New Features
8005def - v2.5.0 T1 — libSQL (Turso) platform adapter + Docker Turso opt-in (PR #326 by @saltbo)
f3295d1 - avatar upload for Settings -> Profile (v2.5.0 T7) (PR #327 by @saltbo)
5593eec - v2.5.0 T3 — Vercel deployment (entry + vercel.json + workflow + docs) (PR #328 by @saltbo)
b5be4c5 - v2.5.0 T2 — AWS Lambda deployment (entry + SAM + workflow + docs) (PR #331 by @saltbo)
0f403f8 - v2.5.0 T4 — Netlify deployment target (PR #329 by @saltbo)
8b72a7d - v2.5.0 T6 — Google Cloud Run deployment (service.yaml + workflow + docs) (PR #332 by @saltbo)
d33800f - Azure Functions deployment target (v4, Node 22) (PR #330 by @saltbo)
bcb0b67 - platform: add getBinding() for platform-native resources (commit by @saltbo)
4f47a81 - image-upload: prefer R2 binding on Cloudflare, fall back to S3 (commit by @saltbo)
🐛 Bug Fixes
0883051 - ci: drop unsupported --json from wrangler d1 create (commit by @saltbo)
2656970 - ci: deploy from vite-plugin output instead of repo root (commit by @saltbo)
05e5e17 - settings: add missing avatar i18n keys + unify visual design across tabs (PR #334 by @saltbo)
95a6872 - cf-deploy: use R2 REST API for bucket ensure (wrangler lacks --json) (commit by @saltbo)
0adaac8 - cf-deploy: run wrangler from repo root, not dist/zpan (commit by @saltbo)
♻️ Refactors
👷 Build System
64774b9 - cf-deploy: auto-provision R2 public-images bucket + URL secret (commit by @saltbo)
07973b6 - deploy: fan-out dispatcher — one push, only configured platforms run (commit by @saltbo)
Docker
docker pull ghcr.io/saltbo/zpan:v2.5.0