• v0.4.4 7b972dc049

    mward4 released this 2026-05-25 17:47:01 -04:00 | 43 commits to main since this release

    OpenPXE v0.4.4

    Settings tab lands with API reference + custom branding, ISOs get an
    operator-controlled menu category, and Storage now shows how much room
    is left on the volume.

    New: Settings tab

    A dedicated Settings nav item between Terminal and About. Three cards:

    • Identity & access — read-only placeholder for the LDAP, OIDC, and
      user-management work coming in a future release. Today OpenPXE has no
      built-in auth on the WebUI; run behind an identity-aware reverse proxy
      (Authentik, Authelia, oauth2-proxy) for hardened deployments.
    • Branding — upload a custom WebUI logo (PNG, SVG, JPEG, WebP, or
      GIF; up to 2 MB). Persisted under <work_dir>/branding/ and served at
      /assets/logo.svg in preference to the bundled mark. "OpenPXE v0.4.4"
      pins to the sidebar footer so the backend identity stays visible even
      with custom chrome (FleetDM-style).
    • API reference — a self-rendered, grouped list of every /api/*
      endpoint with method, path, and one-line summary. Sourced from a new
      GET /api/docs so operators chasing an integration get it in-product
      rather than having to fetch the OpenAPI YAML separately.

    Storage

    • Type column is now an OS / Tools dropdown. Defaults to OS — the
      ISO is routed by detected family into the Linux or Windows installer
      submenus. Flipping it to Tools moves the entry into the Tools submenu
      next to memtest / shell / NIC info. Family detection still drives
      BIOS/UEFI / kernel args; only the menu placement changes. New endpoint:
      PUT /api/isos/:id/category body {"category":"os"|"tools"}.
    • Disk space card. Free / used / total for the volume hosting the
      ISO directory, with an 80% / 95% colour ramp on the bar. Lives at the
      top of the Storage tab so a half-full volume is visible before you
      start an upload. New endpoint: GET /api/storage/disk. The
      statvfs call lives in iso-store so the http-api crate stays
      #![forbid(unsafe_code)].

    UI polish

    • Aligned brand block. The sidebar header now matches the topbar
      height exactly so the dividing line runs straight across the top of
      the app — no more "OpenPXE big, Dashboard small, different heights"
      step. Brand badge is 26 px icon + 15 px label, matching the topbar's
      h1.
    • Light-mode terminal. --terminal-bg and the per-level text
      colours now track the active theme. Previously the Terminal pane
      stayed dark in light mode, looking like a stuck panel.
    • Sidebar footer version line. "OpenPXE v0.4.4" is pinned below the
      advertised PXE URL so backend identity survives any operator-uploaded
      logo.
    • About tab. Lead paragraph now spans the full content width
      (previously capped at 60ch leaving the right two-thirds blank), and a
      Docs row links to https://openpxe.com/.

    Container image

    • gitea.milesward.dev/mward4/openpxe:0.4.4
    • gitea.milesward.dev/mward4/openpxe:latest

    linux/amd64 Debian 12-slim runtime + binary + iPXE binaries + wimboot,
    non-root UID 10001 with setcap NET_BIND_SERVICE.

    Quality

    • 106 tests passing (was 89 in v0.4.1). Net +17 from new branding
      unit tests, store/disk plumbing, and integration coverage for the
      category / disk / docs / branding endpoints.
    • cargo clippy --workspace --all-targets clean.

    Compatibility

    • Old meta.json files without a category field deserialize as Os
      (matches v0.4.1 behaviour — everything in OS Installers). No migration
      needed.
    • /api/settings is unchanged; existing automations keep working.
    Downloads