From 41a7f1b8b8d9642a30972c3b8f47d69bd3d09e0c Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 18 Aug 2026 13:51:48 +0200 Subject: [PATCH] Fix race issue when switchable-auth isn't available Related: https://redhat.atlassian.net/browse/RHEL-232973 --- ...web-login-and-unified-auth-mechanism.patch | 235 ++++++++++++------ ...hanges-for-passwordless-gdm-backport.patch | 160 ++++++------ 2 files changed, 253 insertions(+), 142 deletions(-) diff --git a/0001-Support-for-web-login-and-unified-auth-mechanism.patch b/0001-Support-for-web-login-and-unified-auth-mechanism.patch index 06de8b9..3450597 100644 --- a/0001-Support-for-web-login-and-unified-auth-mechanism.patch +++ b/0001-Support-for-web-login-and-unified-auth-mechanism.patch @@ -1,7 +1,7 @@ From e2dd023ba86cd60da2482ff603c9fc2f255d4c95 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 2 Oct 2025 10:59:57 +0200 -Subject: [PATCH 01/72] style: Add common login dialog button styles to avoid +Subject: [PATCH 01/73] style: Add common login dialog button styles to avoid duplication This will be used in next commits, when new login buttons are added. @@ -88,7 +88,7 @@ index b661e93c8..6cca1e28e 100644 From 0b2bbfa722ca1ccddf97fa0464ee3bf16bfa0243 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 16:37:08 +0100 -Subject: [PATCH 02/72] unlockDialog: Vertically center dialog using fixed +Subject: [PATCH 02/73] unlockDialog: Vertically center dialog using fixed height Position the topY of the content based on a fixed prompt height estimation. @@ -167,7 +167,7 @@ index 63ba591ee..a014095bb 100644 From 650c4f52cbb1f55ac96c55f131f7172615a0a7dd Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 16:38:04 +0100 -Subject: [PATCH 03/72] unlockDialog: Fix username reuse on reset +Subject: [PATCH 03/73] unlockDialog: Fix username reuse on reset The condition was checking for PROVIDE_USERNAME specifically, but should also handle REUSE_USERNAME. Check for not DONT_PROVIDE_USERNAME @@ -198,7 +198,7 @@ index a014095bb..420dae4c6 100644 From d41d517a601756d8f2b3f886beaea17ae112af38 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 16:38:54 +0100 -Subject: [PATCH 04/72] unlockDialog: Wait for authPrompt destruction before +Subject: [PATCH 04/73] unlockDialog: Wait for authPrompt destruction before switching VT When switching to another user, wait until authPrompt is destroyed @@ -231,7 +231,7 @@ index 420dae4c6..7a02f68ee 100644 From 7ce5fb94b4e9580e6944c0f03c18dcf8e260f5da Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 5 Feb 2026 18:55:38 +0100 -Subject: [PATCH 05/72] authPrompt: Use destructured object for +Subject: [PATCH 05/73] authPrompt: Use destructured object for updateSensitivity Replace the boolean parameter with a destructured object to make @@ -370,7 +370,7 @@ index 7a02f68ee..85e469fb8 100644 From 1eb143ebb879ce44ba8488573366d6633f52320a Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 16:47:22 +0100 -Subject: [PATCH 06/72] authPrompt: Use array-based widget lookup in +Subject: [PATCH 06/73] authPrompt: Use array-based widget lookup in updateSensitivity Replace the if/else widget selection with array-based lookup to @@ -408,7 +408,7 @@ index 526dcdbaa..7967b60a8 100644 From a2ee935e74e0b98d726fb39506fa45896f011eb3 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 10 Mar 2026 17:10:58 +0100 -Subject: [PATCH 07/72] authPrompt: Generalize _fadeInChoiceList to accept any +Subject: [PATCH 07/73] authPrompt: Generalize _fadeInChoiceList to accept any element Rename to _fadeInElement and take the element as a parameter, @@ -468,7 +468,7 @@ index 7967b60a8..f00f5844b 100644 From 6e9c414d417f719fa9cc625a4d6764a895360444 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 9 Feb 2024 09:02:25 -0500 -Subject: [PATCH 08/72] authPrompt: Fade out input buttons/entry after +Subject: [PATCH 08/73] authPrompt: Fade out input buttons/entry after verification It's nice to just see the user image and post login messages @@ -557,7 +557,7 @@ index 9f76464ad..7992cadb4 100644 From 21755147844867edfa97c9a9fb945a9913aa2e62 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 21 Jan 2026 14:23:34 +0100 -Subject: [PATCH 09/72] authPrompt: Don't reset preemptiveAnswer when +Subject: [PATCH 09/73] authPrompt: Don't reset preemptiveAnswer when VERIFICATION_IN_PROGRESS PreemptiveAnswer wasn't being used in the case where verification is in @@ -592,7 +592,7 @@ index 6dc8e2ebc..309fb8981 100644 From f3484a67fa4beb3291e3b5e9229554b5f112eaca Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 17:05:32 +0100 -Subject: [PATCH 10/72] style: Increase hint-text left margin +Subject: [PATCH 10/73] style: Increase hint-text left margin The cursor was overlapping the hint-text, making it difficult to read. Increase the left margin to ensure proper readability. @@ -621,7 +621,7 @@ index 41e10f766..5a45e86d6 100644 From 6530992b790dd18b6e8d44cbed6a0c6d70125d54 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 16 Feb 2026 16:05:17 +0100 -Subject: [PATCH 11/72] authPrompt: Use connectObject for userVerifier signals +Subject: [PATCH 11/73] authPrompt: Use connectObject for userVerifier signals This allows cleanly disconnecting all signals at once when the authPrompt is destroyed, preventing potential issues from stale @@ -713,7 +713,7 @@ index 309fb8981..2e247d913 100644 From 9ff8d9da8f10d003ffa53a2cbf23d20483f696b1 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 17:09:44 +0100 -Subject: [PATCH 12/72] authPrompt: Group animation constants together +Subject: [PATCH 12/73] authPrompt: Group animation constants together Move all animation-related constants together near the top of the file to follow the style of the rest of the codebase. @@ -742,7 +742,7 @@ index 2e247d913..edd30e3fa 100644 From 5113cca1b7092f56ab98d810725a8b833c308f4f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 17:20:34 +0100 -Subject: [PATCH 13/72] authPrompt: Update entry layout based on mockups +Subject: [PATCH 13/73] authPrompt: Update entry layout based on mockups Implement the new authentication prompt layout based on the design mockups at: @@ -977,7 +977,7 @@ index edd30e3fa..ec4a63a0e 100644 From 644167912b2de5e54643159ca4d9c13d94a274ca Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 17:41:48 +0100 -Subject: [PATCH 14/72] authPrompt: Fade in _entryArea instead of abruptly +Subject: [PATCH 14/73] authPrompt: Fade in _entryArea instead of abruptly showing it To support the new fade-in flow, the _entryArea is now hidden by default. @@ -1055,7 +1055,7 @@ index 7992cadb4..13605b7a4 100644 From 25ae256231f865c53b370f53cc53fb21bebaade4 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 17:36:08 +0100 -Subject: [PATCH 15/72] authPrompt: Show entry area when displaying message +Subject: [PATCH 15/73] authPrompt: Show entry area when displaying message Since entryArea is hidden by default, we must explicitly make it visible when showing a message if no other widgets are visible. @@ -1094,7 +1094,7 @@ index e8825246d..b4b1b4524 100644 From f591e498218a34424147491fcf5f03ec534c3aa6 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 19 May 2026 10:21:50 +0200 -Subject: [PATCH 16/72] authPrompt: Add loading signal +Subject: [PATCH 16/73] authPrompt: Add loading signal The signal indicates when the prompt is busy showing the spinner, so other components can adjust their UI accordingly. @@ -1172,7 +1172,7 @@ index b4b1b4524..6ba29d1f4 100644 From 96b6c98978c709613fae0871ef4e1729ac1e9f79 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 19 May 2026 10:24:38 +0200 -Subject: [PATCH 17/72] authPrompt: Don't delay spinner +Subject: [PATCH 17/73] authPrompt: Don't delay spinner We currently animate the spinner with a delay. This animation is intended to create a seamless transition of one icon @@ -1222,7 +1222,7 @@ index 6ba29d1f4..881aae715 100644 From 7087b1823f601daf13aaf6e06ce36e05465dacaf Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 17:28:54 +0100 -Subject: [PATCH 18/72] authPrompt: Simplify some code +Subject: [PATCH 18/73] authPrompt: Simplify some code Part-of: --- @@ -1372,7 +1372,7 @@ index 881aae715..e3b8df559 100644 From dfb1247b4779a4cb085cb865ecc2a47a1ae672c0 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 26 May 2026 16:48:43 +0200 -Subject: [PATCH 19/72] authPrompt: Ensure this._message is always visible +Subject: [PATCH 19/73] authPrompt: Ensure this._message is always visible this._message visibility is updated with opacity property. This way authPrompt layout isn't modified so all elements stay on the @@ -1411,7 +1411,7 @@ index e3b8df559..5518c9c03 100644 From c2b84b38e09c0c6a3c795ccd30d2e6159151bfed Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 10 Mar 2026 18:32:48 +0100 -Subject: [PATCH 20/72] authPrompt: Skip reset after successful verification +Subject: [PATCH 20/73] authPrompt: Skip reset after successful verification Don't reset the prompt if verification has already succeeded. @@ -1441,7 +1441,7 @@ index 5518c9c03..02dd296f1 100644 From e0596d49377f639a8868e66fd15961766699f22c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 13:06:32 -0500 -Subject: [PATCH 21/72] authPrompt: Parameterize reset function +Subject: [PATCH 21/73] authPrompt: Parameterize reset function In the future, userVerifier will request a partial reset where some state is carried over or explicitly specified. @@ -1548,7 +1548,7 @@ index 02dd296f1..911b1f969 100644 From 6fe14f86ec91dd28ba4b0a73704b043ea36ee60f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 19 May 2026 15:18:23 +0200 -Subject: [PATCH 22/72] authPrompt: Remove this.stopSpinnning() in reset +Subject: [PATCH 22/73] authPrompt: Remove this.stopSpinnning() in reset It's already in this.clear() which is called from reset. @@ -1576,7 +1576,7 @@ index 911b1f969..6e1c20f3b 100644 From 12aa1f7cccb8934e011b6e2fec6605ee285bd0ca Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 21 Apr 2026 13:06:57 +0200 -Subject: [PATCH 23/72] authPrompt: Ensure hint_text in entries is cleared +Subject: [PATCH 23/73] authPrompt: Ensure hint_text in entries is cleared There can be cases when a new authentication is started after a reset, but hint_text isn't cleared, displaying the hint from previous authentication. @@ -1608,7 +1608,7 @@ index 6e1c20f3b..e8c02f475 100644 From 3997c46217b221662c7b7bc85cbaf3196f7406d3 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Fri, 3 Jul 2026 13:06:26 +0200 -Subject: [PATCH 24/72] authPrompt: Separate user and entry updates +Subject: [PATCH 24/73] authPrompt: Separate user and entry updates setUser(null) triggers _updateEntry(false), swapping the password entry for the text entry, only for _updateEntry(true) right after @@ -1686,7 +1686,7 @@ index 13605b7a4..2bfaf25f8 100644 From 3c5a63ef9f3bf14f992ee399b01bac2d9738f3aa Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 12 Feb 2026 16:56:48 +0100 -Subject: [PATCH 25/72] authPrompt: Rename BeginRequestType to ResetType +Subject: [PATCH 25/73] authPrompt: Rename BeginRequestType to ResetType The enum is emitted with the 'reset' signal and describes the type of reset being performed, so ResetType is a clearer name. @@ -1796,7 +1796,7 @@ index 85e469fb8..980353fe1 100644 From 758ba0bd1e39d1a907d7c5f2af5d48134233a450 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 11 Feb 2026 16:11:59 +0100 -Subject: [PATCH 26/72] unlockDialog: Use isprint() instead of isgraph() for +Subject: [PATCH 26/73] unlockDialog: Use isprint() instead of isgraph() for preemptive input isgraph() returns true for printable characters except space, while @@ -1828,7 +1828,7 @@ index 980353fe1..b0f51e533 100644 From 4eba654ea5b6509107479b247de429e9fd2e37ce Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 21 Jan 2026 14:34:11 +0100 -Subject: [PATCH 27/72] authPrompt: Capture preemptive input before entry is +Subject: [PATCH 27/73] authPrompt: Capture preemptive input before entry is sensitive The previous changes made the entry invisible and insensitive until @@ -1985,7 +1985,7 @@ index b0f51e533..100990acc 100644 From f366644aef20288e5adee6524a0e1f255556dfd7 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 10 Feb 2026 18:51:41 +0100 -Subject: [PATCH 28/72] authPrompt: On verificationFailed allow a +Subject: [PATCH 28/73] authPrompt: On verificationFailed allow a preemptiveInput There's a time window between the verification failing and a new @@ -2032,7 +2032,7 @@ index 4b9d3961e..7dc432ba0 100644 From 145ad91b2a1c33a5830fe378df2cc861ff91e2e6 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 30 Sep 2025 17:43:22 +0200 -Subject: [PATCH 29/72] authPrompt: Update authList style +Subject: [PATCH 29/73] authPrompt: Update authList style Make the AuthListItem buttons a bit bigger and more rounded. @@ -2533,7 +2533,7 @@ index 4b0f763f0..b71251458 100644 From a3e973b0f8374a8da6dc427f8538335c1877bf99 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 8 Oct 2025 18:48:07 +0200 -Subject: [PATCH 30/72] authPrompt: Let back button go back to step 1 instead +Subject: [PATCH 30/73] authPrompt: Let back button go back to step 1 instead of full reset There can be some auth methods that would require multiple steps. In the @@ -2660,7 +2660,7 @@ index 24ac39d5e..80ef3182f 100644 From 26864bbe9e89e118f4a403cd31fb4ea6e22bf8d5 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 20 Oct 2025 17:24:40 +0200 -Subject: [PATCH 31/72] loginDialog: Vertically center authPrompt using fixed +Subject: [PATCH 31/73] loginDialog: Vertically center authPrompt using fixed height Use a fixed estimated height for centering so the position stays @@ -2729,7 +2729,7 @@ index 9355eef45..b098891c4 100644 From 6a76eea20af043c00d0ae766e9f669c6897d654e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 12 Nov 2024 14:26:30 -0500 -Subject: [PATCH 32/72] data: Add fingerprint and vcard icons +Subject: [PATCH 32/73] data: Add fingerprint and vcard icons Fingerprint icon will be used to inform when it's being run un the background. @@ -2822,7 +2822,7 @@ index 000000000..1694f2364 From 4f5ac0c62d500b7fc3c3d498c958accd2f22f7f8 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 18 Aug 2025 12:30:50 +0200 -Subject: [PATCH 33/72] gdm: Extract authentication service and role constants +Subject: [PATCH 33/73] gdm: Extract authentication service and role constants to constants.js Create a dedicated const.js module to centralize GDM authentication-related @@ -3019,7 +3019,7 @@ index e5e6167f1..041365e5d 100644 From 08ce990483708391e0608a2d84621c06b89c414f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 11 Mar 2026 11:41:40 +0100 -Subject: [PATCH 34/72] gdm/util: Add helper functions to get future mechanisms +Subject: [PATCH 34/73] gdm/util: Add helper functions to get future mechanisms metadata 1. isSelectable() to detect when a mechanism is selectable or runs in @@ -3085,7 +3085,7 @@ index 0c8ce34d3..f0b99a0ff 100644 From c94bdcc0a865dddb40c894df3c7544685eb1a224 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 11:04:20 -0500 -Subject: [PATCH 35/72] gdm: Add new AuthMenuButton control +Subject: [PATCH 35/73] gdm: Add new AuthMenuButton control The latest login screen designs show a new "Login Options" menu in the corner for session selection and login methods. @@ -3721,7 +3721,7 @@ index 041365e5d..d8820876a 100644 From eb4ada47d1754d8d7bbef06d6cbbec9ecb9b5290 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 11:11:32 -0500 -Subject: [PATCH 36/72] loginDialog: Port sessions menu over to AuthMenuButton +Subject: [PATCH 36/73] loginDialog: Port sessions menu over to AuthMenuButton Now that AuthMenuButton exists, we should use it. @@ -4044,7 +4044,7 @@ index b098891c4..92c6aeb67 100644 From 8d5a2dbffebe6438c3972f7b958c280c7aa437d1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 13:40:26 -0500 -Subject: [PATCH 37/72] loginDialog: Add login options menu to AuthMenuButton +Subject: [PATCH 37/73] loginDialog: Add login options menu to AuthMenuButton MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -4229,7 +4229,7 @@ index f0b99a0ff..8681cfd1d 100644 From ce010332fe9c5c7a2162f3b6fa13cbde1337e915 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Fri, 3 Jul 2026 13:54:39 +0200 -Subject: [PATCH 38/72] loginDialog: Restore bottom button group on reset +Subject: [PATCH 38/73] loginDialog: Restore bottom button group on reset The bottom button group is hidden on verification complete, but there might be more authentication attempts that need @@ -4288,7 +4288,7 @@ index bbbb1f6b7..e0cd0555a 100644 From c59820c4ce37c60d345c2e8ec9d6eb250ae19e55 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 13:41:39 -0500 -Subject: [PATCH 39/72] unlockDialog: Add _authMenuButton and +Subject: [PATCH 39/73] unlockDialog: Add _authMenuButton and _authIndicatorButton _authMenuButton is used to select an available auth mechanism from the @@ -4589,7 +4589,7 @@ index 100990acc..d54d21093 100644 From c7ebc76a0d0992e99a526176f4b811cfba65d8be Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 3 Dec 2024 07:39:32 -0500 -Subject: [PATCH 40/72] unlockDialog: Update hint text based on mockup +Subject: [PATCH 40/73] unlockDialog: Update hint text based on mockup This considers future mechanisms which might be the default ones, i.e. smartcard and passkey. And have special hint texts. @@ -4646,7 +4646,7 @@ index d54d21093..38d7b97c4 100644 From 3ab9dac3fdf5accfdcf5a032365facb52a5a368d Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 14 Oct 2025 19:19:15 +0200 -Subject: [PATCH 41/72] gdm/util: Increase time of messages based on new +Subject: [PATCH 41/73] gdm/util: Increase time of messages based on new environment variable called 'GDM_MESSAGE_TIME_MULTIPLIER'. This is used for testing @@ -4689,7 +4689,7 @@ index 8681cfd1d..28de988f3 100644 From b33a170b13fac927de596af74c8c620c11b7b475 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 15 Sep 2025 17:13:17 +0200 -Subject: [PATCH 42/72] gdm/util: Allow null _hold and don't recreate dummy +Subject: [PATCH 42/73] gdm/util: Allow null _hold and don't recreate dummy holds _hold property is used to inform the caller of begin method (authPrompt) @@ -4812,7 +4812,7 @@ index 28de988f3..53b4094e0 100644 From 6b1702852b3982518edec5998d5bb457d956125a Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 20 Aug 2025 10:54:33 +0200 -Subject: [PATCH 43/72] gdm: Add FingerprintManager +Subject: [PATCH 43/73] gdm: Add FingerprintManager Move fingerprint bits to new fingerprintManager class. @@ -5245,7 +5245,7 @@ index d8820876a..50e0b179a 100644 From 920955f9a545cdc8b7e73a96529773ca3a320fa3 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 23 Sep 2025 16:45:59 +0200 -Subject: [PATCH 44/72] gdm: Add PasskeyDeviceManager +Subject: [PATCH 44/73] gdm: Add PasskeyDeviceManager This utility will be used in the next commits, when passkey authentication is implemented, to detect when a passkey has been inserted or removed. @@ -5367,7 +5367,7 @@ index f8f98d487..c3c51aa2d 100644 From 7552b0a502fd53960abdba0c406fcccf2d92c1b7 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 19 May 2026 20:33:29 +0200 -Subject: [PATCH 45/72] gdm: Move smartcardManager.js to gdm +Subject: [PATCH 45/73] gdm: Move smartcardManager.js to gdm This is a gdm component and was in misc. Move it here, where the other *manager.js siblings are. @@ -5451,7 +5451,7 @@ index 44b871502..e42b2974a 100644 From 3794844d91b3cc09c271e46594a854ad680c5e84 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 10 Mar 2026 14:27:50 +0100 -Subject: [PATCH 46/72] gdm/smartcardManager: Skip login_token aliases to avoid +Subject: [PATCH 46/73] gdm/smartcardManager: Skip login_token aliases to avoid duplicate events Tokens with '/login_token' paths are aliases mirroring already @@ -5486,7 +5486,7 @@ index 21b28ea45..98f762d7d 100644 From 5852ce77fcb1acdcab159bcf58c06b3468318af6 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 18 Aug 2025 12:08:21 +0200 -Subject: [PATCH 47/72] gdm: Add AuthServices +Subject: [PATCH 47/73] gdm: Add AuthServices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -7605,7 +7605,7 @@ index ee0829c96..7f534c75f 100644 From de131589214b56519ef95cf271cfa65abb7dff0f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 16 Feb 2026 12:21:54 +0100 -Subject: [PATCH 48/72] gdm: Add fingerprint ready state to delay showing icon +Subject: [PATCH 48/73] gdm: Add fingerprint ready state to delay showing icon Fingerprint mechanism now has a ready state that controls when it appears in the authentication UI. When fingerprint authentication @@ -7730,7 +7730,7 @@ index ac2dcfb44..1c1cce1e4 100644 From 96d18ce5e9ae7a40ffa705c146b2c6dc96ff1edb Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 6 Feb 2024 14:09:34 -0500 -Subject: [PATCH 49/72] gdm: Add authServicesSSSDSwitchable +Subject: [PATCH 49/73] gdm: Add authServicesSSSDSwitchable This new authService child is used by SSSD to control multiple authentication mechanisms from a single PAM conversation using 'gdm-switchable-auth' @@ -8190,7 +8190,7 @@ index 7f534c75f..f0e1aed6e 100644 From 2d3da8d24fae0f4ca5f7a2144812bfa03b32ac8f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Nov 2025 17:25:33 +0100 -Subject: [PATCH 50/72] authServicesSSSDSwitchable: Allow resetting expired +Subject: [PATCH 50/73] authServicesSSSDSwitchable: Allow resetting expired password JSON protocol can't inform when a password is expired, so it's needed to @@ -8274,7 +8274,7 @@ index 04e97b076..e8b2e9620 100644 From 56a6a27a8d9c24f8a9726201104515ad9de60767 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 21 Aug 2025 22:25:02 +0200 -Subject: [PATCH 51/72] gdm: Allow starting authServicesLegacy as fallback +Subject: [PATCH 51/73] gdm: Allow starting authServicesLegacy as fallback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -8603,7 +8603,7 @@ index ef0d0b506..5d062d5f8 100644 From f03ee0604da0ac35e95a805dcebdab9bb9d93204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 11 Feb 2026 03:36:54 +0100 -Subject: [PATCH 52/72] ui/qrCode: Add a QR Code widget +Subject: [PATCH 52/73] ui/qrCode: Add a QR Code widget The widget can only have a squared size that is picked using the maximum between the provided width ad height properties, using the minimum of @@ -8827,7 +8827,7 @@ index 000000000..caf0999f3 From 184692b0d7657a74bc5902df8662a475ef7e900d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Mon, 20 Jul 2026 19:47:32 +0200 -Subject: [PATCH 53/72] authPrompt: Support show button +Subject: [PATCH 53/73] authPrompt: Support show button Add a new button to mainBox. It will be used in the next commits to allow the authPrompt to just display one single button to proceed with the next @@ -9020,7 +9020,7 @@ index f0e1aed6e..fc90886d5 100644 From de105ed9631e458d0d6b028483953e0eddbc6c2b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 14:18:24 -0500 -Subject: [PATCH 54/72] gdm: Add support for Web Login in +Subject: [PATCH 54/73] gdm: Add support for Web Login in authServicesSSSDSwitchable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -9860,7 +9860,7 @@ index fc90886d5..08c23cbff 100644 From 0ce7bee2c37f8d8384040a350a15421146c29bd7 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 14 Jan 2025 07:31:59 -0500 -Subject: [PATCH 55/72] gdm: Add support for Smartcard in +Subject: [PATCH 55/73] gdm: Add support for Smartcard in authServicesSSSDSwitchable This allows selecting smartcard as a login method. @@ -10028,7 +10028,7 @@ index a321f4489..668637db0 100644 From e9ee7182088bbfcc9c17ab1dc43d8f4e771e0a69 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 15 Sep 2025 16:36:42 +0200 -Subject: [PATCH 56/72] gdm: Add support for Passkey in +Subject: [PATCH 56/73] gdm: Add support for Passkey in authServicesSSSDSwitchable This allows selecting passkey authentication mechanism. @@ -10267,7 +10267,7 @@ index 84cd0fb08..d8d825da6 100644 From 4eab7036fecf0ace0f787e5ecb017fa890c32069 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 8 Jul 2026 20:01:04 +0200 -Subject: [PATCH 57/72] gdm/util: Generalize authServices orchestration +Subject: [PATCH 57/73] gdm/util: Generalize authServices orchestration Replace hardcoded _authServicesSSSDSwitchable and _authServicesLegacy fields with a priority-ordered AuthServicesClasses registry. Adding a @@ -10665,7 +10665,7 @@ index 578c6a692..4b1099a6e 100644 From b63bc27b1d5e9c7b0a062a6c5511682451a131e6 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Sun, 19 Jul 2026 13:31:48 +0200 -Subject: [PATCH 58/72] gdm: Fix auth roles enablement by settings +Subject: [PATCH 58/73] gdm: Fix auth roles enablement by settings Don't use passkey and web login settings for role filtering. Settings are only meant for enabling or disabling services not individual roles. @@ -10963,7 +10963,7 @@ index 4b1099a6e..be24ceeaf 100644 From fbee5d5f08dc3554fa55c236367bf10a2a7d051e Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Sun, 19 Jul 2026 15:25:00 +0200 -Subject: [PATCH 59/72] gdm: Centralize role properties in authServices base +Subject: [PATCH 59/73] gdm: Centralize role properties in authServices base class Move role-specific knowledge out of external callers and into a @@ -11241,7 +11241,7 @@ index d8d825da6..68331934d 100644 From ec6e84452785b8c6ed5fad7c279768247d69500a Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Sun, 19 Jul 2026 15:35:40 +0200 -Subject: [PATCH 60/72] gdm: Rename passkeyDeviceManager to fido2TokenManager +Subject: [PATCH 60/73] gdm: Rename passkeyDeviceManager to fido2TokenManager The hardware device manager monitors FIDO2 tokens via udev, which is not specific to the passkey authentication role. Rename to @@ -11507,7 +11507,7 @@ index ced2f28e2..7d5f4b039 100644 From 7e8207cf5d88a031fefcfd49bbfbcf950b23d5e2 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 20 Jul 2026 19:28:48 +0200 -Subject: [PATCH 61/72] gdm: Move device setups to authServices subclasses +Subject: [PATCH 61/73] gdm: Move device setups to authServices subclasses Part-of: --- @@ -11771,7 +11771,7 @@ index ecba7d87a..d261d0012 100644 From ef9af59674e59b0693d03792eded0a8a22fb4817 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 20 Jul 2026 20:02:22 +0200 -Subject: [PATCH 62/72] gdm: Remove constants module and add wiggle parameter +Subject: [PATCH 62/73] gdm: Remove constants module and add wiggle parameter to message flow Delete constants.js and move its contents closer to where they are used: @@ -12421,7 +12421,7 @@ index 7d5f4b039..0359f6028 100644 From f75b16958b106fde5b8131cd96e778a18868423a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 11 Sep 2024 02:09:57 +0200 -Subject: [PATCH 63/72] gdm: Bind cancel button visibility to +Subject: [PATCH 63/73] gdm: Bind cancel button visibility to verification-status It's depending on it, and the status may change during the execution so @@ -12579,7 +12579,7 @@ index d02ad45bc..095dad3e7 100644 From f36287ae58f2fd95c0fc594869aa30d5d812ae0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 07:44:07 +0200 -Subject: [PATCH 64/72] gdm/authServices: Make it possible for a service to +Subject: [PATCH 64/73] gdm/authServices: Make it possible for a service to handle the cancel button A service may behave differently when a cancel button is pressed, so let @@ -12665,7 +12665,7 @@ index 2821f2bb0..c0025f608 100644 From 9a6101faa37d24f3a5e84a65e66abc311b3ab8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 07:45:12 +0200 -Subject: [PATCH 65/72] gdm/authServicesSSSDSwitchable: Implement intelligent +Subject: [PATCH 65/73] gdm/authServicesSSSDSwitchable: Implement intelligent cancel handling Override cancelRequested() to handle Escape/cancel based on the current @@ -12938,7 +12938,7 @@ index cb5a62f05..439cf6a77 100644 From ebeb68b4772f9dea3c0d945a663c5cab5f085acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 07:56:47 +0200 -Subject: [PATCH 66/72] gdm/authServicesSSSDSwitchable: Disable the mechanisms +Subject: [PATCH 66/73] gdm/authServicesSSSDSwitchable: Disable the mechanisms on service unavailable Part-of: @@ -12972,7 +12972,7 @@ index 439cf6a77..7286ec78c 100644 From f967fdd1cb3e4f15608ee9988463a801840fa2e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 07:58:52 +0200 -Subject: [PATCH 67/72] gdm/authServicesSSSDSwitchable: Handle errors setting +Subject: [PATCH 67/73] gdm/authServicesSSSDSwitchable: Handle errors setting the not found state Part-of: @@ -13010,7 +13010,7 @@ index 7286ec78c..3b462ad44 100644 From 245780b7e7d129114ae4b6343325e717f99d1dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 08:02:46 +0200 -Subject: [PATCH 68/72] gdm/util: Allow an auth service to have multiple +Subject: [PATCH 68/73] gdm/util: Allow an auth service to have multiple mechanisms per role Each mechanism could actually define the role multiple times, but we @@ -13049,7 +13049,7 @@ index c0025f608..d51330391 100644 From 1d998c1aa99d2a8552fbc1635f7f95fc87c721ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Mon, 27 Jul 2026 03:04:24 +0200 -Subject: [PATCH 69/72] gdm: Rename util into userVerifier +Subject: [PATCH 69/73] gdm: Rename util into userVerifier We've been abusing of util.js long enough, it's a too generic name for something that for many years is actually the core of the shell user @@ -14377,7 +14377,7 @@ index 08c23cbff..34be91f7c 100644 From 3148a2e59122e1e438dcb30c3d8163b9834722fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 10:40:09 +0200 -Subject: [PATCH 70/72] gdm: Move userVerifier settings and utilities to proper +Subject: [PATCH 70/73] gdm: Move userVerifier settings and utilities to proper files Leave to util only utility features, while settings keys and schemas are @@ -14741,7 +14741,7 @@ index 271b6c0e4..daff41d6a 100644 From 61350a0680e649b18bb49b96bab45eb1c0a143b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 26 Jul 2026 10:06:35 +0200 -Subject: [PATCH 71/72] gdm/authServices: Use per-request callbacks to handle +Subject: [PATCH 71/73] gdm/authServices: Use per-request callbacks to handle services queries In the design previous to this change, we may end up handling a query @@ -15184,7 +15184,7 @@ index 1087020fd..d68df6fb4 100644 From 90b5a933b33b8d53bd76bfe02523bc040436762a Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 28 Jul 2026 16:39:32 +0200 -Subject: [PATCH 72/72] gdm/userVerifier: Add driver service to constrain +Subject: [PATCH 72/73] gdm/userVerifier: Add driver service to constrain active auth services Add setDriverService() to allow callers to restrict which @@ -15261,3 +15261,94 @@ index d68df6fb4..6c63a313d 100644 -- 2.55.0 + +From 868175a6d10a45463bf48c97e9599331d0fdd823 Mon Sep 17 00:00:00 2001 +From: Adrian Vovk +Date: Thu, 13 Aug 2026 14:45:53 -0400 +Subject: [PATCH 73/73] gdm/userVerifier: Fix mechanisms-changed race + +Starting with GDM e760c8e4, GDM will return an error from +BeginVerification() whenever `gdm-switchable-auth` is unavailable. + +This would cause AuthServicesSSSDSwitchable to emit `mechanisms-changed` +during ShellUserVerifier.begin(). The signal would cause a chain of +events that leads to ShellUserVerifier.cancel() being called inside of +that same call stack. In response to this, GDM will send us a reset +signal. Meanwhile, the call stack would move on and try to call +BeginVerification() for AuthServicesLegacy. + +In the unhappy case, we'd receive the reset signal before +BeginVerification() is done, which completely de-syncs gnome-shell's and +GDM's views of what's going on. Ultimately the password box would never +appear. gnome-shell would kick the user right back into the user list, +but GDM would think that gdm-password is currently ongoing. + +The fix is to delay the propagation of `mechanisms-changed` until we're +done with BeginVerification() for all available auth services. + +Closes: https://gitlab.gnome.org/GNOME/gdm/-/work_items/1089 +Part-of: +--- + js/gdm/userVerifier.js | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js +index 6c63a313d..39acb5183 100644 +--- a/js/gdm/userVerifier.js ++++ b/js/gdm/userVerifier.js +@@ -62,6 +62,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { + this._authServices = []; + this._driverService = null; + ++ this._beginPromise = null; ++ this._redistributingRoles = false; ++ + this._messageQueue = []; + this._messageQueueTimeoutId = 0; + +@@ -86,6 +89,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { + this._cancellable?.cancel(); + this._cancellable = new Gio.Cancellable(); + ++ const {promise, resolve} = Promise.withResolvers(); ++ this._beginPromise = promise; ++ + try { + const proxies = await this._getUserVerifierProxies(userName, this._cancellable); + this._setUserVerifier(proxies.userVerifier); +@@ -100,6 +106,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { + logErrorUnlessCancelled(e); + } + ++ resolve(); ++ this._beginPromise = null; ++ + hold?.release(); + } + +@@ -402,7 +411,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { + 'reset', (_, args) => this.emit('reset', args), + 'show-choice-list', (_, args) => this.emit('show-choice-list', args), + 'show-button', (_, args) => this.emit('show-button', args), +- 'mechanisms-changed', () => this._onMechanismsChanged(), ++ 'mechanisms-changed', () => this._onMechanismsChanged().catch(logError), + 'web-login', (_, args) => this.emit('web-login', args), + this); + }); +@@ -436,10 +445,12 @@ export class ShellUserVerifier extends Signals.EventEmitter { + this._redistributingRoles = false; + } + +- _onMechanismsChanged() { ++ async _onMechanismsChanged() { + if (this._redistributingRoles) + return; + ++ await this._beginPromise; ++ + this._redistributeRoles(); + + // Collect mechanisms from all authServices in priority order, +-- +2.55.0 + diff --git a/post-changes-for-passwordless-gdm-backport.patch b/post-changes-for-passwordless-gdm-backport.patch index 41d05d1..3b65d39 100644 --- a/post-changes-for-passwordless-gdm-backport.patch +++ b/post-changes-for-passwordless-gdm-backport.patch @@ -1,4 +1,4 @@ -From bc94cdc84421125da2dcc5fc3d627a475bd565cc Mon Sep 17 00:00:00 2001 +From f7f01405f58fe832422dabeffe889f0614307181 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 2 Jun 2026 12:07:45 +0200 Subject: [PATCH 01/13] Use Object.keys(this._sections) instead of @@ -9,7 +9,7 @@ Subject: [PATCH 01/13] Use Object.keys(this._sections) instead of 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/authMenuButton.js b/js/gdm/authMenuButton.js -index 5aaa45fd3..e2c516585 100644 +index 5aaa45fd36..e2c5165852 100644 --- a/js/gdm/authMenuButton.js +++ b/js/gdm/authMenuButton.js @@ -252,7 +252,7 @@ export class AuthMenuButton extends St.Button { @@ -22,10 +22,10 @@ index 5aaa45fd3..e2c516585 100644 if (itemsInSection.length === 0) { const section = this._sections.get(sectionName); -- -2.55.0 +2.51.0 -From e1e99c9b443a60cf176d21b8538fc7f1ebd8ed65 Mon Sep 17 00:00:00 2001 +From 983b6c2ebf1eb87d37dd9150ab7af8fb1d022d43 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 2 Jun 2026 12:52:09 +0200 Subject: [PATCH 02/13] Don't use _once timeout variants @@ -37,7 +37,7 @@ Subject: [PATCH 02/13] Don't use _once timeout variants 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js -index d0f7659a5..e13d4106e 100644 +index d0f7659a55..e13d4106ef 100644 --- a/js/gdm/authServices.js +++ b/js/gdm/authServices.js @@ -283,8 +283,11 @@ export class AuthServices extends GObject.Object { @@ -55,7 +55,7 @@ index d0f7659a5..e13d4106e 100644 const {promise, resolve, reject} = Promise.withResolvers(); const task = Gio.Task.new(this, cancellable, () => { diff --git a/js/gdm/authServicesLegacy.js b/js/gdm/authServicesLegacy.js -index 77f9cece6..0e5c525de 100644 +index 77f9cece60..0e5c525de3 100644 --- a/js/gdm/authServicesLegacy.js +++ b/js/gdm/authServicesLegacy.js @@ -132,12 +132,13 @@ export class AuthServicesLegacy extends AuthServices { @@ -74,7 +74,7 @@ index 77f9cece6..0e5c525de 100644 } diff --git a/js/gdm/authServicesSSSDSwitchable.js b/js/gdm/authServicesSSSDSwitchable.js -index cf6a4e1fb..0271d98f2 100644 +index cf6a4e1fbf..0271d98f26 100644 --- a/js/gdm/authServicesSSSDSwitchable.js +++ b/js/gdm/authServicesSSSDSwitchable.js @@ -287,7 +287,7 @@ export class AuthServicesSSSDSwitchable extends AuthServices { @@ -95,10 +95,10 @@ index cf6a4e1fb..0271d98f2 100644 } -- -2.55.0 +2.51.0 -From 9927abed68a443ee9f00ddcc5e4c48187a3c70da Mon Sep 17 00:00:00 2001 +From b156daeca2500b994ec1465cfcf7afab11b0fab6 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 9 Jun 2026 09:57:09 +0200 Subject: [PATCH 03/13] gdm: Use alternative to Promise.withResolvers() @@ -106,10 +106,11 @@ Subject: [PATCH 03/13] gdm: Use alternative to Promise.withResolvers() It doesn't exist in this version --- js/gdm/authServices.js | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + js/gdm/userVerifier.js | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js -index e13d4106e..e5cf21c96 100644 +index e13d4106ef..e5cf21c96e 100644 --- a/js/gdm/authServices.js +++ b/js/gdm/authServices.js @@ -289,7 +289,11 @@ export class AuthServices extends GObject.Object { @@ -125,11 +126,28 @@ index e13d4106e..e5cf21c96 100644 const task = Gio.Task.new(this, cancellable, () => { try { const res = task.propagate_boolean(); +diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js +index 39acb5183a..31e091f956 100644 +--- a/js/gdm/userVerifier.js ++++ b/js/gdm/userVerifier.js +@@ -89,7 +89,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { + this._cancellable?.cancel(); + this._cancellable = new Gio.Cancellable(); + +- const {promise, resolve} = Promise.withResolvers(); ++ let resolve, reject; ++ const promise = new Promise((res, rej) => { ++ resolve = res; ++ reject = rej; ++ }); + this._beginPromise = promise; + + try { -- -2.55.0 +2.51.0 -From 8b06c49cb2e31b26cbf155bae0795fb7c0d7d6f6 Mon Sep 17 00:00:00 2001 +From 94ff87f62fdd269bd81f803f0f66da676132cfeb Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 6 Aug 2026 23:58:46 +0200 Subject: [PATCH 04/13] gdm: Use old ButtonMask enum @@ -143,7 +161,7 @@ In this version it still used as ONE, TWO and THREE 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/js/gdm/authList.js b/js/gdm/authList.js -index 81c204e7f..8e035da91 100644 +index 81c204e7f6..8e035da91d 100644 --- a/js/gdm/authList.js +++ b/js/gdm/authList.js @@ -70,7 +70,7 @@ class ItemIcon extends St.Button { @@ -156,7 +174,7 @@ index 81c204e7f..8e035da91 100644 }); diff --git a/js/gdm/authMenuButton.js b/js/gdm/authMenuButton.js -index e2c516585..ca9a0b9d1 100644 +index e2c5165852..ca9a0b9d1a 100644 --- a/js/gdm/authMenuButton.js +++ b/js/gdm/authMenuButton.js @@ -149,7 +149,7 @@ export class AuthMenuButton extends St.Button { @@ -169,7 +187,7 @@ index e2c516585..ca9a0b9d1 100644 this.bind_property('reactive', this, 'can-focus', diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 4c1697f08..31addc47f 100644 +index 4c1697f087..31addc47f5 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -291,7 +291,7 @@ export const AuthPrompt = GObject.registerClass({ @@ -182,7 +200,7 @@ index 4c1697f08..31addc47f 100644 x_align: Clutter.ActorAlign.CENTER, x_expand: true, diff --git a/js/gdm/webLogin.js b/js/gdm/webLogin.js -index 3b6496296..34c371b8d 100644 +index 3b64962969..34c371b8dd 100644 --- a/js/gdm/webLogin.js +++ b/js/gdm/webLogin.js @@ -200,7 +200,7 @@ export class WebLoginDialog extends St.Widget { @@ -195,10 +213,10 @@ index 3b6496296..34c371b8d 100644 text: b.label, style_class: 'login-button-label', -- -2.55.0 +2.51.0 -From 4373ce16c8653c523fcca8879915254aa76d21d0 Mon Sep 17 00:00:00 2001 +From 7c156534f109607595e5993dc4a562382c93939d Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Fri, 7 Aug 2026 11:42:37 +0200 Subject: [PATCH 05/13] style: Fix color styles to adapt when on light-mode @@ -210,7 +228,7 @@ Subject: [PATCH 05/13] style: Fix color styles to adapt when on light-mode 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/data/theme/gnome-shell-sass/widgets/_login-lock.scss b/data/theme/gnome-shell-sass/widgets/_login-lock.scss -index 04f24a789..fbcb4d20f 100644 +index 04f24a7891..fbcb4d20f4 100644 --- a/data/theme/gnome-shell-sass/widgets/_login-lock.scss +++ b/data/theme/gnome-shell-sass/widgets/_login-lock.scss @@ -92,12 +92,12 @@ $_gdm_dialog_width: 25em; @@ -245,7 +263,7 @@ index 04f24a789..fbcb4d20f 100644 } } diff --git a/data/theme/gnome-shell-sass/widgets/_qr-code.scss b/data/theme/gnome-shell-sass/widgets/_qr-code.scss -index da04425bd..98ecf7b0f 100644 +index da04425bd6..98ecf7b0fc 100644 --- a/data/theme/gnome-shell-sass/widgets/_qr-code.scss +++ b/data/theme/gnome-shell-sass/widgets/_qr-code.scss @@ -6,6 +6,7 @@ @@ -257,10 +275,10 @@ index da04425bd..98ecf7b0f 100644 background-color: $system_fg_color; border-color: $system_fg_color; -- -2.55.0 +2.51.0 -From 3745870fd893ae84cde12f4a84e4bd9b2ea65762 Mon Sep 17 00:00:00 2001 +From a1e0261eef0e1a395de5efdf077eda4a1b29b35f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 12:37:41 +0200 Subject: [PATCH 06/13] gdm: Restore util.js and misc/smartcardManager.js as @@ -281,7 +299,7 @@ location, to keep the old import paths and names working. create mode 100644 js/misc/smartcardManager.js diff --git a/js/gdm/util.js b/js/gdm/util.js -index 10f9131d9..d9a7e2239 100644 +index 10f9131d9c..d9a7e22394 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -3,6 +3,27 @@ import Clutter from 'gi://Clutter'; @@ -313,7 +331,7 @@ index 10f9131d9..d9a7e2239 100644 /** diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml -index daff41d6a..a1c0e6e3c 100644 +index daff41d6a8..a1c0e6e3cd 100644 --- a/js/js-resources.gresource.xml +++ b/js/js-resources.gresource.xml @@ -50,6 +50,7 @@ @@ -326,7 +344,7 @@ index daff41d6a..a1c0e6e3c 100644 misc/util.js diff --git a/js/misc/smartcardManager.js b/js/misc/smartcardManager.js new file mode 100644 -index 000000000..df62ec048 +index 0000000000..df62ec0486 --- /dev/null +++ b/js/misc/smartcardManager.js @@ -0,0 +1,3 @@ @@ -334,10 +352,10 @@ index 000000000..df62ec048 +// before being moved to gdm/smartcardManager.js. +export {getSmartcardManager} from '../gdm/smartcardManager.js'; -- -2.55.0 +2.51.0 -From bd1327dfb48dc9533d6e9055e6a42f0c1c1024bf Mon Sep 17 00:00:00 2001 +From ef73a7550be27511a20fcb101f5f531b9ac1ec9c Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 12:37:50 +0200 Subject: [PATCH 07/13] authPrompt: Restore BeginRequestType as alias for @@ -351,7 +369,7 @@ AuthPrompt.BeginRequestType keep working. 1 file changed, 3 insertions(+) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 31addc47f..4f7ceb86c 100644 +index 31addc47f5..4f7ceb86c9 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -44,6 +44,9 @@ export const ResetType = { @@ -365,10 +383,10 @@ index 31addc47f..4f7ceb86c 100644 Signals: { 'cancelled': {}, -- -2.55.0 +2.51.0 -From e5d4b76c4de043cb26f88065e623028970a5e1af Mon Sep 17 00:00:00 2001 +From d012d9218d045193abf2172727a97084f0845156 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 12:38:25 +0200 Subject: [PATCH 08/13] Revert "gdm/authServices: Use per-request callbacks to @@ -391,7 +409,7 @@ safety the callback pattern added. 5 files changed, 79 insertions(+), 117 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 4f7ceb86c..bbf6c4e4e 100644 +index 4f7ceb86c9..bbf6c4e4ea 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -194,7 +194,20 @@ export const AuthPrompt = GObject.registerClass({ @@ -551,7 +569,7 @@ index 4f7ceb86c..bbf6c4e4e 100644 if (element.visible) return; diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js -index e5cf21c96..e5c60e1d7 100644 +index e5cf21c96e..e5c60e1d79 100644 --- a/js/gdm/authServices.js +++ b/js/gdm/authServices.js @@ -81,7 +81,6 @@ export class AuthServices extends GObject.Object { @@ -597,7 +615,7 @@ index e5cf21c96..e5c60e1d7 100644 _handleSelectMechanism() { diff --git a/js/gdm/authServicesLegacy.js b/js/gdm/authServicesLegacy.js -index 0e5c525de..f257b55fc 100644 +index 0e5c525de3..f257b55fcd 100644 --- a/js/gdm/authServicesLegacy.js +++ b/js/gdm/authServicesLegacy.js @@ -77,6 +77,14 @@ export class AuthServicesLegacy extends AuthServices { @@ -665,7 +683,7 @@ index 0e5c525de..f257b55fc 100644 _handleGetCredentialManagerServices() { diff --git a/js/gdm/authServicesSSSDSwitchable.js b/js/gdm/authServicesSSSDSwitchable.js -index 0271d98f2..3a81b99c2 100644 +index 0271d98f26..3a81b99c20 100644 --- a/js/gdm/authServicesSSSDSwitchable.js +++ b/js/gdm/authServicesSSSDSwitchable.js @@ -74,6 +74,23 @@ export class AuthServicesSSSDSwitchable extends AuthServices { @@ -766,10 +784,10 @@ index 0271d98f2..3a81b99c2 100644 if (pinAttempts <= 3 && pinAttempts > 0) { const message = _('You have %d attempts left. If the passkey gets locked, you may not able to access your account.').format(pinAttempts); diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js -index 6c63a313d..116c4ae1d 100644 +index 31e091f956..5be510fddb 100644 --- a/js/gdm/userVerifier.js +++ b/js/gdm/userVerifier.js -@@ -180,6 +180,18 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -193,6 +193,18 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._settings = null; } @@ -788,7 +806,7 @@ index 6c63a313d..116c4ae1d 100644 addCredentialManager(serviceName, credentialManager) { this._authServices.forEach(s => s.addCredentialManager(serviceName, credentialManager)); } -@@ -464,14 +476,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -479,14 +491,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { async _waitPendingMessages({task}) { try { @@ -806,10 +824,10 @@ index 6c63a313d..116c4ae1d 100644 return Promise.resolve(); -- -2.55.0 +2.51.0 -From 3aae4d78f1432281589ff688d799c582bf80156b Mon Sep 17 00:00:00 2001 +From 8f0317ea07d585f96b5419f192a9883c17cdd70b Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 12:40:53 +0200 Subject: [PATCH 09/13] gdm: Restore positional signal signatures on @@ -831,7 +849,7 @@ handlers simply ignore. 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index bbf6c4e4e..97129ca00 100644 +index bbf6c4e4ea..97129ca00e 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -98,13 +98,17 @@ export const AuthPrompt = GObject.registerClass({ @@ -857,10 +875,10 @@ index bbf6c4e4e..97129ca00 100644 'reset', (_, args) => this._onReset(args), this); diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js -index 116c4ae1d..e5d3a1835 100644 +index 5be510fddb..2c48992ad8 100644 --- a/js/gdm/userVerifier.js +++ b/js/gdm/userVerifier.js -@@ -242,11 +242,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -255,11 +255,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { const message = this.currentMessage; delete this._currentMessageExtraInterval; @@ -877,7 +895,7 @@ index 116c4ae1d..e5d3a1835 100644 this._messageQueueTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, message.interval + (this._currentMessageExtraInterval | 0), () => { -@@ -299,7 +299,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -312,7 +312,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._messageQueueTimeoutId = 0; } @@ -886,7 +904,7 @@ index 116c4ae1d..e5d3a1835 100644 } _reportInitError(initError) { -@@ -404,7 +404,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -417,7 +417,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { _connectAuthServices() { this._authServices.forEach(authServices => { authServices.connectObject( @@ -896,7 +914,7 @@ index 116c4ae1d..e5d3a1835 100644 'queue-message', (_, args) => this._queueMessage(args), 'queue-priority-message', (_, args) => this._queuePriorityMessage(args), 'wait-pending-messages', (_, args) => this._waitPendingMessages(args), -@@ -412,7 +413,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -425,7 +426,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { 'verification-failed', (_, args) => this._verificationFailed(args), 'verification-complete', () => this.emit('verification-complete'), 'reset', (_, args) => this.emit('reset', args), @@ -904,9 +922,9 @@ index 116c4ae1d..e5d3a1835 100644 + 'show-choice-list', (_, args) => + this.emit('show-choice-list', args.serviceName, args.promptMessage, args.choiceList), 'show-button', (_, args) => this.emit('show-button', args), - 'mechanisms-changed', () => this._onMechanismsChanged(), + 'mechanisms-changed', () => this._onMechanismsChanged().catch(logError), 'web-login', (_, args) => this.emit('web-login', args), -@@ -422,7 +424,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -435,7 +437,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { _verificationFailed({serviceName, canRetry}) { this._filterServiceMessages({serviceName, messageType: MessageType.ERROR}); @@ -916,10 +934,10 @@ index 116c4ae1d..e5d3a1835 100644 get selectedMechanism() { -- -2.55.0 +2.51.0 -From 9c61a84b465df3bd0c83bbc6e3be5db811b5d04e Mon Sep 17 00:00:00 2001 +From 0985b55763c8a646a13620210596e11b0febb250 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 12:42:29 +0200 Subject: [PATCH 10/13] gdm: Add backward-compatible property and method shims @@ -941,7 +959,7 @@ with a TypeError. 2 files changed, 69 insertions(+) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 97129ca00..d062cdc4b 100644 +index 97129ca00e..d062cdc4bf 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -923,6 +923,14 @@ export const AuthPrompt = GObject.registerClass({ @@ -960,10 +978,10 @@ index 97129ca00..d062cdc4b 100644 this._preemptiveInput = false; this._preemptiveAnswer = null; diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js -index e5d3a1835..2e863cb8b 100644 +index 2c48992ad8..9ea3e0d5dd 100644 --- a/js/gdm/userVerifier.js +++ b/js/gdm/userVerifier.js -@@ -65,6 +65,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -68,6 +68,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._messageQueue = []; this._messageQueueTimeoutId = 0; @@ -973,7 +991,7 @@ index e5d3a1835..2e863cb8b 100644 this._settings = new Gio.Settings({schema_id: LOGIN_SCREEN_SCHEMA}); this._settings.connect('changed', () => this._onSettingsChanged()); this._updateAuthServices(); -@@ -82,9 +85,21 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -85,9 +88,21 @@ export class ShellUserVerifier extends Signals.EventEmitter { return this._messageQueue ? this._messageQueue[0] : null; } @@ -993,9 +1011,9 @@ index e5d3a1835..2e863cb8b 100644 this._cancellable = new Gio.Cancellable(); + this.reauthenticating = false; - try { - const proxies = await this._getUserVerifierProxies(userName, this._cancellable); -@@ -114,6 +129,51 @@ export class ShellUserVerifier extends Signals.EventEmitter { + let resolve, reject; + const promise = new Promise((res, rej) => { +@@ -127,6 +142,51 @@ export class ShellUserVerifier extends Signals.EventEmitter { return this._authServices.some(s => s.needsUsername()); } @@ -1047,7 +1065,7 @@ index e5d3a1835..2e863cb8b 100644 setDriverService(serviceName) { if (this._driverService === serviceName) return; -@@ -322,6 +382,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -335,6 +395,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { try { proxies.userVerifier = await this._client.open_reauthentication_channel( userName, cancellable); @@ -1056,10 +1074,10 @@ index e5d3a1835..2e863cb8b 100644 if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) throw e; -- -2.55.0 +2.51.0 -From 173fd8c7d0ace6b253df40d7db1260d0b202b17e Mon Sep 17 00:00:00 2001 +From b3c321a84563b780fb1bb033cd5f54ba90cdfc91 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 13:08:48 +0200 Subject: [PATCH 11/13] authPrompt: updateSensitivity() signature @@ -1075,7 +1093,7 @@ silently getting undefined out of the {sensitive} destructuring. 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index d062cdc4b..8d4de6bde 100644 +index d062cdc4bf..8d4de6bde0 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -783,7 +783,11 @@ export const AuthPrompt = GObject.registerClass({ @@ -1092,10 +1110,10 @@ index d062cdc4b..8d4de6bde 100644 return; -- -2.55.0 +2.51.0 -From f3ee5bfd61b258f90fcfda784bac7e99194a89a5 Mon Sep 17 00:00:00 2001 +From 9f275a3f2e44b453097f6fb18116dcbe5b30ee06 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Aug 2026 17:08:36 +0200 Subject: [PATCH 12/13] gdm/userVerifier: needsUsername should use every @@ -1107,10 +1125,10 @@ false. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js -index 2e863cb8b..e0a85c693 100644 +index 9ea3e0d5dd..c5f9572955 100644 --- a/js/gdm/userVerifier.js +++ b/js/gdm/userVerifier.js -@@ -126,7 +126,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -139,7 +139,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } needsUsername() { @@ -1120,12 +1138,14 @@ index 2e863cb8b..e0a85c693 100644 /** -- -2.55.0 +2.51.0 -From 8423550279da7eb204a8c0ddf4d2a94165a82fd7 Mon Sep 17 00:00:00 2001 + +From e7d5a37ccdae946a28acb2a9a3ccf1301dd0a7d6 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 13 Aug 2026 13:18:41 +0200 -Subject: [PATCH 13/13] gdm/authServicesLegacy: Fix credentialManagers authentication +Subject: [PATCH 13/13] gdm/authServicesLegacy: Fix credentialManagers + authentication There were a few guards to ensure authentication only works for the selectedMechanism, however for credentialManagers, the selectedMechanism @@ -1136,7 +1156,7 @@ Bypass those guards only for credentialManagers. 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/js/gdm/authServicesLegacy.js b/js/gdm/authServicesLegacy.js -index f257b55fc..b7592c065 100644 +index f257b55fcd..b7592c0656 100644 --- a/js/gdm/authServicesLegacy.js +++ b/js/gdm/authServicesLegacy.js @@ -258,17 +258,12 @@ export class AuthServicesLegacy extends AuthServices { @@ -1222,5 +1242,5 @@ index f257b55fc..b7592c065 100644 if (this._credentialManagers[serviceName]) return; -- -2.55.0 +2.51.0