Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hamster-time-tracker for 
openSUSE:Factory checked in at 2023-09-29 21:13:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hamster-time-tracker (Old)
 and      /work/SRC/openSUSE:Factory/.hamster-time-tracker.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hamster-time-tracker"

Fri Sep 29 21:13:53 2023 rev:9 rq:1114055 version:unknown

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/hamster-time-tracker/hamster-time-tracker.changes    
    2023-06-20 16:48:51.567542112 +0200
+++ 
/work/SRC/openSUSE:Factory/.hamster-time-tracker.new.28202/hamster-time-tracker.changes
     2023-09-29 21:15:06.525071387 +0200
@@ -1,0 +2,19 @@
+Wed Sep 27 21:07:24 UTC 2023 - Martin Wilck <[email protected]>
+
+- Update GNOME extension for GNOME shell 45 support
+  (older GNOME shell is not supported any more)
+  * add 0162-README.rst-add-info-about-restarting-the-extension.patch
+  * add 0163-TotalTimeWidget-port-to-JS6-classes.patch
+  * add 0164-prefs.js-Remove-display-of-extension-version.patch
+  * add 0165-settings-schema-fix-description-for-panel-placement-.patch
+  * add 0166-README.rst-simplify-installation-instructions.patch
+  * add 0167-panelWidget-add-button-to-open-extension-settings.patch
+  * add 0168-Use-ECMAScript-import-export-statements.patch
+  * add 0169-extension.js-adapt-to-GNOME-45.patch
+  * add 0170-prefs.js-re-implement-for-GNOME-45.patch
+  * add 0171-metadata.json.in-GNOME-45-support.patch
+  * add 0172-README.rst-fixup-GNOME-shell-compatiblility.patch
+  * add 0173-Replace-global.log-by-console.log.patch
+  * del 0133-Bump-latest-validated-gnome-shell-version-1.patch (empty)
+
+-------------------------------------------------------------------

Old:
----
  0133-Bump-latest-validated-gnome-shell-version-1.patch

New:
----
  0162-README.rst-add-info-about-restarting-the-extension.patch
  0163-TotalTimeWidget-port-to-JS6-classes.patch
  0164-prefs.js-Remove-display-of-extension-version.patch
  0165-settings-schema-fix-description-for-panel-placement-.patch
  0166-README.rst-simplify-installation-instructions.patch
  0167-panelWidget-add-button-to-open-extension-settings.patch
  0168-Use-ECMAScript-import-export-statements.patch
  0169-extension.js-adapt-to-GNOME-45.patch
  0170-prefs.js-re-implement-for-GNOME-45.patch
  0171-metadata.json.in-GNOME-45-support.patch
  0172-README.rst-fixup-GNOME-shell-compatiblility.patch
  0173-Replace-global.log-by-console.log.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hamster-time-tracker.spec ++++++
--- /var/tmp/diff_new_pack.5nDRYV/_old  2023-09-29 21:15:11.753260020 +0200
+++ /var/tmp/diff_new_pack.5nDRYV/_new  2023-09-29 21:15:11.757260164 +0200
@@ -21,8 +21,8 @@
 # ext_gnome_version: latest GNOME shell version supported
 # min_gnome_version: earliest GNOME shell version supported
 %if 0%{?suse_version} >= 1550
-%global ext_gnome_version 44
-%global min_gnome_version 3.34
+%global ext_gnome_version 45
+%global min_gnome_version 45
 %else
 %if 0%{?sle_version} >= 150400
 %global ext_gnome_version 41
@@ -93,7 +93,6 @@
 Patch130:       0130-README.rst-Add-a-section-about-UUID-changing.patch
 Patch131:       0131-metadata.json.in-fix-json-syntax-error.patch
 Patch132:       0132-Update-README.st.patch
-Patch133:       0133-Bump-latest-validated-gnome-shell-version-1.patch
 Patch134:       0134-README-mention-GNOME-shell-compatibility-of-this-ver.patch
 Patch135:       0135-README.rst-document-GNOME-shell-compatibility.patch
 Patch136:       0136-ongoingFactEntry-stop-using-deprecated-Clutter-key-s.patch
@@ -125,6 +124,19 @@
 Patch159:       0159-Report-errors-in-DBUS-calls.patch
 Patch160:       0160-Report-errors-on-initial-DBUS-connection.patch
 Patch161:       0161-Gracefully-handle-hamster-DBUS-disappearing.patch
+# GNOME 45
+Patch162:       0162-README.rst-add-info-about-restarting-the-extension.patch
+Patch163:       0163-TotalTimeWidget-port-to-JS6-classes.patch
+Patch164:       0164-prefs.js-Remove-display-of-extension-version.patch
+Patch165:       0165-settings-schema-fix-description-for-panel-placement-.patch
+Patch166:       0166-README.rst-simplify-installation-instructions.patch
+Patch167:       0167-panelWidget-add-button-to-open-extension-settings.patch
+Patch168:       0168-Use-ECMAScript-import-export-statements.patch
+Patch169:       0169-extension.js-adapt-to-GNOME-45.patch
+Patch170:       0170-prefs.js-re-implement-for-GNOME-45.patch
+Patch171:       0171-metadata.json.in-GNOME-45-support.patch
+Patch172:       0172-README.rst-fixup-GNOME-shell-compatiblility.patch
+Patch173:       0173-Replace-global.log-by-console.log.patch
 
 BuildRequires:  fdupes
 BuildRequires:  intltool
@@ -222,7 +234,6 @@
 %patch130 -p1
 %patch131 -p1
 %patch132 -p1
-%patch133 -p1
 %patch134 -p1
 %patch135 -p1
 %patch136 -p1
