6 Overview of Operation
Mindstream is a lightweight tool that structures your workflow in sessions, which are version-controlled folders. New sessions are always anonymous, and they may subsequently be either saved or archived. Mindstream leaves most of the heavy lifting to standard packages (including major modes) and technologies (such as Git). It simply uses these together to augment your existing workflows to fill an unmet need.
Every mindstream session begins from a template (an ordinary folder) that you provide, and evolves through the stages of your creative process. The session itself is stored as an ordinary folder in a unique Git repository at a temporary location on disk. This repository is versioned by commits representing your writing process bounded at natural points – by default, the points at which your buffer is saved (whether explicitly by you or implicitly on running a command like racket-run). In this way, Mindstream saves you the trouble of coming up with extraneous names (e.g. draft1.tex, draft2.tex, ..., draft_final2.tex, ...) and allows you to focus on the task at hand. You can save and load these sessions, too, and pick up right where you left off, allowing quick freewriting sessions to organically grow into robust creative works.
The lifecycle of a Mindstream session is described below.
A new session may be started at any time via mindstream-new. When you first start a session, it is always anonymous, meaning that it doesn’t have a name. Each session is self-contained and independent.
If the session develops into something worth keeping, you can save it to a preconfigured (or any) location on disk by giving the session a name. The session folder is simply moved there with the name you give it. See Saving Sessions.
Anonymous sessions may persist across Emacs restarts, depending on mindstream-persist. See Persistent Sessions.
Depending on mindstream-unique, there may be only one anonymous session active at any time per template, or there may be more than one. See Multiple Concurrent Anonymous Sessions.
Named sessions may be loaded without interfering with any other sessions, including active anonymous sessions.
Anonymous sessions that have served their purpose may be archived, which moves them to the configured archive path (filed by template and date) without naming them. If you have configured a unique anonymous session per template, then starting a new session archives the previous one. See Archiving Sessions.
You can also start a stream in an existing Git repository, which starts a new branch versioned by Mindstream, as described in Mindstream Anywhere.