Please confirm these before moving forward
UniGetUI Version
v2026.2.0
Windows version, edition, and architecture
Windows 10 Pro 22H2 Build 19045 x64
Describe your issue
UniGetUI's Bun manager doesn't detect available updates when Bun is installed via Scoop. In v2026.2.0, installed packages show up but updates don't. In the main branch, both installed packages and updates are broken.
GetGlobalPackagesDirectory() in Bun.cs hardcodes %USERPROFILE%\.bun\install\global\ as the global packages directory. Bun itself resolves this differently — it reads the BUN_INSTALL environment variable first, falling back to ~/.bun.
When Scoop installs Bun, it sets:
BUN_INSTALL = scoop\persist\bun
BUN_INSTALL_GLOBAL_DIR = scoop\persist\bun\install\global
UniGetUI ignores both and looks in %USERPROFILE%\.bun\install\global\ — which doesn't exist.
Steps to reproduce the issue
- Install Bun via Scoop:
scoop install bun
- Install an outdated global package:
bun install -g cowsay@1.5.0
- Open UniGetUI — installed packages appear, but no updates are shown
- Verify from terminal:
bun outdated --global (from any directory) — cowsay 1.5.0 -> 1.6.0 is reported correctly
UniGetUI Log
[12.06.2026 13:39:36] __ __ _ ______ __ __ ______
/ / / /___ (_) ____/__ / /_/ / / / _/
/ / / / __ \/ / / __/ _ \/ __/ / / // /
/ /_/ / / / / / /_/ / __/ /_/ /_/ // /
\____/_/ /_/_/\____/\___/\__/\____/___/
Welcome to UniGetUI Version 2026.2.0
[12.06.2026 13:39:36]
[12.06.2026 13:39:36] Build 107
[12.06.2026 13:39:36] UI Framework: Avalonia
[12.06.2026 13:39:36] Data directory C:\Users\pikno\AppData\Local\UniGetUI
[12.06.2026 13:39:36] OS: Microsoft Windows 10.0.19045
[12.06.2026 13:39:36] Process arch: X64 (OS: X64)
[12.06.2026 13:39:36] Runtime: .NET 10.0.8
[12.06.2026 13:39:36] Loaded language locale: en
[12.06.2026 13:39:36] Elevated: False
[12.06.2026 13:39:36] Packaged (MSIX): False
[12.06.2026 13:39:36] Args: (none)
[12.06.2026 13:39:38] Command cargo-binstall.exe was not found on the system
[12.06.2026 13:39:38] Restored geometry was outside of desktop bounds
[12.06.2026 13:39:38] Unable to retrieve secret for resource 'UniGetUI/GitHubAccessToken': Element not found.
Cannot get credential from Vault
[12.06.2026 13:39:39] Starting Avalonia shell bootstrap
[12.06.2026 13:39:39] Loaded language locale: en
[12.06.2026 13:39:39] PowerShell is enabled and was found on C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
[12.06.2026 13:39:39] Scoop is enabled and was found on C:\Program Files\PowerShell\7\pwsh.exe
[12.06.2026 13:39:39] PowerShell7 is enabled and was found on C:\Program Files\PowerShell\7\pwsh.exe
[12.06.2026 13:39:39] Generated a IPC API auth token for the current session
[12.06.2026 13:39:39] Packaged WinGet COM activation failed (Built-in COM has been disabled via a feature switch. See https://aka.ms/dotnet-illink/com for more information.), attempting lower-trust activation...
[12.06.2026 13:39:39] Command vcpkg.exe was not found on the system
[12.06.2026 13:39:39] Command vcpkg was not found on the system
[12.06.2026 13:39:39] Command vcpkg was not found on the system
[12.06.2026 13:39:39] Vcpkg root was not found. Please define the %VCPKG_ROOT% environment variable or define it from UniGetUI Settings
[12.06.2026 13:39:39] vcpkg is enabled but was not found on the system!
[12.06.2026 13:39:39] Command cargo.exe was not found on the system
[12.06.2026 13:39:39] Cargo is enabled but was not found on the system!
[12.06.2026 13:39:39] Pip is enabled and was found on C:\Users\pikno\scoop\persist\uv\python\versions\cpython-3.14-windows-x86_64-none\python.EXE
[12.06.2026 13:39:39] .NET Tool is enabled but was not found on the system!
[12.06.2026 13:39:39] Bun is enabled and was found on C:\Users\pikno\scoop\shims\bun.exe
[12.06.2026 13:39:39] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█▀▀▀▀▀▀▀▀▀▀▀▀▀ MANAGER LOADED ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█ Name: PowerShell 7.x (aka PowerShell7)
█ Executable name: "pwsh.exe"
█ Executable path: "C:\Program Files\PowerShell\7\pwsh.exe"
█ Call arguments: " -NoProfile -Command"
█ Version: PowerShell 7.6.2
█
█ PowerShell 7.x is enabled and ready to go.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
[12.06.2026 13:39:40] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█▀▀▀▀▀▀▀▀▀▀▀▀▀ MANAGER LOADED ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█ Name: Bun (aka Bun)
█ Executable name: "bun"
█ Executable path: "C:\Users\pikno\scoop\shims\bun.exe"
█ Call arguments: ""
█ Version: 1.3.14
█
█ Bun is enabled and ready to go.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
[12.06.2026 13:39:40] Command npm.cmd was not found on the system
[12.06.2026 13:39:40] Npm is enabled but was not found on the system!
[12.06.2026 13:39:40] Command choco.exe was not found on the system
[12.06.2026 13:39:40] Chocolatey is enabled but was not found on the system!
[12.06.2026 13:39:40] Connected to WinGet API using lower-trust COM activation.
[12.06.2026 13:39:40] WinGet activation mode selected: lower-trust COM registration | Source: system COM registration (allow lower trust)
[12.06.2026 13:39:40] Winget is enabled and was found on C:\Users\pikno\AppData\Local\Microsoft\WindowsApps\winget.exe
[12.06.2026 13:39:40] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█▀▀▀▀▀▀▀▀▀▀▀▀▀ MANAGER LOADED ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█ Name: PowerShell 5.x (aka PowerShell)
█ Executable name: "powershell.exe"
█ Executable path: "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe"
█ Call arguments: " -NoProfile -Command"
█ Version: Name Value
█ ---- -----
█ PSVersion 5.1.19041.7291
█ PSEdition Desktop
█ PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
█ BuildVersion 10.0.19041.7291
█ CLRVersion 4.0.30319.42000
█ WSManStackVersion 3.0
█ PSRemotingProtocolVersion 2.3
█ SerializationVersion 1.1.0.1
█
█ PowerShell 5.x is enabled and ready to go.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
[12.06.2026 13:39:40] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█▀▀▀▀▀▀▀▀▀▀▀▀▀ MANAGER LOADED ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█ Name: WinGet (aka Winget)
█ Executable name: "winget.exe"
█ Executable path: "C:\Users\pikno\AppData\Local\Microsoft\WindowsApps\winget.exe"
█ Call arguments: ""
█ Version: System WinGet (CLI) Version: v1.28.240
█ Using Native WinGet helper (COM Api)
█ Activation mode: lower-trust COM registration
█ Activation source: system COM registration (allow lower trust)
█
█ WinGet is enabled and ready to go.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
[12.06.2026 13:39:40] Api running on named pipe UniGetUI.IPC
[12.06.2026 13:39:41] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█▀▀▀▀▀▀▀▀▀▀▀▀▀ MANAGER LOADED ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█ Name: Pip (aka Pip)
█ Executable name: "pip"
█ Executable path: "C:\Users\pikno\scoop\persist\uv\python\versions\cpython-3.14-windows-x86_64-none\python.EXE"
█ Call arguments: "-m pip "
█ Version: pip 26.1.2 from C:\Users\pikno\scoop\persist\uv\python\versions\cpython-3.14-windows-x86_64-none\Lib\site-packages\pip (python 3.14)
█
█ Pip is enabled and ready to go.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
[12.06.2026 13:39:41] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█▀▀▀▀▀▀▀▀▀▀▀▀▀ MANAGER LOADED ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█ Name: Scoop (aka Scoop)
█ Executable name: "scoop"
█ Executable path: "C:\Program Files\PowerShell\7\pwsh.exe"
█ Call arguments: "-NoProfile -ExecutionPolicy Bypass -Command "C:\Users\pikno\scoop\shims\scoop.ps1" "
█ Version: Current Scoop version:
█ b588a06e chore(release): Bump to version 0.5.3 (resync) (#6436)
█
█ 'main' bucket:
█ fd74064375 opencv: Update to version 5.0.0, fix checkver (#8143)
█
█ 'extras' bucket:
█ eed843c626 wavebox: Update to version 149.2.92.2
█
█ Scoop is enabled and ready to go.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
[12.06.2026 13:39:42] Auto-updater source 'ProductInfo' returned version 2026.2.0.0 (upgradable=False)
[12.06.2026 13:39:42] Downloaded new icons and screenshots successfully!
[12.06.2026 13:39:49] Found 14 installed packages from Pip
[12.06.2026 13:39:53] Bun: Skipping global update detection because C:\Users\pikno\.bun\install\global is missing package.json
[12.06.2026 13:39:53] Found 0 available updates from Bun
[12.06.2026 13:39:56] Found 0 installed packages from PowerShell
[12.06.2026 13:39:57] Found 19 installed packages from Scoop
[12.06.2026 13:39:57] Found 4 installed packages from PowerShell7
[12.06.2026 13:39:57] Found 19 installed packages from Scoop
[12.06.2026 13:40:01] Found 0 available updates from Scoop
[12.06.2026 13:40:01] Found 0 available updates from Pip
[12.06.2026 13:40:03] Found 4 installed packages from PowerShell7
[12.06.2026 13:40:03] Found 0 installed packages from PowerShell
[12.06.2026 13:40:03] Found 0 available updates from PowerShell
[12.06.2026 13:40:03] Found 4 installed packages from Bun
[12.06.2026 13:40:04] Found 0 available updates from PowerShell7
[12.06.2026 13:40:04] System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch
at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.SocketsHttpHandler.<SendAsync>g__CreateHandlerAndSendAsync|115_0(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at UniGetUI.Core.IconEngine.IconCacheEngine.SaveIconToCacheAndGetPath(CacheableIcon icon, String iconLocation)
[12.06.2026 13:40:06] Version string 20260117-154428-05343b38 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[12.06.2026 13:40:06] Version string 20260117-154428-05343b38 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[12.06.2026 13:40:06] WinGet package AirVPN.Eddie not being shown as an updated as this version has already been marked as installed
[12.06.2026 13:40:06] WinGet package AlexThuering.DVDStyler not being shown as an updated as this version has already been marked as installed
[12.06.2026 13:40:07] Version string N-124716-g054dffd133-20260531 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[12.06.2026 13:40:07] Version string N-124716-g054dffd133-20260531 appears to contain non-numeric characters within a numeric segment and will be treated as unknown
[12.06.2026 13:40:08] WinGet package Microsoft.UI.Xaml.2.6 not being shown as an updated as this version has already been marked as installed
[12.06.2026 13:40:08] Found 188 installed packages from Winget
[12.06.2026 13:40:08] Found 1 available updates from Winget
[12.06.2026 13:40:08] Integrity check passed successfully!
[12.06.2026 13:40:08] Dependency Scoop-Search for Scoop is present.
[12.06.2026 13:40:08] Dependency Git for Scoop is present.
[12.06.2026 13:40:08] Avalonia shell bootstrap completed
[12.06.2026 13:46:42] Scoop buckets have been already refreshed in the last ten minutes, skipping.
[12.06.2026 13:46:42] Bun: Skipping global update detection because C:\Users\pikno\.bun\install\global is missing package.json
[12.06.2026 13:46:42] Found 0 available updates from Bun
[12.06.2026 13:46:48] Found 0 available updates from Pip
[12.06.2026 13:46:48] Found 19 installed packages from Scoop
Package Managers Logs
Manager Bun with version:
1.3.14
——————————————————————————————————————————
Logged subprocess-based task on manager Bun. Task type is ListInstalledPackages
Subprocess executable: "C:\Users\pikno\scoop\shims\bun.exe"
Command-line arguments: " pm ls --global"
Process start time: 12.06.2026 13:39:49
Process end time: 12.06.2026 13:40:03
-- Process STDOUT
C:\Users\pikno\scoop\persist\bun\install\global node_modules (64)
├── @biomejs/biome@2.4.16
├── cowsay@1.5.0
├── opencode-ai@1.17.4
└── typescript@6.0.3
Return code: SUCCESS (0)
——————————————————————————————————————————
Relevant information
Paths in play:
| Path |
Exists (Scoop) |
Purpose |
%USERPROFILE%\.bun\install\global\ |
No |
What UniGetUI hardcodes |
$env:BUN_INSTALL\install\global\ |
Yes |
What Bun actually uses |
$env:BUN_INSTALL_GLOBAL_DIR |
Yes |
Env var pointing to the same place |
v2026.2.0 behavior:
| Feature |
Status |
Reason |
| Installed packages |
Works |
No guard in GetInstalledPackages_UnSafe() — runs bun pm ls --global directly |
| Available updates |
Broken |
HasGlobalPackageManifest guard checks hardcoded path — doesn't exist |
| Package search |
Broken |
Uses bun search which doesn't exist (#4859) |
Main branch behavior:
| Feature |
Status |
Reason |
| Installed packages |
Broken |
HasGlobalPackageManifest guard added — returns empty if missing |
| Available updates |
Broken |
HasGlobalPackageManifest guard checks hardcoded path — doesn't exist |
| Package search |
Works |
Uses npm registry API (PR #4880) |
Workaround:
New-Item -ItemType Junction -Path "$env:USERPROFILE\.bun" -Target "$env:BUN_INSTALL" -Force
Makes the hardcoded path resolve to Scoop's persist directory. Junction must be recreated if Bun is reinstalled via Scoop.
Suggested fix:
GetGlobalPackagesDirectory() should follow Bun's own resolution logic:
internal static string GetGlobalPackagesDirectory(string userProfile)
{
// 1. Most direct: BUN_INSTALL_GLOBAL_DIR (Scoop sets this)
string globalDir = Environment.GetEnvironmentVariable("BUN_INSTALL_GLOBAL_DIR");
if (!string.IsNullOrEmpty(globalDir) && Directory.Exists(globalDir))
return globalDir;
// 2. Bun's own fallback: BUN_INSTALL/install/global
string bunHome = Environment.GetEnvironmentVariable("BUN_INSTALL");
if (!string.IsNullOrEmpty(bunHome))
return Path.Combine(bunHome, "install", "global");
// 3. Official installer default: ~/.bun/install/global
return Path.Combine(userProfile, ".bun", "install", "global");
}
Falls back to ~/.bun for official installer users, reads BUN_INSTALL for Scoop users.
Related:
- #4859 — "[BUG] bun package manager is not working"
- PR #4880 — "Fix Bun manager detection, search, and global package listing" (merged 2026-06-05, did NOT fix the hardcoded path)
Screenshots and videos
No response
Please confirm these before moving forward
UniGetUI Version
v2026.2.0
Windows version, edition, and architecture
Windows 10 Pro 22H2 Build 19045 x64
Describe your issue
UniGetUI's Bun manager doesn't detect available updates when Bun is installed via Scoop. In v2026.2.0, installed packages show up but updates don't. In the main branch, both installed packages and updates are broken.
GetGlobalPackagesDirectory()inBun.cshardcodes%USERPROFILE%\.bun\install\global\as the global packages directory. Bun itself resolves this differently — it reads theBUN_INSTALLenvironment variable first, falling back to~/.bun.When Scoop installs Bun, it sets:
BUN_INSTALL=scoop\persist\bunBUN_INSTALL_GLOBAL_DIR=scoop\persist\bun\install\globalUniGetUI ignores both and looks in
%USERPROFILE%\.bun\install\global\— which doesn't exist.Steps to reproduce the issue
scoop install bunbun install -g cowsay@1.5.0bun outdated --global(from any directory) — cowsay 1.5.0 -> 1.6.0 is reported correctlyUniGetUI Log
Package Managers Logs
Relevant information
Paths in play:
%USERPROFILE%\.bun\install\global\$env:BUN_INSTALL\install\global\$env:BUN_INSTALL_GLOBAL_DIRv2026.2.0 behavior:
GetInstalledPackages_UnSafe()— runsbun pm ls --globaldirectlyHasGlobalPackageManifestguard checks hardcoded path — doesn't existbun searchwhich doesn't exist (#4859)Main branch behavior:
HasGlobalPackageManifestguard added — returns empty if missingHasGlobalPackageManifestguard checks hardcoded path — doesn't existWorkaround:
Makes the hardcoded path resolve to Scoop's persist directory. Junction must be recreated if Bun is reinstalled via Scoop.
Suggested fix:
GetGlobalPackagesDirectory()should follow Bun's own resolution logic:Falls back to
~/.bunfor official installer users, readsBUN_INSTALLfor Scoop users.Related:
Screenshots and videos
No response