Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 24 of 139 Next →
February 27, 2026
patch UI Components

Fix SplitPaneLayout: use Border hosts instead of ContentPresenter

Details

ContentPresenter outside a ControlTemplate doesn't reliably present

Control content in Avalonia. Replaced with Border hosts that use

Child property directly.

Also fixed MeasureOverride: was returning availableSize which could

contain Infinity, causing the layout system to give zero size. Now

clamps infinite dimensions and measures each child with its

proportional share of space.

patch UI Components

Add SplitPaneLayout shared control to UI.Adaptive

Details

Code-only Border subclass with a custom inner Panel that arranges

two content panes and a draggable resize handle using ratio-based

math. Avoids the star-column minimum width issues that plague

Grid-based split implementations.

Properties: Ratio (pane2 fraction), MinRatio, MaxRatio, HandleSize,

Pane1, Pane2. Fires RatioChanged event on drag release for

persistence. During drag, uses an internal _dragRatio for live

feedback without updating the bound property on every pixel.

Replaces the inline resize logic pattern found in Tasks and Data

plugins with a single reusable component.

patch Desktop Shell

Fix cloud sync pushing local_only entities (CalDAV/ICS events)

Details

Events from external sources (CalDAV subscriptions, ICS feeds) are

marked local_only in the database and should never be synced to cloud

or P2P — the remote server is the source of truth.

Two defense-in-depth guards added:

1. SdkHost.NotifySyncIfMutation: Skip sync notification entirely when

the SDK request carries the local_only parameter. This prevents

the outbound pipeline from ever seeing local_only mutations.

2. SyncOutboundService.NotifyEntityChanged: Parse the entity payload

JSON and reject entities where local_only is true. Catches any

edge case where a local_only entity reaches the outbound path

without the parameter (e.g. ViewModel-initiated edits).

patch Desktop Shell

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
patch Desktop Shell

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
← Prev Page 24 of 139 Next →

Get notified about new releases