@@ -252,6 +263,21 @@
 %patch160 -p1
 %patch161 -p1
 %endif
+%if 0%{?suse_version} >= 1600
+# TW: GNOME 45 support
+%patch162 -p1
+%patch163 -p1
+%patch164 -p1
+%patch165 -p1
+%patch166 -p1
+%patch167 -p1
+%patch168 -p1
+%patch169 -p1
+%patch170 -p1
+%patch171 -p1
+%patch172 -p1
+%patch173 -p1
+%endif
 %endif
 
 mkdir build

++++++ 0162-README.rst-add-info-about-restarting-the-extension.patch ++++++
>From 470ef00f9378d6960f53ed0dd2f228bb31d1f676 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Thu, 10 Aug 2023 18:04:46 +0200
Subject: [PATCH 162/173] README.rst: add info about restarting the extension

---
 README.rst | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/README.rst b/README.rst
index 1e5b305..fe4e920 100644
--- a/README.rst
+++ b/README.rst
@@ -93,6 +93,17 @@ Afterwards, enable the extension and change the preferences 
using Tweak Tool,
 or on ``https://extensions.gnome.org/local/``. On GNOME 3.36 and later, you
 can also use the GNOME "Extensions" tool.
 
+Reloading the Extension
+~~~~~~~~~~~~~~~~~~~~~~~
+
+If the Hamster GNOME shell extension is already loaded and you change some 
code, 
+the GNOME shell needs to be restarted in order to update and restart the 
extension.
+The easiest way to do this is to run GNOME under X11 and use the key 
combination
+``Alt-F2`` followed by ``r``. If you run GNOME under Wayland, either re-login, 
or 
+start a `nested session 
<https://wiki.gnome.org/Initiatives/Wayland/GnomeShell/Testing>`_::
+    
+    dbus-run-session -- gnome-shell --nested --wayland
+
 Changing the extension UUID
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- 
2.42.0


++++++ 0163-TotalTimeWidget-port-to-JS6-classes.patch ++++++
>From 8c4857f9902810b4c369c0317ea90ebabe15caba Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 17:28:06 +0200
Subject: [PATCH 163/173] TotalTimeWidget: port to JS6 classes

See 9c0b672 ("Port GObject classes to JS6 classes")

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/widgets/totalTimeWidget.js | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/extension/widgets/totalTimeWidget.js 
b/extension/widgets/totalTimeWidget.js
index a956c36..9a6d64b 100644
--- a/extension/widgets/totalTimeWidget.js
+++ b/extension/widgets/totalTimeWidget.js
@@ -21,12 +21,10 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 Copyright (c) 2018 Thibaut Madelaine <[email protected]>
 */
 
-
-const Lang = imports.lang;
 const St = imports.gi.St;
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
-
+const GObject = imports.gi.GObject;
 const Me = imports.misc.extensionUtils.getCurrentExtension();
 const Stuff = Me.imports.stuff;
 
@@ -34,19 +32,16 @@ const Stuff = Me.imports.stuff;
 /**
  * Custom Label widget that displays total time.
  */
