v1.3.17: hosting and firehose export s3_request_duration_ms{operation,outcome}, timing every S3 command to response headers (its _count counts requests by operation); the metrics exporter creates instruments on its own provider instead of the global meter; test fixes so a bare `bun test` passes, with refactors in main-app user/webhook routes and webhook-service redis, backfill and delivery
v1.3.16: hosting builds each site's manifest once per cached site row instead of on every request, lists a site's manifest paths for the HTML warmup only when a warmup actually starts, and serves files already in the memory tier from their buffer instead of wrapping them in a stream (TieredStorage.isInHotTier). No behaviour change; staging showed no measurable throughput change
v1.3.15: privacy policy covers pds.wisp.place accounts (nekomimi LLC as controller, email, sign-in devices with 90-day retention, Fyra Stack, Purelymail, Turnstile) and is restyled for reading; pull-request previews list repos with a spindle first and forks last, tagging forks
v1.3.14: fix malformed records creating unbounded cache hits, landing page cleanup
v1.3.13: hosting retries replica reads whose pooled database connection was already closed (CONNECTION_CLOSED) instead of failing the request; counted as hosting_db_read_retries_total
v1.3.12: fences of sites whose repo is gone from its PDS are released after repeated confirmation (3 checks over >= 24 h), served as 404 instead of 503; domains untouched, undone if the repo returns
v1.3.11: services export process and container memory gauges (process_memory_bytes, cgroup_memory_bytes, process_uptime_seconds) for per-service memory history
v1.3.10: transient revalidation quarantine fences are retried on a long schedule (leader-only, verified repair path), fence and DLQ gauges + dashboard, and the dashboard tells owners when the host could not fetch their site files
v1.3.9: batched access statistics and a 256 KiB cap on buffered hot promotion; hosting latency by cache tier and 404s by reason (metrics, log summary, dashboard)
v1.3.8: verified custom domains keep serving through DNS lookup blips (in-pass recheck + 30 min grace), fail-closed 503s logged as one summary line per site and reason, hourly OAuth cleanup logs only when it deletes something
v1.3.7: one DNS verification pass fleet-wide, failing domains back off and park, warnings logged once
v1.3.6: idle redis connections are kept alive through haproxy, client-aborted requests are no longer logged as errors
v1.3.5: the dashboard site list shows deploys and deletes without a reload
v1.3.4: hosting bounds its in-process memory (no unread log/metric rings, manifest byte budget, 32 MiB hot default, no copy on buffered reads)
v1.3.3: streamed reads warm the cache, storage scan only on the firehose leader, bounded firehose frame queue
v1.3.2: upload drop target and select chevrons
v1.3.1: list A and AAAA records per region on the domains page, fix the us east address
v1.3.0: dashboard redesign, sheets with columns and status words
v1.2.11: hide pull-request previews from the dashboard site list
v1.2.10: pull-request preview fixes, wispctl 2.1.0 preview deploy
v1.2.9: Sign in with GitHub goes straight to GitHub (sso=github)
v1.2.8: sign in with GitHub on the landing page, fae.mom hints, working client logo/policy links
v1.2.7: in-page sign-in dialog, sign-up via pds.wisp.place (prompt=create)
v1.2.6: dashboard mobile layout and DNS rechecks
v1.2.5: marque create and update permission fix
v1.2.4: marque DNS setup for custom domains
v1.2.3: dashboard updates and webhook OAuth binding fix
Release v1.2.2: wispctl 2.0.3 in the dashboard preview workflow
Release v1.2.1: one-click pull-request previews from the dashboard
Release v1.2.0: CAS storage migration, preview deploys, wispctl 2.0.2, create-wisp 2.0.2
hosting response streaming and copy reduction