- Home page is now just the print server overview, no more unrelated network links (3D printers, Cockpit) left over from when this was a general landing page. - Navbar shows which section is active; Brother's per-printer buttons now live under a dedicated Brother nav item instead of always-visible. - Shipping labels: paste raw ZPL directly (no need to save to a file first), with a Labelary preview link alongside it. - Receipts: paste already-formatted ESC/POS text directly, printed as-is. - Both can save what they just printed into a shared label repository (lib/label_repository.rb, one JSON file per label under data/labels/) for reprinting later -- saving happens independently of whether the print itself succeeds, so a failed/offline printer doesn't lose the content.
labelprint
Unified UI for printing labels/stickers:
-
Native ZPL printing to a Datamax-ONeil thermal barcode printer
-
A proxy/switcher in front of three brother_ql_web instances, one per Brother QL printer
Routes
-
/— upload a PDF and print it (ZPL) -
/upload— upload form -
/test-print— print the bundled test label -
/brother— list of Brother QL printers -
/brother/<printer>/*— proxied to that printer’s brother_ql_web instance (UI and API alike)
Running
bundle install
bundle exec ruby app.rb
Requires config.json (see printer definitions inside) and a .session_secret file (random string, not committed).
Deployment
Runs as sinatra.service (systemd) on rpi-printserver.local, under RVM (rvm default do bundle exec ruby app.rb — always uses whatever ruby is currently the RVM default, no manual bumping needed).
.gitea/workflows/deploy.yaml deploys on every push to main: SSH into rpi-printserver.local, git pull, bundle install, restart the service.
Dependency updates
.gitea/workflows/renovate.yaml runs Renovate on a schedule (Monday 06:00 Europe/Bratislava, or manually) to open PRs for outdated gems and GitHub Actions. See the "Dependency Dashboard" issue for current status.