{% extends "base.html" %} {% block extra_css %} {% endblock %} {% block breadcrumbs %} {% endblock %} {% block main %}

{{ title }}

Shipped changes, incidents, and the occasional tease for something coming.

2026-05-09
  • Rewrite the entire backend from Django to a single statically-linked axum binary in Rust. sqlx + SQLite directly, minijinja for templates, no more Gunicorn or separate scheduler process. Property UUIDs are preserved so existing public status URLs keep working
  • Drop the multi-user accounts model. Auth is now a single operator password from .env with signed-cookie sessions and SameSite=Strict instead of CSRF tokens
  • Port the SEO crawler from requests + BeautifulSoup to reqwest + scraper. The 38 ranked checks (SEO, links, sitemap, accessibility, content, performance, security) match the original Python output
  • Switch alert email to lettre + hickory-resolver, still opportunistic STARTTLS direct-to-MX on port 25; Discord webhooks are plain HTTP POST
  • Add a ./status migrate <django.sqlite3> subcommand that imports an existing Django SQLite into the new schema while preserving Property UUIDs
  • Run the lighthouse CLI through bun run --bun so the runtime image drops nodejs and npm; chromium stays for lighthouse only
  • Probe Content-Encoding with a non-decompressing client so response_ms reflects the wire payload, not the decoded body
  • Fix the mobile nav menu being clipped by the fixed navbar height
2026-04-26
  • Drop SQLite mmap_size to avoid a multi-process corruption hazard
2026-04-18
  • Centralize SQLite settings and expand PRAGMA tuning (WAL, synchronous, cache, mmap, temp_store)
  • Commit alert state before firing notifications so a crash mid-alert can't cause duplicate sends
  • Harden the chromium wrapper with timeouts, /tmp temp files, and --headless=new
  • Redesign alert emails to match the warm-earth site palette
  • Stop wedge-reset from failing a healthy queued backlog of checks
2026-04-17
  • Redesign the whole dashboard with a warm-earth palette: mossy forest green and amber on deep charcoal, Monaspace Argon throughout
  • Rework the property page with live-signals tiles, Lighthouse score cards, styled Chart.js panels, and compact insight tables
  • Add recent-uptime bar strips and rolling uptime percentage to every property row on the dashboard
  • Surface the full Lighthouse performance breakdown: weighted metric tiles and top savings opportunities, ranked by impact
  • Swap the rocket emoji favicon for a themed SVG tile matching the in-app logo
  • Update the chromium wrapper to also pick up google-chrome so the webdev container runs locally without extra setup
  • Fix logout 405 by switching to a POST form + CSRF (Django 5 LogoutView is POST-only)
  • Refactor the scheduler with thread pools and graceful shutdown
  • Collapse the web and scheduler services into a single container via a Python supervisor in entrypoint.py
  • Replace the Exim relay with a Python direct-to-MX email backend
  • Set PYTHONUNBUFFERED so scheduler output reaches docker logs
2026-04-16
  • Add live crawl/lighthouse status panel with real-time recrawl and rerun buttons
  • Rewrite the SEO crawler in-process using requests + BeautifulSoup, no more Scrapy subprocess
  • Harden the scheduler, alert state machine, and crawl pipeline against races and partial failures
  • Harden the Lighthouse runner and surface failure reasons in the UI
  • Migrate the frontend build from Webpack/Yarn to Vite/Bun
2026-04-09
  • Migrate Python package management from Pipenv/pyenv to uv
2026-04-03
  • Bind the Docker port to localhost only, host should proxy in
2025-06-01
  • Refactor property email templates to share a base
2025-05-31
  • Improve alert system with state tracking and recovery notifications, no more alert spam on flapping sites
2022-07-25
  • Add recrawl button
  • Run crawler weekly on a schedule
2022-07-23
  • Add crawler insights: title, description, canonical, OG tags, H1 extraction per page
2022-07-16
  • Add docker init to handle Lighthouse Chrome zombies
2022-07-15
  • Add check queue to be more resource friendly
  • Add Lighthouse scores
2022-07-04
  • Add properties listing pagination
  • Add properties listing search
  • Improve properties listing UI
2022-06-26
  • Add HSTS monitoring
2022-06-25
  • Add uptime chart
2022-06-19
  • Create status project
{% endblock %}