User Guide
This guide explains how to use the Outline Tool as an end user.
No architecture diagrams. No API talk. Just how to get work done.
What the Outline Tool is (and isn’t)
The Outline Tool is: - A local-first outlining application - Built around a tree, not a list - Designed for thinking, planning, and structuring ideas - Offline by default
The Outline Tool is not: - A notes app - A document editor - A cloud service - A task manager (even if you try to use it like one)
Starting the application
From the project root:
source .venv/bin/activate
python -m outline_tool.presentation.gui.toga_app
The application opens a native window using your OS widgets.
No login. No sync. No telemetry.
The main window
The window has three primary parts:
- Outline tree (main area)
- Status line (bottom)
- Application menu (top)
Everything you do happens through the tree.
Creating a new document
Menu:
File → New Document
You’ll be prompted for a document title.
What happens next:
- A new document is created
- A root node named Root is created automatically
- The root node is selected
You cannot delete the root node. This is intentional.
Selecting nodes
- Click a node in the tree to select it
- The selected node becomes the target for actions like:
- Add node
- Rename node
- Delete node
Only one node can be selected at a time.
If no node is selected, most node actions are disabled or rejected.
Adding nodes
Menu:
Edit → Add Node
Shortcut:
A
Behavior: - The new node is added under the currently selected node - You are prompted for the node title - The new node becomes the selected node
If no node is selected, the action is rejected.
Renaming nodes
Menu:
Edit → Rename Node
Shortcut:
R
Behavior: - Renames the currently selected node - Prompts for a new title - Updates the tree immediately
Restrictions: - The root node can be renamed - Empty titles are rejected
Deleting nodes
Menu:
Edit → Delete Node
Shortcut:
D
Behavior: - Deletes the selected node and all its children - Requires confirmation
Restrictions: - The root node cannot be deleted - If no node is selected, deletion is rejected
Deletion is permanent unless you re-import the document.
Saving documents
Menu:
File → Save
Behavior: - Saves the current document to the local repository - Overwrites the previous version
Saving does not prompt for a file path. Persistence is handled internally.
Importing documents
Menu:
File → Import…
Supported formats:
- JSON (.json)
- YAML (.yaml, .yml)
- Markdown (.md)
- Plain text (.txt)
- OPML (.opml)
Behavior: - Imported documents replace the current document - Imported data must be structurally valid - Invalid formats are rejected with an error dialog
Exporting documents
Menu:
File → Export…
Behavior: - Prompts for a file name and format - Exports the current document - Does not modify internal storage
Export formats match the import formats.
Keyboard shortcuts summary
| Action | Shortcut |
|---|---|
| New Document | N |
| Save | S |
| Import | I |
| Export | E |
| Add Node | A |
| Rename Node | R |
| Delete Node | D |
Shortcuts follow platform conventions where possible.
Tree behavior notes
- Nodes are displayed in document order
- Parent/child relationships are explicit
- Collapsed/expanded state is preserved internally
- Reordering and drag-and-drop are planned features
Data safety
- All data lives locally
- No network access is required
- No background sync occurs
- No hidden files are created outside the repository
You own your data. Full stop.
Known limitations (for now)
- No undo/redo
- No drag-and-drop reordering
- No multi-select
- No search
- No cloud sync
These are intentional omissions, not oversights.
If something goes wrong
If the app refuses an action: - Read the status line - Check whether a node is selected - Confirm you are not trying to delete the root
If the app crashes: - Run it from a terminal - Check the logs - File an issue with reproduction steps
What to read next
architecture.md— how the app is structuredapi/— programmatic access and extension pointssoftware-design.md— design decisions without fluff
This tool is meant to stay out of your way.
If it feels like it’s fighting you, something is wrong.