Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package lollypop for openSUSE:Factory checked in at 2022-04-13 21:04:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lollypop (Old) and /work/SRC/openSUSE:Factory/.lollypop.new.1900 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lollypop" Wed Apr 13 21:04:50 2022 rev:160 rq:969971 version:1.4.32 Changes: -------- --- /work/SRC/openSUSE:Factory/lollypop/lollypop.changes 2022-03-19 22:22:51.748947306 +0100 +++ /work/SRC/openSUSE:Factory/.lollypop.new.1900/lollypop.changes 2022-04-13 21:05:40.648599376 +0200 @@ -1,0 +2,20 @@ +Wed Apr 13 18:07:05 UTC 2022 - antoine.belv...@opensuse.org + +- Update to version 1.4.32: + * Fix an issue with alt+l shortcut (glgo#World/lollypop#2914). + * Fix a crash (glgo#World/lollypop#2915). + +------------------------------------------------------------------- +Tue Apr 12 18:00:28 UTC 2022 - antoine.belv...@opensuse.org + +- Update to version 1.4.31: + * Remove invalid shortcut (glgo#World/lollypop#2893) + * Bring back tooltip support (glgo#World/lollypop#2898). + * Improve dark theme support (glgo#World/lollypop#2912). + * Fix a filter issue (glgo#World/lollypop#2909). + * Fix an issue when playing a song from the commandline + (glgo#World/lollypop#2765). +- Remove build dependency on pkgconfig(libhandy-1) >= 1.5: Reverted + by upstream. + +------------------------------------------------------------------- Old: ---- lollypop-1.4.30.obscpio New: ---- lollypop-1.4.32.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lollypop.spec ++++++ --- /var/tmp/diff_new_pack.WbD2dZ/_old 2022-04-13 21:05:41.992600451 +0200 +++ /var/tmp/diff_new_pack.WbD2dZ/_new 2022-04-13 21:05:42.000600457 +0200 @@ -17,7 +17,7 @@ Name: lollypop -Version: 1.4.30 +Version: 1.4.32 Release: 0 Summary: GNOME music playing application License: GPL-3.0-or-later @@ -32,7 +32,6 @@ BuildRequires: python3-devel BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.35.0 BuildRequires: pkgconfig(gtk+-3.0) >= 3.22 -BuildRequires: pkgconfig(libhandy-1) >= 1.5 BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: pkgconfig(pygobject-3.0) >= 3.29.1 Requires: dbus-1-python3 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.WbD2dZ/_old 2022-04-13 21:05:42.036600485 +0200 +++ /var/tmp/diff_new_pack.WbD2dZ/_new 2022-04-13 21:05:42.036600485 +0200 @@ -1,7 +1,7 @@ <services> <service mode="disabled" name="obs_scm"> <param name="changesgenerate">enable</param> - <param name="revision">1.4.30</param> + <param name="revision">1.4.32</param> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/World/lollypop.git</param> <param name="versionformat">@PARENT_TAG@</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.WbD2dZ/_old 2022-04-13 21:05:42.060600505 +0200 +++ /var/tmp/diff_new_pack.WbD2dZ/_new 2022-04-13 21:05:42.060600505 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://gitlab.gnome.org/World/lollypop.git</param> - <param name="changesrevision">55c5403077a630ccb91803c622f92a8e16eb8189</param></service></servicedata> + <param name="changesrevision">822b0102d928f026709d1494d5aa8cbe964bd6d0</param></service></servicedata> (No newline at EOF) ++++++ lollypop-1.4.30.obscpio -> lollypop-1.4.32.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/.gitlab-ci.yml new/lollypop-1.4.32/.gitlab-ci.yml --- old/lollypop-1.4.30/.gitlab-ci.yml 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/.gitlab-ci.yml 2022-04-13 19:26:06.000000000 +0200 @@ -5,7 +5,7 @@ GIT_SUBMODULE_STRATEGY: recursive flatpak: - image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master' + image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.38' variables: MANIFEST_PATH: "org.gnome.Lollypop.json" FLATPAK_MODULE: "lollypop" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/data/SettingsDialog.ui new/lollypop-1.4.32/data/SettingsDialog.ui --- old/lollypop-1.4.30/data/SettingsDialog.ui 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/data/SettingsDialog.ui 2022-04-13 19:26:06.000000000 +0200 @@ -45,6 +45,25 @@ <property name="can-focus">False</property> <property name="title" translatable="yes">Appearance</property> <child> + <object class="HdyActionRow" id="dark_row"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="tooltip-text" translatable="yes">Whether the application should use a dark theme</property> + <property name="title" translatable="yes">Dark Mode</property> + <property name="activatable-widget">dark-ui_boolean</property> + <property name="subtitle" translatable="yes">Whether the application should use a dark theme</property> + <child> + <object class="GtkSwitch" id="dark-ui_boolean"> + <property name="name">dark-ui</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="valign">center</property> + <signal name="state-set" handler="_on_boolean_state_set" swapped="no"/> + </object> + </child> + </object> + </child> + <child> <object class="HdyActionRow"> <property name="visible">True</property> <property name="can-focus">False</property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/data/Shortcuts.ui new/lollypop-1.4.32/data/Shortcuts.ui --- old/lollypop-1.4.30/data/Shortcuts.ui 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/data/Shortcuts.ui 2022-04-13 19:26:06.000000000 +0200 @@ -146,13 +146,6 @@ <child> <object class="GtkShortcutsShortcut"> <property name="visible">True</property> - <property name="title" translatable="yes" context="shortcut window">Repeat track</property> - <property name="accelerator"><Alt></property> - </object> - </child> - <child> - <object class="GtkShortcutsShortcut"> - <property name="visible">True</property> <property name="title" translatable="yes" context="shortcut window">Skip backward in track</property> <property name="accelerator">Left</property> </object> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/data/org.gnome.Lollypop.appdata.xml.in new/lollypop-1.4.32/data/org.gnome.Lollypop.appdata.xml.in --- old/lollypop-1.4.30/data/org.gnome.Lollypop.appdata.xml.in 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/data/org.gnome.Lollypop.appdata.xml.in 2022-04-13 19:26:06.000000000 +0200 @@ -9,15 +9,9 @@ <summary>Play and organize your music collection</summary> <description> <p>Lollypop is a lightweight modern music player designed to work excellently on the GNOME desktop environment. It also features a party mode which will auto-select party-related playlists; allows access the player from your couch thanks to it fullscreen mode; fetches lyrics, artwork and biography online; and provides native support for ReplayGain.</p> - <ul> - <li><em>Multiple Audio Formats ???</em> Play MP3/4, Ogg Vorbis and FLAC files</li> - <li><em>Metadata ???</em> Fetch lyrics, artist bio, and automatically download cover arts</li> - <li><em>Synchronization ???</em> Sync Lollypop with your Android device via MTP</li> - <li><em>Audio Scrobbling ???</em> You can scrob songs to Last.fm, Libre.fm and ListenBrainz</li> - </ul> </description> <releases> - <release version="1.4.30" date="2022-03-18"> + <release version="1.4.31" date="2022-04-12"> <description> Bug fixes </description> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/data/org.gnome.Lollypop.gschema.xml new/lollypop-1.4.32/data/org.gnome.Lollypop.gschema.xml --- old/lollypop-1.4.30/data/org.gnome.Lollypop.gschema.xml 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/data/org.gnome.Lollypop.gschema.xml 2022-04-13 19:26:06.000000000 +0200 @@ -196,6 +196,11 @@ <summary>Show artist artwork</summary> <description></description> </key> + <key type="b" name="dark-ui"> + <default>false</default> + <summary>Use dark GTK theme</summary> + <description></description> + </key> <key type="b" name="disable-scrobbling"> <default>false</default> <summary>Disable scrobbling usage</summary> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/application.py new/lollypop-1.4.32/lollypop/application.py --- old/lollypop-1.4.30/lollypop/application.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/application.py 2022-04-13 19:26:06.000000000 +0200 @@ -92,6 +92,7 @@ GLib.setenv("TMPDIR", "%s/app/org.gnome.Lollypop" % tmp, True) self.cursors = {} self.shown_sidebar_tooltip = False + self.system_supports_color_schemes = False self.__window = None self.__fs_window = None settings = Gio.Settings.new("org.gnome.desktop.interface") @@ -163,6 +164,18 @@ from lollypop.mpris import MPRIS MPRIS(self) + settings = Gtk.Settings.get_default() + manager = Handy.StyleManager.get_default() + if manager.get_system_supports_color_schemes(): + self.system_supports_color_schemes = True + manager.set_color_scheme(Handy.ColorScheme.PREFER_LIGHT) + else: + self.__gtk_dark = settings.get_property( + "gtk-application-prefer-dark-theme") + if not self.__gtk_dark: + dark = self.settings.get_value("dark-ui") + settings.set_property( + "gtk-application-prefer-dark-theme", dark) ApplicationActions.__init__(self) monitor = Gio.NetworkMonitor.get_default() if monitor.get_network_available() and\ @@ -176,8 +189,6 @@ """ Gtk.Application.do_startup(self) Handy.init() - manager = Handy.StyleManager.get_default() - manager.set_color_scheme(Handy.ColorScheme.PREFER_LIGHT) if self.__window is None: from lollypop.window import Window self.init() @@ -298,6 +309,14 @@ """ return self.__data_dir + @property + def gtk_application_prefer_dark_theme(self): + """ + Return default gtk value + @return bool + """ + return self.__gtk_dark + ####################### # PRIVATE # ####################### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/application_actions.py new/lollypop-1.4.32/lollypop/application_actions.py --- old/lollypop-1.4.30/lollypop/application_actions.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/application_actions.py 2022-04-13 19:26:06.000000000 +0200 @@ -12,7 +12,7 @@ from gi.repository import Gio, GLib, Gtk -from lollypop.define import App, ScanType, Type +from lollypop.define import App, ScanType, Type, LovedFlags class ApplicationActions: @@ -339,15 +339,14 @@ elif string == "loved": track = App().player.current_track if track.id is not None and track.id >= 0: - if track.loved < 1: - loved = track.loved + 1 + loved = track.loved + if loved & LovedFlags.LOVED: + loved &= ~ LovedFlags.LOVED else: - loved = Type.NONE + loved |= LovedFlags.LOVED track.set_loved(loved) - if track.loved == 1: + if loved & LovedFlags.LOVED: heart = "???" - elif track.loved == -1: - heart = "???" else: heart = "???" App().notify.send("Lollypop", "%s - %s: %s" % diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/application_cmdline.py new/lollypop-1.4.32/lollypop/application_cmdline.py --- old/lollypop-1.4.30/lollypop/application_cmdline.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/application_cmdline.py 2022-04-13 19:26:06.000000000 +0200 @@ -113,6 +113,8 @@ self.register(None) if self.get_is_remote(): Gdk.notify_startup_complete() + options.insert_value("current_directory", + GLib.Variant("s", GLib.get_current_dir())) except Exception as e: Logger.error("Application::__on_handle_local_options(): %s", e) return -1 @@ -121,11 +123,16 @@ """ Handle command line @param app as Gio.Application - @param options as Gio.ApplicationCommandLine + @param app_cmd_line as Gio.ApplicationCommandLine """ try: args = app_cmd_line.get_arguments() options = app_cmd_line.get_options_dict() + if options.contains("current_directory"): + current_directory = options.lookup_value( + "current_directory").get_string() + else: + current_directory = GLib.get_current_dir() if options.contains("debug"): self.__debug = True if options.contains("set-rating"): @@ -180,7 +187,7 @@ # Try ./filename if not f.query_exists(): uri = GLib.filename_to_uri( - "%s/%s" % (GLib.get_current_dir(), uri)) + "%s/%s" % (current_directory, uri)) f = Gio.File.new_for_uri(uri) file_type = get_file_type(uri) if file_type == FileType.PLS: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/dialog_settings.py new/lollypop-1.4.32/lollypop/dialog_settings.py --- old/lollypop-1.4.30/lollypop/dialog_settings.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/dialog_settings.py 2022-04-13 19:26:06.000000000 +0200 @@ -24,7 +24,7 @@ Dialog showing lollypop settings """ - __BOOLEAN = ["artist-artwork", "auto-update", "background-mode", + __BOOLEAN = ["dark-ui", "artist-artwork", "auto-update", "background-mode", "save-state", "import-playlists", "save-to-tags", "show-compilations", "transitions", "network-access", "recent-youtube-dl", "import-advanced-artist-tags", @@ -97,6 +97,8 @@ builder.connect_signals(self) self.__controller = Gtk.EventControllerKey.new(self.__settings_dialog) self.__controller.connect("key-released", self.__on_key_released) + if App().system_supports_color_schemes: + builder.get_object("dark_row").hide() def show(self): """ @@ -116,7 +118,12 @@ setting = widget.get_name() App().settings.set_value(setting, GLib.Variant("b", state)) - if setting == "artist-artwork": + if setting == "dark-ui": + if not App().player.is_party: + settings = Gtk.Settings.get_default() + settings.set_property("gtk-application-prefer-dark-theme", + state) + elif setting == "artist-artwork": App().window.container.reload_view() elif setting == "network-access": self.__update_locked() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/menu_objects.py new/lollypop-1.4.32/lollypop/menu_objects.py --- old/lollypop-1.4.30/lollypop/menu_objects.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/menu_objects.py 2022-04-13 19:26:06.000000000 +0200 @@ -14,6 +14,7 @@ from gettext import gettext as _ +from lollypop.objects_album import Album from lollypop.define import StorageType, MARGIN_SMALL, App from lollypop.define import ViewType, Type from lollypop.menu_playlists import PlaylistsMenu @@ -62,7 +63,7 @@ "activate", lambda x, y: App().window.container.show_view( - [Type.ALBUM], album, storage_type)) + [Type.ALBUM], Album(album.id), storage_type)) menu_item = Gio.MenuItem.new(_("Show album"), "app.show_album_action") menu_item.set_attribute_value("close", GLib.Variant("b", True)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/toolbar_end.py new/lollypop-1.4.32/lollypop/toolbar_end.py --- old/lollypop-1.4.30/lollypop/toolbar_end.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/toolbar_end.py 2022-04-13 19:26:06.000000000 +0200 @@ -293,6 +293,10 @@ @param action as Gio.SimpleAction @param value as bool """ + if not App().gtk_application_prefer_dark_theme and\ + not App().settings.get_value("dark-ui"): + settings = Gtk.Settings.get_default() + settings.set_property("gtk-application-prefer-dark-theme", value) App().player.set_party(value.get_boolean()) action.set_state(value) self.__shuffle_action.set_enabled(not value) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/toolbar_info.py new/lollypop-1.4.32/lollypop/toolbar_info.py --- old/lollypop-1.4.30/lollypop/toolbar_info.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/toolbar_info.py 2022-04-13 19:26:06.000000000 +0200 @@ -46,12 +46,13 @@ self.__label = LabelPlayerWidget() self.__artwork = ArtworkPlayerWidget(ArtBehaviour.CROP_SQUARE | ArtBehaviour.CACHE) - self.__artwork.set_property("has-tooltip", True) self.__artwork.set_margin_top(1) horizontal_box.pack_start(self.__artwork, False, False, 0) horizontal_box.pack_start(self.__label, False, False, 0) self.set_margin_start(MARGIN_SMALL) self.connect("realize", self.__on_realize) + self.set_property("has-tooltip", True) + self.connect("query-tooltip", self.__on_query_tooltip) def show_children(self): """ @@ -137,7 +138,7 @@ if App().window.folded or not self.__artwork.get_visible(): return track = App().player.current_track - if track.id >= 0: + if track.id is not None and track.id >= 0: from lollypop.menu_objects import TrackMenu, TrackMenuExt from lollypop.widgets_menu import MenuBuilder menu = TrackMenu(track, ViewType.TOOLBAR) @@ -159,15 +160,14 @@ @param keyboard as bool @param tooltip as Gtk.Tooltip """ - layout_title = self._title_label.get_layout() - layout_artist = self._artist_label.get_layout() - if layout_title.is_ellipsized() or layout_artist.is_ellipsized(): - artist = GLib.markup_escape_text(self._artist_label.get_text()) - title = GLib.markup_escape_text(self._title_label.get_text()) - tooltip.set_markup("<b>%s</b> - %s" % (artist, title)) - else: - return False - return True + track = App().player.current_track + if track.id is not None and track.id >= 0: + artist = GLib.markup_escape_text(",".join(track.artists)) + title = GLib.markup_escape_text(track.title) + album = GLib.markup_escape_text(track.album.name) + tooltip.set_markup("<b>%s</b> - %s\n%s" % (title, artist, album)) + return True + return False def __on_realize(self, toolbar): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/lollypop/widgets_player_label.py new/lollypop-1.4.32/lollypop/widgets_player_label.py --- old/lollypop-1.4.30/lollypop/widgets_player_label.py 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/lollypop/widgets_player_label.py 2022-04-13 19:26:06.000000000 +0200 @@ -50,20 +50,20 @@ artist_text = GLib.markup_escape_text(artists) title_text = GLib.markup_escape_text(title) if self.__font_size is None: - markup = "<b>%s</b>" % artist_text + markup = "<b>%s</b>" % title_text markup += "\n<span size='small' alpha='50000'%s>%s</span>" % ( " color='white'" if self.__fullscreen else "", - title_text) + artist_text) else: markup = "<span font='%s' size='x-large'%s><b>%s</b></span>" % ( self.__font_size, " color='white'" if self.__fullscreen else "", - artist_text) + title_text) markup += "\n<span font='%s' size='x-large'%s>%s</span>"\ % ( self.__font_size, " color='white'" if self.__fullscreen else "", - title_text) + artist_text) if self.__fullscreen: album_text = "%s" % GLib.markup_escape_text( App().player.current_track.album.name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/meson.build new/lollypop-1.4.32/meson.build --- old/lollypop-1.4.30/meson.build 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/meson.build 2022-04-13 19:26:06.000000000 +0200 @@ -1,5 +1,5 @@ project('lollypop', - version: '1.4.30', + version: '1.4.32', meson_version: '>= 0.46.0' ) revision = run_command('bin/revision.sh').stdout().strip() @@ -28,7 +28,6 @@ # Dependencies dependency('gobject-introspection-1.0', version: '>= 1.35.0') dependency('gtk+-3.0', version: '>= 3.22') -dependency('libhandy-1', version: '>= 1.5') dependency('libsoup-2.4') dependency('glib-2.0') dependency('pygobject-3.0', version: '>= 3.29.1') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-1.4.30/org.gnome.Lollypop.json new/lollypop-1.4.32/org.gnome.Lollypop.json --- old/lollypop-1.4.30/org.gnome.Lollypop.json 2022-03-18 15:37:09.000000000 +0100 +++ new/lollypop-1.4.32/org.gnome.Lollypop.json 2022-04-13 19:26:06.000000000 +0200 @@ -1,7 +1,7 @@ { "app-id" : "org.gnome.Lollypop", "runtime" : "org.gnome.Platform", - "runtime-version" : "master", + "runtime-version" : "3.38", "sdk" : "org.gnome.Sdk", "command" : "lollypop", "tags" : [ @@ -306,6 +306,22 @@ } ] }, + { + "name" : "libhandy", + "buildsystem" : "meson", + "config-opts" : [ + "-Dglade_catalog=disabled", + "-Dtests=false", + "-Dexamples=false" + ], + "sources" : [ + { + "type" : "archive", + "url" : "https://download.gnome.org/sources/libhandy/1.0/libhandy-1.0.2.tar.xz", + "sha256" : "3ad78d0594165c7e8150f662506d386552825e693aa3679744af96bd94dc1c2d" + } + ] + }, { "name" : "lollypop", "buildsystem" : "meson", ++++++ lollypop.obsinfo ++++++ --- /var/tmp/diff_new_pack.WbD2dZ/_old 2022-04-13 21:05:42.328600719 +0200 +++ /var/tmp/diff_new_pack.WbD2dZ/_new 2022-04-13 21:05:42.336600726 +0200 @@ -1,5 +1,5 @@ name: lollypop -version: 1.4.30 -mtime: 1647614229 -commit: 55c5403077a630ccb91803c622f92a8e16eb8189 +version: 1.4.32 +mtime: 1649870766 +commit: 822b0102d928f026709d1494d5aa8cbe964bd6d0