Quick form now drives the one shared engine through commands only, so it and the
console give identical results (form == console).
- password hook answers only the "/" prompt, so read_master climbs and computes
every ^parent from a single root master (Req 4)
- new master in the field is authoritative via `unpass`; empty field reuses the
stored session master, so later names generate without re-typing it (Req 1/2)
- `unpass` with no name now clears ALL cached masters (real command, not a private
hook) so the form stays reproducible in the console
- result colour = root master marked correct (correct / / uncorrect /), derived
live from the engine; black otherwise (Req 3)
- Mark-correct toggle button; click the master to reveal it; honest memory-only hint
- master stays in memory only, never written to storage; only the one-way correct
hash is saved on the device
parser: bare-name forms now keep a trailing comment, and a ^-led token is never a
name, so `name ^parent` / `name MODE ^parent` link the parent instead of qpname
reading it as prefix+name (was silently mis-stored).
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.
Persist the entry catalog to a Notion page instead of an external script.
- `hel store notion:<ref>` reads the dump from stdin and writes it into a
single code block on the page; `hel load notion:<ref>` prints it back.
`<ref>` is a page id (UUID) or a page title (case-insensitive search).
Token from HEL_NOTION_TOKEN. Networking lives in helcli (ureq + serde_json);
the core lib and the wasm build are untouched. argv is dispatched before the
REPL starts, so the subcommands never read ~/.helrc or prompt for a master.
- `set <key> <value>`: runtime config (e.g. hel_dump, hel_notion_token) from
~/.helrc instead of env vars. The map is exported (uppercased) into spawned
pipe/source children, so `set hel_notion_token ...` reaches `hel store`.
Values are redacted in history.
- `ls` now matches case-insensitively.
- `source` echoes `source <target>`.
- `save` prints a `< removed` / `> added` diff against the last load/save
snapshot so removals are noticed before they persist.