diff --git a/.cockpit.metadata b/.cockpit.metadata
index 3699072..5d051db 100644
--- a/.cockpit.metadata
+++ b/.cockpit.metadata
@@ -1 +1 @@
-d2296e9e881f359d901ac3f73f471d056497d91b SOURCES/cockpit-211.3.tar.xz
+602cf4d82e837cf2d3b45041befecd6e4e22d40d SOURCES/cockpit-220.tar.xz
diff --git a/.gitignore b/.gitignore
index ae96b4b..2f48afb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/cockpit-211.3.tar.xz
+SOURCES/cockpit-220.tar.xz
diff --git a/SPECS/cockpit.spec b/SPECS/cockpit.spec
index d7a2ad1..6dc2248 100644
--- a/SPECS/cockpit.spec
+++ b/SPECS/cockpit.spec
@@ -1,5 +1,5 @@
 # This spec file has been automatically updated
-Version:        211.3
+Version:        220
 Release: 1%{?dist}
 #
 # This file is maintained at the following location:
@@ -50,6 +50,12 @@ Release: 1%{?dist}
 %define vdo_on_demand 1
 %endif
 
+%if 0%{?suse_version}
+%define pamdir /%{_lib}/security
+%else
+%define pamdir %{_libdir}/security
+%endif
+
 Name:           cockpit
 Summary:        Web Console for Linux servers
 
@@ -72,23 +78,35 @@ BuildRequires: autoconf automake
 BuildRequires: /usr/bin/python3
 BuildRequires: gettext >= 0.19.7
 %if %{defined build_dashboard}
-BuildRequires: libssh-devel >= 0.8
+BuildRequires: libssh-devel >= 0.8.5
 %endif
 BuildRequires: openssl-devel
 BuildRequires: gnutls-devel >= 3.4.3
 BuildRequires: zlib-devel
 BuildRequires: krb5-devel >= 1.11
 BuildRequires: libxslt-devel
-BuildRequires: docbook-style-xsl
 BuildRequires: glib-networking
 BuildRequires: sed
 
 BuildRequires: glib2-devel >= 2.37.4
+# this is for runtimedir in the tls proxy ace21c8879
 BuildRequires: systemd-devel >= 235
+%if 0%{?suse_version}
+BuildRequires: distribution-release
+BuildRequires: libpcp-devel
+BuildRequires: pcp-devel
+BuildRequires: libpcp3
+BuildRequires: libpcp_import1
+BuildRequires: openssh
+BuildRequires: distribution-logos
+BuildRequires: wallpaper-branding
+%else
 BuildRequires: pcp-libs-devel
+BuildRequires: openssh-clients
+BuildRequires: docbook-style-xsl
+%endif
 BuildRequires: krb5-server
 BuildRequires: gdb
-BuildRequires: openssh-clients
 
 # For documentation
 BuildRequires: xmlto
@@ -105,11 +123,14 @@ Recommends: (cockpit-storaged if udisks2)
 Recommends: cockpit-packagekit
 Suggests: cockpit-pcp
 
-%if 0%{?rhel} == 0
-Recommends: cockpit-dashboard
 %ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
+%if 0%{?fedora} == 31 && 0%{?build_optional}
+%define build_docker 1
 Recommends: (cockpit-docker if /usr/bin/docker)
 %endif
+%endif
+
+%if 0%{?rhel} == 0
 Recommends: (cockpit-networkmanager if NetworkManager)
 Suggests: cockpit-selinux
 %endif
@@ -129,12 +150,22 @@ exec 2>&1
     --with-selinux-config-type=etc_t \
     --with-appstream-data-packages='[ "appstream-data" ]' \
     --with-nfs-client-package='"nfs-utils"' \
+%if 0%{?suse_version}
+    --docdir=%_defaultdocdir/%{name} \
+%endif
+    --with-pamdir='%{pamdir}' \
     %{?vdo_on_demand:--with-vdo-package='"vdo"'}
 make -j4 %{?extra_flags} all
 
 %check
 exec 2>&1
