·
29 commits
to main
since this release
PrintMaster Agent v0.31.1
📝 Changes
✨ Features
- implement resource path recovery for device proxy requests (3f0a61c)
- add synced hover crosshair + click-to-pin across metrics charts (81a603d)
- support PostgreSQL 18 TimescaleDB deployments (53d2146)
🐛 Bug Fixes
- initialize databases before offline seeding (6f3ea03)
- apply privilege escalation consistently (44d4b44)
- preserve committed version state on failure (9c594ff)
- preserve successful changelog status (eaff0da)
- report embedded version accurately (b877fb3)
- serve Kyocera model scripts as JavaScript (289351b)
- rewrite device-supplied tag in proxied HTML (969ed78)
- apply mono/color toner filtering to all buildTonerLevels sources (128c6c7)
- context menu never found the connected agent/device VM data (124cf3e)
- keep WS-gated agent context menu items visible but disabled (c3e272a)
- don't set both Director and Rewrite on device proxy ReverseProxy (201d01e)
- apply SQLite pragmas via DSN so every pooled connection gets WAL/busy_timeout (0e9d76a)
- cast AVG() to INTEGER in downsample queries to fix SQLITE scan errors (3eaf8ae)
- use single-transaction save-all endpoint to avoid SQLITE_BUSY on bulk device save (594bc66)
- respect agent settings ownership and timestamps (1c4e2fb)
- preserve empty fleet section metadata (50ca600)
- version fleet section metadata (8feb706)
- honor fleet managed section selection (6809c68)
- sync and reload fleet settings (da91241)
♻️ Refactoring
- unify toner/consumable bar rendering into common/web (f063b6d)
📚 Documentation
- require matching TimescaleDB versions for restore (d95231a)
- clarify PG18 volume layout and Timescale restore (7d510b8)
📝 Other Changes
- cleanup: remove dead conditionals/assignments flagged by CodeQL (js/trivial-conditional, js/useless-assignment-to-local) (455e2d1)
- security: fix missing regex anchor allowing issuer spoofing (CodeQL #80) (7280dcb)
- security: escape exception messages before innerHTML insertion (CodeQL #188/#165/#18) (1029243)
- security: escape values before innerHTML/onclick-attribute insertion (CodeQL #178/#17) (22a421c)
- security: fix CSS-selector escaping and harden path utilities against prototype pollution (1506b1e)
- security: validate redirect target before navigation in login.js (CodeQL #186/#187) (131afb1)
- security: harden open-redirect check in agent auth callback (CodeQL #28) (9aca229)
- security: fix reflected XSS in agent proxy HTML injection (CodeQL #34) (3468206)
- security: remove dead server/logger package, sanitize agent log fallback (d28c1b7)
- security: pin GitHub Actions to commit SHAs and add Dependabot config (2be4065)
- agent: reject local edits to server-managed discovery/snmp/features/spooler settings (7ba38c3)
- server: use longer proxy timeout for slow /discover agent requests (11554f8)
- agent: fix Discover Now button giving no feedback/error handling (1184f9d)
📦 Quick Install
Debian/Ubuntu (APT repo):
echo "deb [trusted=yes] https://mstrhakr.github.io/printmaster stable main" | sudo tee /etc/apt/sources.list.d/printmaster.list && sudo apt-get update && sudo apt-get install -y printmaster-agentFedora/RHEL (DNF repo):
sudo dnf config-manager addrepo --from-repofile=https://mstrhakr.github.io/printmaster/printmaster.repo && sudo dnf install -y printmaster-agentWindows: Download the MSI installer from Assets below.
Docker:
docker run -d -p 8080:8080 -v agent-data:/var/lib/printmaster/agent ghcr.io/mstrhakr/printmaster-agent:0.31.1Web UI at http://localhost:8080 after install.
Supported Platforms: Debian/Ubuntu • Fedora/RHEL • Windows • Docker • macOS
🖥️ Server Download
For multi-site management, you'll also need the PrintMaster Server:
Latest Server: v0.31.1-dev.fc82919 — View Release
# Docker (recommended)
docker pull ghcr.io/mstrhakr/printmaster-server:latest⏱️ Build Information
- Workflow run: 35780468595
- Commit: fc82919