skkeyeandClaude Opus 5.5 abe3dc1d84 Read config.toml, keys.toml and themes, and open them with :config (stage 8b)
The config folder now sets everything: config.toml the settings (now
also `theme` and `editor`), keys.toml the keys, and themes/<name>.toml
the theme, laid over the built-in one, so a theme only needs what it
changes. Each file is applied again a second after it's saved; a
mistake only drops its own line, and the status bar says what's wrong,
naming the file.

:config lists the three files with their folder; Enter hands the
terminal to your editor (the editor setting, $VISUAL, $EDITOR, else
notepad or vi), writing the file first if it's missing, with every
option at its default behind a #, explained (keys.toml lists every
command by name). :theme switches themes until cumulus quits, like
:set.

The built-in theme gets the named styles the user picked, each also put
on by its tag: question (yellow, dashed), important (red, thick) and done
(gray, its title faded); and link styles blocks and supports, whose
label shows on a link without its own. Themes can also set [modes],
[node], [root], [branch] and [link].

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 23:55:11 -04:00

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.

Starting it

cumulus                      # ./ideas.cum, or ~/ideas.cum (made the first time)
cumulus garden.cum           # that document (a new one if it isn't there yet)
cumulus notes/               # that folder's ideas.cum
cumulus new "Garden plans"   # makes ./garden-plans.cum (cumulus new: ./ideas.cum)
cumulus --paths              # where cumulus keeps its settings and data

Documents are plain text files (.cum) that live wherever you like. cumulus saves a second after each change, reloads a file another program changed (u undoes that), and keeps a copy of each document a day in its data folder. A document open in another cumulus opens read-only. Each one reopens where you left it.

Settings, keys and themes

:config lists the three config files: config.toml (the settings), keys.toml (your keys) and the theme's file. Enter opens one in your editor (the editor setting, or $VISUAL / $EDITOR, or notepad / vi); the first time, it's written with every option at its default behind a #, explained. Take a # away, save, and cumulus applies it at once. Each file only needs what it changes, and a mistake only skips its own line (the status bar says what's wrong).

  • :set name=value changes a setting until cumulus quits (:set name? shows it, Tab lists them).
  • :theme name switches to themes/name.toml, laid over the built-in theme: a theme can say just accent = "magenta".
  • The built-in theme has named styles (<Space>s), also put on by tags: #question (yellow, dashed), #important (red, thick), #done (faded).

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, b documents, i inbox, 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)
:e :new :bd open a document / make one / close it
:w :q ZZ save / close the pane (the last one quits) / save and close

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

To try things without touching your own documents:

cargo run --example canvas                         # cumulus on copies of two sample documents
cargo test show_canvas -- --ignored --nocapture    # print the sample at each zoom, as text

The end-to-end tests (src/app/tests.rs) type keys and click on a test terminal, with the sample documents copied to a temporary folder, and check the screen, the documents and the files.

S
Description
No description provided
Readme
588 KiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 100%