-make -j4 check
+# HACK: Fedora koji builders are very slow, unreliable, and inaccessible for debugging; https://github.com/cockpit-project/cockpit/issues/13909
+%if 0%{?fedora} >= 0
+%ifarch s390x
+%define testsuite_fail || true
+%endif
+%endif
+make -j4 check %{?testsuite_fail}
 
 %install
 make install DESTDIR=%{buildroot}
@@ -144,13 +175,15 @@ install -p -m 644 tools/cockpit.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/cockpit
 rm -f %{buildroot}/%{_libdir}/cockpit/*.so
 # shipped in firewalld since 0.6, everywhere in Fedora/RHEL 8
 rm -f %{buildroot}/%{_prefix}/%{__lib}/firewalld/services/cockpit.xml
-install -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/
+install -D -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/
 
 # Build the package lists for resource packages
 echo '%dir %{_datadir}/cockpit/base1' > base.list
+echo '%dir %{_datadir}/cockpit/base1/fonts' >> base.list
 find %{buildroot}%{_datadir}/cockpit/base1 -type f >> base.list
 echo '%{_sysconfdir}/cockpit/machines.d' >> base.list
 echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list
+echo '%dir %{_datadir}/cockpit/ssh' >> base.list
 find %{buildroot}%{_datadir}/cockpit/ssh -type f >> base.list
 echo '%{_libexecdir}/cockpit-ssh' >> base.list
 
@@ -204,16 +237,12 @@ find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list
 echo '%dir %{_datadir}/cockpit/playground' > tests.list
 find %{buildroot}%{_datadir}/cockpit/playground -type f >> tests.list
 
-%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
-%if 0%{?fedora}
+%if 0%{?build_docker}
 echo '%dir %{_datadir}/cockpit/docker' > docker.list
 find %{buildroot}%{_datadir}/cockpit/docker -type f >> docker.list
 %else
 rm -rf %{buildroot}/%{_datadir}/cockpit/docker
-touch docker.list
-%endif
-%else
-rm -rf %{buildroot}/%{_datadir}/cockpit/docker
+rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
 touch docker.list
 %endif
 
@@ -244,23 +273,47 @@ for pkg in apps dashboard docker machines packagekit pcp playground storaged; do
     rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg
 done
 # files from -tests
-rm -r %{buildroot}/%{_prefix}/%{__lib}/cockpit-test-assets %{buildroot}/%{_sysconfdir}/cockpit/cockpit.conf
+rm -r %{buildroot}/%{_prefix}/%{__lib}/cockpit-test-assets
 # files from -pcp
 rm -r %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib/pcp/
 # files from -machines
 rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-machines.metainfo.xml
 # files from -storaged
 rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
+# files from -docker
+rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
 %endif
 
 sed -i "s|%{buildroot}||" *.list
 
+%if 0%{?suse_version}
+# remove brandings that don't match the distro as they may contain
+# stale symlinks
+pushd %{buildroot}/%{_datadir}/cockpit/branding
+ls -1 | (. /etc/os-release; grep -v "default\|$ID") | xargs rm -vr
+popd
+# need this in SUSE as post build checks dislike stale symlinks
+install -m 644 -D /dev/null %{buildroot}/run/cockpit/motd
+%else
+%global _debugsource_packages 1
+%global _debuginfo_subpackages 0
+
+%define find_debug_info %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} %{?_debugsource_packages:-S debugsourcefiles.list} "%{_builddir}/%{?buildsubdir}"
+
+# Redefine how debug info is built to slip in our extra debug files
+%define __debug_install_post   \
+   %{find_debug_info} \
+   cat debug.partial >> %{_builddir}/%{?buildsubdir}/debugfiles.list \
+%{nil}
+
 # Build the package lists for debug package, and move debug files to installed locations
 find %{buildroot}/usr/src/debug%{_datadir}/cockpit -type f -o -type l > debug.partial
 sed -i "s|%{buildroot}/usr/src/debug||" debug.partial
 sed -n 's/\.map\(\.gz\)\?$/\0/p' *.list >> debug.partial
 sed -i '/\.map\(\.gz\)\?$/d' *.list
 tar -C %{buildroot}/usr/src/debug -cf - . | tar -C %{buildroot} -xf -
+%endif
+# /suse_version
 rm -rf %{buildroot}/usr/src/debug
 
 # On RHEL kdump, networkmanager, selinux, and sosreport are part of the system package
@@ -276,17 +329,6 @@ rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png
 %find_lang cockpit
 %endif
 
-%global _debugsource_packages 1
-%global _debuginfo_subpackages 0
-
-%define find_debug_info %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} %{?_debugsource_packages:-S debugsourcefiles.list} "%{_builddir}/%{?buildsubdir}"
-
-# Redefine how debug info is built to slip in our extra debug files
-%define __debug_install_post   \
-   %{find_debug_info} \
-   cat debug.partial >> %{_builddir}/%{?buildsubdir}/debugfiles.list \
-%{nil}
-
 # -------------------------------------------------------------------------------
 # Basic Sub-packages
 
@@ -346,9 +388,11 @@ embed or extend Cockpit.
 Summary: Cockpit admin interface package for configuring and troubleshooting a system
 BuildArch: noarch
 Requires: cockpit-bridge >= %{version}-%{release}
+%if !0%{?suse_version}
 Requires: shadow-utils
+%endif
 Requires: grep
-Requires: libpwquality
+Requires: /usr/bin/pwscore
 Requires: /usr/bin/date
 Provides: cockpit-shell = %{version}-%{release}
 Provides: cockpit-systemd = %{version}-%{release}
@@ -366,6 +410,7 @@ Recommends: NetworkManager-team
 Recommends: setroubleshoot-server >= 3.3.3
 Provides: cockpit-selinux = %{version}-%{release}
 Provides: cockpit-sosreport = %{version}-%{release}
+Requires: sos
 %endif
 %if 0%{?fedora} >= 29
 # 0.7.0 (actually) supports task cancellation.
@@ -373,8 +418,8 @@ Provides: cockpit-sosreport = %{version}-%{release}
 Recommends: (reportd >= 0.7.1 if abrt)
 %endif
 # NPM modules which are also available as packages
-Provides: bundled(js-jquery) = 3.4.1
-Provides: bundled(js-moment) = 2.24.0
+Provides: bundled(js-jquery) = 3.5.1
+Provides: bundled(js-moment) = 2.25.3
 Provides: bundled(nodejs-flot) = 0.8.3
 Provides: bundled(xstatic-bootstrap-datepicker-common) = 1.9.0
 Provides: bundled(xstatic-patternfly-common) = 3.59.4
@@ -383,6 +428,7 @@ Provides: bundled(xstatic-patternfly-common) = 3.59.4
 This package contains the Cockpit shell and system configuration interfaces.
 
 %files system -f system.list
+%dir %{_datadir}/cockpit/shell/images
 
 %package ws
 Summary: Cockpit Web Service
@@ -412,10 +458,14 @@ authentication via sssd/FreeIPA.
 %doc %{_mandir}/man8/remotectl.8.gz
 %doc %{_mandir}/man8/pam_cockpit_cert.8.gz
 %doc %{_mandir}/man8/pam_ssh_add.8.gz
+%dir %{_sysconfdir}/cockpit
 %config(noreplace) %{_sysconfdir}/cockpit/ws-certs.d
 %config(noreplace) %{_sysconfdir}/pam.d/cockpit
 %config %{_sysconfdir}/issue.d/cockpit.issue
 %config %{_sysconfdir}/motd.d/cockpit
+%ghost /run/cockpit/motd
+%ghost %dir /run/cockpit
+%dir %{_datadir}/cockpit/motd
 %{_datadir}/cockpit/motd/update-motd
 %{_datadir}/cockpit/motd/inactive.motd
 %{_unitdir}/cockpit.service
@@ -432,8 +482,8 @@ authentication via sssd/FreeIPA.
 %{_unitdir}/system-cockpithttps.slice
 %{_prefix}/%{__lib}/tmpfiles.d/cockpit-tempfiles.conf
 %{_sbindir}/remotectl
-%{_libdir}/security/pam_ssh_add.so
-%{_libdir}/security/pam_cockpit_cert.so
+%{pamdir}/pam_ssh_add.so
+%{pamdir}/pam_cockpit_cert.so
 %{_libexecdir}/cockpit-ws
 %{_libexecdir}/cockpit-wsinstance-factory
 %{_libexecdir}/cockpit-tls
@@ -528,13 +578,15 @@ utility setroubleshoot to diagnose and resolve SELinux issues.
 
 %endif
 
-%else # build basic packages
+#/ build basic packages
+%else
 
 # RPM requires this
 %description
 Dummy package from building optional packages only; never install or publish me.
 
-%endif # build basic packages
+#/ build basic packages
+%endif
 
 # -------------------------------------------------------------------------------
 # Sub-packages that are optional extensions
@@ -550,13 +602,18 @@ Recommends: udisks2-iscsi >= 2.6
 Recommends: device-mapper-multipath
 Recommends: clevis-luks
 Requires: %{__python3}
+%if 0%{?suse_version}
+Requires: python3-dbus-python
+%else
 Requires: python3-dbus
+%endif
 BuildArch: noarch
 
 %description -n cockpit-storaged
 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
@@ -571,7 +628,6 @@ 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
-%config(noreplace) %{_sysconfdir}/cockpit/cockpit.conf
 %{_prefix}/%{__lib}/cockpit-test-assets
 
 %package -n cockpit-machines
@@ -579,7 +635,11 @@ BuildArch: noarch
 Summary: Cockpit user interface for virtual machines
 Requires: cockpit-bridge >= 186
 Requires: cockpit-system >= 186
+%if 0%{?suse_version}
+Requires: libvirt-daemon-qemu
+%else
 Requires: libvirt-daemon-kvm
+%endif
 Requires: libvirt-client
 Requires: libvirt-dbus >= 1.2.0
 # Optional components
@@ -598,7 +658,7 @@ If "virt-install" is installed, you can also create new virtual machines.
 %package -n cockpit-pcp
 Summary: Cockpit PCP integration
 Requires: cockpit-bridge >= 134.x
-Requires: pcp
+Requires(post): pcp
 
 %description -n cockpit-pcp
 Cockpit support for reading PCP metrics and loading PCP archives.
@@ -615,21 +675,19 @@ Cockpit support for reading PCP metrics and loading PCP archives.
 
 %if %{defined build_dashboard}
 %package -n cockpit-dashboard
-Summary: Cockpit remote servers and dashboard
+Summary: Cockpit remote server dashboard
 BuildArch: noarch
 Requires: cockpit-ssh >= 135
 Conflicts: cockpit-ws < 135
 
 %description -n cockpit-dashboard
-Cockpit support for connecting to remote servers (through ssh),
-bastion hosts, and a basic dashboard.
+Cockpit page for showing performance graphs for up to 20 remote servers.
 
 %files -n cockpit-dashboard -f dashboard.list
 
 %endif
 
-%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
-%if 0%{?fedora}
+%if 0%{?build_docker}
 %package -n cockpit-docker
 Summary: Cockpit user interface for Docker containers
 Requires: cockpit-bridge >= 122
@@ -642,8 +700,7 @@ The Cockpit components for interacting with Docker and user interface.
 This package is not yet complete.
 
 %files -n cockpit-docker -f docker.list
-
-%endif
+%{_datadir}/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
 %endif
 
 %package -n cockpit-packagekit
@@ -658,10 +715,25 @@ via PackageKit.
 
 %files -n cockpit-packagekit -f packagekit.list
 
-%endif # build optional extension packages
+#/ build optional extension packages
+%endif
 
 # The changelog is automatically generated and merged
 %changelog
+* Thu May 28 2020 Matej Marusak <mmarusak@redhat.com> - 220-1
+- New navigation with integrated switching of hosts
+- Logs: Inline help for filtering
+- Fix cockpit-system AppStream dependency (rhbz#1838003)
+
+* Wed May 13 2020 Matej Marusak <mmarusak@redhat.com> - 219-1
+- Rebase to upstream version 219
+- Accept upper-case login names for ssh/polkit agent challenges (rhbz#1825749)
+- Show last/failed login (rhbz#1784772)
+- Modernize services page (rhbz#1791193)
+- Search in journal (rhbz#1710731)
+- The default mode is not consistent with the mode in the created bond (rhbz#1817948)
+- Fix deadlock in channel pressure handling (rhbz#1751783)
+
 * Thu Mar 12 2020 Martin Pitt <mpitt@redhat.com> - 211.3-1
 - Fix CJK translations (rhbz#1807856)