Merge PR #1: multi-printer, job history, spool reallocation, SP slot
Manually integrates davidkinnes/CFSync:spoolman features on top of
existing SSH improvements (sshpass, multi-password, dual file paths).
- Multi-printer support: config normalizes all legacy formats into a
printers list; state becomes MultiAppState{printers: Dict[str, AppState]}
- Direct spool input slot: "SP" constant, PrinterInputId union type,
rendered as "Printer Spool Input" card in UI
- Job history: last 10 jobs stored in st.job_history, captured on print
end with per-slot spool metadata
- Spool reallocation: POST /api/ui/jobs/reallocate_spool transfers
filament usage between Spoolman spools for completed jobs
- WebSocket auto-linking: _ws_autolink_by_serialnum() alongside SSH
- GET /api/printers endpoint returning printer list with connection status
- UI: multi-printer layout, recent jobs card, history relink modal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> K
koen01 committed
3b52b20751dccbfeb39406b643206ecc6f83952f
Parent: 51baf4b