GitHub Projects v2 full sync: create tasks from project items
Details
GitHub Project sync previously only linked already-synced tasks to a
PrivStack project. Adding a project without also adding each repo as an
issue source resulted in zero tasks. This makes GitHub Projects a
self-contained sync source.
Changes:
- Expand GraphQL content fragment to fetch full issue data (body, state,
author, assignees, labels, comments, timestamps) from project items
- Add project status → PrivStack status mapping with fuzzy column name
matching (Todo/In Progress/Done/Review/Blocked/etc.)
- Add MapProjectItemToNewTask and UpdateTaskFromProjectItem factories
that create/update tasks directly from project items, with project
column status taking priority over issue state
- Rewrite GitHubProjectSyncService.SyncAsync to create missing tasks,
update existing tasks when remote is newer or column changed, and
link tasks to the PrivStack project
- Fix issue sync dedup: broaden task lookup to all github_issue tasks
by source_ref (not just tasks from the current source), preventing
duplicates when both project and issue sources cover the same repo
- Add push ownership guard: only push changes to GitHub if the source
that created the task owns it
- Fix orphan detection to only mark tasks owned by the current source
Version bump: Tasks 1.28.0 → 1.29.0
Add View Settings tab with item density modes to Tasks plugin
Details
Move Flat/GTD/Calendar grouping selector from inline sub-mode toggle
into a new "View" tab in Tasks Settings. Add "List Item Density" setting
with Full/Balanced/Compact modes that control item card visual density:
- Full: status color bar, priority label, timer button, tags
- Balanced (default): priority dot, title, metadata, tags
- Compact: priority dot, title, metadata only
Remove drag handle from all densities (press-and-hold drag still works).
Both ListSubMode and ListItemDensity persist across restarts via
IPluginSettings. StatusMessage moved into the header row to reclaim
vertical space formerly used by the sub-mode toggle row.
Unify Tasks views: List (with sub-modes) | Board
Details
Consolidate from 4 top-level views (List/Board/GTD/Calendar) to 2 main
views (List | Board). The List view now has sub-mode toggle tabs
(Flat/GTD/Calendar) that change the grouping in the left pane of a
split layout, with the detail panel always visible on the right.
ViewModel changes:
- Add ListSubMode property ("flat"/"gtd"/"calendar") with computed
booleans IsFlatSubMode, IsGtdSubMode, IsCalendarSubMode
- Redefine IsTimelineView/IsCalendarView as internal aliases that
combine IsListView with the appropriate sub-mode check
- Remove IsTasksSidebarCollapsed, SidebarWidth, sidebar persistence
- Add SetListSubModeCommand and OnListSubModeChanged handler
View restructure (~1000 lines deleted):
- Replace 4-button view toggle with 2 buttons (List | Board)
- Remove PluginSidebar entirely
- Replace full-screen detail panel with split layout: task list pane
(left) + resize handle + TaskDetailPanel (right)
- Move stats, New Task, Prioritize buttons into list pane header
- Add sub-mode toggle bar (Flat | GTD | Calendar) below header
- GTD and Calendar item templates moved into left pane, controlled
by sub-mode visibility
- Delete standalone GTD Timeline View and Calendar Timeline View
sections (their content is now in the split layout)
Code-behind:
- Remove sidebar wiring from constructor
- Update GetResizeTargetBorder: add "list-detail", remove "gtd-detail"
and "calendar-detail"
Version: 1.26.0 → 1.27.0
Tasks v1.26.0: right-click context menus and AI feedback
Details
Add right-click context menus to task items across all views (List,
Kanban, GTD Timeline, Calendar Timeline) with: Edit, Start Work, Mark
Complete/Reopen, Start/Stop Timer, Duplicate, Archive, Delete. Updated
the "..." button flyout to include the same expanded set of actions.
Added DuplicateTaskByItem and StartTaskByItem commands that accept a
TaskItem parameter for use from context menu bindings (the existing
DuplicateTask/StartTask operate on SelectedTask only).
Added StatusMessage feedback to AI Title and AI Rewrite commands so
failures are surfaced to the user instead of failing silently.
Add notes.update_note intent and block-aware content parser
Details
Enhance the Notes plugin's content parser to create proper block types
from markdown-like syntax: headings (#), bullet lists (-), numbered
lists (1.), task lists (- [ ]), blockquotes (>), code blocks (```),
horizontal rules (---), markdown tables (| |), and [CHART:] markers
for dataset-backed chart blocks.
Add notes.update_note intent for modifying existing notes — supports
replace and append modes. Add AddChart method to PageContentBuilder.
This enables Duncan to create rich, structured notes with appropriate
block types (headings, tables, charts, code blocks, etc.) instead of
flat paragraph text, and to update existing notes.
Bump Notes plugin version to 1.65.0.
Get notified about new releases