The marketing site home page led with a generic three-button row (GitHub / Reddit / Download) that funneled everyone to a single category page. With native apps now shipping for Android, iOS, macOS, and Windows plus a Debian server, the breadth of platform coverage was invisible — the one “Download” button undersold it.
The home hero (docs/_layouts/home.html) was built before the desktop/mobile
installers existed, so it had no per-platform entry points. There was also no
single self-serve install path for the server on the landing page — users had to
navigate into the docs to find the APT steps.
docs/_layouts/home.html: replaced the button row with a scoped
.krill-apps banner (“Apps for every platform”) reusing the existing
.krill-home design tokens — four direct-link app tiles (Play Store, App
Store, .dmg, .msi), a server install row with a copy-to-clipboard
one-liner + “Learn more”, and a compact “Get support” line carrying the
GitHub/Reddit links the old row owned.distro/server/install_krill.sh + distro/desktop/install_krill_desktop.sh:
two one-line installers (curl … | sudo bash) mirroring the documented APT
steps. Both split Java by arch (OpenJDK 25 on amd64, Azul Zulu on arm64); the
server uses the headless JRE, the desktop the headful JRE (a headless
GUI install crashes with java.awt.HeadlessException). The server script
prompts whether to add krill-pi4j (GPIO), autodetecting a Pi to set the
default. Served from cms.krill.systems/distro/{server,desktop}/.install_krill.sh
duplicates the APT/keyring/Java steps from the install-krill-server-* posts;
when the repo URL, suite, or Java requirement changes, update both the script
and the posts together (the script header calls this out)..dmg / Windows .msi links on the home page resolve only after their deploy
workflows publish; a tile can render before its artifact exists (the Windows
tile 404s until Deploy Windows.yml runs the first time). Treat a new tile as
live only once its latest URL serves..krill-apps, like the
existing .krill-home) so Claude-design handoffs don’t leak globals into the
Chirpy theme.curl … | sudo bash installer can’t read from stdin — stdin is the
piped script itself. Prompt and read from /dev/tty, and fall back to a
non-interactive default when no tty exists, or the prompt silently consumes
the rest of the script.