-
released this
2026-05-26 00:53:30 -04:00 | 39 commits to main since this releaseOpenPXE v0.4.62
The buildable companion to v0.4.61. Same cache fix and PXE-logo
compositor; the iPXE-rebuild-with-PNG-support stage from v0.4.61 has
been walked back and queued for a follow-up release once it can be
validated on native x86_64 hardware.Why v0.4.62 exists
v0.4.61 ships in source with an
ipxe-buildDockerfile stage that
compiles iPXE from source withIMAGE_PNGenabled. That stage hits
intermittentcc1: internal compiler error: Segmentation faultwhen
cross-emulating x86_64 gcc under QEMU on arm64 build hosts. No
v0.4.61 image was ever published as a result.v0.4.62 keeps everything else from v0.4.61 (the actual fix the
operator reported, plus the compositor code) and rolls the iPXE
build stage back to the boot.ipxe.org fetch path. The compositor at
/branding/pxe-logois wired and ready — when the iPXE-rebuild stage
lands in a follow-up release (on native x86_64 hardware), no other
code change is needed. The operator's logo will start painting in the
PXE menu the moment the underlying iPXE binaries grow PNG support.The actual fix: v0.4.6 UI changes land in your browser
Operators who pulled v0.4.6 didn't see the v0.4.6 UI changes — the
top-right user menu, the IdP logo URL field, the realigned account
form. The version chip in the footer correctly read "v0.4.6" because
it's dynamic, butapp.jsandapp.csslive at fixed URLs that
browsers happily reused from before the upgrade.Fixed in v0.4.62:
index.htmlnow appends?v=<openpxe-version>to every asset URL
(app.css, app.js, logo.svg). Every release ships brand-new asset
URLs.Cache-Control: no-cache, must-revalidateon every asset handler.
index.html itself is no-cache so the browser learns about the new
?v=…value on the next page load.
Net effect: v0.4.62 → next release upgrades, and any prior upgrade
once you're on v0.4.62, will land in the browser on the next page
load. No hard refresh required.PXE-logo compositor (ready, waiting for PNG-enabled iPXE)
Even though the operator's logo can't paint in the PXE menu yet
(boot.ipxe.org's binaries omitIMAGE_PNG), the server-side
compositor that prepares the logo for that paint is in place:- New
openpxe-iso-store::pxe_logo::compose_pxe_logodecodes any
raster the operator uploads (PNG / JPEG / WebP / GIF), downscales
to fit a 600×200 bounding box, and pastes it horizontally centered
with a 64-pixel top margin onto a transparent 1024×768 canvas.
Returns PNG bytes. GET /branding/pxe-logoreturns that composed PNG. SVG uploads
still 404 here (iPXE can't rasterize SVG); the WebUI's top-left
mark continues to read directly from the SVG upload.
The follow-up release will swap the boot.ipxe.org fetch for a
make-from-source stage withIMAGE_PNGenabled, at which point
this endpoint goes live without any code change.What stayed from v0.4.6
The ASCII OpenPXE wordmark in
render_menuis back for v0.4.62. It
paints on every iPXE build regardless of PNG support — it's the
correct fallback for the binaries we currently ship. When the real
image paints, it'll be retired in the same release.Container image
gitea.milesward.dev/mward4/openpxe:0.4.62gitea.milesward.dev/mward4/openpxe:latest
linux/amd64; static-musl
/openpxebinary unchanged. Image size
~98 MB.Quality
- 142 tests passing (unchanged from v0.4.61): the compositor
tests still run; the menu test asserts the ASCII banner is present. cargo clippy --workspace --all-targetsclean.
Compatibility
- Existing deployments upgrade in place. No data-file format
changes; all ofauth.json,branding.json,sso.json,
hosts.json,meta.jsoncontinue to read identically. - The v0.4.61 git tag stays where it is — broken Dockerfile,
reference-only. Pull v0.4.62 (or:latest) for a working image.
Downloads