Releases: rizitis/slacker
Release list
0.10.3_beta.4
Full Changelog: 0.10.2...0.10.3
Version Beta 0.10.3
- Updates: Thanks to danix !!!
- New: bash tab-completion for all 38 subcommands. Completes flags,
installed package names, repo names, @ repo / @_tag selectors,
template names, and pin'srepo:prefix. Installed by the package
to /usr/share/bash-completion/completions/slacker and loaded
automatically in new shells. First external contribution — thanks
to danix! (PR #3) - Completion ignores leftover
-upgraded-<timestamp>records in
/var/adm/packages, so an interrupted upgradepkg never produces
phantom names or garbage tags at the prompt. - Developer tooling: contrib/check-completion-drift.sh verifies the
completion's command list against the liveslacker --help; the
SlackBuild now runs it after the tests, so a stale completion
fails the build instead of shipping. (repo-only, not installed) - New: zsh and fish completions alongside bash — all three now
generated from a single source of truth (contrib/completions.json,
rendered by contrib/gen-completions.py; python3 at build time only,
nothing at runtime). Fixes two arg-type bugs of the hand-written
bash: install-new now completes bare repo names (not @ repo), and
upgrade-all no longer offers selectors (it takes no argument).
Installed to /usr/share/zsh/site-functions/_slacker and
/usr/share/fish/vendor_completions.d/slacker.fish. (PR #4) - The SlackBuild now also runs gen-completions.py --check, so a
generated completion that doesn't match its JSON source fails the
build; together with the drift-check this means completions can
never silently drift from the binary.
- New: bash tab-completion for all 38 subcommands. Completes flags,
- Note: bash requires the bash-completion package (Slackware extra/) for automatic loading - install it with slacker install bash-completion from an extras subtree repo, or source the file from your shell rc. zsh and fish need nothing extra. If you have in use the old style "complete -cf sudo" sudo dont follow correctly you must disable it.
0.10.2_beta.4
Version Beta 0.10.2
Fix: bug arch guard: accept fw and x86 packages, like the available-list filter
- upgrade | kernel-headers | 6.18.37-x86-1 -> 6.18.38-x86-1 | slackware
- is valid and should escape from checks.
Fix: bug in pin: store the pin name verbatim, not as a compiled pattern, thanks to Claude Fable 5 - dotted/'+' pin names were silently inert
Full Changelog: 0.10.1...0.10.2
0.10.1_beta.4
Version Beta 0.10.1
Fix: bug for upgrade @some_slackware command, was not correctly filtering pakcage list, thanks to @danix
- https://forge.slackware.nl/rizitis/slacker/issues/2
Update: make upgrade list look more verbose, thanks to @danix - https://forge.slackware.nl/rizitis/slacker/issues/1
Full Changelog: 0.10.0...0.10.1
0.10.0_beta.4
Version Beta 0.10.0
Fresh bump release, binaries for current (x86_64 and i686) builded with new shipped rust 1.96.1
Add: Credentials system — zypper-modeled
- HTTP Basic authentication for repos that require login:
Named sets: /etc/slacker/credentials.d/NAME (username/password), referenced with flag credentials=NAME in repos line.
Global catalogue: /etc/slacker/credentials.cat with [url-prefix] sections.
Order: credentials= flag → longest catalogue prefix → anonymous.
Permissions enforced: root-owned 0600, otherwise refuse+warn+anonymous (fail-safe).
Zero leak: secret only in Authorization: Basic header — never in repos file, URL, or logs.
New module credentials.rs with inline base64 (no new dependencies).
https-only + insecure flag (new)
Credentials only go over https (like apt). For http:
add-repo with credentials= on http → refuse (with clear message).
Explicit alternative: per-repo flag insecure → sends to http, at your own risk (and vetting no longer freezes it for http, since you accepted it).
The status finds it: new Credentials row (red withheld / yellow insecure).
The list-repos now shows the (credentials=NAME) and (insecure) flags.
Add: User-Agent: slacker/0.10.0 (rustls) Slackware-version-arch
- slacker isn not anonymous bot it has id
Fix: Accept-Encoding: identity (fix)
- All request paths now send explicit identities
Fix: bug with install-new thanks to @conraid - now install new will not skip testing/extras/patches/pasture IF having priority higher than slackware repo else keep looking only slackware repo.
Update: cosmetic fix: add space between install-new,installs, new-config headers
Update: slacker new-config command to escape blocking if a mirror is not set up already as it should be
Update: slacker status command to check slacker cache for forgotten (old, huge) packages
Update: Wiki and man pages.
Full Changelog: 0.9.4...0.10.0
0.9.4_beta.3
Full Changelog: 0.9.3...0.9.4
Version Beta 0.9.4
freeze-fallback: a frozen candidate is treated as absent
WHAT CHANGES (semantic change to frozen):
A blacklist (frozen) rule no longer means "hold this package, never touch it".
It now means "do not take THIS candidate". A frozen candidate is treated as if
its repo did not offer the package at all; resolution then proceeds normally by
priority. A package is "held" (left unchanged) ONLY when EVERY candidate it would
consider is frozen.
This makes the three rule shapes behave as one would expect:
frozen xf86-.* (unscoped) -> matches the candidate in EVERY repo,
so all are frozen -> package held
everywhere (hard freeze, as before).
frozen "@testing xf86-.*" (repo) -> freezes ONLY the testing candidate ->
resolution falls through to slackware
by priority -> official updates flow.
frozen "@_SBo foo" (build tag) -> freezes the _SBo build wherever served;
@scope now matches a build tag too.
A pin repo:name still wins: it restricts the candidate set FIRST, then the
freeze excludes within it (so a pinned-but-frozen candidate is held).
The priority invariant is preserved: the fallback only considers candidates whose
priority is >= the installed source's priority (the existing direction rule), so
it never silently downgrades or migrates to a lower-priority repo.
WHY (reported by conraid):
conraid runs testing ABOVE slackware (105 > 100) and wants the new xf86/Xlibre
testing snapshots frozen while still getting official updates. Under the old
"hold the package" semantics that was impossible: freezing the testing winner left
the package stuck at the installed version with no fallback. Now @testing xf86-.*
(or the date rule xf86-.*-202.*) freezes only the testing build and slackware's
official update flows.
IMPLEMENTATION:
- repo.rs: AvailPkg gains
frozen: bool. - pkgdb.rs:
mark_frozensets it once on load (blacklist_hitper candidate;
pins are never frozen). Newresolve_unfrozen= highest-priority non-frozen
candidate.match_pattern/searchwinner-selection prefers non-frozen, then
priority.upgrades_forusesresolve_unfrozenand returns(ups, held). - pkgdb.rs:
installed_prioritynow EXCLUDES frozen candidates from the floor.
This is essential: a tagless package installed from slackware (100) is ALSO
served tagless by the higher-priority testing subtree (105); without excluding
the frozen testing candidate the floor would read 105 and the slackware
fallback (100) would look like a downgrade and be refused. (This was caught by
the scoped-fallback test — it is the crux that makes conraid's real case work.) - config.rs: a
@scopeblacklist rule matches the candidate's REPO name OR its
build TAG, enabling@_SBo,@cf, etc. - main.rs: candidate freeze checks read the precomputed
p.frozen;upgrade-all
consumes(ups, held)and reports held vianote_frozen_excluded;
install-template falls through too. Deadbl_frozen/bl_availremoved;
bl_installedkept for remove / clean-system / remove-template (no candidate
there to fall through to). upgrade-dist is unchanged (it deliberately bypasses
the blacklist).
Fix: file-search
- marks only the exact build as installed (not every build of the same name)
Add: pinnded repo:pkg are not frozen it only means give me updates for this pkg ONLY from the repo is pinned, but user might want to keep pkg on clean-system command - add question and let user to decide, keep or remove ONLY if pkg is installed from the pinned repo.
Update: man.8
0.9.3_beta.3
Fix bug, bump 0.9.3 Signed-off-by: Anagnostakis Ioannis <[email protected]>