Replace template index.html
Browse files- index.html +87 -17
index.html
CHANGED
|
@@ -1,19 +1,89 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 6 |
+
<title>Sludge — deceptive design patterns in UI trees</title>
|
| 7 |
+
<meta name="description" content="Detect deceptive design patterns in a UI tree and see which provisions they may implicate. Runs entirely in your browser. Not a legality determination.">
|
| 8 |
+
<link rel="stylesheet" href="style.css">
|
| 9 |
+
<script src="https://cdn.jsdelivr.net/npm/onnxruntime-web@1.19.2/dist/ort.min.js"></script>
|
| 10 |
+
</head>
|
| 11 |
+
<body>
|
| 12 |
+
<div class="wrap">
|
| 13 |
+
|
| 14 |
+
<header>
|
| 15 |
+
<h1>Sludge<span class="dot">.</span></h1>
|
| 16 |
+
<p class="tagline">Deceptive design patterns in <strong>UI trees</strong>, mapped to the
|
| 17 |
+
provisions they may implicate — running entirely in your browser.</p>
|
| 18 |
+
</header>
|
| 19 |
+
|
| 20 |
+
<div class="banner">
|
| 21 |
+
<strong>Sludge does not determine legality.</strong>
|
| 22 |
+
<p>It reports provisions that <em>may</em> be implicated and the screen elements that are the
|
| 23 |
+
factual basis for looking at them. Whether a provision is actually engaged depends on facts
|
| 24 |
+
no UI tree contains — purposes, legal basis, audience, the rest of the journey, prior
|
| 25 |
+
consent, sector rules — and is an assessment for a qualified human.</p>
|
| 26 |
+
<p>There is no feature here that labels a named company's product unlawful, and there will not
|
| 27 |
+
be one. This is a tool for reviewing interfaces, not for publishing verdicts about them.</p>
|
| 28 |
+
<p><strong>Nothing you paste leaves this page.</strong> The model runs locally in your browser;
|
| 29 |
+
there is no server to send it to. It is a 48 MB one-time download, cached afterwards —
|
| 30 |
+
full precision, because int8 quantisation was measured to flip about a quarter of this
|
| 31 |
+
model's decisions.</p>
|
| 32 |
+
</div>
|
| 33 |
+
|
| 34 |
+
<div class="grid">
|
| 35 |
+
<div class="card">
|
| 36 |
+
<label class="fld" for="input">UI tree (JSON) or HTML fragment</label>
|
| 37 |
+
<textarea id="input" spellcheck="false" placeholder="Paste a UI tree as JSON, or an HTML fragment — or press “Load example” to generate a counterfactual pair."></textarea>
|
| 38 |
+
<button id="run" disabled>Analyse</button>
|
| 39 |
+
<div class="status" id="status">starting…</div>
|
| 40 |
+
<div class="bar"><i id="bar"></i></div>
|
| 41 |
+
</div>
|
| 42 |
+
|
| 43 |
+
<div class="card">
|
| 44 |
+
<label class="fld" for="profile">Profile — what a false positive costs you</label>
|
| 45 |
+
<select id="profile">
|
| 46 |
+
<option value="triage">triage — sweep broadly, tolerate false positives</option>
|
| 47 |
+
<option value="review" selected>review — balanced, for a design review</option>
|
| 48 |
+
<option value="audit">audit — only what it is confident of</option>
|
| 49 |
+
</select>
|
| 50 |
+
|
| 51 |
+
<label class="fld" for="juris">Jurisdiction — the provision table</label>
|
| 52 |
+
<select id="juris"></select>
|
| 53 |
+
|
| 54 |
+
<label class="fld" for="tpl">Load a counterfactual example</label>
|
| 55 |
+
<div class="row">
|
| 56 |
+
<select id="tpl"></select>
|
| 57 |
+
<select id="pat"></select>
|
| 58 |
+
</div>
|
| 59 |
+
<button id="load" class="secondary">Load example</button>
|
| 60 |
+
<div id="exnote" class="status"></div>
|
| 61 |
+
</div>
|
| 62 |
+
</div>
|
| 63 |
+
|
| 64 |
+
<div class="tabs" role="tablist">
|
| 65 |
+
<button role="tab" aria-selected="true" data-panel="p-find">Elements flagged</button>
|
| 66 |
+
<button role="tab" aria-selected="false" data-panel="p-prov">Provisions that may be implicated</button>
|
| 67 |
+
<button role="tab" aria-selected="false" data-panel="p-fix">What to change</button>
|
| 68 |
+
<button role="tab" aria-selected="false" data-panel="p-tax">Taxonomy</button>
|
| 69 |
+
<button role="tab" aria-selected="false" data-panel="p-json">JSON</button>
|
| 70 |
+
</div>
|
| 71 |
+
|
| 72 |
+
<section role="tabpanel" id="p-find"><div class="empty">Paste a tree, or load an example.</div></section>
|
| 73 |
+
<section role="tabpanel" id="p-prov" class="hidden"></section>
|
| 74 |
+
<section role="tabpanel" id="p-fix" class="hidden"></section>
|
| 75 |
+
<section role="tabpanel" id="p-tax" class="hidden"></section>
|
| 76 |
+
<section role="tabpanel" id="p-json" class="hidden"></section>
|
| 77 |
+
|
| 78 |
+
<footer>
|
| 79 |
+
<p><strong>Sludge does not determine legality.</strong> Findings are pointers for a human to
|
| 80 |
+
assess, never findings of breach. A quiet report is not a clean bill of health — it means
|
| 81 |
+
nothing crossed the threshold the chosen profile fixes.</p>
|
| 82 |
+
<p id="about"></p>
|
| 83 |
+
<p>Apache-2.0 · the provision tables are configuration, not legal advice.</p>
|
| 84 |
+
</footer>
|
| 85 |
+
|
| 86 |
+
</div>
|
| 87 |
+
<script type="module" src="app.js"></script>
|
| 88 |
+
</body>
|
| 89 |
</html>
|