{"id":48269057,"url":"https://github.com/sysadmindoc/scriptvault","last_synced_at":"2026-04-25T19:01:54.824Z","repository":{"id":333352388,"uuid":"1137005145","full_name":"SysAdminDoc/ScriptVault","owner":"SysAdminDoc","description":"A powerful, modern userscript manager built with Manifest V3. Feature-rich yet lightweight, with Tampermonkey-inspired functionality.","archived":false,"fork":false,"pushed_at":"2026-04-15T04:02:51.000Z","size":22561,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T06:13:41.644Z","etag":null,"topics":["chrome-extension","javascript","manifest-v3","tampermonkey","userscript-manager"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SysAdminDoc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-18T18:40:04.000Z","updated_at":"2026-04-15T04:02:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SysAdminDoc/ScriptVault","commit_stats":null,"previous_names":["sysadmindoc/espressomonkey","sysadmindoc/scriptvault"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/SysAdminDoc/ScriptVault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FScriptVault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FScriptVault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FScriptVault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FScriptVault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SysAdminDoc","download_url":"https://codeload.github.com/SysAdminDoc/ScriptVault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FScriptVault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32273223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-extension","javascript","manifest-v3","tampermonkey","userscript-manager"],"created_at":"2026-04-04T22:03:40.627Z","updated_at":"2026-04-25T19:01:54.818Z","avatar_url":"https://github.com/SysAdminDoc.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- codex-branding:start --\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"icon.png\" width=\"128\" alt=\"Script Vault\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Version\" src=\"https://img.shields.io/badge/version-2.3.0-58A6FF?style=for-the-badge\"\u003e\n  \u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-4ade80?style=for-the-badge\"\u003e\n  \u003cimg alt=\"Platform\" src=\"https://img.shields.io/badge/platform-Chrome%20Extension-58A6FF?style=for-the-badge\"\u003e\n\u003c/p\u003e\n\u003c!-- codex-branding:end --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/ScriptVault-192x192.png\" alt=\"ScriptVault\" width=\"128\" height=\"128\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eScriptVault\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA powerful, open-source userscript manager built on Chrome Manifest V3\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/version-2.0.2-22c55e?style=flat-square\" alt=\"Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/manifest-v3-60a5fa?style=flat-square\" alt=\"Manifest V3\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-orange?style=flat-square\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/chrome-120%2B-blue?style=flat-square\" alt=\"Chrome 120+\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://chromewebstore.google.com/detail/scriptvault/jlhdbkeijcbgnonpfkfkkkhfmbeejkgh\"\u003eChrome Web Store\u003c/a\u003e \u0026bull;\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e \u0026bull;\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e \u0026bull;\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e \u0026bull;\n  \u003ca href=\"#security-model\"\u003eSecurity\u003c/a\u003e \u0026bull;\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Features\n\n### GM API \u0026mdash; 35+ Functions\n\nFull Greasemonkey/Tampermonkey API compatibility with promise-based `GM.*` async variants.\n\n| Storage | Network | UI | Utilities |\n|---------|---------|-----|-----------|\n| `GM_getValue` | `GM_xmlhttpRequest` | `GM_addStyle` | `GM_info` |\n| `GM_setValue` | `GM_download` | `GM_notification` | `GM_log` |\n| `GM_deleteValue` | `GM_webRequest` | `GM_registerMenuCommand` | `GM_setClipboard` |\n| `GM_listValues` | | `GM_unregisterMenuCommand` | `GM_openInTab` |\n| `GM_getValues` | | `GM_getMenuCommands` | `GM_getResourceText` |\n| `GM_setValues` | | `GM_addElement` | `GM_getResourceURL` |\n| `GM_deleteValues` | `GM_head` | `GM_loadScript` | `GM_cookie` |\n| `GM_addValueChangeListener` | | `GM_audio` | `GM_focusTab` |\n| `GM_removeValueChangeListener` | | | `GM_closeTab` |\n\nPlus `GM_getTab`, `GM_saveTab`, `GM_getTabs` for cross-tab state, `window.close`, `window.focus`, `window.onurlchange` grants, `@top-level-await`, `@delay`, and `@nodownload` support.\n\n### Script Management\n\n- **Auto-detect installation** \u0026mdash; Navigate to any `.user.js` URL\n- **One-click toggle** \u0026mdash; Enable/disable scripts individually or globally\n- **Auto-updates** \u0026mdash; Configurable update intervals with notifications\n- **Per-script update check** \u0026mdash; Check and apply updates for individual scripts inline\n- **Version tracking** \u0026mdash; Installed vs. available version comparison\n- **Tags \u0026 search** \u0026mdash; Organize and filter scripts by name, description, or metadata\n- **Popup quick-edit** \u0026mdash; Click any script in the toolbar popup to jump straight into the editor\n- **Find Scripts** \u0026mdash; Search and install userscripts from Greasy Fork and other sources directly in the dashboard\n- **Bulk operations** \u0026mdash; Select multiple scripts to enable, disable, update, reset, or delete with progress tracking\n- **Per-script export** \u0026mdash; Export individual scripts as `.user.js` files\n- **Script templates** \u0026mdash; 6 starter templates (blank, page modifier, CSS injector, API interceptor, SPA script, cross-site request)\n- **Version rollback** \u0026mdash; Auto-saves last 3 versions on update; one-click rollback from info panel\n- **Storage quota monitor** \u0026mdash; Visual quota bar with warning when approaching Chrome's 10MB limit\n- **Tag filtering** \u0026mdash; Filter scripts by `@tag` metadata in the dashboard dropdown\n- **Drag-and-drop install** \u0026mdash; Drop `.user.js` or `.zip` files onto the dashboard to install\n- **Shift+click multi-select** \u0026mdash; Select ranges of scripts with Shift+click\n- **Library browser** \u0026mdash; Search and add CDN libraries (`@require`) from cdnjs directly in the editor\n- **Advanced filters** \u0026mdash; Filter scripts by grant type, error status, update URL, scope breadth, or tags\n- **Code snippets** \u0026mdash; Insert GM API templates directly from the editor toolbar\n- **Keyboard shortcuts** \u0026mdash; Ctrl+N new, Alt+1-5 switch tabs, Ctrl+W close tab, Ctrl+Tab cycle tabs\n- **Script pinning** \u0026mdash; Pin favorite scripts to the top of the list\n- **Pattern tester** \u0026mdash; Test any URL to see which scripts would run on it\n- **Activity log** \u0026mdash; Timestamped log of all installs, updates, and errors\n- **Script health** \u0026mdash; Visual indicators for scripts with errors or stale updates\n- **Tampermonkey import** \u0026mdash; Import from Tampermonkey's `.txt` backup format\n- **Batch URL install** \u0026mdash; Paste multiple `.user.js` URLs to install at once\n- **Script notes** \u0026mdash; Personal notes per script, saved with settings\n- **Version diff view** \u0026mdash; Compare any previous version against current code\n- **Script folders** \u0026mdash; Organize scripts into color-coded folders with drag-and-drop\n- **Workspaces** \u0026mdash; Named snapshots of enabled/disabled script states for quick context switching\n- **Command palette** \u0026mdash; Ctrl+K to fuzzy-search actions, scripts, and settings\n- **Execution profiling** \u0026mdash; Per-script timing stats with color-coded performance badges\n- **Performance budgets** \u0026mdash; Configurable time budget per script with visual over-budget indicators\n- **Column visibility** \u0026mdash; Toggle which columns appear in the script table\n- **Full-text search** \u0026mdash; Prefix with `code:` to search inside script source code\n- **Copy install URL** \u0026mdash; One-click clipboard copy of script download/update URL\n\n### Advanced URL Matching\n\n- Full `@match`, `@include`, `@exclude`, `@exclude-match` support\n- **User overrides** \u0026mdash; Add custom match patterns without editing script code\n- **Per-pattern toggles** \u0026mdash; Disable individual original patterns per-script\n- Glob and regex pattern support\n\n### Cloud Sync\n\nSync scripts across devices with 5 providers:\n\n| Provider | Method |\n|----------|--------|\n| WebDAV | Self-hosted or any WebDAV server |\n| Google Drive | OAuth2 integration |\n| Dropbox | App folder sync |\n| OneDrive | Microsoft account integration |\n| Browser Sync | Chrome's built-in sync |\n\n### Monaco Editor\n\n- **Monaco Editor** \u0026mdash; Same editor that powers VS Code, loaded in a sandboxed iframe\n- **Tabbed editing** \u0026mdash; Open multiple scripts simultaneously with browser-style tabs (middle-click to close)\n- **Unsaved indicators** \u0026mdash; Visual dot on tabs with pending changes\n- **4 editor themes** \u0026mdash; Dark, Light, Catppuccin Mocha, OLED\n- **Status bar** \u0026mdash; Line count and cursor position display\n- **IntelliSense** \u0026mdash; Autocomplete for GM API functions and `@metadata` directives\n- Code folding, bracket matching, bracket pair colorization, auto-close\n- Search \u0026 replace (`Ctrl+F` / `Ctrl+H`)\n- Real-time userscript metadata linting\n- **Code beautifier** \u0026mdash; One-click indentation normalization\n- **Snippet insert** \u0026mdash; 7 GM API code templates from the toolbar\n- Open in vscode.dev for external editing\n\n### DevTools Panel\n\n- **Network inspector** \u0026mdash; View all GM_xmlhttpRequest + fetch/XHR/WebSocket/sendBeacon calls from userscripts\n- **Execution profiler** \u0026mdash; See run count, avg/total time, and errors per script\n- **HAR export** \u0026mdash; Export network log in standard HAR format\n- Auto-refreshes every 3 seconds\n\n### Side Panel\n\n- **Persistent companion panel** \u0026mdash; Always visible alongside the active page (Chrome 114+)\n- Shows scripts running on the current page with toggles, timing badges, and error dots\n- Live updates on tab navigation\n- Quick access to dashboard and script creation\n\n### Script Signing (Ed25519)\n\n- **Cryptographic signing** \u0026mdash; Sign scripts with your Ed25519 keypair\n- **Signature verification** \u0026mdash; Verify integrity of installed scripts\n- **Trust store** \u0026mdash; Manage trusted author public keys\n- `@signature` metadata tag embedded in script header\n\n### Static Analysis\n\n- **AST-based analyzer** \u0026mdash; 31 risk pattern detectors using Acorn parser\n- **Zero false positives** \u0026mdash; AST walk ignores comments and strings\n- **Risk scoring** \u0026mdash; Color-coded risk level (minimal/low/medium/high)\n- Categories: execution, data access, network, fingerprinting, obfuscation, mining, DOM hijacking\n- Shown on install page before script installation\n\n### Security\n\n- **Script isolation** \u0026mdash; `USER_SCRIPT` world via `chrome.userScripts` API, per-script worldId (Chrome 133+)\n- **Static analysis** \u0026mdash; AST-based risk scoring with 31 pattern detectors on every install\n- **Script signing** \u0026mdash; Ed25519 cryptographic signatures with trust store\n- **Blacklist system** \u0026mdash; Remote + manual blacklists\n- **Permission analysis** \u0026mdash; Visual `@grant` permission breakdown on install\n- **`@connect` validation** \u0026mdash; Restrict XHR domains\n- **SRI verification** \u0026mdash; `@require` URLs with `#sha256=` hash are verified after fetch\n- **CSP handling** \u0026mdash; Works on sites with strict Content Security Policies\n- **Zero telemetry** \u0026mdash; No phone home, all data stays local\n\n### Import \u0026 Export\n\n- **ZIP** \u0026mdash; Full backup with scripts + settings\n- **JSON** \u0026mdash; Text-based backup\n- **File import** \u0026mdash; Drag and drop `.user.js` or `.zip` files anywhere on the dashboard\n- **URL import** \u0026mdash; Install directly from any URL\n- **Clipboard import** \u0026mdash; Paste script code directly\n\n### Internationalization\n\nAvailable in 8 languages:\n\nEnglish \u0026bull; German \u0026bull; Spanish \u0026bull; French \u0026bull; Japanese \u0026bull; Portuguese \u0026bull; Russian \u0026bull; Chinese\n\n### v2.0 — New Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to expand all v2.0 features (58 major features)\u003c/strong\u003e\u003c/summary\u003e\n\n#### Discovery \u0026 Store\n- **Built-in Script Store** \u0026mdash; Search, browse, and install scripts from Greasy Fork directly in the dashboard\n- **OpenUserJS Integration** \u0026mdash; Additional script source alongside Greasy Fork\n- **Script Collections** \u0026mdash; Group scripts into installable bundles with 4 built-in packs\n- **Smart Recommendations** \u0026mdash; AI-powered script suggestions based on browsing patterns\n- **Script Sharing** \u0026mdash; QR code generation, data URL encoding, standalone HTML export\n\n#### AI \u0026 Intelligence\n- **AI Assistant** \u0026mdash; Generate scripts from natural language, explain code, security reviews, auto-fix errors\n- **Supports OpenAI, Anthropic, Ollama (local), and custom endpoints**\n- **Encrypted API key storage** (AES-256-GCM with PBKDF2)\n- **Advanced Linter** \u0026mdash; 21 rules with one-click auto-fix, hardcoded secret detection\n- **Script Diff Tool** \u0026mdash; Side-by-side and unified diff with merge support\n\n#### Monitoring \u0026 Analytics\n- **Performance Dashboard** \u0026mdash; Impact scores, sparkline trends, auto-disable recommendations\n- **Script Analytics** \u0026mdash; 90-day execution stats with canvas charts (line/bar/donut)\n- **Activity Heatmap** \u0026mdash; 365-day GitHub-style contribution grid\n- **Error Log** \u0026mdash; 500-entry structured log with JSON/CSV/text export\n- **CSP Compatibility Reporter** \u0026mdash; Track which sites block scripts with workaround suggestions\n\n#### Debugging \u0026 Development\n- **Script Debugger** \u0026mdash; Per-script console capture, live reload, variable inspector, error timeline\n- **DevTools Waterfall** \u0026mdash; Canvas-based network timeline with request body inspector\n- **Visual Pattern Builder** \u0026mdash; Construct @match patterns by decomposing URLs\n- **30+ Code Snippets** \u0026mdash; Searchable library across 8 categories with editor integration\n- **Custom Templates** \u0026mdash; Save/share script templates with variable substitution wizard\n\n#### UX \u0026 Customization\n- **Card View** \u0026mdash; Grid layout alternative with site favicons and status indicators\n- **10 Theme Presets** \u0026mdash; Dark, Light, Catppuccin, OLED, Nord, Dracula, Solarized, Monokai, Gruvbox\n- **Custom Theme Editor** \u0026mdash; 21 CSS variable pickers with live preview and import/export\n- **Keyboard Navigation** \u0026mdash; Full keyboard-first nav with optional Vim keybindings\n- **Onboarding Wizard** \u0026mdash; 5-step welcome flow with Tampermonkey import\n- **What's New Modal** \u0026mdash; Changelog shown once per version update\n- **Gamification** \u0026mdash; 31 achievements, streaks, user levels, shareable profile cards\n\n#### Sync \u0026 Backup\n- **Zero-Config Cloud Sync** \u0026mdash; One-click Google Drive sync via chrome.identity\n- **GitHub Gist Integration** \u0026mdash; Import/export/sync scripts with GitHub Gists\n- **Automated Backups** \u0026mdash; Scheduled daily/weekly backups with configurable retention\n- **Multi-Profile Support** \u0026mdash; Different script configurations for different contexts\n- **Violentmonkey/Greasemonkey Import** \u0026mdash; Import from VM JSON and GM4 backup formats\n\n#### Platform \u0026 Architecture\n- **UserStyles/CSS Support** \u0026mdash; `.user.css` files with variable editor, Stylus import\n- **Script Chaining** \u0026mdash; Visual pipeline builder for sequential script execution\n- **npm Package Resolution** \u0026mdash; `@require npm:lodash` with CDN fallback chain\n- **Script Scheduling** \u0026mdash; Time/day/date-based execution with visual picker\n- **Public Extension API** \u0026mdash; External message API with rate limiting and webhooks\n- **Firefox Compatibility Layer** \u0026mdash; Polyfills for cross-browser v2.0 module support\n- **Lazy Module Loading** \u0026mdash; Dashboard loads 7 eager scripts, defers 30+ until needed\n- **Automatic Migration** \u0026mdash; Seamless v1.x → v2.0 data migration\n- **Storage Quota Manager** \u0026mdash; Auto-cleanup when approaching Chrome's 10MB limit\n\n#### Quality \u0026 Testing\n- **159 Unit Tests** \u0026mdash; Vitest suite covering parser, utilities, versions, analyzer, network log\n- **JSDoc Type Annotations** \u0026mdash; @ts-check compatible on critical functions\n- **esbuild Build System** \u0026mdash; Modern bundler with minification and source maps\n- **Accessibility (WCAG 2.1 AA)** \u0026mdash; ARIA labels, focus trapping, high contrast, reduced motion\n\n\u003c/details\u003e\n\n---\n\n## Installation\n\n### From Source (Developer Mode)\n\n1. Clone or download this repository:\n   ```bash\n   git clone https://github.com/SysAdminDoc/ScriptVault.git\n   cd ScriptVault\n   ```\n\n2. Open Chrome and navigate to `chrome://extensions`\n\n3. Enable **Developer mode** (toggle in top right)\n\n4. Click **Load unpacked** and select the repository folder\n\n5. **Chrome 138+**: Click the extension's \"Details\" and enable **Allow User Scripts**\n\n### Chrome Web Store\n\n**[Install ScriptVault from the Chrome Web Store](https://chromewebstore.google.com/detail/scriptvault/jlhdbkeijcbgnonpfkfkkkhfmbeejkgh)**\n\n---\n\n## Quick Start\n\n### Installing Scripts\n\n| Method | Steps |\n|--------|-------|\n| **Direct URL** | Navigate to any `.user.js` URL \u0026mdash; ScriptVault auto-detects it |\n| **Find Scripts** | Dashboard \u0026rarr; click **Find Scripts** \u0026rarr; search \u0026rarr; one-click install |\n| **File drop** | Drag and drop a `.user.js` file onto the dashboard |\n| **Dashboard import** | Dashboard \u0026rarr; Utilities \u0026rarr; paste URL or code \u0026rarr; Import |\n| **Create new** | Dashboard \u0026rarr; click **+** \u0026rarr; write script \u0026rarr; `Ctrl+S` |\n\n### Managing Scripts\n\n| Action | How |\n|--------|-----|\n| Toggle | Click the switch next to any script |\n| Edit | Click the script name \u0026mdash; opens in a tab (multiple scripts at once) |\n| Update | Click the refresh icon on any script to check for updates |\n| Export | Click the download icon to export a single script |\n| Delete | Click the trash icon |\n| View storage | Click the database icon to inspect `GM_getValue` data |\n| Bulk actions | Select multiple scripts via checkboxes \u0026rarr; choose action from dropdown |\n\n### Keyboard Shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| `Alt+Shift+S` | Open ScriptVault popup |\n| `Alt+Shift+D` | Open Dashboard |\n| `Alt+Shift+E` | Toggle all scripts on/off |\n| `Ctrl+S` | Save script (in editor) |\n| `Ctrl+F` | Find in editor |\n| `Ctrl+H` | Find and replace |\n| `Ctrl+G` | Go to line |\n\n---\n\n## Supported Metadata\n\n```javascript\n// ==UserScript==\n// @name           Script Name\n// @namespace      https://example.com\n// @version        1.0.0\n// @description    What the script does\n// @author         Your Name\n// @match          https://example.com/*\n// @include        http://example.org/*\n// @exclude        *://example.com/private/*\n// @exclude-match  *://admin.example.com/*\n// @grant          GM_getValue\n// @grant          GM_setValue\n// @grant          GM_xmlhttpRequest\n// @require        https://code.jquery.com/jquery-3.6.0.min.js\n// @resource       myCSS https://example.com/style.css\n// @icon           https://example.com/icon.png\n// @run-at         document-end\n// @connect        api.example.com\n// @downloadURL    https://example.com/script.user.js\n// @updateURL      https://example.com/script.meta.js\n// @supportURL     https://github.com/user/repo/issues\n// @homepageURL    https://github.com/user/repo\n// @license        MIT\n// @antifeature    tracking\n// @tag            productivity\n// @priority       10\n// @inject-into    auto\n// @compatible     chrome\n// @incompatible   firefox Needs polyfill\n// @contributionURL https://example.com/donate\n// @webRequest     {\"selector\":\"*ad*\",\"action\":\"cancel\"}\n// @top-level-await\n// ==/UserScript==\n```\n\n### @run-at Options\n\n| Value | Timing |\n|-------|--------|\n| `document-start` | Before DOM loads |\n| `document-body` | When `\u003cbody\u003e` exists |\n| `document-end` | When DOM is complete (default) |\n| `document-idle` | When page is fully loaded |\n| `context-menu` | On right-click context menu |\n\n---\n\n## Security Model\n\n| Layer | Protection |\n|-------|------------|\n| Script isolation | Scripts run in isolated `USER_SCRIPT` world via `chrome.userScripts` API |\n| Permission transparency | Installation page shows all requested `@grant` permissions |\n| Network restrictions | `@connect` domains are validated before XHR requests |\n| Blacklist protection | Remote + manual blacklists block known malicious scripts |\n| Zero telemetry | No data collection, no phone home \u0026mdash; everything stays local |\n\n---\n\n## Comparison\n\n| Feature | ScriptVault | Tampermonkey | ViolentMonkey |\n|---------|:-----------:|:------------:|:-------------:|\n| Manifest V3 | Yes | Yes | Yes |\n| Full GM API (35+) | Yes | Yes | Yes |\n| Monaco Editor (VS Code) | Yes | No | No |\n| DevTools Panel | Yes | No | No |\n| Side Panel | Yes | No | No |\n| Script Signing (Ed25519) | Yes | No | No |\n| AST Static Analysis (31 detectors) | Yes | No | No |\n| Cloud Sync (4 providers) | Yes | Yes | Yes |\n| 3-Way Sync Merge | Yes | No | No |\n| Tabbed Multi-Script Editor | Yes | No | No |\n| Built-in Script Search | Yes | No | No |\n| Script Templates | 6 | No | No |\n| Version Rollback | Yes (3) | No | No |\n| CDN Library Browser | Yes | No | No |\n| Workspaces | Yes | No | No |\n| Script Folders | Yes | No | No |\n| Command Palette (Ctrl+K) | Yes | No | No |\n| Drag-and-Drop Install | Yes | Yes | No |\n| Tag Filtering | Yes | No | No |\n| Script Pinning | Yes | No | No |\n| Pattern Tester | Yes | No | No |\n| Version Diff View | Yes | No | No |\n| Network Request Log + HAR | Yes | No | No |\n| Execution Profiling | Yes | No | No |\n| Performance Budgets | Yes | No | No |\n| Storage Quota Monitor | Yes | No | No |\n| Bulk Operations w/ Progress | Yes | Yes | No |\n| 4 UI Themes | Yes | No | Yes |\n| Open Source | MIT | No | Yes |\n| Free | Yes | Freemium | Yes |\n\n---\n\n## Project Structure\n\n```\nScriptVault/\n├── manifest.json              # Chrome MV3 manifest\n├── manifest-firefox.json      # Firefox MV3 manifest\n├── background.js              # Service worker (built from source modules)\n├── background.core.js         # Main service worker logic (~5500 lines)\n├── content.js                 # Content script bridge (USER_SCRIPT \u003c-\u003e background)\n├── offscreen.html/js          # Offscreen document (AST analysis, 3-way merge)\n├── build-background.sh        # Concatenates modules into background.js\n├── build.sh                   # Packages CWS-ready ZIP\n├── bg/\n│   ├── analyzer.js            # AST-based static analysis engine\n│   ├── netlog.js              # Network request logger\n│   ├── signing.js             # Ed25519 script signing\n│   └── workspaces.js          # Workspace state manager\n├── modules/\n│   ├── storage.js             # Settings, scripts, values, folders\n│   ├── sync-providers.js      # WebDAV, Google Drive, Dropbox, OneDrive\n│   ├── resources.js           # @resource/@require cache\n│   ├── xhr.js                 # XHR abort tracking\n│   └── i18n.js                # Inline translations (8 languages)\n├── shared/\n│   └── utils.js               # escapeHtml, generateId, sanitizeUrl, formatBytes\n├── pages/\n│   ├── dashboard.html/js      # Main dashboard + Monaco editor (~5000 lines)\n│   ├── popup.html/js          # Toolbar popup\n│   ├── install.html/js        # Script installation page\n│   ├── sidepanel.html/js      # Persistent side panel (Chrome 114+)\n│   ├── devtools.html          # DevTools registration\n│   ├── devtools-panel.html/js # DevTools network + profiling UI\n│   ├── editor-sandbox.html    # Sandboxed Monaco editor iframe\n│   └── monaco-adapter.js      # CodeMirror-to-Monaco API bridge\n├── lib/\n│   ├── codemirror/            # CodeMirror (lint only)\n│   ├── acorn.min.js           # Acorn JS parser for AST analysis\n│   ├── diff.min.js            # diff.js for 3-way merge\n│   └── fflate.js              # ZIP compression\n├── images/                    # Extension icons\n└── _locales/                  # 8 language translations\n```\n\n---\n\n## Contributing\n\nContributions are welcome. Feel free to open a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/my-feature`)\n3. Commit your changes\n4. Push to the branch (`git push origin feature/my-feature`)\n5. Open a Pull Request\n\n---\n\n## License\n\nMIT License \u0026mdash; see [LICENSE](LICENSE) for details.\n\n---\n\n## Acknowledgments\n\n- [Tampermonkey](https://www.tampermonkey.net/) \u0026mdash; Setting the standard in userscript management\n- [ViolentMonkey](https://violentmonkey.github.io/) \u0026mdash; Manifest V3 inspiration\n- [Monaco Editor](https://microsoft.github.io/monaco-editor/) \u0026mdash; The VS Code editor powering the script editor\n- [Acorn](https://github.com/acornjs/acorn) \u0026mdash; JavaScript parser for AST-based static analysis\n- [jsdiff](https://github.com/kpdecker/jsdiff) \u0026mdash; Text diffing for 3-way sync merge\n- [fflate](https://github.com/101arrowz/fflate) \u0026mdash; Fast ZIP compression\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eScriptVault v1.7.8\u003c/strong\u003e\u003cbr\u003e\n  \u003cem\u003eYour scripts, your rules \u0026mdash; locked down and loaded\u003c/em\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysadmindoc%2Fscriptvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsysadmindoc%2Fscriptvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysadmindoc%2Fscriptvault/lists"}