Environment
- freshell v0.7.0 (git tag)
- Windows 11 Pro (native, not WSL)
- Node 22.12.0
- Fresh clone + npm install + npm run serve
Summary
On startup, freshell's root watcher enumerates executables in PATH directories. On Windows, PATH typically includes C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\, which contains UWP app execution aliases (NTFS reparse points). Node's fs.stat cannot access these without elevation, producing approximately 35 EACCES warnings per startup:
{"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\1Password.exe"}}
{"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\winget.exe"}}
{"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\wsl.exe"}}
{"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\notepad.exe"}}
{"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\Spotify.exe"}}
... (~35 total)
Additionally:
The application still starts and functions correctly, but the console output is very noisy and could obscure real errors.
Steps to Reproduce
- On a Windows 11 machine with typical software (1Password, Spotify, Teams, etc. installed from the Microsoft Store)
git clone --branch v0.7.0 https://github.com/danshapiro/freshell.git
cd freshell && npm install && npm run serve
- Observe ~35+ warnings in console output
Suggested Fix
Filter out WindowsApps from the watcher's scan path, or wrap fs.stat calls with error handling that suppresses EACCES/EPERM/UNKNOWN on known Windows system directories. A denylist for AppData\Local\Microsoft\WindowsApps, fnm multishell temp dirs, and locked application journal files would cover the common cases.
Environment
Summary
On startup, freshell's root watcher enumerates executables in PATH directories. On Windows, PATH typically includes
C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\, which contains UWP app execution aliases (NTFS reparse points). Node'sfs.statcannot access these without elevation, producing approximately 35 EACCES warnings per startup:{"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\1Password.exe"}} {"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\winget.exe"}} {"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\wsl.exe"}} {"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\notepad.exe"}} {"level":40,"msg":"Root watcher error","err":{"code":"EACCES","path":"...\WindowsApps\Spotify.exe"}} ... (~35 total)Additionally:
fnm (Fast Node Manager) creates temporary multishell directories in PATH that produce UNKNOWN errors:
{"level":40,"msg":"Root watcher error","err":{"code":"UNKNOWN","path":"...\fnm_multishells\24656_1234567890"}}Dropbox locked journal files produce EPERM errors:
{"level":40,"msg":"Root watcher error","err":{"code":"EPERM","path":"...\Dropbox\instance1\config.dbx-journal"}}The application still starts and functions correctly, but the console output is very noisy and could obscure real errors.
Steps to Reproduce
git clone --branch v0.7.0 https://github.com/danshapiro/freshell.gitcd freshell && npm install && npm run serveSuggested Fix
Filter out
WindowsAppsfrom the watcher's scan path, or wrapfs.statcalls with error handling that suppresses EACCES/EPERM/UNKNOWN on known Windows system directories. A denylist forAppData\Local\Microsoft\WindowsApps, fnm multishell temp dirs, and locked application journal files would cover the common cases.