aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
18 hourssbb-remote 0.12.1: Built tile lists the packages to pruneHEADmasterDanilo M.7-9/+30
stats returns the prunable items instead of their count, and a click on the Built tile shows them in a non-modal box, so they can be read while another job holds the lock and Prune's preview cannot start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 hourssbb-remote 0.12.0: named builds, per-package job results, pruneDanilo M.11-27/+256
- Packages: named packages run slackrepo build, which also updates outdated ones; update on a named item finds only already-built packages. The per-row Update action is gone, Update all stays. - A real slackrepo job reads its items' buildresults rows into the job's results and is failed when any item failed, aborted or was bad: slackrepo itself exits 0. The notification names the failed items; a Build results dialog lists every item with its log and Retry failed, reopenable from the Jobs ribbon. - slackrepo prune: the helper lists built items whose SlackBuild is gone and runs slackrepo remove on them, without an Update all. stats gives the count; Packages gets a Prune action, the Built tile a 'to prune' note. Remove and prune ask for confirmation at Run it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 hoursDesign: prune removed packages; build-results spec approvedDanilo M.1-4/+42
Prune removes built packages whose SlackBuild is gone (slackrepo remove on a helper-computed list) without running Update all. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 hoursDesign draft: named builds and per-package job resultsDanilo M.1-0/+97
Named packages run slackrepo build instead of update, so never-built packages are found. A real slackrepo job records each item's result from buildresults and fails when any item failed, with a result dialog that can retry the failed ones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 hoursDashboard: cap job titles in Recent jobsDanilo M.2-1/+12
A rich-text QLabel never shrinks below its content, so a slackrepo job naming many packages widened the window past the screen. Titles longer than TITLE_MAX characters are cut with an ellipsis; the Jobs tab still shows them in full. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hourssbb-remote 0.11.0: rebuild-tree job (phase 3)Danilo M.7-7/+42
New job kind rebuild-tree runs slackrepo_setup_SBo-danix.sh, which now builds the fresh tree beside the live one and swaps it in. The Jobs tab gets a Rebuild tree action behind a modal confirm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursPhase 3 design: full repo rebuild as a guarded jobDanilo M.2-0/+52
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hourssbb-remote 0.10.0: config-get/config-set; GUI watches its configDanilo M.7-12/+146
Keystone's settings pages edit both configs. config-get returns the VM config text, the defaults and the path; config-set validates new text with the same check() as load_config, keeps .bak and replaces the file atomically. Both run before load_config, so a broken config can still be read and fixed. The GUI reloads its config when the file changes, re-adding the watch after an atomic write replaces the inode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursDetail panes: navigation as a button on top, reflowed descriptionsDanilo M.6-20/+24
Open in Hints and Open in Packages were plain links at the end of the pane, below the fold on a long one. ui.nav_button() makes them buttons, first in the pane; the UI guideline now says navigation buttons. The Repository description drops slack-desc's 70-column breaks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursRepository: stats as Dashboard tilesDanilo M.4-21/+37
Packages, Size, Unpublished (opens the unpublished filter), Last publish, in place of the one-line summary. CARD_STYLE moves to dashboard.py so both tabs share it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursRepository, Packages: no stale detail pane; scan survives racesDanilo M.3-5/+15
A reload or filter that drops the current row left its pane and link up, and the link then crashed on current() being None (Packages had the same). A .txz slackrepo replaces between glob and stat is skipped, and any exception in the scan thread reaches the stats line instead of leaving it at loading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursDocument the Repository tab, newer status and hint columnDanilo M.2-5/+17
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursRepository: wrapped ChangeLog items, drop overtaken reloadsDanilo M.2-7/+14
gen_repos_files puts a long package path alone on an indented line, its text on the next: 78 of 546 packages showed no ChangeLog. A Refresh overtaken by a later one no longer overwrites the newer scan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursRepository tab: built packages from the local repo mountDanilo M.5-6/+230
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursRepository: parse the built package repoDanilo M.2-0/+198
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursPackages: hint column, hint: query prefixDanilo M.2-7/+40
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursPackages: compare versions, new status newerDanilo M.2-10/+46
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 hoursSpec: version compare, hint column, Repository tabDanilo M.1-0/+112
Packages gets a real version compare (new status newer: built ahead of the target, e.g. a dropped pin) and a hint column with a hint: query prefix. A new Repository tab reads slackrepo's built package repo from the local /repo mount: stats, published state, ChangeLog per package. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 hoursDocs ready to publish: VM setup, specs in docs/designDanilo M.13-10262/+49
README says what the GUI does today and what is planned, which defaults are the author's setup, and how to set up the VM. The specs move to docs/design/; the implementation plans are dropped (working files, now kept out of git). AGENTS.md links slackrepo upstream instead of a local clone path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 hoursREADME: repair the notifications paragraphDanilo M.1-1/+1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 hourssbb-remote 0.9.0: SBo orphans tile on the DashboardDanilo M.8-7/+40
stats gains "orphans", the packages whose .info says MAINTAINER="orphaned - no maintainer" (0.14s over the tree on the VM). The placeholder tile shows the count and opens Packages with only the orphaned chip on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 hoursPhase 4b done: mkhint and nvchecker removed from the VMDanilo M.2-4/+4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 hoursDocument bundled deps; phase 4b part 2 planDanilo M.4-9/+470
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 hourssbb-remote 0.8.0: bundled deps from upstream's deps listDanilo M.4-20/+196
hint-update downloads every URL the version bump changed for its md5, not only the first (a vendor tarball carrying the version kept its old md5). A package named in the new [manifests] table (default: neovim's cmake.deps/deps.txt) has its extra DOWNLOAD URLs matched to the deps list at the new version, by GitHub repo then by stem, and moved where the version differs: mkhint's url mode. manifest_packages and the refusal of those packages are gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 hoursAdd bundled deps design (phase 4b, part 2)Danilo M.1-0/+114
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 hoursNotifications: icon per outcome, body says how the job wentDanilo M.4-13/+28
Title is the job (kind and args), body the outcome: succeeded in, failed with exit code N after, killed after, lost. Icons are freedesktop names: emblem-default, dialog-error, process-stop, dialog-warning, computer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 hoursHints: Phantom deps dialogDanilo M.4-13/+163
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>
40 hourssbb-remote 0.7.0: phantom deps list, suggestions, fix-currentDanilo M.4-6/+168
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>
40 hoursAdd phantom deps design (phase 4b, part 1)Danilo M.1-0/+74
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 hoursPackages: fix segfault on Clear / Select visible behind a filterDanilo M.2-4/+34
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>
41 hoursKeep column widths, splitters and window size across runsDanilo M.4-6/+54
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>
41 hoursPackages: orphaned filter chipDanilo M.5-16/+35
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>
41 hoursFilter bars: chips read as buttons, status dots, group labelsDanilo M.6-29/+73
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>
41 hoursUI guidelines in AGENTS.md; README for the new frameDanilo M.4-40/+72
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 hoursOne frame for every tab: ribbons of actions, next steps as dialogsDanilo M.8-310/+503
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>
41 hourssbb-remote 0.6.0: hint-new takes several packages, no versionDanilo M.3-12/+14
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>
41 hoursAdd UI frame implementation planDanilo M.1-0/+1651
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 hoursAdd UI design: one frame for every tab, next steps as dialogsDanilo M.1-0/+162
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 hoursHints: Delete hint acts on the ticked packages, then offers RevertDanilo M.4-12/+36
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>
42 hoursPackages: Build/Update/Rebuild/Remove act on ticked packages onlyDanilo M.3-7/+8
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>
42 hoursPackages tab: a click anywhere on a row ticks or unticks itDanilo M.2-2/+14
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>
42 hoursHints tab: a click anywhere on a row ticks or unticks itDanilo M.2-2/+15
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>
42 hoursHint diff dialog: color added, removed and hunk linesDanilo M.2-1/+19
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 hoursCtrl+A / Ctrl+Shift+A: select visible and clear, Packages and HintsDanilo M.4-9/+26
The search field keeps Ctrl+A for its own text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 hoursHints tab: Select visible and ClearDanilo M.2-1/+23
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>
42 hoursUpstream versions with '-' as '_', as mkhint stored themDanilo M.3-3/+12
'-' 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>
42 hoursDocument the Hints screen; phase 4 spec from the implementationDanilo M.3-61/+104
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 hoursHints screen: upstream check, hint jobs, diff and revertDanilo M.4-8/+438
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>
42 hoursUpstream versions from nvchecker on the desktopDanilo M.5-0/+625
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>
42 hourssbb-remote 0.5.0: hint jobs replace mkhint's hint editingDanilo M.4-6/+535
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>