| Age | Commit message (Collapse) | Author | Files | Lines |
|
The list with Add and Remove, suggestions (required names no package of
the tree has, with who needs them) to tick and add, and Apply to hints,
which starts fix-current; its end opens the diff dialog with Revert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The list moves to phantom_deps_file (/etc/sb-builder/phantom-deps,
mkhint's format), edited with phantom-add/phantom-remove. phantom-list
also suggests every REQUIRES name no package of the repo has, with who
needs it: SBo drops a package when it enters the official tree. The
fix-current job (and fix-current-now, inline for sbshadow) is mkhint -F:
listed deps merged into DELREQUIRES, .bak first, add only.
manifest_packages is neovim alone: openvino lives in the overlay now.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Both emitted layoutChanged without layoutAboutToBeChanged; with a filter
on and a current row, the proxy kept stale persistent indexes and Qt
crashed (Ctrl+Shift+A with orphaned + cat:games closed the app). Only
check states change, so the model now emits dataChanged on the box
column. The new test segfaults on the old code.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
SBo marks an orphaned package MAINTAINER="orphaned - no maintainer"
(1936 in the tree today); the inventory already carries the maintainer,
so the chip filters in the GUI alone. The shown/selected count moves next
to the search field so the chip row fits the default window width.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Chips get a button background and border, a dot in the color the table
uses for that status, and a muted label per group (overlay, status,
state, result). Search fields get a search icon and a clear button.
Phase 2 spec: why the signing key locks after the GUI quits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
Each gets the .info pin; Update selected sets a version later. One
package that already has a hint refuses the whole job before it starts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
The highlighted row used to stand in when nothing was ticked; with row
clicks toggling the tick, that ran an action on a row just unticked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Same as the Hints tab: the box is no longer user-checkable on its own and
one clicked handler toggles the row, so no click counts twice.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The box is no longer user-checkable on its own, so a click on it is not
counted twice; one cellClicked handler toggles every row click.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The search field keeps Ctrl+A for its own text.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Same pair as the Packages tab: tick every row the chips and search leave
visible, untick every row.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
'-' is illegal in a SlackBuild version, so dated tags like exploitdb's
2026-10-14 are packaged 2026_10_14 and showed as outdated forever.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
nvchecker.toml moves from the VM into the repo. The GUI runs nvchecker
with its own [__config__] (the keyfile from [hints]) and reads versions
and per-package errors from --logger json; outdated is decided against
the hints, so no oldver, newver or nvtake.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
hint-update and hint-new run the helper's own _hint command: version
bumps as mkhint does them (also '-' and dotless URL forms, never inside
MD5SUM values), a DELREQUIRES-only hint pinned from the .info first, md5
of the first URL of each DOWNLOAD pair, --no-dl as DOWNLOAD="no", .bak
before each write and a final SBB-RESULT line that job-result returns.
hint-diff, hint-revert and hint-delete answer at once. neovim and
openvino are refused until phase 4b. Job ids accept hyphenated kinds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
All GUI dates go through fmt_time; switch it to the Italian order with
the year, and use it for the Dashboard's "stale since" too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
slackrepo writes one log per command (build, rebuild, update,
remove). A failed update left build.log from an older successful
build, so the viewer showed a success next to a failed result. The
helper (0.4.1) now returns the newest command log and its name, which
the viewer shows in the title and header.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
Green when the last upgrade is within a day, yellow after one day,
red after two; the age text beside it carries the meaning too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
sbb-remote 0.3.0 adds CPU busy % (two /proc/stat samples), RAM total
and available, disk / total and free, and the last slackpkg update
(LASTUPDATE) and package change (/var/log/packages), replacing
disk_free. The Dashboard shows a VM card with meters for CPU, RAM and
disk / (accent, warning from 80%, critical from 90%, value always
printed) and CPU/RAM sparklines from this session's polls, and a
slackpkg tile in place of VM load.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
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>
|
|
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>
|
|
inventory lists every package with its effective version (hint over
.info), build state from the slackrepo DB, summary, and the parsed
hint found by slackrepo's search order; hints are parsed with shlex,
never sourced. Job kinds now return argv plus env: slackrepo
build/rebuild/update/remove (packages validated against the tree,
--preview, --no-publish sets SBB_PUBLISH=n) and publish (sb-publish).
gpg-status and gpg-unlock let the GUI unlock the package signing key
in gpg-agent; the passphrase comes on stdin only, every other
subprocess gets stdin=DEVNULL. A real slackrepo run is refused while
the key is locked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
setdefault kept a QT_QPA_PLATFORM already set by the desktop session
(wayland;xcb here), so the tests drew windows and modal dialogs on the
real display. Force offscreen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The tiles were plain group boxes of key: value text and read as text
scattered on a page. Now a KPI row (packages, built, last pull, VM
load) with large values and muted details, a slackrepo results stacked
bar in the reserved status colors with hover counts and a labelled
legend, and a recent jobs card. Colors come from the Qt palette, so the
user's theme applies.
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>
|
|
Single-file stdlib helper the GUI runs over ssh. JSON commands for
version, stats and jobs; job-start runs a fixed table of kinds (sbpull,
sbshadow, each requiring --yes or --no) detached with setsid and no
stdin, one at a time under a flock; job-follow streams a log from a
byte offset so the GUI can drop and resume; job-kill sends SIGTERM to
the job's process group. A job whose runner died is reported lost.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|