HolySN

Docs

Install

What HolySN needs from your browser, and how to load it before a store listing exists.

Requirements

Chrome or Edge, version 128 or newer. Two APIs set that floor: MAIN-world script injection, which arrived in 111, and response-header rewriting through declarativeNetRequest, which the shared-session guard needs and which arrived in 128.

Firefox is not supported yet.

There is no store listing yet

Chrome Web Store review treats user-supplied scripts as remote code, and the Rules feature runs scripts you save. That is a policy problem rather than a packaging one, so the realistic first channels are a self-hosted package or an enterprise policy install. Join the waitlist and you will hear which one opens first.

Monaco is already bundled with the extension instead of being pulled from a CDN, so the editor is not part of that problem.

Loading it unpacked

If you have the repository, build it and load the output:

cd extension-ai
node build.mjs --resources   # first run: also downloads the bundled resources
node build.mjs               # afterwards: fast rebuild

Then open chrome://extensions, turn on Developer mode, choose Load unpacked, and select extension-ai/dist.

To produce a zip instead:

node build.mjs --resources --zip

First run

Open any ServiceNow page. The panel attaches itself, and Alt+Shift+P opens the command palette. Nothing is enabled behind your back: dark mode is off until you turn it on, and the AI assistant's four permissions all start denied.

Which build to run where

The extension and the Tampermonkey userscript are built from the same source. The extension does things a userscript cannot, including instance-wide dark mode and access to HttpOnly cookies.

One thing points the other way. The userscript generates its identity keys inside Tampermonkey's own sandbox, where a hostile page cannot hook crypto.subtle. In the extension the widget shares a realm with the page, so that hardening is lost. On an instance you do not control, prefer the userscript build until this is fixed.