Homelable 3.4.0
Hello Homelabers,
Today Homelable get a fresh new functionality, which I've been working on for a while (hurray for summer vacation) :
--- D O C S ---
Yep, you read it right, you can now document your infrastructure using a brand-new tool integrated into Homelable. I kept one thing in mind while developing this feature: it's a pain to build and a pain to maintain :D, so just like with the rest of Homelable, I did my best to make it as automated and user-friendly as possible :
- Markdown pages, attached to a device, a node, a canvas or to nothing at all, just a page of your own.
- A library with folders you make yourself.
- A device tree you can reorder however you like: by zone, group, type, subnet, rack, vendor, tag, or A–Z.
- Links between pages with [[…]], written from a picker instead of from memory.
- Full-text search across everything (and documents now show up in the canvas search too).
- History: up to 50 versions per page, with a line-by-line diff and restore.
- Backlinks at the bottom of every page: what points here, and from which line.
- A device page is filled in once from what the scan found (identity, hardware, services, network, operations, troubleshooting), then it's yours, nothing rewrites it behind your back.
- A banner when the device data has changed since, and the option to regenerate just one block.
- Tags, plus a review interval per page that feeds a "needs attention" list.
- Old device notes are carried over as they were, nothing lost.
Some screenshots :
Also, the rack canvas grows up too. The Device Inventory now owns the front panel : faceplate, size, colour and hand-placed ports travel with the device into every rack it is mounted in, and a mount decides when it shows its sockets.
Elsewhere: Proxmox guests can be nested inside their host on the canvas, Homelable can be served under a subpath behind an existing reverse proxy, and the MCP server goes from 24 tools to 47 with the rack canvas and the Device Inventory writes.
On the fix side, the two that matter most: the scanner no longer prints a page of plaintext on a JetDirect printer, and a Proxmox import no longer overwrites one guest's inventory row with another's facts.
Full changelog
Features
- A real document space for the homelab: markdown documents, a Library of folders, a pivotable Devices tree, wiki-links, FTS5 search with a
LIKEfallback, tags, and a "needs attention" bucket. Device documents are generated once from the scan facts, with an explicit "device data changed" banner and per-block regeneration. The olddevice_inventory.notesare migrated in verbatim and left in place. (#418) - Document history and backlinks, plus the documents in the canvas search modal and a picker for writing wiki-links. (#421)
- The rack faceplate is editable and the Device Inventory owns it: plate, U height, column span, colour and hand-placed ports are carried by the device, so it wears the same panel in every rack. Ports can be positioned by hand, from the device modal or straight from the inventory row. (#405)
- A rack mount chooses when it shows its ports (
auto,always,hover), and a cable can no longer end on a plate drawing no socket. (#407) - Proxmox guests can be nested inside their host on the canvas instead of sitting beside it on virtual edges, from the import modal and from the Device Inventory. (#399)
- Homelable can be served under a subpath:
VITE_BASE_PATHbecomes Vite'sbase, threaded through every URL, the status WebSocket, OIDC and both nginx configs. Defaults to/. (#412) - The MCP server covers the rack canvas and the Device Inventory writes — 24 tools to 47. (#414)
- The Homelable logo is in the brand icon picker, first in the catalog. (#411)
Fixes
- The scanner and the status checker never send an HTTP GET to a raw printing port again — a JetDirect printer took it as a print job and printed it, once a minute for an approved node. LPD and 9100-9107 are on the denylist now; Prometheus Node Exporter on 9100 loses its status check as a deliberate trade-off. (#406)
- A device declaring several IPs is matched on all of them, so it stops coming back as a new pending row on every scan. (#416)
- A Proxmox import no longer overwrites one guest's inventory row with another's facts when two guests report the same IP, and a migrated or renamed guest keeps its row. (#420)
- Coming back to the canvas from Documentation keeps the pan and zoom you left it at. (#422)
- Switching back to a rack canvas restores its saved pan and zoom instead of shrinking the racks into a corner. (#409)
- The basic edge animation runs the same way whichever direction the nodes were dragged in. (#402)
- Login works under
podman-compose: quotedAUTH_PASSWORD_HASH,SECRET_KEYandOIDC_CLIENT_SECRETvalues are unwrapped in the backend, so one.envworks under either container runtime. (#413) - A zone or group description is kept on save. (#418)
- MCP node properties are keyed on
key, notname. (#414) - Eight Dependabot advisories cleared in the frontend lockfile; all dev-only,
npm auditreports zero. (#417) - The npm and pip audit CI jobs retry a registry outage instead of failing the run. (#409)