Skip to content

v2.39.0 — a static iframe shell and fewer D1 reads and KV writes

Choose a tag to compare

@github-actions github-actions released this 21 Oct 03:40
· 42 commits to main since this release
d69ec37

Highlights:

  • Static iframe shell: /embed/?slug=<slug> is served by Workers Static Assets, so an iframe pageview no longer runs the Worker for the shell. /embed/<slug> is unchanged.
  • Fewer D1 reads and KV writes: page vote/reaction totals are stored on write (no per-pageview counting), new admin-list indexes, sessions read once per request and refreshed at half-life, /feed/:slug and /c/:id edge-cached for 5 minutes. Anonymous comment posts no longer write KV (Workers AI verdict cache removed).
  • Cost visibility: /admin/usage counts D1 rows read/written (not queries) and adds a Workers AI neurons panel; each anti-spam control on /admin/settings states its per-comment cost.
  • Siteverify, Akismet and Workers AI calls now time out (5 s / 3 s / 5 s).

Notes for operators:

  • Run npm run upgrade (migrations 0031, 0032), then run once: npx wrangler d1 execute DB --remote --file src/db/post-deploy/0032_page_engagement_totals.sql. It recounts vote/reaction totals the old Worker changed between migrate and deploy. It is idempotent. Upgrades from this release on run it automatically.
  • To use the static shell, point iframe embeds at /embed/?slug=…. Its CSP comes from top-level ALLOWED_ORIGINS in wrangler.toml at build time, so redeploy after changing it. With ENV = "dev", [env.*] tables or no ALLOWED_ORIGINS, the Worker serves that URL instead.
  • Dashboard figures can trail a moderation action by up to a minute; the queue stays live.