aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder/__main__.py
AgeCommit message (Collapse)AuthorFilesLines
15 hoursKeep column widths, splitters and window size across runsDanilo M.1-1/+0
QSettings in state.conf next to config.toml, saved on close: every table header (widths, sort column) and splitter of the tabs, and the window geometry. Tests point it at a temp file, never the user's own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursAdd a .desktop entry, linked by install.shDanilo M.1-0/+1
Exec=sb-builder relies on ~/bin being on the session PATH, as for the other launchers there. setDesktopFileName lets Wayland compositors match the window to the entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 hoursFix crash when closing the Jobs tab during a running jobDanilo M.1-0/+3
Closing the tab killed the job-follow process, whose finished signal arrived after the tab was deleted; the slot touched dead widgets and PyQt6 aborted the whole application on the unhandled exception. stop() now disconnects the process before killing it. A sys.excepthook logs any future slot exception to stderr instead of aborting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 hoursAdd the PyQt6 GUI: Dashboard, Jobs, VM control, notificationsDanilo M.1-0/+41
All VM access goes through remote.py (ssh with a shared ControlMaster, local virsh). The main window polls jobs, backs off while ssh is down, checks the libvirt domain and offers Start or Resume, and sends freedesktop notifications when a job ends or the VM comes up. The Jobs tab streams a job's log with job-follow and resumes at the last offset after a drop. Config is TOML, validated against built-in defaults. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>