Skip to content

Repository files navigation

Dedicated Browser Kit

Run any web app as a dedicated, supervised, properly-badged Windows app — using the system Microsoft Edge, no bundled Electron/Tauri runtime, no admin rights, deployable as a single double-clickable file.

Built for web softphones and contact-center agent consoles (where a missed, hidden, throttled, or slept-through browser tab means a missed call), but the kit is app-agnostic: define your apps in Apps.ps1 and it does the rest.

What each app gets

Feature How
Own window, no tabs/address bar Edge app mode (--app=URL)
Own isolated browser profile --user-data-dir per app (SSO/permissions persist per app)
Its own taskbar icon & identity (not Edge's) AppUserModelID-stamped shortcuts + a WM_SETICON watchdog — see Taskbar identity
High process priority, continuously enforced watchdog re-asserts on every Edge child process (the audio service spawns mid-call at Normal)
No background throttling, autoplay allowed Edge flags — ringtones play, timers never sleep
Single-instance relaunch focuses the existing window instead of duplicating
Optional: machine can't sleep while the app is open SetThreadExecutionState held by the watchdog (KeepAwake)
Optional: surface + flash when it rings while hidden WASAPI per-process audio-peak monitoring (CallAlert) — burst-sampled, hysteresis so live calls never re-alert
One-file deployment Build-Deploy.ps1 packs everything into a self-extracting batch/PowerShell polyglot .cmd (per-user, no admin, /uninstall + /purge supported)

Quick start

  1. Edit Apps.ps1 — set your app's URL, profile name, display name, icon. (Make an icon from any SVG/PNGs with tools/Build-Ico.ps1.)
  2. .\Create-Shortcut.ps1 -Desktop — creates the shortcuts.
  3. Launch it. Then run .\tools\Discover-AppId.ps1 -App <YourApp>, click the window, and paste the discovered AppId into Apps.ps1; re-run Create-Shortcut.ps1. Now the taskbar shows YOUR icon, merged correctly.
  4. To deploy to others: .\Build-Deploy.ps1 → hand out the generated .cmd. Variants: .\Build-Deploy.ps1 -Include AppA,AppB -OutName Deploy-Agents.cmd.

Requirements: Windows 10/11, Microsoft Edge (any recent), Windows PowerShell 5.1+ (both 5.1 and PowerShell 7 supported). No admin rights for install or use.

Taskbar identity

The part everyone gets wrong. Windows taskbar buttons are grouped by AppUserModelID, not by window icon — a plain shortcut to an Edge app-mode window shows Edge's icon and merges with the user's other Edge windows. Edge assigns app-mode windows a deterministic AUMID derived from the app URL and the profile folder name (with unpredictable abbreviation, so it can't be computed — only discovered). Windows records it in HKCU\...\Explorer\FeatureUsage\AppSwitched whenever the window is foregrounded; tools/Discover-AppId.ps1 automates reading it. Stamping that AUMID onto the kit's shortcuts (COM IPropertyStore, since WScript.Shell can't) gives the running window its own merged taskbar button with your icon. The watchdog separately keeps the window icon (title bar / Alt-Tab) correct via WM_SETICON, because Chromium resets it on favicon changes.

Note: SHGetPropertyStoreForWindow is effectively same-process only — cross-process writes return S_OK but silently don't persist. Days of our lives went into learning that so yours don't have to.

Support notes for IT (ship these to your helpdesk)

Expected behavior on a deployed machine — none of this is malware or a bug:

  • msedge.exe processes at High priority with --user-data-dir=...<profile>
  • a hidden powershell.exe running Watch-8x8Icon.ps1 while an app is open (exits ~90 s after the app closes); with KeepAwake apps an elevated powercfg /requests shows it holding a SYSTEM request — intentional
  • with CallAlert apps, the window pops to the front (without stealing focus) and the taskbar flashes when the app makes sound while hidden — including voicemail playback, by design
  • re-running the deploy .cmd is always the safe update path (profiles and sign-ins are preserved); /uninstall keeps profiles, /uninstall /purge wipes them

File map

File Purpose
Apps.ps1 App registry — the only file you must edit
Launch-8x8.ps1 -App <key>: launch/focus one app, arm its watchdog
Watch-8x8Icon.ps1 per-app watchdog: icon, priority, keep-awake, call-alert
Create-Shortcut.ps1 generates AUMID-stamped shortcuts for all apps
Build-Deploy.ps1 builds the single-file installer (-Include for variants)
Enable-AutoStart.ps1 per-app launch at sign-in (-App X, -Off)
Enable-EdgePolicies.ps1 per-URL Edge policies (notifications/popups/mic/sleeping-tabs); prints GPO values on managed machines
Enable-QoS.ps1 optional, admin: DSCP 46 tagging for softphone media
tools/Discover-AppId.ps1 finds an app's taskbar AUMID (run once per app)
tools/Build-Ico.ps1 builds a multi-resolution .ico from PNGs

File names keep the 8x8 of the kit's birthplace; behavior is fully generic.

Origin — read this

This kit was written almost entirely by an AI. It was built in and around a single working session in July 2026 by Anthropic's Claude (via Claude Code), directed step-by-step by an IT administrator who set the goals, tested every behavior live on a production machine, made the deployment decisions, and asked for the adversarial reviews that caught real bugs before release (including a call-alert design flaw and a Win32 struct-size stack bug). The human vouches for what it does; the AI wrote how it does it.

It is published so others can start from a working base instead of re-discovering the hard parts (AUMID discovery via FeatureUsage\AppSwitched, persistent WM_SETICON, WASAPI ring detection, the batch/PowerShell polyglot installer). Treat it like any code from the internet: read it before you deploy it, and test on one machine before a fleet.

License

MIT — see LICENSE.

About

Run any web app as a dedicated, supervised, properly-badged Windows app using system Edge - per-app profiles, real taskbar identity (AUMID), icon/priority/keep-awake watchdog, ring-detection window alerts, single-file no-admin installer. AI-built under human direction (see README Origin).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages