Ryan Malloy f7be0f7b18 Homepage redesign: lead with the HA integration, then the library
The previous homepage opened with prose ('What it is') and listed three
generic 'where to start' cards. New version is more concrete:

- Hero block with three call-to-action buttons (Add to HA, Decode .pca,
  Source on Gitea) using Starlight's hero frontmatter
- '## In Home Assistant' section opens with what users actually get,
  followed by a 2x2 grid of clickable HA screenshots (integrations
  list, integration page, device controls, dev-tools states) — each
  thumbnail links to the relevant detail page with a short caption
- '## In Python' section: 15-line OmniClient + events() example so
  the library shape is immediately legible, plus four bullets
  highlighting opcode coverage / typed dataclasses / mock controller
  / async-first
- '## Two non-public protocol quirks' kept verbatim — still the
  headline RE finding
- '## Read the in-depth content' replaces the three generic cards
  with six specific ones routing to install how-to, dev-stack
  tutorial, protocol reference, quirks explainer, file format,
  and journey

Build clean, 23 pages. Local container rebuilt + recreated. The
new sections render: In Home Assistant, In Python, Two non-public
protocol quirks, Read the in-depth content.
2026-05-10 18:18:44 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00
2026-05-10 16:42:12 -06:00

hai-omni-docs

Documentation site for omni-pca — a reverse-engineered Python library and Home Assistant integration for HAI/Leviton Omni Pro II home automation panels. Built with Astro + Starlight, organised around the Diátaxis framework.

Live: https://hai-omni-pro-ii.l.warehack.ing

Local development

make install   # one-time
make dev       # http://localhost:4321 with hot reload

Production build (smoke test)

make ci        # runs `npm run build`, output in ./dist

Deploy via Caddy

The container ships its static dist/ from an inner Caddy on :80; the host's caddy-docker-proxy terminates TLS and routes the configured DOMAIN to it via the external caddy network.

cp .env.example .env   # adjust COMPOSE_PROJECT / DOMAIN as needed
make build
make up                # then tails logs

Layout

src/
  content/docs/
    index.mdx
    start/         # Overview + Quick start
    tutorials/     # Diátaxis: learning-oriented
    how-to/        # Diátaxis: task-oriented
    reference/     # Diátaxis: information-oriented (protocol, file format, API)
    explanation/   # Diátaxis: understanding-oriented (quirks, architecture, bugs)
    journey.md     # Chronological retrospective
    changelog.md
  styles/theme.css # Slate-blue + amber accent
  assets/logo.svg

Source project

Description
Documentation site for warehack.ing/omni-pca. Astro + Starlight, Diátaxis-organized.
Readme 3.2 MiB
Languages
MDX 93.4%
JavaScript 2.7%
CSS 1.5%
Dockerfile 1.3%
Makefile 0.8%
Other 0.3%