Bug#1107601: unblock (pre-approval): gnome-shell/48.2-3
Control: tags -1 moreinfo confirmed
On 2025-06-10 15:20:22 +0100, Simon McVittie wrote:
> Package: release.debian.org
> Severity: normal
> X-Debbugs-Cc: gnome-shell@packages.debian.org, debian-desktop@lists.debian.org, debian-gtk-gnome@lists.debian.org
> Control: affects -1 + src:gnome-shell
> User: release.debian.org@packages.debian.org
> Usertags: unblock
>
> [ Reason ]
> - Improve how apps are split between the Dash (pinned favourite apps in
> bottom panel) and app grid (main menu) for the set of apps that get
> installed by default in trixie (#1099579)
> - New upstream bug fix release
Please go ahead and remove the moreinfo tag once the package is
available in unstable.
Cheers
>
> [ Impact ]
> If not accepted:
> - various upstream bugs including #1104630 and a crash bug will continue
> to be present
> - new installations of our default desktop environment will not have the
> UX that we had hoped for
>
> [ Tests ]
> A functionally equivalent version is available from experimental. It
> works normally on my GNOME system.
>
> Automated tests still pass. A lot of gnome-shell's functionality is not
> feasible to test via automated testing, but there is a new automated
> test for #1104630.
>
> For the downstream changes for #1099579, I installed debian-installer
> rc1 with GNOME into a virtual machine, then upgraded gnome-shell to this
> version and emptied the user's home directory (to make sure that all
> changes took effect). See #1099579 for screenshots and discussion.
>
> [ Risks ]
> Key package, high visibility.
>
> The upstream changes are narrowly-targeted bug fixes, and could easily
> be reverted via patches if they cause a problem.
>
> The downstream changes are also narrowly-targeted and could easily be
> reverted if they cause a problem. The highest-risk of these changes is
> that we moved im-config.desktop from the top level of the app grid into
> a System folder, which could make it more difficult for new users to find.
>
> [ Checklist ]
> [x] all changes are documented in the d/changelog
> [x] I reviewed all changes and I approve them
> [x] attach debdiff against the package in testing
> - the debdiff is testing vs experimental, what I'm proposing to
> upload to unstable is the experimental version plus a changelog
> entry
>
> [ Other info ]
> We could easily subdivide these changes by topic (#1099579 vs upstream
> bugfix release) or more narrowly (applying or reverting individual
> changes) if the release or desktop teams would like a subset of them but
> not the whole lot. Please let the GNOME team know what is preferred.
> debdiff *.dsc | filterdiff -p1 -x'po/*.po' -x.gitlab-ci.yml
>
> diff -Nru gnome-shell-48.1/data/default-apps/system-folder.txt gnome-shell-48.2/data/default-apps/system-folder.txt
> --- gnome-shell-48.1/data/default-apps/system-folder.txt 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/data/default-apps/system-folder.txt 2025-06-10 14:55:10.000000000 +0100
> @@ -2,6 +2,7 @@
> org.gnome.DejaDup.desktop # Backups
> org.gnome.baobab.desktop # Disk Usage Analyzer
> org.gnome.DiskUtility.desktop # Disks
> +im-config.desktop # Input Method
> org.gnome.Logs.desktop # Logs
> org.freedesktop.MalcontentControl.desktop # Parental Controls
> org.freedesktop.GnomeAbrt.desktop # Problem Reporting
> diff -Nru gnome-shell-48.1/debian/changelog gnome-shell-48.2/debian/changelog
> --- gnome-shell-48.1/debian/changelog 2025-04-17 18:38:58.000000000 +0100
> +++ gnome-shell-48.2/debian/changelog 2025-06-10 14:16:06.000000000 +0100
> @@ -1,3 +1,66 @@
> +gnome-shell (48.2-2) experimental; urgency=medium
> +
> + * Team upload
> + * Summarize upstream changes in previous changelog entry
> + * d/gnome-shell.gsettings-override: Update default pinned apps for trixie.
> + The pinned (favourite) apps appear in the Dash (the bottom panel),
> + instead of appearing in the main app grid.
> + This file is a Debian-specific override for upstream's default list.
> + The changes compared with previous versions in Debian:
> + - Remove Rhythmbox. We no longer install a music player by default or
> + have a recommended music player for GNOME; users are welcome to
> + install Amberol, GNOME Music, Lollypop, Rhythmbox or any other
> + music player of their choice.
> + - Remove LibreOffice Writer. Pinned apps don't appear in the app grid,
> + and it seems inconsistent to have Writer in the Dash (and not the
> + app grid) but every other LibreOffice component such as Calc in the
> + app grid (not the dash).
> + - Add gnome-text-editor, matching upstream.
> + - Add gnome-calculator, matching upstream.
> + The changes compared with upstream:
> + - Replace Epiphany (GNOME Web) with Firefox ESR, matching what we
> + install by default
> + - Replace GNOME Calendar with Evolution
> + - Add Yelp (GNOME Help)
> + This doesn't necessarily have any effect for existing users:
> + if the user has pinned or unpinned an app at least once, once,
> + then their list of pinned apps is saved and will be unaffected
> + by this override. Please test with a completely new installation,
> + a newly-created test user, or a user with an empty home directory.
> + (Closes: #1099579)
> + * d/patches: Move im-config from main app grid to the System folder,
> + as requested by Jeremy Bícha on #1099579.
> + A known issue is that this only has an effect for completely new
> + installations or newly-created users: if the user has logged in at
> + least once, then their app -> folder mapping is saved, even if they
> + never explicitly modified it.
> +
> + -- Simon McVittie <smcv@debian.org> Tue, 10 Jun 2025 14:16:06 +0100
> +
> +gnome-shell (48.2-1) experimental; urgency=medium
> +
> + * New upstream bugfix release
> + - Track screen-time for the Wellbeing feature correctly across
> + suspend/resume, not counting time spent suspended as screen time
> + (Closes: #1104630; gnome-shell!3707 upstream)
> + - Check for surrounding text before enabling that capability
> + (mutter#3102, gnome-shell!3666 upstream)
> + - Fix a crash that can occur during startup when an extension is
> + updated
> + (gnome-shell#8417 upstream)
> + - Fix a regression that broke the ability to run commands in
> + terminals via: Alt+F2, <command>, Ctrl+Enter
> + (gnome-shell#7516 upstream)
> + - Fix VPN toggle in system menu not working when clicking the switch
> + (gnome-shell#8204 upstream)
> + - Always close folders when clicking outside them
> + (gnome-shell#7541 upstream)
> + - Add comments to give context for translators
> + (gnome-shell!3716 upstream)
> + - Translation updates: ro
> +
> + -- Jeremy Bícha <jbicha@ubuntu.com> Fri, 06 Jun 2025 13:32:38 -0400
> +
> gnome-shell (48.1-1) unstable; urgency=medium
>
> * New upstream release
> diff -Nru gnome-shell-48.1/debian/.gitignore gnome-shell-48.2/debian/.gitignore
> --- gnome-shell-48.1/debian/.gitignore 1970-01-01 01:00:00.000000000 +0100
> +++ gnome-shell-48.2/debian/.gitignore 2025-06-10 14:16:06.000000000 +0100
> @@ -0,0 +1,11 @@
> +!*.patch
> +/*.debhelper
> +/*.debhelper.log
> +/*.substvars
> +/.debhelper/
> +/debhelper-build-stamp
> +/files
> +/gnome-shell-common/
> +/gnome-shell/
> +/home/
> +/tmp/
> diff -Nru gnome-shell-48.1/debian/gnome-shell.gsettings-override gnome-shell-48.2/debian/gnome-shell.gsettings-override
> --- gnome-shell-48.1/debian/gnome-shell.gsettings-override 2025-04-17 18:38:58.000000000 +0100
> +++ gnome-shell-48.2/debian/gnome-shell.gsettings-override 2025-06-10 14:16:06.000000000 +0100
> @@ -1,2 +1,2 @@
> [org.gnome.shell]
> -favorite-apps=[ 'firefox-esr.desktop', 'org.gnome.Evolution.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ]
> +favorite-apps=[ 'firefox-esr.desktop', 'org.gnome.Evolution.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop', 'org.gnome.Calculator.desktop', 'yelp.desktop' ]
> diff -Nru gnome-shell-48.1/debian/patches/debian/data-Add-im-config.desktop-to-System-folder.patch gnome-shell-48.2/debian/patches/debian/data-Add-im-config.desktop-to-System-folder.patch
> --- gnome-shell-48.1/debian/patches/debian/data-Add-im-config.desktop-to-System-folder.patch 1970-01-01 01:00:00.000000000 +0100
> +++ gnome-shell-48.2/debian/patches/debian/data-Add-im-config.desktop-to-System-folder.patch 2025-06-10 14:16:06.000000000 +0100
> @@ -0,0 +1,29 @@
> +From: Simon McVittie <smcv@debian.org>
> +Date: Tue, 10 Jun 2025 11:42:17 +0100
> +Subject: data: Add im-config.desktop to System folder
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset="utf-8"
> +Content-Transfer-Encoding: 8bit
> +
> +Debian installs this by default, but most users will only need to run
> +it once, or perhaps not at all.
> +
> +Thanks: Jeremy Bícha
> +Helps: #1099579
> +Forwarded: not-needed, Debian-specific
> +---
> + data/default-apps/system-folder.txt | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/data/default-apps/system-folder.txt b/data/default-apps/system-folder.txt
> +index 2cda554..62cf6ba 100644
> +--- a/data/default-apps/system-folder.txt
> ++++ b/data/default-apps/system-folder.txt
> +@@ -2,6 +2,7 @@ nm-connection-editor.desktop # Advanced Network Configuration
> + org.gnome.DejaDup.desktop # Backups
> + org.gnome.baobab.desktop # Disk Usage Analyzer
> + org.gnome.DiskUtility.desktop # Disks
> ++im-config.desktop # Input Method
> + org.gnome.Logs.desktop # Logs
> + org.freedesktop.MalcontentControl.desktop # Parental Controls
> + org.freedesktop.GnomeAbrt.desktop # Problem Reporting
> diff -Nru gnome-shell-48.1/debian/patches/series gnome-shell-48.2/debian/patches/series
> --- gnome-shell-48.1/debian/patches/series 2025-04-17 18:38:58.000000000 +0100
> +++ gnome-shell-48.2/debian/patches/series 2025-06-10 14:16:06.000000000 +0100
> @@ -10,3 +10,4 @@
> tray-icons/tray-na-tray-manager-Remove-outdated-comment-and-return-v.patch
> shell-app-Warn-instead-of-crashing-if-disposed-before-sta.patch
> st-theme-node-Forget-properties-cache-on-stylesheet-chang.patch
> +debian/data-Add-im-config.desktop-to-System-folder.patch
> diff -Nru gnome-shell-48.1/js/misc/breakManager.js gnome-shell-48.2/js/misc/breakManager.js
> --- gnome-shell-48.1/js/misc/breakManager.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/misc/breakManager.js 2025-05-25 16:24:49.000000000 +0100
> @@ -1262,8 +1262,8 @@
> } else if (this._previousState === BreakState.IN_BREAK) {
> const durationSecs = this._manager.getDurationForBreakType(nextBreakType);
> const [countdownText, countdownValue, updateTimeoutSeconds] = this._formatTimeSpan(durationSecs - breakDueAgo);
> + /* Translators: %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” */
> const bodyText = Gettext.ngettext(
> - /* %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” */
> 'There is %s remaining in your break',
> 'There are %s remaining in your break',
> countdownValue
> @@ -1347,6 +1347,7 @@
> return;
>
> if (allowDelay) {
> + /* Translators: As in "Delay the break" */
> this._delayAction = this.addAction(_('Delay'), this._onDelayAction.bind(this));
> } else {
> this.removeAction(this._delayAction);
> @@ -1368,6 +1369,7 @@
> return;
>
> if (allowSkip) {
> + /* Translators: As in "Skip the break" */
> this._skipAction = this.addAction(_('Skip'), this._onSkipAction.bind(this));
> } else {
> this.removeAction(this._skipAction);
> @@ -1389,6 +1391,7 @@
> return;
>
> if (allowTake) {
> + /* Translators: As in "Take the break" */
> this._takeAction = this.addAction(_('Take'), this._onTakeAction.bind(this));
> } else {
> this.removeAction(this._takeAction);
> diff -Nru gnome-shell-48.1/js/misc/fileUtils.js gnome-shell-48.2/js/misc/fileUtils.js
> --- gnome-shell-48.1/js/misc/fileUtils.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/misc/fileUtils.js 2025-05-25 16:24:49.000000000 +0100
> @@ -52,7 +52,7 @@
> while ((info = children.next_file(null)) != null) {
> let type = info.get_file_type();
> let child = dir.get_child(info.get_name());
> - if (type === Gio.FileType.REGULAR)
> + if (type === Gio.FileType.REGULAR || type === Gio.FileType.SYMBOLIC_LINK)
> child.delete(null);
> else if (type === Gio.FileType.DIRECTORY)
> recursivelyDeleteDir(child, true);
> @@ -78,7 +78,7 @@
> let type = info.get_file_type();
> let srcChild = srcDir.get_child(info.get_name());
> let destChild = destDir.get_child(info.get_name());
> - if (type === Gio.FileType.REGULAR)
> + if (type === Gio.FileType.REGULAR || type === Gio.FileType.SYMBOLIC_LINK)
> srcChild.move(destChild, Gio.FileCopyFlags.NONE, null, null);
> else if (type === Gio.FileType.DIRECTORY)
> recursivelyMoveDir(srcChild, destChild);
> diff -Nru gnome-shell-48.1/js/misc/inputMethod.js gnome-shell-48.2/js/misc/inputMethod.js
> --- gnome-shell-48.1/js/misc/inputMethod.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/misc/inputMethod.js 2025-05-25 16:24:49.000000000 +0100
> @@ -31,6 +31,9 @@
> this._preeditAnchor = 0;
> this._preeditVisible = false;
> this._hidePanelId = 0;
> + this._surroundingText = null;
> + this._surroundingTextCursor = null;
> + this._surroundingTextAnchor = null;
> this._ibus = IBus.Bus.new_async();
> this._ibus.connect('connected', this._onConnected.bind(this));
> this._ibus.connect('disconnected', this._clear.bind(this));
> @@ -50,7 +53,10 @@
> }
>
> _updateCapabilities() {
> - let caps = IBus.Capabilite.PREEDIT_TEXT | IBus.Capabilite.FOCUS | IBus.Capabilite.SURROUNDING_TEXT;
> + let caps = IBus.Capabilite.PREEDIT_TEXT | IBus.Capabilite.FOCUS;
> +
> + if (this._surroundingText !== null)
> + caps |= IBus.Capabilite.SURROUNDING_TEXT;
>
> if (Main.keyboard.visible)
> caps |= IBus.Capabilite.OSK;
> @@ -124,6 +130,12 @@
> }
>
> _onDeleteSurroundingText(_context, offset, nchars) {
> + if (this._surroundingText === null) {
> + log('input-method engines should not call ' +
> + 'the delete-surrounding-text API in case ' +
> + 'the input context has no SURROUNDING_TEXT capability.');
> + return;
> + }
> try {
> this.delete_surrounding(offset, nchars);
> } catch {
> @@ -241,6 +253,13 @@
> }
>
> vfunc_set_surrounding(text, cursor, anchor) {
> + // If the previous input context supports the surrounding-text feature.
> + const prevHasSurrounding = this._surroundingText !== null;
> + // If the current input context supports the surrounding-text feature.
> + const nowHasSurrounding = text !== null;
> + // If the SURROUNDING_TEXT capability is changed.
> + const updateCapabilities = prevHasSurrounding !== nowHasSurrounding;
> +
> this._surroundingText = text;
> this._surroundingTextCursor = cursor;
> this._surroundingTextAnchor = anchor;
> @@ -250,6 +269,11 @@
> return;
>
> let ibusText = IBus.Text.new_from_string(text);
> +
> + if (updateCapabilities)
> + this._updateCapabilities();
> +
> + // Call context.set_surrounding_text() after context.set_capabilities().
> this._context.set_surrounding_text(ibusText, cursor, anchor);
> }
>
> diff -Nru gnome-shell-48.1/js/misc/timeLimitsManager.js gnome-shell-48.2/js/misc/timeLimitsManager.js
> --- gnome-shell-48.1/js/misc/timeLimitsManager.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/misc/timeLimitsManager.js 2025-05-25 16:24:49.000000000 +0100
> @@ -175,6 +175,7 @@
> this._timerId = 0;
> this._timeChangeId = 0;
> this._clockOffsetSecs = 0;
> + this._ignoreClockOffsetChanges = false;
>
> // Start tracking timings
> this._updateSettings();
> @@ -231,6 +232,9 @@
> this._clockOffsetSecs = this._getClockOffset();
> try {
> this._timeChangeId = this._clock.timeChangeNotify(() => {
> + if (this._ignoreClockOffsetChanges)
> + return GLib.SOURCE_CONTINUE;
> +
> const newClockOffsetSecs = this._getClockOffset();
> const oldClockOffsetSecs = this._clockOffsetSecs;
>
> @@ -348,9 +352,14 @@
> }
>
> async _onPrepareForSleep(preparingForSleep) {
> - // Just come back from sleep, so take another inhibitor.
> - if (!preparingForSleep)
> + // Just come back from sleep, so take another inhibitor. Also update
> + // the clock offset to account for the monotonic clock not advancing
> + // during sleep.
> + if (!preparingForSleep) {
> this._ensureInhibitor();
> + this._clockOffsetSecs = this._getClockOffset();
> + this._ignoreClockOffsetChanges = false;
> + }
>
> try {
> await this._updateUserState(true);
> @@ -358,9 +367,14 @@
> console.warn(`Failed to update user state: ${e.message}`);
> }
>
> - // Release the inhibitor if we’re preparing to sleep.
> - if (preparingForSleep)
> + // Release the inhibitor if we’re preparing to sleep. Also avoid
> + // adjusting the time due to offset changes caused by the monotonic
> + // clock not advancing during sleep until we have updated the current
> + // offset to account for this.
> + if (preparingForSleep) {
> + this._ignoreClockOffsetChanges = true;
> this._releaseInhibitor();
> + }
> }
>
> /** Shut down the state machine and write out the state file. */
> diff -Nru gnome-shell-48.1/js/ui/appDisplay.js gnome-shell-48.2/js/ui/appDisplay.js
> --- gnome-shell-48.1/js/ui/appDisplay.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/ui/appDisplay.js 2025-05-25 16:24:49.000000000 +0100
> @@ -2500,7 +2500,7 @@
> const actor =
> global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
>
> - if (actor === this)
> + if (!this._viewBox.contains(actor))
> this.popdown();
> });
> this.add_action(clickAction);
> diff -Nru gnome-shell-48.1/js/ui/extensionSystem.js gnome-shell-48.2/js/ui/extensionSystem.js
> --- gnome-shell-48.1/js/ui/extensionSystem.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/ui/extensionSystem.js 2025-05-25 16:24:49.000000000 +0100
> @@ -669,8 +669,12 @@
> FileUtils.recursivelyMoveDir(dir, extensionDir);
> } catch {
> log(`Failed to install extension updates for ${uuid}`);
> - } finally {
> + }
> +
> + try {
> FileUtils.recursivelyDeleteDir(dir, true);
> + } catch (e) {
> + console.error(`Failed to delete extension update: ${e.message}`);
> }
> }
> }
> diff -Nru gnome-shell-48.1/js/ui/runDialog.js gnome-shell-48.2/js/ui/runDialog.js
> --- gnome-shell-48.1/js/ui/runDialog.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/ui/runDialog.js 2025-05-25 16:24:49.000000000 +0100
> @@ -70,6 +70,7 @@
> ShellEntry.addContextMenu(entry);
>
> this._entryText = entry.clutter_text;
> + this._entryText.activatable = false;
> content.add_child(entry);
> this.setInitialKeyFocus(this._entryText);
>
> @@ -90,14 +91,6 @@
> gsettingsKey: HISTORY_KEY,
> entry: this._entryText,
> });
> - this._entryText.connect('activate', o => {
> - this.popModal();
> - this._run(o.get_text(),
> - Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK);
> - if (!this._commandError ||
> - !this.pushModal())
> - this.close();
> - });
> this._entryText.connect('key-press-event', (o, e) => {
> let symbol = e.get_key_symbol();
> if (symbol === Clutter.KEY_Tab) {
> @@ -113,6 +106,14 @@
> o.set_cursor_position(text.length + postfix.length);
> }
> return Clutter.EVENT_STOP;
> + } else if ([Clutter.KEY_Return, Clutter.KEY_KP_Enter, Clutter.KEY_ISO_Enter].includes(symbol)) {
> + this.popModal();
> + this._run(o.get_text(),
> + Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK);
> + if (!this._commandError ||
> + !this.pushModal())
> + this.close();
> + return Clutter.EVENT_STOP;
> }
> return Clutter.EVENT_PROPAGATE;
> });
> diff -Nru gnome-shell-48.1/js/ui/status/network.js gnome-shell-48.2/js/ui/status/network.js
> --- gnome-shell-48.1/js/ui/status/network.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/js/ui/status/network.js 2025-05-25 16:24:49.000000000 +0100
> @@ -1323,6 +1323,16 @@
> this.bind_property('is-active',
> this._switch, 'state',
> GObject.BindingFlags.SYNC_CREATE);
> +
> + // Switch handle is reactive, so events don't propagate to the item;
> + // activate it manually in that case
> + this._switch.connect('notify::state', () => {
> + if (this.is_active === this._switch.state)
> + return;
> +
> + this.activate();
> + });
> +
> this.bind_property('name',
> this._label, 'text',
> GObject.BindingFlags.SYNC_CREATE);
> diff -Nru gnome-shell-48.1/meson.build gnome-shell-48.2/meson.build
> --- gnome-shell-48.1/meson.build 2025-06-10 14:55:10.000000000 +0100
> +++ gnome-shell-48.2/meson.build 2025-06-10 14:55:10.000000000 +0100
> @@ -1,5 +1,5 @@
> project('gnome-shell', 'c',
> - version: '48.1',
> + version: '48.2',
> meson_version: '>= 1.1.0',
> license: 'GPL-2.0-or-later',
> )
> diff -Nru gnome-shell-48.1/NEWS gnome-shell-48.2/NEWS
> --- gnome-shell-48.1/NEWS 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/NEWS 2025-05-25 16:24:49.000000000 +0100
> @@ -1,3 +1,19 @@
> +48.2
> +====
> +* Only enable surrounding-text IM capability when needed [Takao; !3666]
> +* Fix launching command from terminal in run dialog [Balló; !3683]
> +* Ignore offset changes caused by suspend for screen time [Sebastian; !3707]
> +* Fix app folders sometimes not closing after outside clicks [Damien; !3713]
> +* Fixed crash [Florian; !3721]
> +* Misc. bug fixes and cleanups [Philipp, Alynx; !3716, !3711]
> +
> +Contributors:
> + Takao Fujiwara, Balló György, Sebastian Keller, Philipp Kiemle,
> + Florian Müllner, Damien Tournoud, Alynx Zhou
> +
> +Translators:
> + Antonio Marin [ro]
> +
> 48.1
> ====
> * Fix glitch in sliders when close to maximum [Sebastian; !3648]
> diff -Nru gnome-shell-48.1/subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in gnome-shell-48.2/subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in
> --- gnome-shell-48.1/subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in 2025-05-25 16:24:49.000000000 +0100
> @@ -55,6 +55,7 @@
> </description>
>
> <releases>
> + <release version="48.2" date="2025-05-24"/>
> <release version="48.1" date="2025-04-12"/>
> <release version="48.0" date="2025-03-16">
> <description>
> diff -Nru gnome-shell-48.1/subprojects/extensions-app/meson.build gnome-shell-48.2/subprojects/extensions-app/meson.build
> --- gnome-shell-48.1/subprojects/extensions-app/meson.build 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/subprojects/extensions-app/meson.build 2025-05-25 16:24:49.000000000 +0100
> @@ -1,5 +1,5 @@
> project('gnome-extensions-app',
> - version: '48.1',
> + version: '48.2',
> meson_version: '>= 0.58.0',
> license: 'GPL-2.0-or-later',
> )
> diff -Nru gnome-shell-48.1/subprojects/extensions-app/subprojects/shew/meson.build gnome-shell-48.2/subprojects/extensions-app/subprojects/shew/meson.build
> --- gnome-shell-48.1/subprojects/extensions-app/subprojects/shew/meson.build 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/subprojects/extensions-app/subprojects/shew/meson.build 2025-05-25 16:24:49.000000000 +0100
> @@ -1,5 +1,5 @@
> project('shew', 'c',
> - version: '48.1',
> + version: '48.2',
> meson_version: '>= 0.58.0',
> license: 'LGPL-2.1-or-later',
> )
> diff -Nru gnome-shell-48.1/subprojects/extensions-tool/meson.build gnome-shell-48.2/subprojects/extensions-tool/meson.build
> --- gnome-shell-48.1/subprojects/extensions-tool/meson.build 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/subprojects/extensions-tool/meson.build 2025-05-25 16:24:49.000000000 +0100
> @@ -1,5 +1,5 @@
> project('gnome-extensions-tool', 'c',
> - version: '48.1',
> + version: '48.2',
> meson_version: '>= 0.58.0',
> license: 'GPL-2.0-or-later',
> )
> diff -Nru gnome-shell-48.1/subprojects/shew/meson.build gnome-shell-48.2/subprojects/shew/meson.build
> --- gnome-shell-48.1/subprojects/shew/meson.build 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/subprojects/shew/meson.build 2025-05-25 16:24:49.000000000 +0100
> @@ -1,5 +1,5 @@
> project('shew', 'c',
> - version: '48.1',
> + version: '48.2',
> meson_version: '>= 0.58.0',
> license: 'LGPL-2.1-or-later',
> )
> diff -Nru gnome-shell-48.1/tests/unit/timeLimitsManager.js gnome-shell-48.2/tests/unit/timeLimitsManager.js
> --- gnome-shell-48.1/tests/unit/timeLimitsManager.js 2025-04-13 23:40:21.000000000 +0100
> +++ gnome-shell-48.2/tests/unit/timeLimitsManager.js 2025-05-25 16:24:49.000000000 +0100
> @@ -283,6 +283,12 @@
> newPreparingForSleepState: true,
> });
> this._insertEvent({
> + type: 'time-change',
> + time: TestHarness.timeStrToSecs(timeStr) + 1,
> + newTime: TestHarness.timeStrToSecs(timeStr) + duration - 1,
> + callback: null,
> + });
> + this._insertEvent({
> type: 'preparing-for-sleep-state-change',
> time: TestHarness.timeStrToSecs(timeStr) + duration,
> newPreparingForSleepState: false,
> @@ -1309,6 +1315,19 @@
> 'dailyLimitTime': TestHarness.timeStrToSecs('2024-06-01T17:00:00Z'),
> });
>
> + // Ensure the suspend event caused a state change to inactive and its
> + // time was not adjusted due to offset changes on resume
> + harness.addAssertionEvent('2024-06-01T15:00:02Z', () => {
> + const [, historyContents] = harness.mockHistoryFile.load_contents(null);
> + expect(JSON.parse(new TextDecoder().decode(historyContents)))
> + .withContext('History file contents')
> + .toContain({
> + 'oldState': UserState.ACTIVE,
> + 'newState': UserState.INACTIVE,
> + 'wallTimeSecs': TestHarness.timeStrToSecs('2024-06-01T12:00:01Z'),
> + });
> + });
> +
> harness.shutdownManager('2024-06-01T15:20:00Z', timeLimitsManager);
>
> harness.run();
--
Sebastian Ramacher
Reply to: