Commit Graph

16 Commits

Author SHA1 Message Date
Oleksandr Kozachuk 10a21d1f9d helwasm: hierarchical quick-gen, pure sugar over the engine
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).
2026-06-09 22:45:44 +02:00
Oleksandr Kozachuk f8e8a9981a help: note the S/KEY (RFC 2289) heritage + xkcd 936 memorable-words idea
The default R mode is the six-word S/KEY form. Mention it in the help command
(CLI + web console) and the web About panel, with a link to xkcd 936.
2026-06-08 21:15:15 +02:00
Oleksandr Kozachuk 3031105000 feat(web): polish the WASM site - UX, help, parsing, assets
- About panel (collapsible, closed by default with a pulsing "Help" badge)
  explaining the tool; the `help` command now prints a full command reference
  instead of "HELP" (benefits the CLI too).
- Live generation as you type; Store button; masked output that stays mono-width
  (gen masks only the password column, never the header); command history with
  Up/Down (persisted); console auto-scroll; Export fixed (uses `dump`); Import.
- Name field normalizes to its canonical parsed form on blur; quick-gen and Store
  resolve the real entry name, so a leading prefix like `*P0 test1` is handled
  correctly (new hel_parse / hel_parse_name wasm helpers).
- Parser: prefix-only forms now parse with defaults - `*P0 test1` ->
  `*P0 test1 R 99 <today>`, `*P0 test1 R`, `*P0 test1 20R` - via new qpname/npname
  rules mirroring qname/nname; the fully-qualified form is unchanged.
- Favicons + web app manifest + enso asset; pkg rebuilt.
2026-06-08 20:11:24 +02:00
Oleksandr Kozachuk 74d3296882 feat: Notion backend for the catalog + set command + ls/source/save UX
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.
2026-06-08 16:53:23 +02:00
Oleksandr Kozachuk d4eeea73d8 Improve readline history. 2023-07-18 14:22:15 +02:00
Oleksandr Kozachuk 122aeaf75b Refactor read_password function to take just the name as argument, not the prompt. 2023-01-07 13:40:00 +01:00
Oleksandr Kozachuk 54c2c0e5a1 Store pass command without password to history. 2023-01-07 13:18:39 +01:00
Oleksandr Kozachuk 2b56aed28e Refactor history handling: store only save and usefull commands, save them in LKEval state, do not safe pass command into history. 2023-01-07 13:16:47 +01:00
Oleksandr Kozachuk 4ee1d38be7 pass command accepts now optionally the password from command line, instead of stdin. 2023-01-07 12:06:41 +01:00
Oleksandr Kozachuk 77f7db7dec Add possibility to add input instead of calling readline. 2023-01-06 17:13:42 +01:00
Oleksandr Kozachuk e9dba54750 Develop wasm support further. 2023-01-06 16:16:04 +01:00
Oleksandr Kozachuk 127f386e35 Fix compilation and tests. 2023-01-06 15:08:52 +01:00
Oleksandr Kozachuk 6f78130fab Rename command "leave" to "keep", sounds more appropreate. 2023-01-06 14:53:08 +01:00
Oleksandr Kozachuk 538a32a471 Switch from Rc<RefCell> to Arc<Mutex<T>> or Arc<ReentrantMutex<RefCell<T>>>. 2023-01-06 13:12:58 +01:00
Oleksandr Kozachuk 7563645518 Fix tests, move rpassword usage to utils.rs to implement something different for wasm. 2023-01-01 19:04:56 +01:00
Oleksandr Kozachuk eced302282 Split project into three workspaces: hel (the library), helcli (the tool) and helwasm (the wasm code). Move wasm incompatible code to extra modules in utils.rs to be implementable separately for wasm. 2023-01-01 18:50:16 +01:00