Files
containerSite/options/options.html
sal d6dabb2646 Add GamepadAPI, WebGL readPixels noise, auto-prune, import/export, badge
New fingerprint vectors:
- Gamepad API: getGamepads() returns empty (prevents controller fingerprinting)
- WebGL readPixels: seeded pixel noise on framebuffer reads

New features:
- Auto-prune: configurable automatic removal of inactive containers
- Import/export: backup and restore all settings from options page
- Toolbar badge: shows active container count
- CHANGELOG.md: version history

Bumped to v0.5.0 with 20 spoofed fingerprint vectors.
2026-03-04 21:08:45 -06:00

91 lines
2.8 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ContainSite Options</title>
<link rel="stylesheet" href="options.css">
</head>
<body>
<div class="wrap">
<header>
<h1>ContainSite</h1>
<span id="version"></span>
</header>
<main>
<section>
<h2>Fingerprint Vectors</h2>
<p class="desc">Control which fingerprint vectors are spoofed. Changes take effect on next page load.</p>
<div id="vector-grid"></div>
</section>
<section>
<h2>Domain Whitelist</h2>
<p class="desc">Whitelisted domains are never containerized or fingerprint-spoofed.</p>
<div class="whitelist-input">
<input type="text" id="wl-input" placeholder="example.com" spellcheck="false">
<button id="wl-add" class="btn">Add</button>
</div>
<div id="wl-list"></div>
</section>
<section>
<h2>Containers</h2>
<p class="desc">All containers managed by ContainSite.</p>
<table id="container-table">
<thead>
<tr>
<th></th>
<th>Domain</th>
<th>Spoofing</th>
<th></th>
</tr>
</thead>
<tbody id="container-tbody"></tbody>
</table>
<div id="no-containers" class="empty" hidden>No containers yet. Browse a website to create one.</div>
</section>
<section>
<h2>Auto-Prune</h2>
<p class="desc">Automatically remove inactive containers with no open tabs after a set number of days.</p>
<div class="auto-prune-row">
<label class="toggle-label">
<input type="checkbox" id="auto-prune-enabled" class="toggle">
<span>Enable auto-prune</span>
</label>
<div class="prune-days">
<span>after</span>
<input type="number" id="auto-prune-days" min="1" max="365" value="30" class="days-input">
<span>days</span>
</div>
</div>
</section>
<section>
<h2>Import / Export</h2>
<p class="desc">Backup or restore all settings, seeds, and whitelist.</p>
<div class="bulk-row">
<button id="export-btn" class="btn">Export Settings</button>
<button id="import-btn" class="btn secondary">Import Settings</button>
<input type="file" id="import-file" accept=".json" hidden>
</div>
</section>
<section>
<h2>Bulk Actions</h2>
<div class="bulk">
<button id="regen-all" class="btn">Regenerate All Fingerprints</button>
<div class="bulk-row">
<button id="prune" class="btn secondary">Prune Unused</button>
<button id="reset" class="btn danger">Reset All</button>
</div>
</div>
</section>
</main>
</div>
<script src="options.js"></script>
</body>
</html>