Compare commits

...

No commits in common. "imports/c9-beta/cockpit-275-1.el9" and "c8" have entirely different histories.

3 changed files with 318 additions and 25 deletions

View File

@ -1 +1,2 @@
966f5b12e230d08d7ffe35ffbbcf882153454430 SOURCES/cockpit-275.tar.xz
2e5a8bc37de3a932441898410b3a42fa1310d28b SOURCES/cockpit-310.4.tar.xz
a37e1d6ad4b1b25729682c54ab7e4dcdcfd894a7 SOURCES/cockpit.css.gz

3
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/cockpit-275.tar.xz
SOURCES/cockpit-310.4.tar.xz
SOURCES/cockpit.css.gz

View File

@ -46,19 +46,19 @@
Name: cockpit
Summary: Web Console for Linux servers
License: LGPLv2+
License: LGPL-2.1-or-later
URL: https://cockpit-project.org/
Version: 275
Version: 310.4
Release: 1%{?dist}
Source0: https://github.com/cockpit-project/cockpit/releases/download/%{version}/cockpit-%{version}.tar.xz
Source1: cockpit.css.gz
# in RHEL 8 the source package is duplicated: cockpit (building basic packages like cockpit-{bridge,system})
# and cockpit-appstream (building optional packages like cockpit-{pcp})
# This split does not apply to EPEL/COPR nor packit c8s builds, only to our own
# image-prepare rhel-8-Y builds (which will disable build_all).
# In Fedora ELN/RHEL 9+ there is just one source package, which ships rpms in both BaseOS and AppStream
%define build_all 1
%if 0%{?rhel} == 8 && 0%{?epel} == 0 && !0%{?build_all}
%if "%{name}" == "cockpit"
@ -74,6 +74,21 @@ Source0: https://github.com/cockpit-project/cockpit/releases/download/%{v
%define build_optional 1
%endif
# Allow root login in Cockpit on RHEL 8 and lower as it also allows password login over SSH.
%if 0%{?rhel} && 0%{?rhel} <= 8
%define disallow_root 0
%else
%define disallow_root 1
%endif
# pcp stopped building on ix86
%define build_pcp 1
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
%ifarch %ix86
%define build_pcp 0
%endif
%endif
# Ship custom SELinux policy (but not for cockpit-appstream)
%if "%{name}" == "cockpit"
%define selinuxtype targeted
@ -88,7 +103,7 @@ BuildRequires: pam-devel
BuildRequires: autoconf automake
BuildRequires: make
BuildRequires: /usr/bin/python3
BuildRequires: python3-devel
%if 0%{?rhel} && 0%{?rhel} <= 8
# RHEL 8's gettext does not yet have metainfo.its
BuildRequires: gettext >= 0.19.7
@ -112,15 +127,19 @@ BuildRequires: glib2-devel >= 2.50.0
BuildRequires: systemd-devel >= 235
%if 0%{?suse_version}
BuildRequires: distribution-release
%if %{build_pcp}
BuildRequires: libpcp-devel
BuildRequires: pcp-devel
BuildRequires: libpcp3
BuildRequires: libpcp_import1
%endif
BuildRequires: openssh
BuildRequires: distribution-logos
BuildRequires: wallpaper-branding
%else
%if %{build_pcp}
BuildRequires: pcp-libs-devel
%endif
BuildRequires: openssh-clients
BuildRequires: docbook-style-xsl
%endif
@ -147,6 +166,8 @@ Suggests: cockpit-pcp
%if 0%{?rhel} == 0
Recommends: (cockpit-networkmanager if NetworkManager)
# c-ostree is not in RHEL 8/9
Recommends: (cockpit-ostree if rpm-ostree)
Suggests: cockpit-selinux
%endif
%if 0%{?rhel} && 0%{?centos} == 0
@ -168,6 +189,9 @@ Requires: subscription-manager-cockpit
%if 0%{?build_basic} == 0
--disable-ssh \
%endif
%if %{build_pcp} == 0
--disable-pcp \
%endif
%make_build
@ -182,6 +206,10 @@ install -p -m 644 tools/cockpit.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/cockpit
rm -f %{buildroot}/%{_libdir}/cockpit/*.so
install -D -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/
# RHEL 8 specific backwards compat API
install -m 644 %{SOURCE1} %{buildroot}%{_datadir}/cockpit/base1/
ln -s cockpit.css.gz %{buildroot}%{_datadir}/cockpit/base1/patternfly.css.gz
# Build the package lists for resource packages
# cockpit-bridge is the basic dependency for all cockpit-* packages, so centrally own the page directory
echo '%dir %{_datadir}/cockpit' > base.list
@ -189,15 +217,16 @@ echo '%dir %{_datadir}/cockpit/base1' >> base.list
find %{buildroot}%{_datadir}/cockpit/base1 -type f -o -type l >> base.list
echo '%{_sysconfdir}/cockpit/machines.d' >> base.list
echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list
%if 0%{?build_basic}
echo '%dir %{_datadir}/cockpit/ssh' >> base.list
find %{buildroot}%{_datadir}/cockpit/ssh -type f >> base.list
%endif
echo '%{_libexecdir}/cockpit-ssh' >> base.list
%if %{build_pcp}
echo '%dir %{_datadir}/cockpit/pcp' > pcp.list
find %{buildroot}%{_datadir}/cockpit/pcp -type f >> pcp.list
echo '%dir %{_datadir}/cockpit/tuned' > system.list
find %{buildroot}%{_datadir}/cockpit/tuned -type f >> system.list
%endif
echo '%dir %{_datadir}/cockpit/shell' >> system.list
find %{buildroot}%{_datadir}/cockpit/shell -type f >> system.list
@ -241,23 +270,24 @@ find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list
# when not building basic packages, remove their files
%if 0%{?build_basic} == 0
for pkg in base1 branding motd kdump networkmanager selinux shell sosreport ssh static systemd tuned users metrics; do
for pkg in base1 branding motd kdump networkmanager selinux shell sosreport static systemd users metrics; do
rm -r %{buildroot}/%{_datadir}/cockpit/$pkg
rm -f %{buildroot}/%{_datadir}/metainfo/org.cockpit-project.cockpit-${pkg}.metainfo.xml
done
for data in doc man pixmaps polkit-1; do
rm -r %{buildroot}/%{_datadir}/$data
done
for lib in systemd tmpfiles.d; do
rm -r %{buildroot}/%{_prefix}/%{__lib}/$lib
done
rm -r %{buildroot}/%{_prefix}/%{__lib}/tmpfiles.d
find %{buildroot}/%{_unitdir}/ -type f ! -name 'cockpit-session*' -delete
for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-tls cockpit-wsinstance-factory cockpit-client cockpit-client.ui cockpit-desktop cockpit-certificate-helper cockpit-certificate-ensure; do
rm %{buildroot}/%{_libexecdir}/$libexec
rm -f %{buildroot}/%{_libexecdir}/$libexec
done
rm -r %{buildroot}/%{_libdir}/security %{buildroot}/%{_sysconfdir}/pam.d %{buildroot}/%{_sysconfdir}/motd.d %{buildroot}/%{_sysconfdir}/issue.d
rm %{buildroot}/usr/bin/cockpit-bridge
rm -r %{buildroot}/%{_sysconfdir}/pam.d %{buildroot}/%{_sysconfdir}/motd.d %{buildroot}/%{_sysconfdir}/issue.d
rm -f %{buildroot}/%{_libdir}/security/pam_*
rm -f %{buildroot}/usr/bin/cockpit-bridge
rm -f %{buildroot}%{_libexecdir}/cockpit-ssh
rm -f %{buildroot}%{_datadir}/metainfo/cockpit.appdata.xml
rm -rf %{buildroot}%{python3_sitelib}/cockpit*
%endif
# when not building optional packages, remove their files
@ -266,7 +296,9 @@ for pkg in apps packagekit pcp playground storaged; do
rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg
done
# files from -tests
rm -r %{buildroot}/%{_prefix}/%{__lib}/cockpit-test-assets
rm -f %{buildroot}/%{pamdir}/mock-pam-conv-mod.so
rm -f %{buildroot}/%{_unitdir}/cockpit-session.socket
rm -f %{buildroot}/%{_unitdir}/cockpit-session@.service
# files from -pcp
rm -r %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib/pcp/
# files from -storaged
@ -291,6 +323,7 @@ cat kdump.list sosreport.list networkmanager.list selinux.list >> system.list
rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-networkmanager.metainfo.xml
rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png
%endif
@ -319,8 +352,6 @@ troubleshooting, interactive command-line sessions, and more.
Summary: Cockpit bridge server-side component
Requires: glib-networking
Provides: cockpit-ssh = %{version}-%{release}
# PR #10430 dropped workaround for ws' inability to understand x-host-key challenge
Conflicts: cockpit-ws < 181.x
# 233 dropped jquery.js, pages started to bundle it (commit 049e8b8dce)
Conflicts: cockpit-dashboard < 233
Conflicts: cockpit-networkmanager < 233
@ -385,6 +416,88 @@ Provides: cockpit-sosreport = %{version}-%{release}
Recommends: (reportd if abrt)
%endif
Provides: bundled(npm(@patternfly/patternfly)) = 5.1.0
Provides: bundled(npm(@patternfly/react-core)) = 5.1.2
Provides: bundled(npm(@patternfly/react-icons)) = 5.1.2
Provides: bundled(npm(@patternfly/react-styles)) = 5.1.2
Provides: bundled(npm(@patternfly/react-table)) = 5.1.2
Provides: bundled(npm(@patternfly/react-tokens)) = 5.1.2
Provides: bundled(npm(argparse)) = 1.0.10
Provides: bundled(npm(array-buffer-byte-length)) = 1.0.0
Provides: bundled(npm(attr-accept)) = 2.2.2
Provides: bundled(npm(autolinker)) = 3.16.2
Provides: bundled(npm(available-typed-arrays)) = 1.0.5
Provides: bundled(npm(call-bind)) = 1.0.5
Provides: bundled(npm(date-fns)) = 3.2.0
Provides: bundled(npm(deep-equal)) = 2.2.3
Provides: bundled(npm(define-data-property)) = 1.1.1
Provides: bundled(npm(define-properties)) = 1.2.1
Provides: bundled(npm(es-get-iterator)) = 1.1.3
Provides: bundled(npm(file-selector)) = 0.6.0
Provides: bundled(npm(focus-trap)) = 7.5.2
Provides: bundled(npm(for-each)) = 0.3.3
Provides: bundled(npm(function-bind)) = 1.1.2
Provides: bundled(npm(functions-have-names)) = 1.2.3
Provides: bundled(npm(get-intrinsic)) = 1.2.2
Provides: bundled(npm(gopd)) = 1.0.1
Provides: bundled(npm(has-bigints)) = 1.0.2
Provides: bundled(npm(has-property-descriptors)) = 1.0.1
Provides: bundled(npm(has-proto)) = 1.0.1
Provides: bundled(npm(has-symbols)) = 1.0.3
Provides: bundled(npm(has-tostringtag)) = 1.0.0
Provides: bundled(npm(hasown)) = 2.0.0
Provides: bundled(npm(internal-slot)) = 1.0.6
Provides: bundled(npm(is-arguments)) = 1.1.1
Provides: bundled(npm(is-array-buffer)) = 3.0.2
Provides: bundled(npm(is-bigint)) = 1.0.4
Provides: bundled(npm(is-boolean-object)) = 1.1.2
Provides: bundled(npm(is-callable)) = 1.2.7
Provides: bundled(npm(is-date-object)) = 1.0.5
Provides: bundled(npm(is-map)) = 2.0.2
Provides: bundled(npm(is-number-object)) = 1.0.7
Provides: bundled(npm(is-regex)) = 1.1.4
Provides: bundled(npm(is-set)) = 2.0.2
Provides: bundled(npm(is-shared-array-buffer)) = 1.0.2
Provides: bundled(npm(is-string)) = 1.0.7
Provides: bundled(npm(is-symbol)) = 1.0.4
Provides: bundled(npm(is-typed-array)) = 1.1.12
Provides: bundled(npm(is-weakmap)) = 2.0.1
Provides: bundled(npm(is-weakset)) = 2.0.2
Provides: bundled(npm(isarray)) = 2.0.5
Provides: bundled(npm(js-sha1)) = 0.6.0
Provides: bundled(npm(js-sha256)) = 0.10.1
Provides: bundled(npm(js-tokens)) = 4.0.0
Provides: bundled(npm(json-stable-stringify-without-jsonify)) = 1.0.1
Provides: bundled(npm(lodash)) = 4.17.21
Provides: bundled(npm(loose-envify)) = 1.4.0
Provides: bundled(npm(object-assign)) = 4.1.1
Provides: bundled(npm(object-inspect)) = 1.13.1
Provides: bundled(npm(object-is)) = 1.1.5
Provides: bundled(npm(object-keys)) = 1.1.1
Provides: bundled(npm(object.assign)) = 4.1.5
Provides: bundled(npm(prop-types)) = 15.8.1
Provides: bundled(npm(react-dom)) = 18.2.0
Provides: bundled(npm(react-dropzone)) = 14.2.3
Provides: bundled(npm(react-is)) = 16.13.1
Provides: bundled(npm(react)) = 18.2.0
Provides: bundled(npm(regexp.prototype.flags)) = 1.5.1
Provides: bundled(npm(remarkable)) = 2.0.1
Provides: bundled(npm(scheduler)) = 0.23.0
Provides: bundled(npm(set-function-length)) = 1.2.0
Provides: bundled(npm(set-function-name)) = 2.0.1
Provides: bundled(npm(side-channel)) = 1.0.4
Provides: bundled(npm(sprintf-js)) = 1.0.3
Provides: bundled(npm(stop-iteration-iterator)) = 1.0.0
Provides: bundled(npm(tabbable)) = 6.2.0
Provides: bundled(npm(throttle-debounce)) = 5.0.0
Provides: bundled(npm(tslib)) = 2.6.2
Provides: bundled(npm(uuid)) = 9.0.1
Provides: bundled(npm(which-boxed-primitive)) = 1.0.2
Provides: bundled(npm(which-collection)) = 1.0.1
Provides: bundled(npm(which-typed-array)) = 1.1.13
Provides: bundled(npm(xterm-addon-canvas)) = 0.5.0
Provides: bundled(npm(xterm)) = 5.3.0
%description system
This package contains the Cockpit shell and system configuration interfaces.
@ -401,7 +514,7 @@ Requires(post): (policycoreutils if selinux-policy-%{selinuxtype})
Conflicts: firewalld < 0.6.0-1
Recommends: sscg >= 2.3
Recommends: system-logos
Suggests: sssd-dbus
Suggests: sssd-dbus >= 2.6.2
# for cockpit-desktop
Suggests: python3
@ -426,6 +539,7 @@ authentication via sssd/FreeIPA.
# created in %post, so that users can rm the files
%ghost %{_sysconfdir}/issue.d/cockpit.issue
%ghost %{_sysconfdir}/motd.d/cockpit
%ghost %attr(0644, root, root) %{_sysconfdir}/cockpit/disallowed-users
%dir %{_datadir}/cockpit/motd
%{_datadir}/cockpit/motd/update-motd
%{_datadir}/cockpit/motd/inactive.motd
@ -474,10 +588,16 @@ if [ -x %{_sbindir}/selinuxenabled ]; then
fi
# set up dynamic motd/issue symlinks on first-time install; don't bring them back on upgrades if admin removed them
# disable root login on first-time install; so existing installations aren't changed
if [ "$1" = 1 ]; then
mkdir -p /etc/motd.d /etc/issue.d
ln -s ../../run/cockpit/motd /etc/motd.d/cockpit
ln -s ../../run/cockpit/motd /etc/issue.d/cockpit.issue
printf "# List of users which are not allowed to login to Cockpit\n" > /etc/cockpit/disallowed-users
%if 0%{?disallow_root}
printf "root\n" >> /etc/cockpit/disallowed-users
%endif
chmod 644 /etc/cockpit/disallowed-users
fi
%tmpfiles_create cockpit-tempfiles.conf
@ -486,7 +606,7 @@ fi
test -f %{_bindir}/firewall-cmd && firewall-cmd --reload --quiet || true
# check for deprecated PAM config
if grep --color=auto pam_cockpit_cert %{_sysconfdir}/pam.d/cockpit; then
if test -f %{_sysconfdir}/pam.d/cockpit && grep -q pam_cockpit_cert %{_sysconfdir}/pam.d/cockpit; then
echo '**** WARNING:'
echo '**** WARNING: pam_cockpit_cert is a no-op and will be removed in a'
echo '**** WARNING: future release; remove it from your /etc/pam.d/cockpit.'
@ -549,6 +669,7 @@ BuildArch: noarch
The Cockpit component for managing networking. This package uses NetworkManager.
%files networkmanager -f networkmanager.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-networkmanager.metainfo.xml
%endif
@ -591,6 +712,9 @@ Requires: cockpit-shell >= %{required_base}
Requires: udisks2 >= 2.9
Recommends: udisks2-lvm2 >= 2.9
Recommends: udisks2-iscsi >= 2.9
%if ! 0%{?rhel}
Recommends: udisks2-btrfs >= 2.9
%endif
Recommends: device-mapper-multipath
Recommends: clevis-luks
Requires: %{__python3}
@ -605,13 +729,12 @@ BuildArch: noarch
The Cockpit component for managing storage. This package uses udisks.
%files -n cockpit-storaged -f storaged.list
%dir %{_datadir}/cockpit/storaged/images
%{_datadir}/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
%package -n cockpit-tests
Summary: Tests for Cockpit
Requires: cockpit-bridge >= 138
Requires: cockpit-system >= 138
Requires: cockpit-bridge >= %{required_base}
Requires: cockpit-system >= %{required_base}
Requires: openssh-clients
Provides: cockpit-test-assets = %{version}-%{release}
@ -620,7 +743,11 @@ This package contains tests and files used while testing Cockpit.
These files are not required for running Cockpit.
%files -n cockpit-tests -f tests.list
%{_prefix}/%{__lib}/cockpit-test-assets
%{pamdir}/mock-pam-conv-mod.so
%{_unitdir}/cockpit-session.socket
%{_unitdir}/cockpit-session@.service
%if %{build_pcp}
%package -n cockpit-pcp
Summary: Cockpit PCP integration
@ -637,6 +764,8 @@ Cockpit support for reading PCP metrics and loading PCP archives.
%post -n cockpit-pcp
systemctl reload-or-try-restart pmlogger
%endif
%package -n cockpit-packagekit
Summary: Cockpit user interface for packages
BuildArch: noarch
@ -657,6 +786,168 @@ via PackageKit.
# The changelog is automatically generated and merged
%changelog
* Tue Apr 02 2024 Martin Pitt <mpitt@redhat.com> - 310.4-1
- sosreport: Fix command injection with crafted report names [CVE-2024-2947]
(jira#RHEL-30452)
* Thu Feb 15 2024 Martin Pitt <mpitt@redhat.com> - 310.3-1
- Translation updates (jira#RHEL-16681)
Lots of bug fixes
* Wed Jan 31 2024 Packit <hello@packit.dev> - 310-1
- Storage: support for btrfs
- Storage: improved support for swap
* Thu Jan 18 2024 Packit <hello@packit.dev> - 309-1
- Storage: Introduce btrfs support
* Wed Jan 03 2024 Packit <hello@packit.dev> - 308-1
- Fix connecting to remote hosts with OpenSSH 0.9.6
* Fri Dec 15 2023 Martin Pitt <mpitt@redhat.com> - 307-1
- Storage redesign
* Wed Nov 29 2023 Packit <hello@packit.dev> - 306-1
- Kdump: Add Ansible/shell automation
* Wed Nov 15 2023 Packit <hello@packit.dev> - 305-1
- Performance and stability improvements
* Wed Nov 01 2023 Packit <hello@packit.dev> - 304-1
- Bug fixes
* Wed Oct 18 2023 Packit <hello@packit.dev> - 303-1
- Apps: Warn if appstream data package is missing
- Shell: Redesign untrusted "add host" dialog
* Thu Oct 05 2023 Packit <hello@packit.dev> - 302-1
- Storage: Partitions can be resized
- many bug fixes
* Wed Sep 20 2023 Packit <hello@packit.dev> - 301-1
- WireGuard support
- Metrics: link to network interface details
* Wed Sep 06 2023 Packit <hello@packit.dev> - 300-1
- Celebrating the Nürnberg life release!
- Storage: Support for growing block devices of a Stratis pool
* Wed Aug 23 2023 Packit <hello@packit.dev> - 299-1
- Kdump: Show location of kdump to verify the successful configuration test
- Storage: Support for no-overprovisioning with Stratis
- Storage: Cockpit can now add caches to encrypted Stratis pools
* Wed Jul 26 2023 Packit <hello@packit.dev> - 297-1
- users: allow administrators to change the user shell
- Enable Python bridge on Fedora 38 and CentOS/RHEL 9
* Wed Jul 12 2023 Packit <hello@packit.dev> - 296-1
- Performance and stability improvements
* Wed Jun 28 2023 Packit <hello@packit.dev> - 295-1
- Cockpit Client can now connect to servers without Cockpit installed
* Thu Jun 15 2023 Python Maint <python-maint@redhat.com> - 294.1-2
- Rebuilt for Python 3.12
* Thu Jun 15 2023 Packit <hello@packit.dev> - 294.1-1
- Multiple major fixes for the "remote python bridge" use case
* Thu Jun 15 2023 Python Maint <python-maint@redhat.com> - 294-2
- Rebuilt for Python 3.12
* Wed Jun 14 2023 Packit <hello@packit.dev> - 294-1
- Introduce Python bridge on Fedora Rawhide and Debian unstable
* Thu Jun 01 2023 Packit <hello@packit.dev> - 293-1
- Tests and code quality improvements
* Tue May 16 2023 Packit <hello@packit.dev> - 292-1
- Metrics: Add disk IO per service
- Several right-to-left language fixes
* Wed May 03 2023 Packit <hello@packit.dev> - 291-1
- Update to PatternFly 5 Alpha
* Wed Apr 19 2023 Packit <hello@packit.dev> - 290-1
- Login page: Add autocomplete tags
- webserver: Disallow direct URL logins with LoginTo=false
* Wed Apr 05 2023 Packit <hello@packit.dev> - 289-1
- Metrics: Indicate high usage and use colorblind-friendly colors
- Accounts: Improve password validation
* Fri Mar 24 2023 Packit <hello@packit.dev> - 288.1-1
- Fix broken "SELinux" menu entry
* Thu Mar 23 2023 Packit <hello@packit.dev> - 288-1
- Accounts: Show shell and home directory on detail page
- Accounts: Custom user ID during account creation
- Overview: Support additional timeservers with chronyd
- Metrics: Show longer time span by default
- Storage: Mounting filesystems at boot time
- Services: Units need to be re-pinned
- API removal: Remove cockpit.dbus.publish() and .meta()
- Development: Cockpit now supports the esbuild bundler
* Thu Mar 09 2023 Packit <hello@packit.dev> - 287-1
- Metrics: Column visiblity
- Services: Pinned units need to be re-done
* Wed Feb 22 2023 Packit <hello@packit.dev> - 286-1
- Metrics page: control visibility of the resource usage graphs
* Wed Feb 08 2023 Packit <hello@packit.dev> - 285-1
- Cryptographic subpolicies support
- users: Group creation and filtering support
* Wed Jan 25 2023 Packit <hello@packit.dev> - 284-1
- Services: Show logs for user units
- Storage: Set up a system to use NBDE
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 283-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jan 11 2023 Packit <hello@packit.dev> - 283-1
- Services: Create timer to run every minute
* Wed Dec 14 2022 Packit <hello@packit.dev> - 282-1
- Add right-to-left language support
- Accounts: Redesign and include groups
* Thu Dec 01 2022 Packit <hello@packit.dev> - 281-1
- Dark theme switcher
* Thu Nov 24 2022 Packit <hello@packit.dev> - 280.1-1
- Exclude kpatch test on RHEL gating
* Wed Nov 16 2022 Packit <hello@packit.dev> - 280-1
- tools: Disallow root login by default
* Mon Nov 07 2022 Packit <hello@packit.dev> - 279-1
- Dark theme support
* Wed Oct 19 2022 Packit <hello@packit.dev> - 278-1
- Metrics: Display individual disk read/write usage
* Wed Sep 21 2022 Packit <hello@packit.dev> - 277-1
- Performance and stability improvements
* Mon Sep 12 2022 Packit <hello@packit.dev> - 276.1-1
- login: Use valid selectors when testing for :is() / :where() support.
* Wed Sep 07 2022 Packit <hello@packit.dev> - 276-1
- Stability and performance improvements
* Wed Aug 24 2022 Packit <hello@packit.dev> - 275-1
- shell: Support for alternatives to sudo