heartwood every commit a ring

Add changelog entries for rewrite and recent shipped work

3588d2ea by Isaac Bythewood · 5 days ago

modified templates/pages/changelog.html
@@ -34,6 +34,34 @@  <div class="row mt-4">    <div class="col-lg-8 offset-lg-2">      <div class="changelog-entry">        <div class="changelog-date">2026-05-07</div>        <ul>          <li>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 Uvicorn or separate scheduler process. The collector endpoint and embed snippet are unchanged, so existing tracked sites keep reporting without edits</li>          <li>Drop the multi-user accounts model. Auth is now a single operator password from <code>.env</code> with signed-cookie sessions and <code>SameSite=Strict</code> instead of CSRF tokens</li>          <li>Route bot traffic into a dedicated <code>bot_events</code> table at write time so human dashboard queries never have to filter it</li>          <li>Auto-download the GeoIP database and ua-parser regexes on boot when missing or stale; the server still boots and serves dashboards if either download fails</li>          <li>Add an <code>analytics migrate</code> subcommand that imports an existing Django SQLite into the new schema while preserving property UUIDs, so embedded snippets keep working after the cutover</li>          <li>Add an in-memory dashboard cache (5-minute TTL, keyed by property + date range + filter), bypassed for PDF and markdown exports so they always reflect the live data</li>        </ul>      </div>      <div class="changelog-entry">        <div class="changelog-date">2026-04-29</div>        <ul>          <li>Replace the dashboard PDF report with a toner-friendly print template</li>        </ul>      </div>      <div class="changelog-entry">        <div class="changelog-date">2026-04-26</div>        <ul>          <li>Swap the US-only datamap for a Natural Earth world map with admin-1 drill-down on click</li>          <li>Switch IP geolocation from MaxMind to DB-IP City Lite (CC-BY-4.0, no signup, monthly auto-refresh)</li>          <li>Drop SQLite <code>mmap_size</code> to avoid a multi-process corruption hazard</li>        </ul>      </div>      <div class="changelog-entry">        <div class="changelog-date">2026-04-18</div>        <ul>