Files
cumulus/README.md
T
skkeyeandClaude Opus 5.5 c2e62de172 Add the key engine, which-key and keys.toml
Keys now work the way vim reads them. A key press becomes a Key (with vim
notation for writing keys: `<C-w>v`, `<leader>c`, `<<`), and the engine
collects counts (`12j`), registers (`"+p`), sequences (`gg`), operators
with their targets (`dd`, `dab`, `2d3d` multiplies to 6) and keys that take
a character (`ma`, `'A`), then hands over a typed Command. Every command
has a name and a help text in one table, and the default keys live in one
table per place they work (motions, normal, canvas, visual, move, connect,
lists).

keys.toml changes keys per section, with the leader configurable and
"nothing" to unbind. Each mistake is skipped and reported in words, with a
suggestion for mistyped command names, and a key that would hide a longer
one is reported too. The which-key popup reads the same tables: it shows
what can follow the keys typed so far, in skyshift's look and place, with
the leader menu instant and other prefixes after 300 ms. The mouse reader
turns button events into presses, double-clicks, drags and scrolls.

`Direction` moved from the glyphs to the model, since input needs it too.
The canvas example now runs on all of this, with a two-line keys.toml of
its own that makes `q` quit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 01:54:06 -04:00

64 lines
2.5 KiB
Markdown

# cumulus
Brainstorm in the terminal: ideas as nodes on a 2D canvas, connected, folded
and color-coded, across as many documents as you like. Vim keys first; the
mouse works too. Runs on Windows and Linux.
> **Status:** being built, one stage at a time. See [DESIGN.md](DESIGN.md) for
> the plan; this README grows with the app.
## Build and run
You need Rust ([rustup.rs](https://rustup.rs)). The exact version is pinned in
`rust-toolchain.toml`, and rustup installs it by itself the first time.
```sh
cargo build --release
```
The program is `target/release/cumulus` (`cumulus.exe` on Windows): copy it to
a folder on your `PATH`.
- **Windows**: nothing else to install. The `.exe` carries its own C runtime
and runs on any Windows 10 or 11.
- **Linux** (Void, Fedora…): build the same way. You can also build a static
Linux binary from Windows with `cargo linux`: it lands in
`target/x86_64-unknown-linux-musl/release/cumulus` and runs on any
distribution.
## Keys
The plan for the everyday keys (all of them are in DESIGN.md):
| Keys | What they do |
|-------------------|----------------------------------------------------|
| `hjkl` | move to the nearest node that way |
| `gh gj gk gl` | parent, next sibling, previous sibling, first child |
| `o` `O` `a` | new sibling below / above, new child |
| `i` or Enter | edit the title |
| `dd` `x` | delete the branch / just the node |
| `u` `Ctrl-r` | undo / redo |
| `za` `zf` `zi` | fold, auto-fold, focus |
| `+` `-` | zoom in / out |
| `C` `M` `v` | connect, move, select |
| `<Space>` | the action menu |
| `:` `?` | command line, help |
After the first key of a sequence (`g`, `z`, `d`, `<Space>`…), a popup lists
what can follow.
## Development
```sh
cargo test # run the tests
cargo lint # clippy, treating warnings as errors
cargo fmt # format the code
```
While the app is being built, the examples try out each part:
```sh
cargo run --example canvas # the canvas with vim keys and which-key
cargo test show_canvas -- --ignored --nocapture # print it at each zoom, as text
```