Implement card-level drag-and-drop reordering within kanban columns.
Dragging a card above or below another card computes a new sort_order
using a midpoint insertion algorithm and writes it to frontmatter.
New capabilities:
- Card-level dragover/drop handlers with top/bottom half detection
- Visual drop indicators (accent-colored bar above or below target)
- Midpoint insertion: new_value = floor((neighbor_above + neighbor_below) / 2)
- Vault-wide neighbor lookup so filtered/hidden tasks are still
considered when computing midpoints (prevents order collisions)
- Proportional gap computation based on median spacing in the column
- Collision handling: when neighbors share identical sort_order values,
renumber all column tasks evenly across the existing value range
- Deferred re-render during drag to prevent DOM destruction mid-drop
- Same-column detection to skip unnecessary group property writes
Supporting changes:
- Add sortOrder field to TaskInfo interface and FieldMapping
- Add sort_order to FieldMapper read/write and default field mapping
- Add columnTasksCache for render-time group data
- Add sort_order to e2e vault kanban view config
- Add CSS for drop-above/drop-below position indicators
Split recurring tasks and reminders content into dedicated pages,
condense existing guides for clarity, and update all documentation
screenshots. Refactor e2e screenshot tests with shared openView()
helper and retry support. Refine MdbaseSpec field types (enum,
datetime, link) and replace MCPService @ts-expect-error workarounds
with bound tool pattern.
The Blocking view filter in the Relationships base threw "Cannot find
function map on type Link" when blockedBy contained a single entry.
Bases returns single values as Link objects without a map() method.
Wrap with list() to ensure array operations work regardless of whether
blockedBy contains one or many dependencies, consistent with the
existing Blocked By view implementation.
- Add 'manual-creation' context to use inlineTaskConvertFolder setting
- Update issue tracking for #1334, #1342, #1398, #1408
- Add failing test for issue #1302 (task not found in agenda view)
- Update .gitignore to exclude workspace.json and e2e config
The kanban view now uses status grouping instead of numeric priorityWeight,
showing proper column labels (Done, In progress, None, Open) instead of
confusing numeric values (1, 2, 3, 999).
Also adds useful formulas for task filtering and a swimlane configuration.
Add test cases verifying tag element structure for compatibility with
external plugins like Colored Tags. Tests check that hierarchical tags
(e.g., #project/frontend) have correct href attributes and are
observable by MutationObserver.
Also adds test task with hierarchical tags to the e2e vault.
Add task notes with dependencies and time entries for testing:
- Deploy authentication update: blocked by another task
- Write documentation: has time tracking entries
Track the test vault to detect unexpected file modifications during
E2E tests. Updated .gitignore to exclude only plugin symlinks while
tracking data.json for reproducible test settings.