diff --git a/helwasm/assets/fonts/Inter-400.woff2 b/helwasm/assets/fonts/Inter-400.woff2 new file mode 100644 index 0000000..91dc3e8 Binary files /dev/null and b/helwasm/assets/fonts/Inter-400.woff2 differ diff --git a/helwasm/assets/fonts/Inter-500.woff2 b/helwasm/assets/fonts/Inter-500.woff2 new file mode 100644 index 0000000..91dc3e8 Binary files /dev/null and b/helwasm/assets/fonts/Inter-500.woff2 differ diff --git a/helwasm/assets/fonts/Inter-600.woff2 b/helwasm/assets/fonts/Inter-600.woff2 new file mode 100644 index 0000000..91dc3e8 Binary files /dev/null and b/helwasm/assets/fonts/Inter-600.woff2 differ diff --git a/helwasm/assets/fonts/JetBrainsMono-400.woff2 b/helwasm/assets/fonts/JetBrainsMono-400.woff2 new file mode 100644 index 0000000..2ca6ac6 Binary files /dev/null and b/helwasm/assets/fonts/JetBrainsMono-400.woff2 differ diff --git a/helwasm/assets/fonts/JetBrainsMono-500.woff2 b/helwasm/assets/fonts/JetBrainsMono-500.woff2 new file mode 100644 index 0000000..2ca6ac6 Binary files /dev/null and b/helwasm/assets/fonts/JetBrainsMono-500.woff2 differ diff --git a/helwasm/assets/fonts/Poppins-600.woff2 b/helwasm/assets/fonts/Poppins-600.woff2 new file mode 100644 index 0000000..e721556 Binary files /dev/null and b/helwasm/assets/fonts/Poppins-600.woff2 differ diff --git a/helwasm/assets/fonts/Poppins-700.woff2 b/helwasm/assets/fonts/Poppins-700.woff2 new file mode 100644 index 0000000..568b553 Binary files /dev/null and b/helwasm/assets/fonts/Poppins-700.woff2 differ diff --git a/helwasm/assets/fonts/text-security-disc.woff2 b/helwasm/assets/fonts/text-security-disc.woff2 new file mode 100644 index 0000000..658e00d Binary files /dev/null and b/helwasm/assets/fonts/text-security-disc.woff2 differ diff --git a/helwasm/index.html b/helwasm/index.html index 50a00ae..0a48e59 100644 --- a/helwasm/index.html +++ b/helwasm/index.html @@ -5,17 +5,13 @@ LesS/KEY — password generator + - - - + @@ -49,6 +45,13 @@ master always produce the same password — so there is nothing secret to leak, sync, or back up, and you only ever remember one phrase.

+

+ Private by design. Everything happens on your device. Your master + password and the passwords it generates are never sent anywhere, never stored on a + server, and never logged — there is no account, no sync, and no tracking. The app is a + single page plus a WebAssembly module, with its fonts bundled in; once it has loaded, + it makes no network requests at all. +

Quick password

@@ -62,8 +65,9 @@

Console

The full command line — type help for every command. Your list of - names lives only in this browser (localStorage); use Export / - Import to move it (e.g. to and from a Notion page). + names lives only in this browser (localStorage), never on a server; use + Export / Import to move it yourself (e.g. to and + from a Notion page).

@@ -77,7 +81,7 @@

Runs the real hel engine compiled to WebAssembly — the exact same generator as the - command-line tool. Nothing is ever sent to a server. + command-line tool. No server, no account, no tracking — nothing to leak.

@@ -88,8 +92,9 @@

Quick password

Deterministic — the same name + master always regenerate the same - password. The result updates live as you type. Nothing is stored unless - you press Store. + password. The result updates live as you type, entirely in your browser — + your master and the generated password never leave this device. Nothing is + stored unless you press Store.

@@ -132,6 +137,7 @@
Runs the real hel core compiled to WebAssembly — same generator as the CLI. + Everything runs in your browser; nothing you type is ever sent to a server.
@@ -470,7 +476,7 @@ bg.addEventListener("click", (e) => e.target === bg && bg.classList.remove("show")) ); - appendLine('# LesS/KEY ready — runs the real hel core via WASM. Try: help'); + appendLine('# LesS/KEY ready — runs entirely in your browser (WASM); nothing is sent to a server. Try: help'); } boot(); diff --git a/helwasm/style.css b/helwasm/style.css index 0c0f06e..325ab5e 100644 --- a/helwasm/style.css +++ b/helwasm/style.css @@ -20,14 +20,18 @@ --radius: 16px; } +/* Self-hosted fonts — bundled with the app so it makes NO external requests and + talks to no third party (no Google Fonts, no CDN). Latin subset only. */ +@font-face { font-family:"Poppins"; font-style:normal; font-weight:600; font-display:swap; src:url("./assets/fonts/Poppins-600.woff2") format("woff2"); } +@font-face { font-family:"Poppins"; font-style:normal; font-weight:700; font-display:swap; src:url("./assets/fonts/Poppins-700.woff2") format("woff2"); } +@font-face { font-family:"Inter"; font-style:normal; font-weight:400; font-display:swap; src:url("./assets/fonts/Inter-400.woff2") format("woff2"); } +@font-face { font-family:"Inter"; font-style:normal; font-weight:500; font-display:swap; src:url("./assets/fonts/Inter-500.woff2") format("woff2"); } +@font-face { font-family:"Inter"; font-style:normal; font-weight:600; font-display:swap; src:url("./assets/fonts/Inter-600.woff2") format("woff2"); } +@font-face { font-family:"JetBrains Mono"; font-style:normal; font-weight:400; font-display:swap; src:url("./assets/fonts/JetBrainsMono-400.woff2") format("woff2"); } +@font-face { font-family:"JetBrains Mono"; font-style:normal; font-weight:500; font-display:swap; src:url("./assets/fonts/JetBrainsMono-500.woff2") format("woff2"); } /* Masked-secret font: dots glyphs so the real chars stay selectable/copyable. WebKit/Blink use -webkit-text-security; Firefox falls back to this font. */ -@font-face { - font-family: "text-security-disc"; - src: url("https://cdn.jsdelivr.net/npm/text-security/dist/text-security-disc.woff2") format("woff2"), - url("https://cdn.jsdelivr.net/npm/text-security/dist/text-security-disc.woff") format("woff"); - font-display: swap; -} +@font-face { font-family:"text-security-disc"; font-display:swap; src:url("./assets/fonts/text-security-disc.woff2") format("woff2"); } * { margin: 0; padding: 0; box-sizing: border-box; } html { height: 100%; } @@ -115,6 +119,13 @@ main { padding: clamp(20px, 3vw, 34px) 0 56px; display: grid; gap: clamp(16px, 2 .about-grid h4 { font-family: var(--disp); font-weight: 600; font-size: 14px; color: var(--ink); margin-bottom: 5px; } .about-grid p { font-size: 13.5px; } .about-note { font-family: var(--mono); font-size: 12px; margin-top: 10px; } +/* Privacy callout — make the "no server" promise visually prominent. */ +.about-privacy { + margin: 6px 0 2px; padding: 13px 16px; border-radius: 12px; + border: 1px solid var(--line); border-left: 3px solid var(--ocean); + background: rgba(27, 65, 97, 0.045); color: var(--ink); font-size: 14.5px; max-width: 76ch; +} +.about-privacy strong { color: var(--ocean); } @media (max-width: 680px) { .about-grid { grid-template-columns: 1fr; } } /* Cards */