From c7052b28674301bf4a21a8d0212a136be3d9512c Mon Sep 17 00:00:00 2001 From: Gadfly Date: Wed, 5 Aug 2026 10:01:50 +0800 Subject: [PATCH] fix: detect IntelliJ IDEA and Android Studio from JetBrains Toolbox The product-code allowlist introduced in 73f83611 was copied verbatim from the old icon-only list, which never contained IU/IC/AI. As a result, IntelliJ IDEA (Ultimate/Community) and Android Studio installed via Toolbox were silently filtered out and never surfaced as external tools. Add IU, IC and AI to the allowlist, and ship matching 64x64 icons sourced from the official Toolbox assets under Resources/Images/ExternalToolIcons/JetBrains/. --- src/Models/ExternalTool.cs | 2 +- .../Images/ExternalToolIcons/JetBrains/AI.png | Bin 0 -> 3176 bytes .../Images/ExternalToolIcons/JetBrains/IC.png | Bin 0 -> 1908 bytes .../Images/ExternalToolIcons/JetBrains/IU.png | Bin 0 -> 1908 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/Resources/Images/ExternalToolIcons/JetBrains/AI.png create mode 100644 src/Resources/Images/ExternalToolIcons/JetBrains/IC.png create mode 100644 src/Resources/Images/ExternalToolIcons/JetBrains/IU.png diff --git a/src/Models/ExternalTool.cs b/src/Models/ExternalTool.cs index 7f93cf8bd..7f30963a5 100644 --- a/src/Models/ExternalTool.cs +++ b/src/Models/ExternalTool.cs @@ -186,7 +186,7 @@ public void Cursor(Func platformFinder) public void FindJetBrainsFromToolbox(Func platformFinder) { - var supported = new List { "CL", "DB", "DL", "DS", "GO", "JB", "PC", "PS", "PY", "QA", "QD", "RD", "RM", "RR", "WRS", "WS" }; + var supported = new List { "AI", "CL", "DB", "DL", "DS", "GO", "IC", "IU", "JB", "PC", "PS", "PY", "QA", "QD", "RD", "RM", "RR", "WRS", "WS" }; var state = Path.Combine(platformFinder(), "state.json"); if (File.Exists(state)) { diff --git a/src/Resources/Images/ExternalToolIcons/JetBrains/AI.png b/src/Resources/Images/ExternalToolIcons/JetBrains/AI.png new file mode 100644 index 0000000000000000000000000000000000000000..64390ed3270b80e2b1aea6f7f2741e9639d916ed GIT binary patch literal 3176 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 O0000I=`RNENj> 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