Refactor Tasks split layout to use SplitPaneLayout control
Details
Replace ~95 lines of inline resize code (fields, 4 handlers,
ApplyDetailPanelRatio, FindControl lookups) with the shared
SplitPaneLayout control from UI.Adaptive. The code-behind now
has a single OnDetailPanelRatioChanged event handler for
persistence.
Also adds IsFinite guard in SetDetailPanelRatio to prevent
JSON serialization crash when ratio computes to Infinity.
Fix task list items not respecting pane width
Details
The split grid uses a * column for the left pane, but the grid's
own Bounds.Width gets inflated by content desired size, preventing
the left pane from shrinking properly. Fixed by reading available
width from the parent Panel (which truly fills available space)
instead of from the grid itself. Both ApplyDetailPanelRatio and
drag resize now use parent width for calculations.
Also added left margin on the left pane so items don't touch the
edge.
Fix wiki folder children disappearing after trash view round-trip
Details
When ShowingTrash toggles, the TreeView becomes invisible. Avalonia
tears down TreeViewItem containers and resets IsExpanded to false via
the two-way binding, collapsing all nodes. When returning from trash,
wiki folders (and any expanded regular folders) appeared empty because
their expansion state was lost.
Fix: snapshot _expandedNodeIds when entering trash, then restore
expansion state on all nodes (including wiki folders) when leaving.
Wiki folders with children are always re-expanded by convention since
they don't participate in the _expandedNodeIds tracking.
Fix split layout resize and replace selection highlight
Details
Resize: Changed ColumnDefinitions from star (*) to Auto sizing for
both panes. Star columns have implicit minimum widths from content,
preventing the left pane from shrinking below ~50%. Both panes now
get explicit programmatic widths set in ApplyDetailPanelRatio() and
OnPanelResizeMoved(), allowing true 25%-75% range.
Selection: Stripped the default ThemeSelectedBrush lavender highlight
on ListBoxItem. Selected items now use ThemeHoverBrush background
with a subtle drop shadow on the .item-card border instead.
Delete wiki pages from GitHub at trash time, not permanent delete
Details
The remote delete was only wired into DeletePagePermanentlyAsync
(permanent delete from trash view), but the user expects the file
to be removed from GitHub when they trash the page. Additionally,
SyncAsync restores trashed wiki pages that still exist in the repo,
so the page would reappear on next sync.
Move the GitHub delete call to both TrashPageAsync and
TrashPageFromTreeAsync — the two entry points for trashing a page.
Update confirmation dialogs for wiki pages to say "Delete from Wiki"
and mention GitHub removal. Keep the remote delete in
DeletePagePermanentlyAsync as a fallback for pages trashed before
this change.
Get notified about new releases