Skip to content

03 Tasks and Outline

zhuoguangming edited this page Oct 5, 2026 · 1 revision

Tasks and Outline

The three forms of a task

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".

Building hierarchy

  • 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.

Milestones

"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

Outline columns

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.

Inline cell editing

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.

Enter creates a sibling task

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+Z removes 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".

Selection and multi-selection

  • 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
  • Esc cancels 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.

Collapse and expand

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.

Clone this wiki locally