Files
cumulus/README.md
T
skkeyeandClaude Opus 5.5 c587c42115 Add the outline and Note views, splits, popups and the bars
The outline shows the tree as an indented list: a row per node with its
fold marker, tree lines in the parent's color, tags, a ¶ for a body and
+N for what a fold hides. zb shows every body under its title, to read a
document like a page. j/k go row by row, h/l to the parent and the first
child, a click on a marker folds, and titles are edited in their row,
rapid entry included. In move mode, j/k swap the node with its siblings,
h takes it out a level and l puts it under the one above.

The Note view shows one node at full size, as parts: the title, the
tags, the body, each link and each child. j/k step through them, Enter
or i edits the part (or goes to that link or child), and h/l turn the
page to the sibling before or after. Bodies and tags are edited with the
same editor as titles: Enter starts a line in a body, Tab types spaces,
and tags that don't parse come back as they were. cc, C and s now start
typing on an empty line too, as in vim.

Panes split the screen the way vim's windows do (Ctrl-w v s h j k l w c
o =, :split, :vsplit, :only), each in a box with its view and document,
and any pane can show any open document (gt, gT, :b, the documents
picker, a click on the document bar). The status bar has two lines: the
mode, the view, the breadcrumb or a message, the keys typed; then key
hints for what you're doing, which <Space>w hides with which-key.

Popups are a mode of their own, built on one list: ? lists every key and
command, / searches it and Enter runs what you pick; the right-click menu
lists what you can do with a node (with the keys that do the same) or
adds a new idea on the empty canvas; the pickers set a node's color,
border, style or tags. K opens the body in a card beside the node, where
i edits it in place.

The example now opens two documents (the garden, and the kitchen its
portal leads to) and its tests drive all of the above end to end.

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

70 lines
3.0 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: type its title, Enter for the next one |
| `i` or Enter | edit the title (Esc: vim keys inside it, Esc again: done) |
| `dd` `x` | delete the branch / just the node |
| `>>` `<<` | under the node above / out a level |
| `u` `Ctrl-r` | undo / redo |
| `za` `zf` `zi` | fold, auto-fold, focus |
| `+` `-` | zoom in / out |
| `K` | the body in a card beside the node (`i` edits it there) |
| `C` `M` `v` | connect, move, select |
| `<Space>` | the action menu: `c` color, `t` tags, `vo` outline, `vn` note… |
| `Ctrl-w v` `Ctrl-w s` | split the pane side by side / stacked (`Ctrl-w hjkl` to move between them) |
| `gt` `gT` | the next / previous document |
| `:` `?` | command line, help (search it with `/`, Enter runs the key or command) |
After the first key of a sequence (`g`, `z`, `d`, `<Space>`…), a popup lists
what can follow. The right mouse button opens a menu of what you can do with
a node.
## 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 # everything so far: the views, splits, popups, editing
cargo test show_canvas -- --ignored --nocapture # print it at each zoom, as text
cargo test --example canvas # type key sequences into it, and check what they do
```