| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
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>
|
|
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>
|
|
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>
|