Add copy cURL command to API endpoint detail popup
Details
Every endpoint detail popup now shows a ready-to-paste cURL command
at the top with method, auth header, content-type, and JSON body.
All routes are now clickable (not just ones with schema docs) since
every route gets a cURL block.
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.
Add API endpoint detail popup with request/response schemas
Details
Extend ApiRouteDescriptor in SDK with RequestExample, ResponseExample,
and QueryParamDocs fields. API docs window routes are now clickable —
clicking an endpoint opens a detail popup showing query parameters,
request body shape, and response body shape with copy-to-clipboard
buttons for each code block.
Fix horizontal overflow in API docs window
Details
- Reduce method column from 90px to 50px (GET/POST/PATCH/DELETE fit)
- Add TextWrapping=Wrap to all route path/description TextBlocks
- Add TextWrapping to the curl status check code block (was the only
code block missing it)
Long endpoint paths and descriptions now wrap instead of overflowing
the modal width.
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.
Get notified about new releases