Oleksandr Kozachuk 03c5dadccb feat: WASM web app (browser LesS/KEY) backed by the hel core
Run the real hel core in the browser via WebAssembly, replacing the plain-JS
ooke.github.io/sk reimplementation so the web and the CLI share one generator.

- hel core: new storage module (native fs / wasm localStorage) backs
  init/source/dump/correct; the pipe and pb branches are gated out of wasm;
  the wasm editor is completed (EditorRef) and its password prompt no longer
  blocks the single JS thread (synchronous hel_get_password instead of a
  thread::sleep poll).
- helwasm: hel_load_script for bulk import, a panic hook in hel_init, dropped
  the ok_add / web-sys leftovers; build.sh runs wasm-bindgen into a committed
  pkg/ so GitHub Pages can serve the static dir with no CI.
- UI: rewritten index.html + style.css in the kaizenkodo.org style — responsive,
  masked-but-copyable passwords with click-to-reveal, a quick-generate card plus
  a full command console, localStorage persistence, and paste import/export.
2026-06-08 18:43:19 +02:00
2022-11-27 14:03:00 +00:00
2022-12-11 10:05:47 +00:00

Hel: password generator and manager

Hel is a password manager which newer stores the passwords but generates them according to the rules from the master password and the given name of the password.

Commands & behavior

  • ls <regex> matches case-insensitively (name, full line, and comment). Add an inline (?-i) to the pattern to force case-sensitive.
  • source <file|command|> echoes source <target> so you see what was loaded.
  • save prints a diff against the previously loaded/saved snapshot before persisting: < line = removed, > line = added — so an accidental removal is visible on the save that would persist it. (Set-based, so dump ordering is irrelevant.) The baseline is seeded on startup load and refreshed on each save.

Persistence

Hel never stores secrets — only the entry catalog (names + generation rules), which is a script of add … lines. That script can be saved to / loaded from a file, an external command, or a Notion page.

set: configuration from ~/.helrc

Instead of environment variables, settings can live in the init script via set <key> <value>:

set hel_dump |hel store notion:somenote
set hel_notion_token secret_xxxxxxxx
source hel load notion:somenote|
  • Keys are case-insensitive. A set is never written to the shell history, and its value is redacted in any echo (it may be a secret token).
  • Lookups check the set map first, then the matching UPPERCASE environment variable. So set hel_dump … overrides $HEL_DUMP, etc.
  • When hel runs a pipe/source command, the whole set map is exported (uppercased) into that child process — that is how set hel_notion_token … reaches a spawned hel store / hel load.

Notion backend

The hel binary doubles as the Notion backend through two non-interactive subcommands, designed to drop into the existing pipe plumbing:

  • hel store notion:<ref> — read the dump from stdin and write it into the Notion page (one code block, replaced in place).
  • hel load notion:<ref> — fetch the page and print the dump to stdout.

<ref> is either a Notion page id (UUID) or a page title (resolved by search). The integration token comes from HEL_NOTION_TOKEN (or set hel_notion_token …), and the target page must be shared with that integration.

Wire it up so save pushes to Notion and startup pulls from it:

# ~/.helrc
set hel_notion_token secret_xxxxxxxx
set hel_dump |hel store notion:somenote
source hel load notion:somenote|

(Equivalently, export HEL_DUMP="|hel store notion:somenote" and export HEL_NOTION_TOKEN=… in the shell.)

S
Description
Hel is a password manager which newer stores the passwords but generates them according to the rules from the master password and the given name of the password.
Readme 6.4 MiB
Languages
Rust 71.2%
HTML 14.5%
CSS 8.3%
JavaScript 5.7%
Shell 0.2%