From 7026f20cd6c7d224feb20b950b84d1b04853d8a1 Mon Sep 17 00:00:00 2001 From: blue-int <42234614+blue-int@users.noreply.github.com> Date: Wed, 4 Mar 2026 14:38:50 +0900 Subject: [PATCH] Fix share button not found on non-English locales MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The extension fails to find the Share button when the browser language is not English, because openShareDialog() relies on aria-label="Share" which chess.com localizes (e.g. "공유" in Korean). Add data-cy="sidebar-share-icon" as the primary selector, which is locale-independent and stable across UI updates. Also remove Chrome Web Store update_url from manifest.json, which Microsoft's porting guide requires for Edge compatibility. --- ext/manifest.json | 1 - ext/src/bg/getpgn.js | 17 +++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ext/manifest.json b/ext/manifest.json index ecb9fa4..bf9e7e3 100755 --- a/ext/manifest.json +++ b/ext/manifest.json @@ -4,7 +4,6 @@ "manifest_version": 3, "description": "Opens PGN of a game from chess.com or chessgames.com in lichess.org analysis", "homepage_url": "http://www.zerosharp.com", - "update_url": "https://clients2.google.com/service/update2/crx", "icons": { "128": "icons/knight128.png", "16": "icons/knight16.png", diff --git a/ext/src/bg/getpgn.js b/ext/src/bg/getpgn.js index 4d11c84..5ec2dbd 100644 --- a/ext/src/bg/getpgn.js +++ b/ext/src/bg/getpgn.js @@ -192,20 +192,21 @@ async function openShareDialog() { await secondaryControlsButton.click() } var shareButton = + document.querySelector('[data-cy="sidebar-share-icon"]') || // Locale-independent selector (works in all languages) document.querySelector('[data-cy="analysis-secondary-controls-menu-open-share"]') || // New button nested in secondary controls menu - document.querySelector('button[aria-label="Share"]') || // New specific aria-label selector - document.querySelector('button.cc-icon-button-component[aria-label="Share"]') || // More specific cc-icon-button + document.querySelector('button[aria-label="Share"]') || // English aria-label + document.querySelector('button[aria-label="공유"]') || // Korean aria-label + document.querySelector('button.cc-icon-button-component[aria-label="Share"]') || document.querySelector('span.secondary-controls-icon.download') || document.querySelector('button.share-button-component.icon-share') || - document.querySelector('button.share-button-component.icon-share') || document.querySelector('button.icon-font-chess.share.live-game-buttons-button') || document.querySelector('button.share-button-component.share') || document.querySelector("button[data-test='download']") || - document.querySelector("#shareMenuButton") || - document.querySelector(".icon-font-chess.share.icon-font-primary") || - document.querySelector(".icon-font-chess.share.game-buttons-icon") || - document.querySelector(".icon-font-chess.share") || - document.querySelector(".icon-share"); + document.querySelector('#shareMenuButton') || + document.querySelector('.icon-font-chess.share.icon-font-primary') || + document.querySelector('.icon-font-chess.share.game-buttons-icon') || + document.querySelector('.icon-font-chess.share') || + document.querySelector('.icon-share'); if (shareButton) { return new Promise((resolve) => { shareButton.click()