Releases: dlgambill/u1hub
Release list
v2.11.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
Full or Lite? Each platform has two downloads built from the same
binary. Lite starts with spool tracking, Spool Match, the FS
Mixer, and beta printer types switched off — just files, fleet,
queue, and Dispatch, for the single-color farm. You can turn any
feature on or off later in Settings → Features, so neither
choice is permanent.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac builds are best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.10.0...v2.11.0
v2.10.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.9.0...v2.10.0
v2.9.0
v2.9.0 — the spools & beta-fleet release
The Hub now knows what's on your shelf. Stick a tag on a spool, scan it once with your phone, and from then on one tap loads it into a printer slot — head color, Spool Match, and mix planning all follow automatically. And for the first time, the Hub manages printers beyond the U1.
📶 Spool registry — scan with your phone
Stick an NTAG RFID sticker on a spool (or use the vendor RFID tag many spools already ship with — the Hub reads the tag's serial number only, nothing proprietary is decoded) and scan it with Android Chrome over the Hub's HTTPS tunnel. An unknown tag asks once what's on the spool — search ~2,266 colorimeter-measured swatches from [FilamentColors.xyz](https://filamentcolors.xyz), sample the color already loaded on a head, or describe it yourself — then resolves instantly forever after.
- No phone NFC? Print QR labels from the Hub and scan those with any camera — iPhone included.
- One spool can carry both its vendor tag and a Hub sticker: attach the second tag to the same identity with a tap, no duplicates.
- Full identities, including the weird filaments: manufacturer, material (PLA/PETG/ASA/…), variant (Matte, Silk, Glow, CF…), print temps — and real multi-color support. Dual- and tri-color silks render as segmented swatches, gradients blend smoothly, everywhere the spool appears. Multi-color spools are automatically excluded from mix recipes, since their extruded color depends on position.
🎯 Scan-to-load
Tap a head's color swatch on any printer card — the picker now has "📶 Scan spool → load here." Hold the spool's tag to your phone: the Hub records that spool is now in that slot and pushes its measured color onto the head in one motion. Spool Match instantly treats it like an official RFID roll. Works the other direction too: scan a spool in the Spools tab and pick a printer + slot from its card. A brand-new tag scanned at a printer bounces to the bind panel, then loads itself into the slot you started from. Loadout state survives restarts.
🧮 "What should I load?"
The FS Mix Planner's inverse solve: drop a 3MF and the base-set recommender ranks 4-spool sets from your bound-spool shelf by worst-case ΔE across every color the print needs — recommendations name your actual physical rolls, not theoretical colors. An ideal-CMYW benchmark row shows how close your shelf gets to the ceiling.
Also in the mixer: 3MF analysis is now near-instant over the tunnel. The browser extracts the two tiny config files locally and sends ~300 bytes instead of uploading the whole project — no more timeouts on big multi-plate files.
🔧 Orca-alignment for FS mixes
The Hub's mix serialization is byte-exact against the FS fork in both directions — and a real bug got fixed on the way: pair-style mix definitions in sliced G-code were silently missing from the FS preview. A reconciliation view shows the fork's decoded mixes next to the Hub's predictions, side by side.
🖨 Other printers, in beta
Add a printer type in Settings — it gets its own folder, accent color, and switcher tab (U1 keeps its flat base folder) — then add any Klipper/Moonraker machine into it. The Hub detects capabilities per printer: single-extruder machines get a clean single-head card, and a class guard refuses multi-color jobs dropped on machines that can't print them. Non-U1 types wear a BETA chip: fully harness-verified against mock printers; real-hardware reports are how they graduate.
🩺 Diagnostics bundle
⚙ Settings → Download diagnostics produces one JSON: Hub version, printer types + detected capabilities, the recent Hub log, and the tail of each printer's klippy.log/moonraker.log. IPs are replaced with aliases and tokens are scrubbed before the file is written; auth and tunnel secrets are never read at all. Nothing is sent anywhere — you review the file and attach it to a [GitHub issue](https://github.com/dlgambill/u1hub/issues/new/choose). The Hub still has zero telemetry.
📱 A UI worth using on a phone
Higher-contrast theme, sticky nav bar, bottom-sheet modals, 44 px touch targets, and inputs sized so iOS stops zooming on every field. Two long-standing bugs died in the process: file-row actions were unreachable on touchscreens (hover-only), and taps sometimes needed two or three tries because the live fleet stream could rebuild the page mid-tap — re-renders now wait for your finger to lift.
🐳 Docker fix
The image now ships every module it needs (#1) — docker compose up -d on a Pi or NAS works out of the box. The test suite now boots the Hub from exactly the Dockerfile's file set, so this can't regress.
Upgrading: drop the new binary in place (or git pull + restart for source installs). Existing configs migrate automatically — printers, queue, and print history are tagged under the built-in U1 type with no file moves.
Note: FS mix serialization is verified byte-exact against the fork; print-parity validation (same mix sliced both ways, printed and compared) is ongoing.
Full changelog: v2.8.1...v2.9.0
v2.8.1
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.8.0...v2.8.1
v2.8.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.7.0...v2.8.0
v2.7.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.6.0...v2.7.0
v2.6.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.5.0...v2.6.0
v2.5.0
U1 Print Hub v2.5.0 — the realtime release
A big one: the dashboard is now live-updating, and you can change filament colors from your browser.
✨ Highlights
- Realtime dashboard — the Hub holds a websocket open to every printer and streams changes straight to your browser. Progress, time remaining, state, and a new live layer counter update the moment the printer reports them. If anything's in the way, it falls back to classic polling automatically.
- Filament color control from the Hub — tap a head's swatch on any idle machine and pick a color from a grid, type a hex code or a CSS color name ("tan"), or open the full system picker. The Hub sends the same firmware command the touchscreen uses, then re-reads the printer and only reports success once the change is confirmed. The touchscreen updates to match.
- Screen-matching time remaining — progress and ETA now use the touchscreen's own formula (header-corrected byte progress), verified live to within 1% and one minute. No more Hub-says-15:05, screen-says-14:26.
- G-code thumbnails — model previews extracted from your sliced files, shown in the file browser and on every printing card.
- Phone home-screen app — add the Hub to your phone's home screen for one-tap access. (Full standalone install activates automatically once HTTPS lands with the upcoming remote-access release.)
🔧 Also new
- Firmware error messages shown on the card when a print fails — see why, not just a red dot
- Low-disk warning chip when a printer's storage runs short
- Lifetime farm stats and per-printer temperature sparklines + last-10-jobs history in expandable panels
- Multi-color / gradient spool swatches (ready for RFID dual-color filament)
- Active print filename on every card, "chamber" labeling, and assorted polish
📥 Download
Grab the binary for your OS below — no Node.js needed. config.json and a gcode/ folder are created next to the executable on first run; add your printers in Settings.
- Windows: SmartScreen may warn "unknown publisher" → More info → Run anyway
- macOS (Apple Silicon): right-click → Open the first time, or
xattr -dr com.apple.quarantine <file> - Linux:
chmod +xthen run - macOS (Intel): best-effort build — attaches here if/when a GitHub runner frees up
Running from source now requires Node.js 22+ (the realtime layer uses Node's built-in WebSocket client).
⚠️ One honest caveat
There's no login yet: anyone who can reach the Hub can push prints. Keep it LAN-only — don't port-forward it or expose it to the internet. Built-in authentication and hub-managed secure remote access are the next two releases.
Free, MIT-licensed, talks directly to each printer's Moonraker API — no cloud, no account, nothing leaves your network. Bug reports and feature ideas welcome. 🍺 link in the README if it saves you some trips to the touchscreen.
v2.1.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v2.0.0...v2.1.0
v2.0.0
U1 Print Hub
Download the build for your OS, put it in its own folder, and run it —
no Node.js needed. A browser opens to the dashboard; use Settings
to add your printers.
First-launch security warning (the apps are unsigned):
- Windows: SmartScreen may say "Windows protected your PC" -> More info -> Run anyway.
- macOS: right-click the file -> Open (or run
xattr -dr com.apple.quarantine <file>once).
If something on the default port 4545 is already running, close it first.
(Intel-Mac build is best-effort and may attach a few minutes after the rest.)
Full Changelog: v1.5.3...v2.0.0