aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder/mainwindow.py
AgeCommit message (Collapse)AuthorFilesLines
26 hoursKeep column widths, splitters and window size across runsDanilo M.1-4/+35
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>
26 hoursOne frame for every tab: ribbons of actions, next steps as dialogsDanilo M.1-76/+98
Tabs are permanent and load on first show. The ribbon shows the current tab's actions in workflow order, a small ribbon under it the view controls; inapplicable actions are disabled with the reason as tooltip. Starting a job stays on the tab; the Jobs tab reads (running), then shows the end status. When a preview this session started ends, its log opens with Run it (publish box) or Apply shadowing; Not now loses nothing, Run it in Jobs reopens it. New hint moves to the Packages ribbon and acts on the ticked packages without a hint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 hoursHints: Delete hint acts on the ticked packages, then offers RevertDanilo M.1-0/+1
Rows with only a stanza have no hint and are skipped. The deletes open the same dialog as a hint job: each removed hint's diff and Revert, which had no place in the GUI before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 hoursHints screen: upstream check, hint jobs, diff and revertDanilo M.1-4/+41
Check upstream fills the upstream column and ticks the outdated hints, Update selected starts hint-update, Delete hint acts on the VM. When a hint job ends its SBB-RESULT opens a dialog with each changed hint's diff, Revert per package (once) and Build these. The Packages detail pane gets New hint and Open in Hints. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 hoursResults tab with build logs; count only real packagesDanilo M.1-3/+22
sbb-remote 0.4.0: results lists slackrepo's last attempt per package (newest first, with built version and whether a log dir exists), and build-log returns the end of a package's build.log (512 KB) plus its resource.log, accepting only category/pkg paths. Result counts skip the legacy buildresults rows keyed by package file name: the 213 "bad" on the Dashboard matched no package. GUI: a Results tab (chips per result, table sorted by attempt time, detail pane, log viewer window that keeps the failure at the end), opened from the ribbon or by clicking a result in the Dashboard bar or legend, filtered to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 hoursRibbon for the screens; centered, distinct tab barDanilo M.1-6/+28
The Open menu becomes a toolbar ribbon (icon over label: Dashboard, Packages, Jobs) using the desktop icon theme with Qt fallbacks. Tabs are centered with a bordered, rounded shape, the selected one filled with the highlight color and joined to a highlight line over the pane, so the bar reads as its own control. Colors come from the palette. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 hoursCtrl+PgUp/PgDn cycle tabs from anywhere in the windowDanilo M.1-0/+7
QTabWidget's built-in binding only works with focus on the tab bar, and the table views take page keys. Window-level shortcuts, wrapping. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 hoursAdd Packages tab, hint view, Run it and signing key unlockDanilo M.1-5/+38
Packages tab over the helper inventory: query bar with cat:/maint:/ req:/status: prefixes, overlay and status chips, check column, and a detail pane with versions, dependencies after hints and a structured read-only view of the hint (hints.py mirrors slackrepo's parser). Actions start slackrepo previews; the Jobs tab offers Run it with a publish box (default from [builds] publish), asking for the signing key passphrase first when the key is locked. Status bar shows the key state; Dashboard tiles open their tabs; inventory reloads after slackrepo and publish jobs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 hoursAdd the PyQt6 GUI: Dashboard, Jobs, VM control, notificationsDanilo M.1-0/+268
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>