Fix GitHub Sync modal rendering behind Settings overlay
Details
When clicking "Configure" on the Sync tab, the GitHub Sources overlay
opened behind the Settings overlay because GitHubIssueSourcesOverlay
is declared earlier in the visual tree than TasksSettingsOverlay.
Fix: temporarily hide the Settings overlay when opening the GitHub
Sources overlay, then re-show it when the GitHub Sources overlay
closes via a PropertyChanged listener on IsOpen.
Bump Calendar plugin version: 1.14.5 → 1.14.6
Details
Includes BUG #68 (collapsible sidebar) and BUG #66 (inline validation).
Add inline field validation to Calendar event editor (BUG #66)
Details
Replace bottom-of-form error messages with inline validation:
- Title field: red border + "Title is required." message below field
- End time fields: red border around date/time group + inline error
message when end time is before start time
- General ValidationError kept at bottom for read-only and save errors
Add HasTitleError, HasEndTimeError, EndTimeErrorMessage properties to
EventEditorViewModel. Errors clear on form reset and re-validation.
New ValidationConverters.ErrorBorderThickness converter (bool → Thickness).
Add collapsible sidebar to Calendar plugin (BUG #68)
Details
Replace static Border sidebar with shared PluginSidebar control from
PrivStack.UI.Adaptive. Sidebar now has collapse/expand toggle with
smooth animation, resizable width, and consistent behavior matching
Contacts, Snippets, and RSS plugins.
- Add IsCalendarSidebarCollapsed property to CalendarViewModel
- Move sidebar content into PluginSidebar.SidebarContent slot
- Move "+ New Event" button into PluginSidebar.FooterContent slot
- Calendar sources, mini calendar, and quick add all inside sidebar
Clean up GitHub project sync data model
Details
- Remove duplicate GitHubProjectItemLabel DTO; reuse GitHubLabel
directly on GitHubProjectItem.ContentLabels to eliminate unnecessary
type conversion in the mapper
- Add typed accessors on TaskItem for project-specific custom fields:
GitHubProjectSourceId, GitHubProjectItemNodeId, GitHubProjectStatus
- Extract GetCustomFieldString helper to DRY the JsonElement unboxing
pattern shared by GitHubUrl and the new accessors
- Simplify HasProjectStatusChanged to use the typed accessor
Get notified about new releases