Fix compact density, remove redundant footer, move header above split
Details
Three issues fixed:
1. Compact vs Balanced were identical — compact now hides the metadata
row (status, due date, subtasks) and tags, showing only priority dot
+ title for maximum density.
2. Removed the bottom footer bar (Total/Active/Done) which duplicated
the stats already shown in the header.
3. Moved the stats + New Task + Prioritize header out of the left pane
and above the split layout so it spans the full width. Adds a subtle
bottom border to visually separate it from the split content.
Fix runtime type resolution crash in density bindings
Details
Replace compiled binding cast syntax ((vm:TasksViewModel)DataContext)
with reflection binding fallback $parent[UserControl].DataContext inside
DataTemplate — the cast syntax can't resolve plugin types at runtime
within a template context.
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.
Fix task list items expanding beyond left pane width
Details
Root cause: the ListBox in flat sub-mode was wrapped in a redundant
outer ScrollViewer that offered infinite horizontal width during
measure, bypassing the pixel-constrained Grid column width. Since
ListBox already has its own internal ScrollViewer for vertical
scrolling, the outer one was unnecessary and broke width constraint
propagation.
- Remove redundant outer ScrollViewer around flat sub-mode ListBox,
move IsVisible binding to ListBox directly
- Add HorizontalScrollBarVisibility="Disabled" to GTD and Calendar
sub-mode ScrollViewers (these use ItemsControl which has no built-in
scroll, so the outer ScrollViewer is needed but must not offer
unconstrained horizontal space)
Revert to inline Grid split with pixel-based ColumnDefinitions
Details
The SplitPaneLayout custom Control wasn't constraining content width
properly — items expanded beyond pane bounds regardless of Clip,
ClipToBounds, or measure constraints.
Replaced with a standard Grid where ColumnDefinitions start as star
(*) sizing for initial layout, then get switched to pixel-based
GridLength values in OnLoaded + SizeChanged. Pixel-based columns
give the Grid's layout engine an exact width budget for each column,
and content is properly constrained. ClipToBounds on each pane
handles any remaining overflow.
The resize handle, drag interaction, and ratio persistence all work
through the ColumnDefinition.Width property — no FindControl for
child panels needed.
Get notified about new releases