Changelog
Every release that reached production, newest first. Staging builds stay off the list, so a version shows up here the moment it's promoted.
- 0.0.66PlatformAug 27, 2026Under the Hood
- Upcheck-api@0.0.66
- Say where the FCM credentials go
- A store reviewer's sandbox purchase unlocks the plan
- 0.0.65PlatformAug 10, 2026Fixed
- A teammate's audit trail survives their account deletion
Under the Hood- Upcheck-api 0.0.65
- 0.0.64PlatformAug 4, 2026Fixed
- On-call stops paging people who lost the project
Under the Hood- Release 0.0.61
- 0.0.63PlatformAug 4, 2026Fixed
- A PAT stops authenticating when its holder loses the project
Under the Hood- Release 0.0.60
- 0.0.62PlatformAug 4, 2026What's New
- A project admin can manage its status page
Fixed- Return 500 for an unhandled error, not 400
- Stop echoing internal errors, and scope an incident by its own project
Under the Hood- Upcheck-api 0.0.62
- 0.0.61PlatformAug 2, 2026Fixed
- Report escalation deliveries that reached nobody
Under the Hood- Release 0.0.61
- 0.0.60PlatformAug 2, 2026Fixed
- A manual incident belongs to the project owner, not its declarer
- Stop a manual incident from muting a monitor's alerts
Under the Hood- Release 0.0.60
- 0.0.59PlatformAug 2, 2026What's New
- A project reports the plan it actually runs on
Fixed- Point a create's audit entry at what it created
- Removing a member revokes the tokens that membership justified
Under the Hood- Release 0.0.59
- Drop the checks metric — a number with no cap and a month-wide join
- 0.0.58PlatformAug 2, 2026What's New
- /v1/projects tells each caller their role on the project
- /v1/account says which store sold the subscription
- /v1/account reports when paid access ends
Under the Hood- Release 0.0.57
- Release 0.0.56
- 0.0.56PlatformAug 2, 2026What's New
- Keep the warnings and errors the code was swallowing
- Record why a push failed, instead of only that one token died
- Keep monitor check state on the monitors row, not in KV
Fixed- Close the audit trail's coverage and retention holes
- Debounce the up<->slow edge instead of moving on one sample
- Land the two public-board polls on the same tick, and skip them on staging
- Read the gap timestamp off the newest rollup bucket, not MAX()
- Settle the periodic jobs against one cron stamp key
- Rewrite the roadmap/changelog caches only when they changed
Under the Hood- Release 0.0.56
- 0.0.55
- 0.0.54
- 0.0.53PlatformJul 23, 2026What's New
- Accept native Google client audiences for app sign-in
- Android push delivery via FCM (dual-rail with APNs)
Fixed- Separate the Apple/Play and Paddle billing rails
Under the Hood- Bump backend to 0.0.53
- 0.0.52PlatformJul 20, 2026What's New
- Branded HTML email templates for alerts and escalation
Under the Hood- Bump version to 0.0.52 for production release
- 0.0.51PlatformJul 20, 2026What's New
- Sync roadmap stage tag + post body for a fully Discord-built board
- 0.0.50PlatformJul 20, 2026What's New
- Gate member resource access on owner plan across all widenings
- Hard-pause monitors over plan cap on downgrade
- Clamp monitor check interval to owner plan floor in tick
- Cap active maintenance windows to owner plan in tick exclusions
- Suspend team member access when owner drops below team plan
- Darken public status pages and over-cap custom domains on downgrade
- Serve a public changelog of production GitHub Releases
- 0.0.48PlatformJul 19, 2026What's New
- Derive roadmap card type from the poster's forum tag
- Sync Discord suggestion votes into a public roadmap endpoint
Under the Hood- Bump version to 0.0.42
- Set the Discord roadmap channel id, enabling the sync
- Set the Discord guild id for the roadmap sync
- 0.0.47PlatformJul 19, 2026Fixed
- Tell invitees which sign-in matches the invited email
- Let a project member leave (remove themselves)
- 0.0.46PlatformJul 19, 2026What's New
- Branded HTML email templates for alerts and escalation
- 0.0.45PlatformJul 19, 2026What's New
- Rate-limit unauthenticated MCP discovery and auth POSTs by IP
- 0.0.44PlatformJul 19, 2026What's New
- Expose p50/p95/p99 latency on the monitor history
- 0.0.43PlatformJul 19, 2026What's New
- Add incident postmortems
- Ignore sandbox RevenueCat events in production
- Persist the rate-limiter window in Durable Object storage
Fixed- Use new_sqlite_classes for the rate-limiter DO (free plan)
- Enforce the API rate limit with a Durable Object
- 0.0.42PlatformJul 19, 2026What's New
- On-call escalation policy, tick stepping engine, and incident ack
Under the Hood- On-call & escalation design spec
- 1.0.0+62AppJul 19, 2026What's New
- Acknowledge incidents from the escalation push action
- 0.0.41PlatformJul 19, 2026What's New
- Rate-limit the programmatic API and MCP per plan
- 0.0.40PlatformJul 19, 2026What's New
- Gate project incident feed on owner plan, add monitor coverage endpoint
- Let project admins manage maintenance windows, cap on the owner's plan
- 0.0.39PlatformJul 19, 2026What's New
- Cap active maintenance windows at 10 on Pro
- 0.0.38PlatformJul 19, 2026What's New
- Cap email alerts per account (Pro 30/day 500/mo, Team 100/day 1500/mo)
- STATUS_DOMAIN_ALLOW punches operator test holes through the own-zone domain guard
- Wire Cloudflare for SaaS config for custom status-page domains on staging
- Sweep activity rows on the plan retention window and cap event reads to match
- Age every account log out on its plan's retention window
Fixed- Point the default CNAME target at cname.upcheckstatus.com
- Log the Cloudflare error detail when a custom-hostname call fails
- 0.0.37PlatformJul 17, 2026What's New
- Cap custom status-page domains per plan
Under the Hood- Release 0.0.37
- 0.0.36PlatformJul 17, 2026What's New
- Hold one channel per provider in a project
- Route each channel to the monitors and events it asked for
Under the Hood- Release 0.0.36
- 0.0.35PlatformJul 17, 2026What's New
- Keep the last response code and the records dns resolved
- Free the webhook channel family, add a plan-gated email alert channel
Fixed- Compare dns answers as a set, not in reply order
- Stop auto-pausing monitors of accounts with no iOS device
- Test check probes a HEAD monitor with HEAD, not GET
Under the Hood- Cut 0.0.35
- 0.0.34PlatformJul 16, 2026Fixed
- Scope the audit trail to the project, not the actor
Under the Hood- Release backend 0.0.34
- 0.0.33PlatformJul 16, 2026Fixed
- Run the daily jobs on elapsed time, not an exact minute
Under the Hood- Release backend 0.0.33
- 0.0.32PlatformJul 16, 2026What's New
- Collect an audit trail of account activity
Under the Hood- Release backend 0.0.32
- 0.0.31PlatformJul 16, 2026What's New
- Add an in-place password change endpoint
Fixed- Delete accounts that own reliability data
- Delete monitors that have had an incident
Under the Hood- Release backend 0.0.31
- 0.0.30PlatformJul 16, 2026What's New
- Collect every failing content rule with a per-rule verdict
Under the Hood- Release backend 0.0.30
- 0.0.29PlatformJul 16, 2026What's New
- Add a dense timestamped hourly latency series to the history endpoint
- Restrict IP-literal targets to port monitors
Fixed- Debounce rapid duplicate heartbeat pings
- 0.0.28PlatformJul 16, 2026What's New
- Require at least one content rule for keyword monitors
- Open advanced HTTP tuning to free; gate only SSL/domain monitoring
- Gate advanced monitor types (api/dns/scheduler) to paid plans
- Serve metric history up to the owner's retention window
- Per-plan metric retention with a daily rollup sweep
Under the Hood- Release backend 0.0.28
- 0.0.27PlatformJul 14, 2026What's New
- Coerce api monitor HEAD/OPTIONS to GET
- Gate JSON assertions (json_field) to paid plans
- GET /v1/monitors/:id returns full editable config
- Keep auth, body and content rules off the advanced gate
- Gate advanced HTTP monitor options to paid plans
- Surface active maintenance in usage + plan-cap field
- Gate paid features on the backend for free plan
Fixed- Align plan caps with advertised limits
- Refresh Supabase OAuth tokens before import instead of using the stale access token
Under the Hood- Release backend 0.0.27
- 0.0.26PlatformJul 13, 2026What's New
- Add port and DNS monitor types, persist keyword/api as distinct types
- Recent-checks bar shows a paused gap live, not on the next check
- Surface incidents and maintenance on the public status page payload
Fixed- Delete status_page_monitors rows before deleting a monitor
Under the Hood- Release 0.0.26
- 1.0.0+61AppJul 13, 2026What's New
- Create UI for port, DNS, keyword and API monitors
- 0.0.25PlatformJul 13, 2026What's New
- Scope personal access tokens to a single project
- Maintenance windows get an optional description
- DELETE /v1/incidents/:id — remove incident + updates + affected rows (owner/admin)
- Incidents feed carries each incident's update timeline
- Reject incident updates once the incident is resolved
- Drop monthly maintenance recurrence
- Weekly maintenance recurrence supports multiple weekdays
- Incidents feed carries source, title, and affected-monitor set
- Manual incident declaration + status page status from affected set; auto/manual independent
- Tick writes project_id + source + affected-monitor row when opening auto incidents
- Project-scope incidents schema — project_id + source + affected-monitors join (0046)
- Status page derives public status from open incidents + carries severity/updates
- Incidents API — severity/status fields, detail + updates timeline, project policy settings
- Gate incidents on policy threshold with flap-coalescing grace window
- Incident policy + public incident schema (0044)
- Maintenance windows support recurrence and per-monitor scope
- Daily uptime history per monitor in public status payload
Fixed- Reject a recurrence end date at-or-before its own start
Under the Hood- Incidents policy design spec
- 0.0.24PlatformJul 12, 2026What's New
- Status-page vanity subdomain (<label>.upcheckstatus.com) with unique handle + resolution
- Gate /v1/status reads behind an internal secret (status Worker only)
- Status-page config — branding, monitor selection/order/labels, uptime-bar options
- Custom status-page domains via Cloudflare for SaaS (plan-gated, config-gated)
- Status pages — public per-project page, config CRUD, custom-domain schema hooks
- Project maintenance windows that pause monitors (no checks/alerts/incidents while active)
- Telegram notification channel provider
- Member write access to project monitors and channels (team phase 2b)
- Account usage endpoint (plan quota + monthly checks/incidents)
- Team plan tier, invite plan/seat gating, and member read-access to project resources
- Per-project team membership and email invites (phase 1: schema, roles, invite/accept)
- Project-scoped notification channels (Slack/Discord/webhook) with tick-engine fan-out
- Filter /v1/incidents by project via ?project=
Under the Hood- Release 0.0.24
- 0.0.23PlatformJul 11, 2026What's New
- Time-aligned per-check latency series in monitor history
- Materialize incidents from status transitions
- Add native Paddle webhook for web subscriptions
Under the Hood- Release 0.0.23
- 0.0.22PlatformJul 10, 2026What's New
- Expose user id on GET /v1/account
- Expose hourly uptime counts in monitor history
- Use short opaque monitor refs instead of UUIDs
Under the Hood- Release 0.0.22
- Gate reapInactive behind REAP_INACTIVE var, off on staging
- Web/paddle-checkout into dev
- 0.0.21PlatformJul 9, 2026What's New
- Use short opaque project refs instead of UUIDs
- Origin-aware email-verify link + redesigned verify email
Under the Hood- Release 0.0.21
- 0.0.20PlatformJul 8, 2026What's New
- Unify web billing under RevenueCat (Paddle single source)
Under the Hood- Release 0.0.20
- 0.0.19PlatformJul 8, 2026What's New
- Add email verification (hard gate) for password sign-up
Under the Hood- Release 0.0.19
- 0.0.18PlatformJul 8, 2026Fixed
- Send reset email from the verified upcheck.rekwiem.com domain
Under the Hood- Release 0.0.18
- 0.0.17PlatformJul 8, 2026What's New
- Add dual-rail billing (web subscriptions + Apple IAP)
Under the Hood- Release 0.0.17
- 0.0.16PlatformJul 8, 2026Fixed
- Cap PBKDF2 at 100000 iterations (Cloudflare Workers limit)
Under the Hood- Release 0.0.16
- 0.0.15PlatformJul 8, 2026What's New
- Add email/password auth with code-based password reset
Under the Hood- Release 0.0.15
- 0.0.14PlatformJul 8, 2026What's New
- Add web Sign in with Google (/v1/auth/google)
Under the Hood- Release 0.0.14
- 0.0.13PlatformJul 8, 2026What's New
- Accept web Services ID as a valid Apple token audience
Under the Hood- Release 0.0.13
- 0.0.12PlatformJul 7, 2026What's New
- TLS certificate expiry monitoring via raw-TLS probe
Under the Hood- Release 0.0.12
- 1.0.0+60AppJul 7, 2026What's New
- Show certificate expiry + SSL expiry alert toggle
- 0.0.11PlatformJul 7, 2026What's New
- Domain-registration expiry monitoring via RDAP
Under the Hood- Release 0.0.11
- 0.0.10PlatformJul 7, 2026What's New
- Add per-monitor SSL/TLS error detection
Under the Hood- Release 0.0.10
- 0.0.9PlatformJul 7, 2026What's New
- Add per-monitor follow_redirects toggle
- Reject HEAD/OPTIONS for scheduler monitors
- Roll up heartbeat check-ins and misses
- Surface status_since on the monitor DTO
Fixed- Collapse follow_redirects "off" to null so edits don't misfire
Under the Hood- Release 0.0.9
- 0.0.8PlatformJul 6, 2026What's New
- Add scheduler monitor type
Under the Hood- Bump backend to 0.0.8
- 0.0.7PlatformJul 6, 2026What's New
- Mute monitors for a maintenance window
- Allow editing a heartbeat's grace via PATCH
- Cap heartbeat period at 7 days
Under the Hood- Bump backend to 0.0.7
- 0.0.6PlatformJul 6, 2026What's New
- Heartbeat monitors (inbound ping check-in)
- Add monitor type discriminator
- 0.0.5PlatformJul 6, 2026What's New
- Cap projects per plan (free 2, pro 10)
- Test-check returns a bounded response-body snippet (viewer, never stored)
Under the Hood- Drop the redundant scope prefix from backend release notes
- 1.0.0+21AppJul 6, 2026Under the Hood
- App release notes via git-cliff (What's New / Fixed), mirroring the API changelog
- 0.0.4PlatformJul 6, 2026Under the Hood
- **backend** · Remove legacy StoreKit JWS verification (RevenueCat is source of truth)