Files
cumulus/README.md
T
skkeyeandClaude Opus 5.5 e6f3c06ecc Scroll sideways with Shift or Alt and the wheel, and in the outline
A wheel that tilts (or a touchpad) already panned the canvas sideways,
but only when the terminal passes those events on, and many don't:
Windows Terminal only does since 1.24, and Windows' own console layer
can drop them. The wheel with Shift held now scrolls sideways too, as in
most apps, and so does Alt, since Alacritty and Windows Terminal keep
Shift with the mouse for selecting text.

The outline scrolls sideways as well (the wheel, zh and zl), for rows
wider than its pane: a deep tree or a long title. Clicks land where the
rows are, however far they're scrolled, and when the cursor moves its
title comes back into view.

Fixed on the way: the wheel turned sideways over the help, the menu, a
picker or the K card moved it up.

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

3.1 KiB

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 for the plan; this README grows with the app.

Build and run

You need Rust (rustup.rs). The exact version is pinned in rust-toolchain.toml, and rustup installs it by itself the first time.

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. The wheel scrolls; with Shift or Alt held (or a wheel that tilts), it scrolls sideways.

Development

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:

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