Repository navigation
03 Tasks and Outline
| Form | Determined by | Notes |
|---|---|---|
| Leaf task | No subtasks | An actual "one thing", with its own duration and schedule |
| Summary task | Has subtasks | Dates are rolled up from its subtasks automatically (start takes the earliest, finish the latest); resources cannot be assigned to it directly |
| Milestone | Explicitly marked | A zero-duration point in time; can carry dependencies and be postponed by leveling |
The form is determined by structure, not an independent field: give a task subtasks and it automatically becomes a summary task; delete all its subtasks and it automatically becomes a leaf again. So there's no such dirty data as "has subtasks but is still a leaf".
- Indent: "Task → Indent" in the menu bar turns the selected task into a subtask of the preceding sibling task (the first sibling can't be indented—it has no predecessor to attach to).
- Outdent: moves up to the grandparent level, inserted after the original parent task.
- With a multi-selection: indent/outdent applies to all selected tasks; if any one of them is invalid, the whole batch is disabled with a reason. The order of execution is top to bottom—several adjacent siblings become children of the same predecessor together.
"Task → Set as milestone" turns a task into a zero-duration point in time. A milestone:
- renders as a diamond rotated 45°, without a duration bar
- can carry dependencies and be postponed by resource leveling
- cannot be a parent task (cannot have subtasks); both the indent and new-task guards reject it
The outline view is a table. The full set of columns is a fixed 27 columns:
- Identity: task name, type, note, ID
- Scheduling: start, finish, duration, priority, progress
- Slack: total slack, free slack
- Assignments and effort: assignees, effort
- Cost: task cost, resource cost, total cost
- Baseline: baseline start, baseline finish, start variance, finish variance
- Earned value: BCWS (PV), BCWP (EV), SV, BAC (three more columns, ACWP / CV / EAC, are disabled in this version—there's no data source for "actual-cost entry" yet)
Configuring columns: right-click the header and check/uncheck a column in the pop-up menu. Resizing columns: drag the header divider; double-click the divider resets that column's width. Width preferences are stored in the browser, and don't go into the project file or the undo stack.
Known limitation: column widths can only be dragged with a mouse/touch, there's no keyboard entry point yet.
Double-click any editable cell to start editing; Enter or blur commits, Esc cancels.
| Column | Editor |
|---|---|
| Task name, note | Text field |
| Priority, progress, duration, effort | Number field (out-of-range values are normalized by the command layer: progress is clamped to 0–100, duration is taken as a non-negative integer) |
| Start, finish | Date picker |
Read-only columns (double-click does nothing): ID, type, total slack, free slack, assignees, the three cost columns, the four baseline columns, and the earned-value columns.
While changing a task name, pressing Enter not only commits the rename but also creates a new sibling task directly below, named "New Task" by default, with the cursor landing right on the new task's name waiting for your input.
- To enter ten plan rows in a row, double-click the first → type → Enter → type → Enter…
- Pressing Enter after clearing the title: the name stays as it was, but it still creates a new task.
- This is one action producing two undo records (rename + create); a single
Ctrl+Zremoves the newly created task first.
Only Enter in a title cell creates a task. In editors like note, duration, and progress, Enter is still just "commit".
- Click selects a row (the inspector then shows it)
-
Ctrl/Cmd+ click toggles that row's selection -
Shift+ click selects the contiguous range from the anchor to that row -
Shift+↑/↓extends the selection with the keyboard -
Esccancels the multi-selection, collapsing it down to just the anchor
The range is computed over the visible row order at the moment of the click, and once selected it solidifies into a set—later collapsing or switching views does not change the selected members.
Rows that have subtasks show a triangle to the left of the name: click it to collapse/expand. "Task → Collapse all / Expand all" handles it in bulk. Collapse state is purely interface state; it doesn't go into the project file or the undo stack.
Next: Dependencies and Scheduling.