Problem
TaskNotes' blocked-state computation is reltype-blind. DependencyCache.isBlocked (src/utils/DependencyCache.ts) returns "blocked" whenever a task has any blockedBy edge to a not-completed predecessor — the edge's reltype is never consulted. The same applies to blocked/unblocked views, the dependencies.isBlocked/dependencies.isBlocking filter properties, and auto-unblock-on-complete.
The data model already carries RFC 9253 reltypes per edge (TaskDependency = {uid, reltype, gap?}, src/types.ts), but every edge is treated as a hard Finish-to-Start block.
Goal
Make blocked-state honor reltype:
FINISHTOSTART — always contributes to "blocked" (current behavior).
FINISHTOFINISH — contributes to "blocked" until the predecessor completes.
STARTTOSTART / STARTTOFINISH — do not gate the blocked state.
Constraints
- Behavior must be unchanged for existing FS-only vaults (the modal UI only ever authors
FINISHTOSTART).
- Touches:
isBlocked computation, blocked/unblocked views, dependencies.isBlocked/isBlocking filters, auto-unblock-on-complete.
Context / motivation
A companion Gantt view (obsidian-gantt) wants to let users visually author the non-FS relationship types, which TaskNotes already stores but no UI creates today. Authoring non-FS edges is only coherent once TaskNotes stops reporting them as plain "blocked" everywhere.
Problem
TaskNotes' blocked-state computation is reltype-blind.
DependencyCache.isBlocked(src/utils/DependencyCache.ts) returns "blocked" whenever a task has anyblockedByedge to a not-completed predecessor — the edge'sreltypeis never consulted. The same applies to blocked/unblocked views, thedependencies.isBlocked/dependencies.isBlockingfilter properties, and auto-unblock-on-complete.The data model already carries RFC 9253 reltypes per edge (
TaskDependency = {uid, reltype, gap?},src/types.ts), but every edge is treated as a hard Finish-to-Start block.Goal
Make blocked-state honor
reltype:FINISHTOSTART— always contributes to "blocked" (current behavior).FINISHTOFINISH— contributes to "blocked" until the predecessor completes.STARTTOSTART/STARTTOFINISH— do not gate the blocked state.Constraints
FINISHTOSTART).isBlockedcomputation, blocked/unblocked views,dependencies.isBlocked/isBlockingfilters, auto-unblock-on-complete.Context / motivation
A companion Gantt view (obsidian-gantt) wants to let users visually author the non-FS relationship types, which TaskNotes already stores but no UI creates today. Authoring non-FS edges is only coherent once TaskNotes stops reporting them as plain "blocked" everywhere.