| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
mkhint's hint logic moves into sbb-remote and the upstream check runs
nvchecker on the desktop with a config tracked in this repo.
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>
|
|
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>
|
|
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>
|
|
Code in the plan ran in a scratch copy first (68 tests offscreen,
inventory and gpg-status against the real VM data, hook gates with
stubs). Spec: the stale config copy in repo-html-structure is untracked,
so it is deleted after asking rather than committed away.
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>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Hint grammar taken from slackrepo's parser: search order, recognised
keys, ARCH-resolved downloads, forced checksum skip, the REQUIRES
computation, USERADD/GROUPADD defaults, pragmas. The detail pane shows
hints as sections, never the raw file. NODOWNLOAD=yes is shown as
DOWNLOAD="no"; phase 4 makes mkhint write DOWNLOAD="no".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Package browser with query bar, chips and detail pane over a helper
inventory; slackrepo build/rebuild/update/remove and update-all as
previewed jobs; a publish gate in the slackrepo config with a separate
Publish action; signing key unlock through gpg-preset-passphrase since
jobs have no terminal for pinentry.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The neutral result color came from QPalette.Mid, which in a dark theme
can equal the card background and hid the "removed" swatch; use the
muted text color instead. Record in the spec that the dashboard tiles
should open their screens once those exist.
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>
|
|
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>
|
|
The plan embeds code that was run in a scratch copy before writing it
down (38 tests, helper stats against the real VM data). Drafting it
settled a few details now reflected in the spec: version also returns
the overlays, an upstream_branch helper key, a shared fmt module and a
launcher, follow resuming on the next jobs poll instead of its own
backoff, and sbpull returning sbshadow's exit status.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Desktop PyQt6 GUI plus a stdlib Python helper on the build VM, to drive
slackrepo, mkhint and the overlay sync tools from one interface, with
detachable jobs. This commit carries the repo docs and the approved
phase 1 (core) design spec.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|