Mindmaps inside mindmaps. Rapid mind mapping tool for desktop.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A brock is a badger: it digs a burrow of tunnels and chambers, as this app keeps maps inside maps.
A desktop mind-mapping app. It starts with a single node; any node can become a map of its own, which you open and come back out of. Everything is saved as you go, to a database on your computer. There is no Save command.
It is at an early stage: maps can be made, drawn, edited from the keyboard, opened and left again, searched, overseen and linked, with tasks, notes, colours and icons, undo, a trash, daily copies, and export and import. See PLAN.md for where it is going and TASKS.md for what is next.
Installers for macOS, Windows and Linux are on the releases page. They are not signed yet, so the system asks before opening the app the first time:
.dmg and drag Brock to Applications. The first time,
macOS says it cannot check the app; open System Settings › Privacy &
Security and click Open Anyway..exe. If SmartScreen stops it, click More info, then
Run anyway..AppImage runs as it is (make it executable first); the
.deb installs on Debian and Ubuntu.After that, the app keeps itself up to date: when a new version is out, it
offers it in a corner of the window, and Install and restart puts it in
place; What's new opens the list of changes
in your browser. Help › Check for Updates… looks at once. On Linux, a copy installed
from the .deb asks for your password to install the new one.
You need Node 24 or newer, Rust (from rustup.rs), and on a Mac the Xcode command line tools.
npm install
npm start
npm start builds and opens the app. The first build of the Rust side takes a
few minutes; later ones take seconds.
npm run dev opens just the window in a browser, at http://127.0.0.1:1420,
with the vault kept in the browser's storage. It is quicker for working on the
interface.
npm run site builds the website, with the demo of the app on it, and serves
it at http://127.0.0.1:4321.
The open map is drawn around its centre. Select a node by clicking it or with the arrow keys, then:
| Key | Does |
|---|---|
| Tab | A new node under this one; on a map, it opens the map and starts a new node in it |
| Enter | A new node after this one (under the centre, when on the centre) |
| Shift+Enter | A new node before this one |
| Typing, Space or F2 | Edits the title; typing replaces it, Space and F2 keep it. On a task, Space ticks it instead |
| ⌘T | Makes the node a task, with a checkbox, or an ordinary node again |
| Enter or Escape while editing | Finishes editing; Tab adds a node under it, but not under one with no title yet |
| Escape on a new node left empty | Takes it away again and goes back to the node you started from |
| (moving on from an untitled node) | A node with no title and nothing else (no notes, no nodes under it, no icon, not a map) is deleted once you move on from it, so empty ones never pile up |
| ← → | Moves to the parent, or the child level with the node |
| ↑ ↓ | Moves to the sibling above or below, then on to the same level of the next branch |
| ⌘-click, Shift-click | Adds a node to those chosen, or the siblings between |
| Shift with ← → ↑ ↓ | Adds the next node that way to those chosen |
| ⌘A | Chooses everything in the map |
| ⌘C, ⌘X, ⌘V | Copies, cuts and pastes the chosen branches, with everything under them; pasted onto a node with no title yet, they take its place |
| Escape | Back to one node chosen |
| ⌥↑ ⌥↓ | Moves the node up or down among its siblings |
| ⌥ with ← or → | Moves the node outwards, under the sibling above it, or inwards, beside its parent; a branch of the centre moved inwards crosses to the other side |
| Delete or Backspace | Deletes the node and what is under it |
| ⇧⌘M | Makes the node a map of its own, or an ordinary node again |
| ⌘↓, ⌘↵ or a double click | Opens a map |
| ⌘↑, or the ↑ button on a map's centre | Back out to the map this one is in, with the map you left selected |
| ⌘← ⌘→, or ⌘[ ⌘] | Back and forward through the maps visited, as in a browser |
| ⌘/ |
In the outline every row is a text field. Rows move with ⌥ and the arrows, as on the map: ↑ and ↓ among their siblings, → in under the row above, ← out beside the parent, as ⇧Tab also does. So in a title ⌥← and ⌥→ do not jump by word there; ⌥⇧ with them still selects by word. Or drag a row by the ⠿ at its left: onto another row to put it under that one, or between two to put it there.
Several nodes can be chosen at once: ⌘-click, Shift-click, Shift with the arrows, ⌘A, or Shift and a drag on the background to draw a box. Deleting, ⌘T, Space and dragging then act on all of them, as one step to undo.
Copying takes a branch with everything under it: maps inside, notes, tasks, colours, icons and links. Paste puts it under the selected node, inside it if it is a map. Cut and paste moves the branch itself, so links to it still lead to it. Copied branches also paste into other apps as an indented list, and an outline copied from another app (an indented list, Markdown, OPML) pastes in as nodes.
Drag a node to move it: onto another node to put it under that one (into it, if it is a map), or between two to put it there; near a branch on the other side, it crosses the centre. A line or an outline shows where it will land; Escape leaves it where it was. Held near an edge of the window, the map moves along, so a node can be taken anywhere on it.
Links between nodes are dashed arrows when both ends are on the open map; a link to somewhere else shows as ↗ on the node, which goes there.
The notes panel on the right, opened by the small tab on the right edge or
⇧⌘N, shows the selected node's notes, written in Markdown:
# headings, **bold** (⌘B), *italic* (⌘I), `code`, lists, - [ ]
to-dos you can tick, > quotes and tables. They are drawn as you write: the
marks around what you typed show only where the cursor is. The M↓ button, or
⌘E, shows the plain Markdown instead, and again draws it. Escape hands the
keyboard back to the map. Web addresses in them open in your browser.
Files and folders on your computer can be linked too: drag them from Finder
or Explorer onto the notes, or write them as file:/// addresses,
such as file:///Users/me/Clients/Acme/Designs; put one with spaces in its
path between < and > in a link: [the brief](<file:///Users/me/The brief.pdf>). A click opens folders, documents, pictures, sound and video
in their own apps; anything else, which might be a program, is only shown
in Finder or Explorer, so a link can never start one.
Links to nodes and maps go there: press ⌘L while writing to choose a node, or
type [[a node's title]]. A link can also open part of Brock:
[show the tasks](brock:tasks), and likewise brock:maps, brock:history, brock:search,
brock:settings and brock:trash. Under the notes are the node's links and the nodes
linking to it. Drag the edge of the notes or of the sidebar to make them
wider or narrower; drag it all the way in to close the panel.
Drag the background or scroll to move around; pinch, or scroll with ⌘ held, to zoom. Zoomed out, the deeper levels turn into bars in their branch's colour, and a map too big for the window gets a small picture of itself in a corner: click or drag in it to move there. The breadcrumbs at the top lead back to the maps above. On a deep map the ones in the middle fold into a "…", which lists them.
A node with tasks under it shows how many are done, as 2/5.
Done tasks can be hidden (⇧⌘H, or the checkbox button in the header): they stay in the vault and come back when shown, and one with open work under it stays visible. "Clear" in the tasks list's Done section moves the done tasks to the trash instead, where one undo brings them back.
Any node can have a priority, from 1 to 5, shown as a numbered circle before its title. In the tasks list, priorities 1 to 3 come before tasks that have none, and 4 and 5 after them.
The sidebar on the left, opened by the small tab on the left edge or ⌃⌘S, lists places in the vault to go to, as three tabs: Maps, every map as a tree with what each holds, History, which is told below, and Tasks, what is still to do, grouped by map, with what is done folded away at the bottom. Done tasks are grouped by when they were done: today, yesterday, this week, last week and earlier, handy for a stand-up or for reporting time; pointing at one shows the day and time it was done. Each group has its own Clear, which moves its tasks to the trash, so last week's can go while this week's stay. Tick tasks there, or click one to go to it. The panel on the right is about the selected node, so a task's notes show beside the list.
The History tab lists what was changed, newest first, by day: "Ticked “Buy seeds”", "Added 3 nodes", "Renamed …", each with the time and whether you or an agent did it. Click one to go to the node. Revert puts the nodes of that step back as they were, as a step of its own that ⌘Z undoes; a node that has changed since is left as it is, and the row says so. Typing in one node is one step, not one for each pause. The history is kept with the vault, so it is there after a restart. Changes agents make are not on ⌘Z, which is only for your own steps; the history is where to take them back.
A node can be marked for you, in three levels: orange ⚑ when it needs your attention, red ‼ when it is critical or blocked, and green ✓ when it is OK: resolved, or ready for a look. Choose one under Mark in the notes panel, or go round them with ⇧⌘A. The mark shows on the node, and the bell at the top right counts them: an orange badge for those that ask something of you, red if any is critical, and a grey one for the green ones, which ask nothing and are there to review. Open the bell to see them all, the critical first; a click goes to the node, the tick marks one OK, and the cross on a green one clears its mark. An agent can set a mark, with its reason in the node's notes, but only raise one, never lower or clear it: that is yours.
The notes panel also makes a node a task and sets its priority, as ⌘T and ⌘1 to ⌘5 do, its colour, which carries down everything under it, and an icon shown before its title.
The ⋯ menu at the top right exports the open map, with everything under it, as Markdown, OPML (which other outliners and mind map apps read) or JSON (everything, to bring back into this app), and imports OPML or JSON under the selected node. It also opens the trash, where deleted branches wait to be put back until the trash is emptied, and Settings.
The open map can also be exported as a picture: SVG, which drawing programs and documents open with its text still text, or PNG, at twice the size for sharp slides. Copy this map as a picture puts the PNG on the clipboard, to paste into a message or a document. Pictures show the whole map as it is drawn, folded branches and hidden tasks as they are; Settings chooses between the map's background and a clear one.
In the app, the menu bar holds every command with its key, for finding them without knowing the keys: undo and redo, search, the views and panels, and what can be done to the selected node.
The first time Brock starts, with a new vault, it opens on a tour: a map called "Welcome to Brock", inside Home, whose nodes say what to try. When you're done with it, Help › Remove the Tour takes it away (it waits in the trash), and Help › Show the Tour brings it back. A vault with anything in it never gets one.
The app starts where you left it: the same map and node, view and panels.
The app works without a network, and your vault never leaves your computer. Two things reach outside it, and a third only if you allow it:
A web address in your notes that you click, which opens in your browser, as does What's new when an update is offered.
Looking for updates: a few seconds after it starts, and once a day while it
stays open, the app asks GitHub for latest.json from the newest release
on its releases page. That
request says nothing about you or your vault, though GitHub, like any web
server, sees your network address. An update is downloaded from there only
when you click Install and restart, and is checked against the signature
the app was built with before it is installed. Settings › Updates turns
the looking off; Help › Check for Updates… still looks when asked.
AI agents, only if you turn on Settings › Agents, which is off. While it
is on, the app listens on this computer's loopback address, which no other
computer can reach, and answers an agent that knocks with a secret kept in
a file only you can read (agent.json, beside the vault). If Brock is
not open when an agent asks, and you have allowed agents, the agent's
connection starts it, as a double click would; if you have not, it does
nothing but say so. Agents can ask
only for the maps you have shared with them, one by one, to read or to
edit. In a map shared to edit an agent can add nodes, change titles, notes,
priorities and due dates, tick tasks and move nodes, each a step that ⌘Z
undoes; it can never delete, or make or move maps. Brock itself sends
nothing; what an agent reads goes to whoever runs that agent, such as the
company behind its model. Anything on this computer that can read your
files can bypass the sharing, as it can read the vault: it is a guard
against asking for too much, not a lock.
The clipboard is read only when you paste.
One SQLite file, vault.sqlite, in the app's data folder:
~/Library/Application Support/app.getbrock.brock on macOS,
%APPDATA%\app.getbrock.brock on Windows and
~/.local/share/app.getbrock.brock on Linux. Set BROCK_DATA to a folder to
use a vault there instead.
The vault keeps a log of every change, which the History tab reads. Typing in a node is kept in it as one entry, not one for each letter, and a while after the app starts, and once a day while it stays open, it joins older runs of typing that earlier versions wrote one by one and gives the space back to the system. That runs quietly in the background, in small steps, and makes a copy of the vault first if today's is not made yet.
Before the app was called Brock, its folder was com.jaanpullerits.mindmap.
On its first start under the new name, the app copies the vault and its daily
copies from there, and leaves the old folder as it was; once the vault is
there in Brock, the old folder can be deleted. A vault Brock made before it
could copy, holding nothing but its first node, is set aside as
vault-before-copy-….sqlite and replaced by the copy.
Every day the app is used, a copy of the vault is made in the Backups folder
beside it, and the last seven are kept. Settings shows them and makes one on
request. To go back to a copy, quit the app and put the copy in place of
vault.sqlite.
Brock is free software: you can use, change and share it under the terms of the GNU General Public License, version 3 or (at your option) any later version.
| Folds a branch away, or shows it again |
| ⌘+, ⌘−, ⌘0 | Zooms in, out, or to the whole map |
| ⌃⌘S | Shows or hides the sidebar on the left: every map of the vault as a tree, the tasks, or the history |
| ⇧⌘H | Hides done tasks on the map and in the outline, or shows them again |
| ⇧⌘T | Shows the tasks of the open map, or of all maps, in the sidebar |
| ⇧⌘Y | Shows the history in the sidebar: what was changed, when and by whom |
| ⇧⌘A | Goes round the node's mark: attention (orange), critical (red), OK (green), none |
| ⇧⌘B | Opens the bell: the marked nodes |
| ⌘L | Links the selected node to any other, chosen as in search |
| ⌘K | Searches every title and note in the vault; Tab narrows it to the open map, then to maps |
| ⌘1 to ⌘5 | Gives the node a priority, 1 to 5; the same number again takes it off |
| ⌥⌘1, ⌥⌘2 | The map, or the same map as an outline |
| ⌥⌘3, ⌥⌘4, ⌥⌘5 | Draws this map as an org chart, a timeline or a board, or back as a mind map |
| ⌘, | Settings: light, dark or as the system; pictures' background; updates; the daily copies |
| ⇧⌘N | Shows the selected node's notes |
| ⌘Z, ⇧⌘Z | Undo, redo |