Site: roro9stack.net, phase 1 (the home page, Install with a browser flasher, Downloads)

A Zola site in site/, from the design: both themes on the device's
palette, notched shapes, self-hosted fonts, the wordmark and icons, two
generated hero drawings, nine App cards (the mesh messenger marked
planned), real screenshots, the updates and build sections. The Install
page builds ESP Web Tools' manifest in the browser from the Gitea API (it
needs Caddy to allow the origin), refuses any download that isn't on the
project's server, and falls back to the esptool steps. Downloads lists the
releases. The focus ring shows on notched controls. A page checker fails
the build if a page loads from another origin.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
2026-10-06 18:20:18 +02:00
co-authored by Claude Sonnet 5.5
parent b92fc6e2e5
commit 8f4b5e0ddc
48 changed files with 2939 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
{% extends "base.html" %}
{% block title %}Downloads: roro9stack{% endblock %}
{% block description %}{{ page.description }}{% endblock %}
{% block main %}
{% set releases = load_data(url=config.extra.api ~ "/releases?limit=30&draft=false&pre-release=false", format="json", required=false) %}
<div class="wrap page">
<header>
<span class="eyebrow">Downloads</span>
<h1>{{ page.title }}</h1>
<p class="lead">{{ page.description }} To put one on a device, <a class="accent-link" href="/install/">install it from your browser</a>.</p>
</header>
<div class="prose">
<p>Each release has a <strong>signed update file</strong> (<code>.ota</code>: copy it to <code>/updates</code> on the SD card and install it from Settings → Firmware or the Storage App, or push it over Wi-Fi), a <strong>factory image</strong> (<code>-factory.bin</code>, the whole flash at offset 0 for a first install over USB), the <strong>symbols</strong> (<code>.elf.gz</code>, to decode a crash report) and <code>SHA256SUMS</code>. Debug Builds aren't published.</p>
</div>
{% if releases %}
<div class="releases">
{% for r in releases %}
<article class="release n-md">
<h2>{{ r.tag_name }}</h2>
<p class="meta">{{ r.published_at | date(format="%Y-%m-%d") }} · <a class="accent-link" href="{{ r.html_url }}">release notes</a></p>
<p>{{ r.body | split(pat="\n\n") | first }}</p>
<p class="files">
{% for a in r.assets %}<a href="{{ a.browser_download_url }}">{{ a.name }}</a> <span class="muted">({{ a.size | filesizeformat }})</span>{% endfor %}
</p>
</article>
{% endfor %}
</div>
{% else %}
<p class="prose">The list of releases couldn't be read when this page was built. They're all on <a class="accent-link" href="{{ config.extra.repo }}/releases">Gitea</a>.</p>
{% endif %}
</div>
{% endblock main %}