Redesign Kanban cards to match list view layout, move layout toggle to Settings
Details
Kanban cards now use the same Grid layout as the detailed list view (status
bar, priority dot, metadata row, tags, timer button) instead of the old flat
StackPanel. Simple mode shows a minimal priority-dot + title variant. The
Done column applies strikethrough, muted colors, opacity, and shows
"Completed: date" instead of due date with a logged-time badge.
Move the Simple/Detailed toggle from the toolbar into Settings > View tab as
a new "Layout Mode" option set. All three View tab option sets (Layout Mode,
List Grouping, Item Density) now show a contextual description TextBlock
below them that updates when the selection changes.
IsSimpleMode is now persisted to plugin settings and restored on startup.
Persist task view state across restarts and plugin switches (BUG #25, #56, #58)
Details
BUG #25 — Selected task restored on restart: SelectedTask ID is saved
to IPluginSettings on every selection change and restored during
ApplyFiltersAndSort when no in-memory selection exists.
BUG #56 — Filters persist across plugin switch and restart: FilterStatus,
FilterPriority, ActiveSmartFilter, SortField, SortAscending,
ShowCompletedTasks, ShowArchivedTasks, and ViewMode are all saved to
settings on change and restored in the constructor.
BUG #58 — Edit state survives plugin switch: OnSelectedTaskChanged now
detects when RefreshTasks() replaces the object reference for the same
task (same ID) and skips resetting IsDetailPanelEditing and edit fields,
so mid-edit state is preserved when navigating away and back.
Fix kanban drop zone triggering at 50% card overlap (BUG #52)
Details
IsPointInBounds() was transforming column bounds to the visual root
(window) coordinate space, but the pointer position from
e.GetPosition(this) is in the UserControl's coordinate space. The
offset between the two (window chrome, sidebar, etc.) meant the
pointer had to travel well past the column boundary before matching.
Fixed by transforming column bounds to `this` (the UserControl)
instead of the visual root, so both coordinates share the same space.
Add right-click context menu to sticky notes
Details
Right-clicking a sticky note now shows a context menu with:
- Edit: opens the full editor overlay
- Color: submenu with 6 color swatches (yellow, blue, green, pink,
purple, orange) — selecting a color updates the note immediately
without opening the editor, with a colored dot indicator and a
border on the currently active color
- Delete: deletes the sticky note
Adds NoteColorChangeRequested event to StickyBoardControl and
ChangeStickyNoteColorAsync to NotesViewModel for direct color
changes. Also refactors the duplicate RGB color tuple out of
GetStickyColor into a shared GetStickyColorRgb helper.
Fixes: BUG #18
Route all StatusMessage feedback to toast system, enlarge timer buttons
Details
Two changes:
1. Migrate all transient StatusMessage assignments to Toast() calls
routed through IToastService. Added _toast field to TasksViewModel,
wired via Host.Toast in TasksPlugin. Error messages use
ToastType.Error, validation warnings use ToastType.Warning, all
other feedback uses default ToastType.Info. The StatusMessage
property is retained only for the static task count display.
Removed the StatusMessage TextBlock from the split header since
feedback now appears as shell toasts.
2. Increased timer play/stop button size from ThemeFontSizeXs to
ThemeFontSizeMd/Sm with larger padding (6,5 vs 4,3). Button is
now visible in all density modes, not just Full.
Get notified about new releases