Replace subtasks by task dependencies
The concept of subtask introduces weird edge cases, and forces us to implement and decide on complicated behaviors. Using the concept of dependencies rather than subtasks is probably a better idea. It allows building dependency graphs and more sophisticated planning and management.
Some preliminary behaviors would be:
- No visual difference between dependencies and dependent tasks
- Can't mark a task as complete when dependencies are incomplete
- Alternatively, just warn about incomplete tasks
- A task can have N dependencies
- Circular dependencies not allowed