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.
Make API docs dialog dynamically populate endpoints from plugins
Details
Replace hardcoded Tasks/Projects endpoint sections with an ItemsControl
that discovers all IApiProvider plugins at runtime via IPluginRegistry.
Each plugin gets a collapsible Expander showing its routes with color-coded
HTTP methods (GET=green, POST=primary, PATCH=warning, DELETE=danger).
- LoadRoutes() resolves plugin display names from metadata
- MethodBrush resolved from theme resources at load time
- Empty state shown when no plugins register API endpoints
- Shell endpoints (status, routes) remain static
Add API documentation dialog and View Documentation link
Details
New ApiDocsWindow dialog accessible from Settings > Developer via
"View Documentation" link. Shows a comprehensive guide with:
- Overview of the local API and its purpose
- Authentication instructions (X-API-Key and Bearer token)
- Step-by-step getting started guide with curl examples
- Full endpoint listing (shell, tasks, projects) with color-coded
HTTP methods (GET/POST/PATCH/DELETE)
- Create and search task examples with complete curl commands
- Security note about localhost-only binding and key management
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.
Get notified about new releases