From 027dcb12c30adf6a02acd50c68db0a07e41a539e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 24 Oct 2026 19:01:04 +0000 Subject: [PATCH 1/2] Add Password generator to the roadmap Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01AKV86EkDaxh9KPDPCoyHWo --- docs/README.md | 27 ++++++++++++++------------- docs/apps/password.md | 27 +++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 docs/apps/password.md diff --git a/docs/README.md b/docs/README.md index b4fce9a..16f9aca 100644 --- a/docs/README.md +++ b/docs/README.md @@ -10,19 +10,20 @@ this table is the release or the proposed place in line, not a promise that a La may not appear on the public index. **Next** is the next proposed new app, not work already under way; **Planned** is a later proposal. Future rows are ordered by build priority. -| App | Status | Purpose | -| -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [SVG](apps/svg.md) | Stable | Trace images with a Bézier pen and shapes; combine, align, group and fill with gradients. A searchable library of drawings, exported as clean SVG or PNG. | -| [JSON](apps/json.md) | Stable | Format, minify, fold and validate JSON, and fix almost-JSON. Convert it to YAML, CSV, TypeScript types or a JSON Schema. | -| [JWT](apps/jwt.md) | Stable | Decode, encode and verify JSON Web Tokens with HMAC, RSA, ECDSA and Ed25519. | -| [Codes](apps/codes.md) | Stable | QR codes for links, Wi-Fi, contacts, events and more, with your colours, shapes, logo and frame; plus Code 128, EAN-13 and UPC-A barcodes. | -| [Codec](apps/codec.md) | Stable | Convert UTF-8 text, Base64, Base64url, URL components and hex, with every byte visible. | -| [Digests](apps/digests.md) | Stable | Hash text and files with every SHA at once, check an expected digest, and compute HMAC. | -| [Time](apps/time.md) | Stable | Convert Unix timestamps and ISO dates across time zones, find a call time for people in several zones, and measure durations and ages. | -| [Diff](apps/diff.md) | Next | Compare two texts or JSON documents, with clear changes and navigation. | -| [Certs](apps/certs.md) | Planned | Inspect X.509 certificates, chains and related data. | -| [Notes](apps/notes.md) | Planned | Write Markdown and organise a small local collection of notes. | -| [Magnet](apps/magnet.md) | Planned | Inspect torrent metadata and convert infohashes and magnet links. | +| App | Status | Purpose | +| ---------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [SVG](apps/svg.md) | Stable | Trace images with a Bézier pen and shapes; combine, align, group and fill with gradients. A searchable library of drawings, exported as clean SVG or PNG. | +| [JSON](apps/json.md) | Stable | Format, minify, fold and validate JSON, and fix almost-JSON. Convert it to YAML, CSV, TypeScript types or a JSON Schema. | +| [JWT](apps/jwt.md) | Stable | Decode, encode and verify JSON Web Tokens with HMAC, RSA, ECDSA and Ed25519. | +| [Codes](apps/codes.md) | Stable | QR codes for links, Wi-Fi, contacts, events and more, with your colours, shapes, logo and frame; plus Code 128, EAN-13 and UPC-A barcodes. | +| [Codec](apps/codec.md) | Stable | Convert UTF-8 text, Base64, Base64url, URL components and hex, with every byte visible. | +| [Digests](apps/digests.md) | Stable | Hash text and files with every SHA at once, check an expected digest, and compute HMAC. | +| [Time](apps/time.md) | Stable | Convert Unix timestamps and ISO dates across time zones, find a call time for people in several zones, and measure durations and ages. | +| [Diff](apps/diff.md) | Next | Compare two texts or JSON documents, with clear changes and navigation. | +| [Certs](apps/certs.md) | Planned | Inspect X.509 certificates, chains and related data. | +| [Notes](apps/notes.md) | Planned | Write Markdown and organise a small local collection of notes. | +| [Magnet](apps/magnet.md) | Planned | Inspect torrent metadata and convert infohashes and magnet links. | +| [Password](apps/password.md) | Planned | Generate strong passwords and passphrases with your choice of length, characters and words. | ## Shared groundwork and boundaries diff --git a/docs/apps/password.md b/docs/apps/password.md new file mode 100644 index 0000000..32fd677 --- /dev/null +++ b/docs/apps/password.md @@ -0,0 +1,27 @@ +# Password + +Not built yet. Status and build order are on the [roadmap](../README.md). + +Purpose: generate strong passwords and passphrases locally, with their strength shown plainly. + +Initial scope: + +- Random passwords with a chosen length and character sets (lower, upper, digits, symbols), + an option to leave out look-alike characters, and at least one character from each chosen set. +- Passphrases from a built-in word list, with a chosen word count, separator and optional + capitals or digit. +- Entropy in bits for every result, worked out from the settings rather than guessed from the + text. +- Several results at once to pick from, each copyable, and a regenerate button. + +All randomness comes from `crypto.getRandomValues`, with rejection sampling so every character +and word is equally likely. Nothing generated is stored: settings are kept, results are not. + +Out of scope: a password manager, saving or syncing passwords, and checking passwords against +breach lists. + +## Decisions before implementation + +- Which word list ships for passphrases (EFF large list or similar) and its effect on the + bundle budget. +- Whether a strength check for a typed password belongs in the first release. From 4403c69f1f82edf39684dfc24cf8f9098e878cb5 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 24 Oct 2026 19:05:29 +0000 Subject: [PATCH 2/2] Bump happy-dom to 21.0.4 for GHSA-834v-8h66-3h79 bun audit fails CI on main: happy-dom up to 21.0.3 has a high advisory. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01AKV86EkDaxh9KPDPCoyHWo --- bun.lock | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bun.lock b/bun.lock index 5fcde7c..e870f16 100644 --- a/bun.lock +++ b/bun.lock @@ -7,7 +7,7 @@ "devDependencies": { "@axe-core/playwright": "4.13.0", "@eslint/js": "^10.0.1", - "@happy-dom/global-registrator": "^21.0.1", + "@happy-dom/global-registrator": "^21.0.4", "@playwright/test": "1.64.0", "@tools/ui": "workspace:*", "@types/bun": "^1.4.3", @@ -179,7 +179,7 @@ "@eslint/plugin-kit": ["@eslint/plugin-kit@0.7.3", "", { "dependencies": { "@eslint/core": "^1.2.1", "levn": "^0.4.1" } }, "sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q=="], - "@happy-dom/global-registrator": ["@happy-dom/global-registrator@21.0.1", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^21.0.1" } }, "sha512-wr/Rpo2cUXb9hOXdpsA3jJvite0YR+jWz3j5XNuXzzBoKpI17U4nzrPNykFu3iUNxT7WWQm/YxpW/aEqfgaZMA=="], + "@happy-dom/global-registrator": ["@happy-dom/global-registrator@21.0.4", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^21.0.4" } }, "sha512-Bbr0hW9hhDhBf3Jp0EyDlkCbFgbr0z2jd3BMKYOYW+fOkPM4Nx195GMXyCtRCGEgoNn6i09FabXrSkNFm2ONzg=="], "@humanfs/core": ["@humanfs/core@0.19.2", "", { "dependencies": { "@humanfs/types": "^0.15.0" } }, "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA=="], @@ -381,7 +381,7 @@ "globals": ["globals@17.13.0", "", {}, "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg=="], - "happy-dom": ["happy-dom@21.0.1", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-pRBs/u9fhrncyByOl58DMex0R2uAj6ZPKWIjV5j5yNGZBqLw3P6BTRhlc0DD5b/Ht4/6JYTMuE2LJhUWRC6SGw=="], + "happy-dom": ["happy-dom@21.0.4", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-tFm+GaLBgo6o0awHnvHaNoraVo27qJ+2tZEtZ+cIa08hXbeitrxAJajLI05hsUy/2/YTKcUjQYzHe5mCcraLBw=="], "hashery": ["hashery@1.5.1", "", { "dependencies": { "hookified": "^1.15.0" } }, "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ=="], diff --git a/package.json b/package.json index 1ec8f11..12deec7 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "devDependencies": { "@axe-core/playwright": "4.13.0", "@eslint/js": "^10.0.1", - "@happy-dom/global-registrator": "^21.0.1", + "@happy-dom/global-registrator": "^21.0.4", "@playwright/test": "1.64.0", "@tools/ui": "workspace:*", "@types/bun": "^1.4.3",