-var TotalTimeWidget = new Lang.Class({
-    Name: 'TotalTime',
-    Extends: St.Label,
-
-    _init: function() {
-        this.parent({style_class: 'summary-label'});
-
-    },
+var TotalTimeWidget = GObject.registerClass(
+  class TotalTime extends St.Label {
+    _init() {
+      super._init({style_class: 'summary-label'});
+    }
 
     /**
      * Recompute values and replace old string with new one based on passed 
facts.
      */
-    refresh: function(facts) {
+    refresh(facts) {
         /**
          * Construct a string representing today total.
          */
@@ -61,5 +56,5 @@ var TotalTimeWidget = new Lang.Class({
         }
 
         this.set_text(getString(facts));
-    },
+    }
 });
-- 
2.42.0


++++++ 0164-prefs.js-Remove-display-of-extension-version.patch ++++++
>From 0da6e64b06dd55fbf80438dfa62157a64e73eca9 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 20:04:12 +0200
Subject: [PATCH 164/173] prefs.js: Remove display of extension version

The meta data object in recent versions of GNOME shell
doesn't contain a 'version' field. We have removed it from
metadata.json with 4b9687b ("metadata.json: remove "version" field").
The prefs dialog will just show "undefined", which is not helpful.
Remove the widget displaying the version.

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/prefs.js | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/extension/prefs.js b/extension/prefs.js
index 86b2f5e..23e9ab0 100644
--- a/extension/prefs.js
+++ b/extension/prefs.js
@@ -25,10 +25,7 @@ const Gdk = imports.gi.Gdk;
 const Gio = imports.gi.Gio;
 const Gtk = imports.gi.Gtk;
 const GObject = imports.gi.GObject;
-
-
 const ExtensionUtils = imports.misc.extensionUtils;
-const Me = ExtensionUtils.getCurrentExtension();
 
 const HamsterSettingsWidget = GObject.registerClass(
 class HamsterSettingsWidget extends Gtk.Grid {
@@ -124,14 +121,6 @@ class HamsterSettingsWidget extends Gtk.Grid {
         });
         this.attach(label, 0, 3, 2, 1);
 
-        let version_text = Me.metadata.version;
-        label = new Gtk.Label({
-            label: "You are running hamster-shell-extension version " + 
version_text,
-            halign: Gtk.Align.CENTER,
-            visible: true,
-            margin_top: 10
-        });
-        this.attach(label, 0, 4, 2, 1);
     }
 
     _onPlacementChange(widget) {
-- 
2.42.0


++++++ 0165-settings-schema-fix-description-for-panel-placement-.patch ++++++
>From 4b11f19f9b3777cd0022719871f08386fd9e516f Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 23:11:22 +0200
Subject: [PATCH 165/173] settings schema: fix description for panel-placement,
 add gettext domain

---
 .../org.gnome.shell.extensions.project-hamster.gschema.xml    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/data/schemas/org.gnome.shell.extensions.project-hamster.gschema.xml 
b/data/schemas/org.gnome.shell.extensions.project-hamster.gschema.xml
index 8a35b28..5122c39 100644
--- a/data/schemas/org.gnome.shell.extensions.project-hamster.gschema.xml
+++ b/data/schemas/org.gnome.shell.extensions.project-hamster.gschema.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<schemalist>
+<schemalist gettext-domain="hamster-shell-extension">
     <schema id="org.gnome.shell.extensions.project-hamster" 
path="/org/gnome/shell/extensions/project-hamster/">
         <key name="panel-placement" type="i">
             <default>0</default>
             <summary>Placement in the panel.</summary>
-            <description>Position to place extension at. 0 - default, 1 - 
replace calendar, 2 - replace activities.</description>
+            <description>Position to place extension at. 0 - default, 1 - 
replace calendar, 2 - replace activities, 3 - Center, next to 
calendar.</description>
         </key>
 
         <key name="panel-appearance" type="i">
-- 
2.42.0


++++++ 0166-README.rst-simplify-installation-instructions.patch ++++++
>From 222aa30dcb64ba5388ca645b7bdab87ada4009a2 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Mon, 25 Sep 2023 18:06:16 +0200
Subject: [PATCH 166/173] README.rst: simplify installation instructions

Signed-off-by: Martin Wilck <[email protected]>
---
 README.rst | 63 ++++++++++++++++--------------------------------------
 1 file changed, 19 insertions(+), 44 deletions(-)

diff --git a/README.rst b/README.rst
index fe4e920..41a4a52 100644
--- a/README.rst
+++ b/README.rst
@@ -31,68 +31,43 @@ hamster`` which should bring up ``hamster-service`` and
 
 Install For Production
 ~~~~~~~~~~~~~~~~~~~~~~
-The extension is available on `the central extension repository 
<https://extensions.gnome.org/extension/425/project-hamster-extension>`_.
 
-Current compatible Gnome shell versions: 3.34, 3.36. *This version is not 
compatible
-with Gnome shell 3.32 and earlier.*
-For previous shell versions check `releases 
<https://github.com/projecthamster/hamster-shell-extension/tags>`_.
+Please follow the instructions under
+`Manual Installation For Testing and Development`_ below to install from git.
+The code in this branch (``develop``) is compatible with GNOME shell 3.34
+up to GNOME shell 44. See also `metadata.json.in`_.
 
-Creating a development environment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-As ``hamster-shell-extension`` is mainly simple JS there is not much of a 
development
-setup needed if you just want to get hacking right away. We do however provide
-a few convenience functionalities that make documenting and releasing the 
extension
-easier. For those purposes some additional python packages are required.
-The easiest and cleanest way to go about this is to create a new virtual 
environment and activate
-it::
+*Important:* The "Hamster Time Tracker" extension on
+`extensions.gnome.org 
https://extensions.gnome.org/extension/425/project-hamster-extension/`_
+is *severely outdated*; it supports GNOME shell up to 3.20 only. There are
+some other versions of this extension on extensions.gnome.org, but none of
+them is supported by the current maintainers of the extension.
 
-    python3 -m venv .venv
-    source .venv/bin/activate
-
-Now you are all setup to run ``make develop`` and related make targets without
-changing you main environment.
+.. _metadata.json.in: data/metadata.json.in
 
 Manual Installation For Testing and Development
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 Clone the repository::
 
     git clone https://github.com/projecthamster/hamster-shell-extension.git
 
 Make sure you are on the development branch::
 
-    git checkout develop
+    git switch -c develop origin/develop
 
-Build a fresh distribution package::
+To make this build available locally under your user account::
+
+    make install-user
+
+To build a fresh distribution package (this will create a distributable 
archive located in the ``dist/`` folder)::
 
     make dist
 
-This will create a distributable archive located in the ``dist/`` folder.
+Afterwards, enable the extension and change the preferences using the
+*gnome-extensions* tool (on GNOME 3.34 and earlier, you need to use 
*gnome-tweak-tool*).
 
 
-**Shortcut on** ``develop``
-
-If you are using the ``develop`` branch since May 2020, you can run ``make
-install-user`` to install your current working branch in your user environment
-or ``make install`` for a system-wide installation. The ``DESTDIR`` variable
-can be provided to ``make install`` to adjust the base installation path (it
-defaults to ``DESTDIR=/usr/local``).
-
-Otherwise, on other branches, follow the steps below to manually install the
-distribution archive::
-
-    # Build
-    make dist
-    # Remove any old installation
-    rm -rf ~/.local/share/gnome-shell/extensions/[email protected]
-    # Create directory
-    mkdir -p ~/.local/share/gnome-shell/extensions/[email protected]
-    # Unpack build
-    tar xfz dist/[email protected] -C 
~/.local/share/gnome-shell/extensions/[email protected]
-
-Afterwards, enable the extension and change the preferences using Tweak Tool,
-or on ``https://extensions.gnome.org/local/``. On GNOME 3.36 and later, you
-can also use the GNOME "Extensions" tool.
-
 Reloading the Extension
 ~~~~~~~~~~~~~~~~~~~~~~~
 
-- 
2.42.0


++++++ 0167-panelWidget-add-button-to-open-extension-settings.patch ++++++
>From 2b3257b3c9530c7ef12c1ada9be53afc2cc088d2 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Mon, 25 Sep 2023 17:02:48 +0200
Subject: [PATCH 167/173] panelWidget: add button to open extension settings

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/widgets/panelWidget.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js
index 0d9e870..4a15dd6 100644
--- a/extension/widgets/panelWidget.js
+++ b/extension/widgets/panelWidget.js
@@ -125,6 +125,11 @@ class PanelWidget extends PanelMenu.Button {
         SettingMenuItem.connect('activate', this._onOpenSettings.bind(this));
         this.menu.addMenuItem(SettingMenuItem);
 
+        let ExtSettingMenuItem = new PopupMenu.PopupMenuItem(_("Extension 
Settings"));
+        ExtSettingMenuItem.connect('activate',
+                                  () => this._controller.openPreferences());
+        this.menu.addMenuItem(ExtSettingMenuItem);
+
         // focus menu upon display
         this.menu.connect('open-state-changed',
             function(menu, open) {
-- 
2.42.0


++++++ 0168-Use-ECMAScript-import-export-statements.patch ++++++
>From 96bfe69e7f9f6e0f175a4c501a96054cb537850e Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 18:53:26 +0200
Subject: [PATCH 168/173] Use ECMAScript import/export statements

https://gjs.guide/extensions/upgrading/gnome-shell-45.html

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/extension.js                    | 18 +++++--------
 extension/prefs.js                        |  9 +++----
 extension/stuff.js                        | 10 +++----
 extension/widgets/categoryTotalsWidget.js | 14 +++++-----
 extension/widgets/factsBox.js             | 32 ++++++++++-------------
 extension/widgets/ongoingFactEntry.js     | 14 +++++-----
 extension/widgets/panelWidget.js          | 25 +++++++++---------
 extension/widgets/todaysFactsWidget.js    | 18 ++++++-------
 extension/widgets/totalTimeWidget.js      | 14 +++++-----
 9 files changed, 70 insertions(+), 84 deletions(-)

diff --git a/extension/extension.js b/extension/extension.js
index 8ece31e..31068ef 100644
--- a/extension/extension.js
+++ b/extension/extension.js
@@ -21,18 +21,14 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const GLib = imports.gi.GLib;
-const Shell = imports.gi.Shell;
-const Meta = imports.gi.Meta;
-const Main = imports.ui.main;
-const Gio = imports.gi.Gio;
+import GLib from 'gi://GLib';
+import Shell from 'gi://Shell';
+import Meta from 'gi://Meta';
+import Gio from 'gi://Gio';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
 
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const ExtensionUtils = imports.misc.extensionUtils;
-const Me = ExtensionUtils.getCurrentExtension();
-const PanelWidget = Me.imports.widgets.panelWidget.PanelWidget;
+import {Extension, gettext as _} from 
'resource:///org/gnome/shell/extensions/extension.js';
+import PanelWidget from './widgets/panelWidget.js';
 
 // dbus-send --session --type=method_call --print-reply 
--dest=org.gnome.Hamster /org/gnome/Hamster 
org.freedesktop.DBus.Introspectable.Introspect
 const ApiProxyIface = ['',
diff --git a/extension/prefs.js b/extension/prefs.js
index 23e9ab0..c7ae150 100644
--- a/extension/prefs.js
+++ b/extension/prefs.js
@@ -21,11 +21,10 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const Gdk = imports.gi.Gdk;
-const Gio = imports.gi.Gio;
-const Gtk = imports.gi.Gtk;
-const GObject = imports.gi.GObject;
-const ExtensionUtils = imports.misc.extensionUtils;
+import Gdk from 'gi://Gdk';
+import Gio from 'gi://Gio';
+import Gtk from 'gi://Gtk';
+import GObject from 'gi://GObject';
 
 const HamsterSettingsWidget = GObject.registerClass(
 class HamsterSettingsWidget extends Gtk.Grid {
diff --git a/extension/stuff.js b/extension/stuff.js
index 56c7054..4cd8a12 100644
--- a/extension/stuff.js
+++ b/extension/stuff.js
@@ -29,7 +29,7 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
  *
  * @param {int} - Total amount of seconds to represent.
  */
-function formatDuration(total_seconds) {
+export function formatDuration(total_seconds) {
     let hours = total_seconds / 3600;
     let remaining_seconds = total_seconds % 3600;
     // We only care for "full minutes".
@@ -45,7 +45,7 @@ function formatDuration(total_seconds) {
  *
  * @param {int} - Total amount of seconds to represent.
  */
-function formatDurationHuman(total_seconds) {
+export function formatDurationHuman(total_seconds) {
     let hours = total_seconds / 3600;
     let remaining_seconds = total_seconds % 3600;
     // We only care for "full minutes".
@@ -75,7 +75,7 @@ function formatDurationHuman(total_seconds) {
  *
  * @param {int} - Total amount of seconds to represent.
  */
-function formatDurationHours(seconds) {
+export function formatDurationHours(seconds) {
     // We shift by one decimal place to the left in order to round properly.
     let hours = Math.round((seconds/3600)*10);
     // Shift right after rounding.
@@ -85,7 +85,7 @@ function formatDurationHours(seconds) {
 
 // Other helper functions
 
-function fromDbusFact(fact) {
+export function fromDbusFact(fact) {
     // converts a fact coming from dbus into a usable object
     function UTCToLocal(timestamp) {
         // TODO - is this really the way?!
@@ -108,7 +108,7 @@ function fromDbusFact(fact) {
     return result;
 }
 
-function fromDbusFacts(facts) {
+export function fromDbusFacts(facts) {
     let res = [];
     for (var fact of facts) {
         res.push(fromDbusFact(fact));
diff --git a/extension/widgets/categoryTotalsWidget.js 
b/extension/widgets/categoryTotalsWidget.js
index 88f9b96..9b36b7e 100644
--- a/extension/widgets/categoryTotalsWidget.js
+++ b/extension/widgets/categoryTotalsWidget.js
@@ -21,13 +21,11 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import * as Stuff from '../stuff.js'
 
 
 /**
@@ -66,3 +64,5 @@ class CategoryTotals extends St.Label {
         this.set_text(getString(facts));
     }
 });
+
+export default CategoryTotalsWidget;
diff --git a/extension/widgets/factsBox.js b/extension/widgets/factsBox.js
index a033602..ab745de 100644
--- a/extension/widgets/factsBox.js
+++ b/extension/widgets/factsBox.js
@@ -21,23 +21,18 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const St = imports.gi.St;
-const PopupMenu = imports.ui.popupMenu;
-const Clutter = imports.gi.Clutter;
-const Mainloop = imports.mainloop;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
-const OngoingFactEntry = Me.imports.widgets.ongoingFactEntry.OngoingFactEntry;
-const CategoryTotalsWidget = 
Me.imports.widgets.categoryTotalsWidget.CategoryTotalsWidget;
-const TotalTimeWidget = Me.imports.widgets.totalTimeWidget.TotalTimeWidget;
-const TodaysFactsWidget = 
Me.imports.widgets.todaysFactsWidget.TodaysFactsWidget;
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
 
+import { gettext as _ } from 
'resource:///org/gnome/shell/extensions/extension.js';
+import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
+import * as Stuff from '../stuff.js';
+import OngoingFactEntry from './ongoingFactEntry.js';
+import CategoryTotalsWidget from './categoryTotalsWidget.js';
+import TotalTimeWidget from './totalTimeWidget.js';
+import TodaysFactsWidget from './todaysFactsWidget.js';
 
 /**
  * Create the widget that ``PanelWidget`` will use to dispay the *raw fact 
entry* as
@@ -79,7 +74,6 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
         // Setup category summery
         this.summaryLabel = new CategoryTotalsWidget();
         main_box.add(this.summaryLabel);
-
         // Setup total time
         this.totalTimeLabel = new TotalTimeWidget();
         main_box.add(this.totalTimeLabel);
@@ -100,7 +94,7 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
      * Focus the fact entry and make sure todaysFactsWidget are scrolled to 
the bottom.
      */
     focus() {
-        Mainloop.timeout_add(20, function() {
+        GLib.timeout_add(GLib.PRIORITY_DEFAULT, 20, function() {
             this._scrollAdjustment.value = this._scrollAdjustment.upper;
             global.stage.set_key_focus(this.ongoingFactEntry);
         }.bind(this));
@@ -113,3 +107,5 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
         global.stage.set_key_focus(null);
     }
 });
+
+export default FactsBox;
diff --git a/extension/widgets/ongoingFactEntry.js 
b/extension/widgets/ongoingFactEntry.js
index cce4929..cd63ae3 100644
--- a/extension/widgets/ongoingFactEntry.js
+++ b/extension/widgets/ongoingFactEntry.js
@@ -21,15 +21,11 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
+import GObject from 'gi://GObject';
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
 
+import { gettext as _ } from 
'resource:///org/gnome/shell/extensions/extension.js';
 
 /**
  * Custom Entry widget that allows entering a *raw fact* string for a new 
ongoing fact.
@@ -186,3 +182,5 @@ class OngoingFactEntry extends St.Entry {
         }
     }
 });
+
+export default OngoingFactEntry;
diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js
index 4a15dd6..b02d37b 100644
--- a/extension/widgets/panelWidget.js
+++ b/extension/widgets/panelWidget.js
@@ -21,20 +21,17 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Clutter = imports.gi.Clutter;
-const PanelMenu = imports.ui.panelMenu;
-const St = imports.gi.St;
-const PopupMenu = imports.ui.popupMenu;
-const GLib = imports.gi.GLib;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Clutter from 'gi://Clutter';
+import St from 'gi://St';
+import GLib from 'gi://GLib';
+import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
+import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
 
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const FactsBox = Me.imports.widgets.factsBox.FactsBox;
-const Stuff = Me.imports.stuff;
+import { gettext as _ } from 
'resource:///org/gnome/shell/extensions/extension.js';
+import FactsBox from './factsBox.js';
+import * as Stuff from '../stuff.js';
 
 /**
  * Class that defines the actual extension widget to be shown in the panel.
@@ -341,3 +338,5 @@ class PanelWidget extends PanelMenu.Button {
         }
     }
 });
+
+export default PanelWidget;
diff --git a/extension/widgets/todaysFactsWidget.js 
b/extension/widgets/todaysFactsWidget.js
index 778f964..29c2370 100644
--- a/extension/widgets/todaysFactsWidget.js
+++ b/extension/widgets/todaysFactsWidget.js
@@ -21,17 +21,13 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
 
+import { gettext as _ } from 
'resource:///org/gnome/shell/extensions/extension.js';
+import * as Stuff from '../stuff.js';
 
 /**
  * A widget that lists all facts for *today*.
@@ -195,3 +191,5 @@ class TodaysFactsWidget extends St.ScrollView {
         this.populateFactsWidget(facts, ongoingFact);
     }
 });
+
+export default TodaysFactsWidget;
diff --git a/extension/widgets/totalTimeWidget.js 
b/extension/widgets/totalTimeWidget.js
index 9a6d64b..d11be30 100644
--- a/extension/widgets/totalTimeWidget.js
+++ b/extension/widgets/totalTimeWidget.js
@@ -21,13 +21,11 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 Copyright (c) 2018 Thibaut Madelaine <[email protected]>
 */
 
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
-
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import * as Stuff from '../stuff.js';
 
 /**
  * Custom Label widget that displays total time.
@@ -58,3 +56,5 @@ var TotalTimeWidget = GObject.registerClass(
         this.set_text(getString(facts));
     }
 });
+
+export default TotalTimeWidget;
-- 
2.42.0


++++++ 0169-extension.js-adapt-to-GNOME-45.patch ++++++
>From 3ce1d776309872c543594934ee03b13112812213 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 21:18:08 +0200
Subject: [PATCH 169/173] extension.js: adapt to GNOME 45

https://gjs.guide/extensions/upgrading/gnome-shell-45.html#extension-js

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/extension.js           | 11 +++--------
 extension/widgets/panelWidget.js |  2 +-
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/extension/extension.js b/extension/extension.js
index 31068ef..7873763 100644
--- a/extension/extension.js
+++ b/extension/extension.js
@@ -88,11 +88,11 @@ let WindowsProxy = 
Gio.DBusProxy.makeProxyWrapper(WindowsProxyIface);
  *
  * @class
  */
-class Controller {
+export default class Controller extends Extension {
     constructor(extensionMeta) {
        let dateMenu = Main.panel.statusArea.dateMenu;
 
-        this.extensionMeta = extensionMeta;
+        super(extensionMeta);
         this.panelWidget = null;
         this.settings = null;
         this.placement = 0;
@@ -136,7 +136,7 @@ class Controller {
         if (!this.shouldEnable || !this.apiProxy || !this.windowsProxy)
             return;
 
-        this.settings = ExtensionUtils.getSettings();
+        this.settings = this.getSettings();
         this.panelWidget = new PanelWidget(this);
         this.placement = this.settings.get_int("panel-placement");
 
@@ -281,8 +281,3 @@ class Controller {
     }
 }
 
-
-function init(extensionMeta) {
-    ExtensionUtils.initTranslations();
-    return new Controller(extensionMeta);
-}
diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js
index b02d37b..bfdc41b 100644
--- a/extension/widgets/panelWidget.js
+++ b/extension/widgets/panelWidget.js
@@ -62,7 +62,7 @@ class PanelWidget extends PanelMenu.Button {
         this._controller = controller;
         // [FIXME]
         // Still needed?
-        this._extensionMeta = controller.extensionMeta;
+        this._extensionMeta = controller.metadata;
         this._settings = controller.settings;
         this._windowsProxy = controller.windowsProxy;
 
-- 
2.42.0


++++++ 0170-prefs.js-re-implement-for-GNOME-45.patch ++++++
>From 56a49e059d6ba187086df9690303352e27ed1702 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 23:12:35 +0200
Subject: [PATCH 170/173] prefs.js: re-implement for GNOME 45

I used check buttons for the settings. Adw.ComboRow might have been
more suitable, but I couldn't find an example how to set it up.

The code here was copied from GNOME's window-list extension and
adapted to hamster.

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/prefs.js | 251 ++++++++++++++++++++-------------------------
 1 file changed, 114 insertions(+), 137 deletions(-)

diff --git a/extension/prefs.js b/extension/prefs.js
index c7ae150..0b565e6 100644
--- a/extension/prefs.js
+++ b/extension/prefs.js
@@ -21,155 +21,132 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster 
<elbenfreund@projecthamst
 */
 
 
+import Adw from 'gi://Adw';
 import Gdk from 'gi://Gdk';
 import Gio from 'gi://Gio';
 import Gtk from 'gi://Gtk';
 import GObject from 'gi://GObject';
+import GLib from 'gi://GLib';
 
-const HamsterSettingsWidget = GObject.registerClass(
-class HamsterSettingsWidget extends Gtk.Grid {
-    _init(params) {
-        super._init(params);
+import {ExtensionPreferences, gettext as _} from 
'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
 
-        this.name = 'ProjectHamster.Prefs.HamsterSettingsWidget';
 
-        this.set_margin_bottom(18);
-        this.set_margin_end(18);
-        this.set_margin_start(18);
-        this.set_margin_top(18);
-        this.set_column_spacing(12);
-        this.set_row_spacing(12);
-        this.visible = true;
+class HotkeyRow extends Adw.EntryRow {
+  static {
+    GObject.registerClass(this);
+  }
 
-        this._settings = ExtensionUtils.getSettings();
+  constructor({ title, settings, bind }) {
+    super({
+      title: title,
+    });
 
-        let label = new Gtk.Label({
-            label: "Positioning:",
-            halign: Gtk.Align.START,
-            visible: true
-        });
-        this.attach(label, 0, 0, 1, 1);
+    this.connect("apply", () => {
+      const hotkeys = this.get_text();
 
-        let placementOptions = new Gtk.ListStore();
-        placementOptions.set_column_types([GObject.TYPE_STRING, 
GObject.TYPE_INT]);
+      const mappings = hotkeys.split(",").map((x) => {
+        const [, key, mods] = Gtk.accelerator_parse(x);
+        return Gtk.accelerator_valid(key, mods) && Gtk.accelerator_name(key, 
mods);
+      });
 
-        placementOptions.set(placementOptions.append(), [0, 1], ["Default", 
0]);
-        placementOptions.set(placementOptions.append(), [0, 1], ["Replace 
calendar", 1]);
-        placementOptions.set(placementOptions.append(), [0, 1], ["Replace 
activities", 2]);
-        placementOptions.set(placementOptions.append(), [0, 1], ["Center, next 
to calendar", 3]);
+      if (mappings.every((x) => !!x)) {
+       console.log("HotkeyRow: good hotkey value ", hotkeys);
+       this.current = mappings;
+       settings.set_strv(bind, this.current);
+      } else {
+       console.log("invalid hotkey value ", hotkeys);
+       this.set_text(this.current.join(","));
+      }
+    });
 
-        let placementCombo = new Gtk.ComboBox({
-            model: placementOptions,
-            visible: true
-        });
-
-        let placementComboRenderer = new Gtk.CellRendererText();
-        placementCombo.pack_start(placementComboRenderer, true);
-        placementCombo.add_attribute(placementComboRenderer, 'text', 0);
-        placementCombo.connect('changed', this._onPlacementChange.bind(this));
-        placementCombo.set_active(this._settings.get_int("panel-placement"));
-        this.attach(placementCombo, 1, 0, 1, 1);
-
-        label = new Gtk.Label({
-            label: "Appearance in panel:",
-            halign: Gtk.Align.START,
-            visible: true
-        });
-        this.attach(label, 0, 1, 1, 1);
-
-        let appearanceOptions = new Gtk.ListStore();
-        appearanceOptions.set_column_types([GObject.TYPE_STRING, 
GObject.TYPE_INT]);
-
-        appearanceOptions.set(appearanceOptions.append(), [0, 1], ["Label", 
0]);
-        appearanceOptions.set(appearanceOptions.append(), [0, 1], ["Icon", 1]);
-        appearanceOptions.set(appearanceOptions.append(), [0, 1], ["Label and 
icon", 2]);
-
-        let appearanceCombo = new Gtk.ComboBox({
-            model: appearanceOptions,
-            visible: true
-        });
-
-        let appearanceComboRenderer = new Gtk.CellRendererText();
-        appearanceCombo.pack_start(appearanceComboRenderer, true);
-        appearanceCombo.add_attribute(appearanceComboRenderer, 'text', 0);
-        appearanceCombo.connect('changed', 
this._onAppearanceChange.bind(this));
-        appearanceCombo.set_active(this._settings.get_int("panel-appearance"));
-        this.attach(appearanceCombo, 1, 1, 1, 1);
-
-        label = new Gtk.Label({
-            label: "Global hotkey:",
-            halign: Gtk.Align.START,
-            visible: true
-        });
-        this.attach(label, 0, 2, 1, 1);
-
-        let entry = new Gtk.Entry({
-            margin_bottom: 10,
-            margin_top: 5,
-            text: this._settings.get_strv("show-hamster-dropdown")[0],
-            visible: true
-        });
-        entry.connect('changed', this._onHotkeyChange.bind(this));
-        this.attach(entry, 1, 2, 1, 1);
-
-        label = new Gtk.Label({
-            label: "Reload gnome shell after updating prefs (alt+f2 > r)",
-            halign: Gtk.Align.CENTER,
-            visible: true,
-            margin_top: 70
-        });
-        this.attach(label, 0, 3, 2, 1);
-
-    }
-
-    _onPlacementChange(widget) {
-        let [success, iter] = widget.get_active_iter();
-        if (!success)
-            return;
-
-        let newPlacement = widget.get_model().get_value(iter, 1);
-
-        if (this._settings.get_int("panel-placement") == newPlacement)
-            return;
-
-        this._settings.set_int("panel-placement", newPlacement);
-    }
-
-    _onAppearanceChange(widget) {
-        let [success, iter] = widget.get_active_iter();
-        if (!success)
-            return;
-
-        let newAppearance = widget.get_model().get_value(iter, 1);
-
-        if (this._settings.get_int("panel-appearance") == newAppearance)
-            return;
-
-        this._settings.set_int("panel-appearance", newAppearance);
-    }
-
-    _onHotkeyChange(widget, bananas) {
-        let hotkey = widget.get_text();
-        let [key, mods] = [null, null];
-
-        if (Gtk.MAJOR_VERSION >= 4) {
-            let _r = null;
-            [_r, key, mods] = Gtk.accelerator_parse(hotkey);
-        } else {
-            [key, mods] = Gtk.accelerator_parse(hotkey);
-        }
-
-        if (key != 0) {
-            let parsedName = Gtk.accelerator_name(key, mods);
-            this._settings.set_strv("show-hamster-dropdown", [parsedName]);
-        }
-
-    }
-});
-
-function init() {
+    this.show_apply_button = true,
+    this.current = settings.get_strv(bind);
+    console.log("HotkeyRow current: ", bind, this.current);
+    this.set_text(this.current.join(","));
+  }
 }
 
-function buildPrefsWidget() {
-    return new HamsterSettingsWidget();
+class HamsterPrefsWidget extends Adw.PreferencesPage {
+
+  static {
+    GObject.registerClass(this);
+  }
+
+  constructor(settings) {
+    super();
+    this._settings = settings;
+
+    this._actionGroup = new Gio.SimpleActionGroup();
+    this.insert_action_group('hamster', this._actionGroup);
+    this._actionGroup.add_action(
+      this._settings.create_action('panel-placement'));
+    this._actionGroup.add_action(
+      this._settings.create_action('panel-appearance'));
+
+    const placementGroup = new Adw.PreferencesGroup({
+      title: _('Panel Placement'),
+    });
+    this.add(placementGroup);
+
+    const placements = [
+      { p: 0, title: _("Default") },
+      { p: 1, title: _("Replace calendar") },
+      { p: 2, title: _("Replace activities") },
+      { p: 3, title: _("Center, next to calendar") },
+    ];
+
+    for (const {p, title} of placements) {
+      const btn = new Gtk.CheckButton({
+       action_name:   'hamster.panel-placement',
+       action_target: new GLib.Variant('i', p),
+      });
+      const row = new Adw.ActionRow({
+       activatable_widget: btn,
+       title,
+      });
+      row.add_prefix(btn);
+      placementGroup.add(row);
+    }
+
+    const appearanceGroup = new Adw.PreferencesGroup({
+      title: _('Panel Appearance'),
+    });
+    this.add(appearanceGroup);
+
+    const appearances = [
+      { a: 0, title: _("Label") },
+      { a: 1, title: _("Icon") },
+      { a: 2, title: _("Label and icon") },
+    ];
+
+    for (const {a, title} of appearances) {
+      const btn = new Gtk.CheckButton({
+       action_name:   'hamster.panel-appearance',
+       action_target: new GLib.Variant('i', a),
+      });
+      const row = new Adw.ActionRow({
+       activatable_widget: btn,
+       title,
+      });
+      row.add_prefix(btn);
+      appearanceGroup.add(row);
+    }
+
+    const miscGroup = new Adw.PreferencesGroup();
+    this.add(miscGroup);
+
+    let row = new HotkeyRow({
+      title: _("Global hotkey"),
+      settings: this._settings,
+      bind: "show-hamster-dropdown",
+    });
+
+    miscGroup.add(row);
+  }
+}
+
+export default class HamsterPrefs extends ExtensionPreferences {
+    getPreferencesWidget() {
+      return new HamsterPrefsWidget(this.getSettings());
+    }
 }
-- 
2.42.0


++++++ 0171-metadata.json.in-GNOME-45-support.patch ++++++
>From 289d6b16a436fd51c807cea7ba3f05863dae039a Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Fri, 22 Sep 2023 23:16:04 +0200
Subject: [PATCH 171/173] metadata.json.in: GNOME 45 support

This implies that support for all previous GNOME versions  is dropped.
(https://gjs.guide/extensions/upgrading/gnome-shell-45.html#shell-version)

Signed-off-by: Martin Wilck <[email protected]>
---
 data/metadata.json.in | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/data/metadata.json.in b/data/metadata.json.in
index 162a7cf..ddbd0a5 100644
--- a/data/metadata.json.in
+++ b/data/metadata.json.in
@@ -10,14 +10,7 @@
     "gettext-domain": "hamster-shell-extension",
     "settings-schema": "org.gnome.shell.extensions.project-hamster",
     "shell-version": [
-        "3.34",
-        "3.36",
-        "3.38",
-        "40",
-        "41",
-        "42",
-        "43",
-        "44"
+        "45"
     ],
     "url": "https://github.com/projecthamster/hamster-shell-extension.git";,
     "uuid": @UUID@
-- 
2.42.0


++++++ 0172-README.rst-fixup-GNOME-shell-compatiblility.patch ++++++
>From 36efbfe623faf94da1ea86686864f95e62c81192 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Mon, 25 Sep 2023 18:46:45 +0200
Subject: [PATCH 172/173] README.rst: fixup GNOME shell compatiblility

Signed-off-by: Martin Wilck <[email protected]>
---
 README.rst | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.rst b/README.rst
index 41a4a52..5263bf7 100644
--- a/README.rst
+++ b/README.rst
@@ -34,8 +34,8 @@ Install For Production
 
 Please follow the instructions under
 `Manual Installation For Testing and Development`_ below to install from git.
-The code in this branch (``develop``) is compatible with GNOME shell 3.34
-up to GNOME shell 44. See also `metadata.json.in`_.
+The code in this branch is compatible with *GNOME shell 45 and newer* only.
+See also `metadata.json.in`_.
 
 *Important:* The "Hamster Time Tracker" extension on
 `extensions.gnome.org 
https://extensions.gnome.org/extension/425/project-hamster-extension/`_
-- 
2.42.0


++++++ 0173-Replace-global.log-by-console.log.patch ++++++
>From bdda7f12190654c0cc9663912473476eafcf64ef Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
Date: Wed, 27 Sep 2023 10:58:14 +0200
Subject: [PATCH 173/173] Replace "global.log" by "console.log"

"global" isn't generally available any more.

Signed-off-by: Martin Wilck <[email protected]>
---
 extension/extension.js | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/extension/extension.js b/extension/extension.js
index 7873763..05e75cb 100644
--- a/extension/extension.js
+++ b/extension/extension.js
@@ -187,7 +187,7 @@ export default class Controller extends Extension {
         this.shouldEnable = false;
         Main.wm.removeKeybinding("show-hamster-dropdown");
 
-        global.log('Shutting down hamster-shell-extension.');
+        console.log('Shutting down hamster-shell-extension.');
         this._removeWidget(this.placement);
         Main.panel.menuManager.removeMenu(this.panelWidget.menu);
         this.panelWidget.destroy();
@@ -209,7 +209,6 @@ export default class Controller extends Extension {
             this.reportIfError(_("Failed to get activities"), err);
             this.runningActivitiesQuery = false;
             this.activities = response;
-            // global.log('ACTIVITIES HAMSTER: ', this.activities);
         }.bind(this));
     }
 
@@ -220,7 +219,7 @@ export default class Controller extends Extension {
     reportIfError(msg, error) {
         if (error) {
             // Use toString, error can be a string, exception, etc.
-            global.log("error: Hamster: " + msg + ": " + error.toString());
+            console.log("error: Hamster: " + msg + ": " + error.toString());
             // Prefix msg to details (second argument), since the
             // details are word-wrapped and the title is not.
             Main.notify("Hamster: " + msg, msg + "\n" + error.toString());
-- 
2.42.0

Reply via email to