browser-terminal × vanilla JS
No framework, no build-time magic — just an ordinary page that registers a few TypeScript functions as shell commands. They read the live DOM, so the table you get back is this page.
- Rust languagerust-lang.org
- WebAssemblywebassembly.org
- xterm.jsxtermjs.org
- Nushellnushell.sh
- tmuxgithub.com
- example.com
6 links here / 2 more in the intro / 1 with no text
Try
links --help # every command gets this for free
links rust # the optional positional
links --internal # a switch
links | filter {|o| $o.text != ''} | head 5
links | map @host
links | grep rust --on href
links | sort-by text | head 3
slow 5 # log is plain, err is red; Ctrl-C aborts
slow 5 | length # diagnostics never enter the pipe
fail # rich errors from TypeScript
mux # a command group: lists its subcommands
help # every command, builtin and registered
watch click | map type | head 3 # click 3 times; stops, listener removed
progress # byte mode + \r: redraws in place
vars # name, scope, value — scope shows shadowing
describe $project # a record, passed as a variable
echo $scope_demo # 'session' here; 'host' after `session new`
How it's implemented
Extracted from this page's own source at build time — not a transcription.
What that buys you
No command registers a --help flag. The evaluator intercepts
it before argument binding and renders the signature, so the pages below
are generated from the summary and desc strings
in the code above — printed by the live engine on this page, not pasted in.
The same commands work in React and Svelte; those demos show how to reach
component state from a command. Here there is no state to reach — the DOM
is the state. This sentence holds the page's only same-origin links —
jump to Try and jump to help —
which is what links --internal narrows to.