diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..57f54b4
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+v25.8.1
diff --git a/README.md b/README.md
index 096e26a..5cde7ef 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,11 @@ Choose from six icon themes in the extension popup:
## Install
-The extension is currently under review by the Chrome Web Store. In the meantime, build and load it locally:
+[**Chrome Web Store**](https://chromewebstore.google.com/detail/github-icons/hjhebcpkgfacibbiohdccepipeekkjlj)
+
+Safari and Firefox versions should be available soon!
+
+Or build and load it locally:
```bash
git clone https://github.com/g-icons/github-icons
diff --git a/package-lock.json b/package-lock.json
index 74accb8..4a042c2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "chrome-github-icons",
- "version": "0.5.0",
+ "version": "0.5.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "chrome-github-icons",
- "version": "0.5.0",
+ "version": "0.5.1",
"hasInstallScript": true,
"dependencies": {
"@iconify-json/vscode-icons": "^1.2.45",
diff --git a/package.json b/package.json
index 6c80f3e..c618206 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "chrome-github-icons",
"description": "Cross-browser extension that replaces GitHub file icons with Material Design icons.",
"private": true,
- "version": "0.5.0",
+ "version": "0.5.1",
"type": "module",
"scripts": {
"sync:assets": "tsx scripts/copy-icons.ts",
@@ -13,6 +13,8 @@
"build:firefox": "npm run sync:assets && wxt build -b firefox",
"build:safari": "npm run sync:assets && wxt build -b safari",
"chrome": "npm run sync:assets && wxt zip",
+ "firefox": "npm run sync:assets && wxt zip -b firefox",
+ "safari": "npm run sync:assets && wxt zip -b safari",
"zip": "npm run sync:assets && wxt zip",
"zip:firefox": "npm run sync:assets && wxt zip -b firefox",
"compile": "tsc --noEmit",
diff --git a/src/adapters/github/index.ts b/src/adapters/github/index.ts
index 4b43fce..ec40d43 100644
--- a/src/adapters/github/index.ts
+++ b/src/adapters/github/index.ts
@@ -72,20 +72,20 @@ export class GitHubAdapter implements SiteAdapter {
originalIcon.style.display = 'none';
- if (existingReplacement) {
- existingReplacement.src = iconUrl;
- return;
- }
-
- // Remove orphaned replacement images in the same parent.
- // In the sidebar, React swaps between closed/open folder SVGs — the old
- // SVG is removed but our
replacement stays behind.
+ // Clean up any orphaned replacement images in the same parent
+ // (happens when GitHub swaps SVGs for open/closed folder states)
const parent = originalIcon.parentElement;
if (parent) {
- parent.querySelectorAll(`img[${REPLACEMENT_ATTR}="true"]`)
+ parent
+ .querySelectorAll(`img[${REPLACEMENT_ATTR}="true"]`)
.forEach((orphan) => orphan.remove());
}
+ if (existingReplacement) {
+ existingReplacement.src = iconUrl;
+ return;
+ }
+
const replacement = this.createReplacementImage(originalIcon, iconUrl);
originalIcon.insertAdjacentElement('afterend', replacement);
}
diff --git a/src/adapters/github/selectors.ts b/src/adapters/github/selectors.ts
index 77e907e..cb8e00a 100644
--- a/src/adapters/github/selectors.ts
+++ b/src/adapters/github/selectors.ts
@@ -30,9 +30,10 @@ export const GITHUB_ICON_SELECTOR = 'svg[class*="octicon-file"]';
const GITHUB_ENTRY_CONTAINER_SELECTOR = [
'.react-directory-row',
- '.PRIVATE_TreeView-item-container',
- '[data-testid="tree-view-item"]',
'[role="treeitem"]',
+ '[data-testid="tree-view-item"]',
+ '.PRIVATE_TreeView-item-container',
+ '.PRIVATE_TreeView-item-content',
'tr.js-navigation-item',
'li.js-navigation-item',
'div[role="row"]',
diff --git a/ssmver.toml b/ssmver.toml
index 769aeac..cb9e98a 100644
--- a/ssmver.toml
+++ b/ssmver.toml
@@ -1,4 +1,4 @@
-version = "0.5.0"
+version = "0.5.1"
[settings]
mode = "branch"
@@ -11,7 +11,7 @@ prompt_prefixes = [
[sync]
monorepo = "lockstep"
constants = "curated"
-exclude = []
+exclude = ["test/**"]
[prefixes]
feature = "minor"