v0.7.3
LatestPatch Changes
- 00f6d88: Contact notifications set
Reply-Toto the visitor’s name and address, so replying from your mail client answers the visitor directly.
Releases
Notable changes for every version. Entries are written asChangesets and compiled into CHANGELOG.md at release time; this page renders that file.
Reply-To to the visitor’s name and address, so replying from your
mail client answers the visitor directly.TURSO_DATABASE_URL and TURSO_AUTH_TOKEN
secrets, logs which of the accepted secret names the job can see, and explains where to add
them when none is found.drizzle/ with pnpm db:migrate, on demand or automatically when a merged
change adds one. It reads DATABASE_URL and DATABASE_AUTH_TOKEN from repository secrets.
The database settings also accept TURSO_DATABASE_URL and TURSO_AUTH_TOKEN, the names
Turso’s Vercel integration sets, so no renaming is needed there.strata-stack), published at https://stratastack.dev. The name
spells the stack: SQLite, Tailwind, React, Astro, Turso and Auth. Site name, tagline, canonical
URL, repository links, package and Worker names, the security contact and the docs are updated;
the design is unchanged. The announcement post moved to /blog/introducing-strata and the old
address redirects.packageManager: pnpm@12.4.2). pnpm’s settings moved from
the pnpm field in package.json to pnpm-workspace.yaml: allowed build scripts
(allowBuilds), transitive overrides and auditConfig.ignoreGhsas. The lockfile was
regenerated with pnpm 12. With pnpm 12, Dependabot’s release-age gate applies only to the
packages being updated instead of every lockfile entry, so update runs no longer fail while a
recently published package sits in the lockfile.83890a7: Repository-wide cleanup.
<account-menu> element
fetches the session once per page and swaps the “Sign in” link for the account and admin
links; server-rendered pages still get it from Astro.locals.?delivery=failed, linked from the
dashboard); statuses use readable labels (New, Read, Archived; Pending, Sent, Failed, Skipped)
and share one pagination component with the blog and users pages.scripts/migrate.ts so migrations run with production dependencies
only (docker run --rm --env-file .env astro-framework node scripts/migrate.ts); Drizzle Kit,
the adapters and the other build-time packages are now dev dependencies.src/lib/retention.ts with unit tests; pnpm db:prune prints
what it removed.requireEnv, pruneThrottle, POSTS_PER_PAGE, the
EmailNotConfiguredError class, re-exported auth client helpers) and stale configuration
(.npmrc, .node-version, wrangler types on every Cloudflare build) are gone; CI installs
through one composite action and caches the Playwright browser.e126ecd: Admin hardening.
getAuthoritativeSession()), instead of the five-minute session cookie
cache. Removing the admin role, banning or “sign out everywhere” now applies to the very next
request.pnpm admin:promote --revoke refuses without --force.writeAudit()); Better Auth user operations stay best-effort and the UI and docs say so./api/health returns only status and time to anonymous callers; administrators and
requests with Authorization: Bearer <HEALTH_TOKEN> get the full checks.CONTACT_MAX_AGE_DAYS (optional) lets pnpm db:prune enforce a maximum age for messages of
any status; the privacy policy and guide describe the retention rules precisely.9097054: Operational completeness:
RESEND_API_KEY, production requests now fail instead of printing sign-in links to the logs; the magic-link and password-reset UI is hidden until email is configured. Production deployments also validate BETTER_AUTH_SECRET at startup./admin) with a message inbox (read, archive, delete, resend notification), user management through Better Auth’s admin plugin (roles, bans, session revocation, deletion) and an audit log. Administrators come from ADMIN_EMAILS or pnpm admin:promote.pnpm db:prune) and a privacy policy that matches the product.next destination, the login copy reflects the configured methods, the theme toggle announces its action, docs carry real publication dates and the homepage shows installed versions from the lockfile.SITE_URL is empty or has no scheme: the canonical URL now falls back to the production URL Vercel or Netlify inject, then to siteConfig.url (see config/site-url.ts). CI fixes: the .data directory is tracked so the e2e database can be created on a fresh checkout, the e2e database is reset before the test server starts, and Lighthouse binds 127.0.0.1 explicitly.