Files
cumulus/README.md
T
skkeyeandClaude Opus 5.5 bfc184f5ef Add the command line: commands, completion, ghost text and history
`:` opens a vim-style command line. Every command is described once, in
a typed table (name, the short form that still works, aliases, a `!`,
its arguments and what it does), so parsing, completion and the help can
never disagree. Short forms work as in vim (`:e`, `:vs`, `:q!`, `:x`),
and a test checks that no typed name can mean two commands.

Parsing turns a line into a typed Call, checking every argument against
what the app offers (open documents, nodes, colors, styles, settings),
or says what's wrong in words: the usage when an argument is missing,
the choices when a word isn't one, "did you mean :fold?" for a typo.
Documents and nodes match fuzzily (`:b gpl` finds Garden plans).

While typing, a popup above the word lists what can finish it (command
names by prefix, choices, files from the folders on disk, documents and
nodes fuzzily), with Tab and Shift-Tab putting them in the line. Ghost
text after the cursor comes from the history first, like fish's, then
from the best candidate; → or Ctrl-e takes it. Up and Down browse the
lines that start with what was typed. The line itself is a small input
that steps over whole characters, accents and emoji included.

The canvas example opens it with `:` and runs a handful of commands:
:fold, :color, :border, :tag, :focus, :rename, :in (to an Inbox),
:link, :unlink, :find, :version and :q.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 03:53:51 -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, vim keys, which-key, :commands
cargo test show_canvas -- --ignored --nocapture # print it at each zoom, as text
```