Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 35 of 266 Next →
February 28, 2026
patch Calendar

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
patch Tasks

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

Architecture split: extract PrivStack.Services and PrivStack.Server

Details

Phase 0 of the headless server architecture split. Extracts ~155 service

files with zero Avalonia dependency into a shared PrivStack.Services

library and creates a standalone PrivStack.Server headless binary.

Architecture changes:

  • New PrivStack.Services project: shared core services, models, native

FFI, AI services, API server, biometric, connections, file sync, IPC,

plugin host, update services — all Avalonia-free

  • New PrivStack.Server project: headless console binary (privstack-server)

that references Services + Sdk without any Avalonia dependency

  • Desktop now references Services and only contains UI-specific code:

views, view models, theme/font/layout services, dialog service,

backup service, whisper/audio, spell check, plugin registry

Key abstractions created:

  • INavigationHost: abstracts MainWindowViewModel navigation for Services
  • IEmbeddingService: abstracts ONNX embedding (Desktop implements,

Server stubs)

  • IWindowSettingsService: Desktop-only Window position/size persistence
  • DesktopAppSettingsService: extends base AppSettingsService with

Avalonia Window operations

  • Extensible AI provider registration via constructor injection

Breaking changes to models (Avalonia-free):

  • SyncModels: DiscoveryBrush (IBrush) → DiscoveryCategory (string)
  • CloudSyncModels: SeverityBrush (IBrush) → SeverityLevel (string)
  • IAppSettingsService: removed ApplyToWindow/UpdateWindowBounds
  • IDialogService: removed SetOwner/Owner
  • IPluginRegistry: SetMainViewModel/GetMainViewModel use object?

Dependency graph:

Sdk (no deps)

Services → Sdk

↑ ↑

Desktop → Services + Sdk + UI.Adaptive + Avalonia

Server → Services + Sdk (no Avalonia)

minor Tasks

GitHub Projects v2 full sync: create tasks from project items

Tasks 1.28.0 → 1.29.0 | e047b4e8
Details

GitHub Project sync previously only linked already-synced tasks to a

PrivStack project. Adding a project without also adding each repo as an

issue source resulted in zero tasks. This makes GitHub Projects a

self-contained sync source.

Changes:

  • Expand GraphQL content fragment to fetch full issue data (body, state,

author, assignees, labels, comments, timestamps) from project items

  • Add project status → PrivStack status mapping with fuzzy column name

matching (Todo/In Progress/Done/Review/Blocked/etc.)

  • Add MapProjectItemToNewTask and UpdateTaskFromProjectItem factories

that create/update tasks directly from project items, with project

column status taking priority over issue state

  • Rewrite GitHubProjectSyncService.SyncAsync to create missing tasks,

update existing tasks when remote is newer or column changed, and

link tasks to the PrivStack project

  • Fix issue sync dedup: broaden task lookup to all github_issue tasks

by source_ref (not just tasks from the current source), preventing

duplicates when both project and issue sources cover the same repo

  • Add push ownership guard: only push changes to GitHub if the source

that created the task owns it

  • Fix orphan detection to only mark tasks owned by the current source

Version bump: Tasks 1.28.0 → 1.29.0

patch Calendar

Add right-click context menus to Calendar events and sidebar calendars (BUG #65)

Calendar 1.14.4 → 1.14.5 | efd2010a
Details

Event context menu (all views: month, week, day, all-day, agenda):

  • Edit Event — opens event editor
  • Delete Event — triggers delete with recurring event handling

Sidebar calendar source context menu:

  • Hide/Show Calendar — toggles calendar visibility
  • Manage Calendars... — opens calendar manager overlay

Right-click is intercepted before drag handlers in week/day/month views

so it doesn't conflict with event drag-to-reposition.

Version: 1.14.4 → 1.14.5

← Prev Page 35 of 266 Next →

Get notified about new releases