Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 26 of 53 Next →
February 20, 2026
minor Email

Migrate Email plugin OAuth to shell-level connections

Email 1.26.4 → 1.27.0 | 7fdd3550
Details

Delete plugin-owned OAuth infrastructure (OAuthBrowserFlow, EmailOAuthService,

OAuthProviderConfig) — OAuth is now managed at the shell level via Settings →

Connections. Update EmailCredentials to use ConnectionId referencing shell

connections instead of storing tokens directly. Update ImapSyncService and

SmtpSendService to retrieve access tokens via IConnectionService.GetAccessTokenByIdAsync

instead of EmailOAuthService.EnsureValidTokenAsync. Update AccountSetupViewModel

to query existing shell connections rather than launching its own OAuth flow —

users must connect Google/Microsoft in Settings first. Add automatic migration

in EmailPlugin.OnInitializeAsync that detects legacy OAuth accounts (with

RefreshToken but no ConnectionId) and imports them into shell connections via

IConnectionService.ImportConnectionAsync. Remove EmailOAuthService dependency

from all ViewModels. Plugin version bumped to 1.27.0.

minor Tasks

Add GitHub Issues sync for Tasks plugin

Tasks 1.15.1 → 1.16.0 | b1aa4c36
Details

Implements bidirectional sync between GitHub issues and PrivStack tasks.

Users can add GitHub repositories as issue sources, configure per-repo

filters (assignee, labels, milestone), and choose between bidirectional

or pull-only sync modes.

New files:

  • Models: GitHubIssueSource (source config), GitHubIssueModels (API DTOs)
  • Services: GitHubIssueApiClient (REST API), GitHubIssueSourceService (CRUD),

GitHubIssueFieldMapper (status/priority mapping), GitHubIssueSyncService

(pull/push orchestration with last-write-wins conflict resolution)

  • Controls: ModalOverlay (reusable overlay pattern for Tasks plugin)
  • ViewModels: GitHubIssueSourcesViewModel (3-state overlay: source list,

repo picker, filter config)

  • Views: GitHubIssueSourcesOverlay (AXAML overlay UI)

Modified files:

  • TaskItem.cs: Added source_type, source_id, source_ref, source_etag fields

with IsGitHubIssue and GitHubUrl computed properties

  • TasksPlugin.cs: Added github_issue_source entity schema, source tracking

indexed fields, service initialization with IConnectionService guard

  • TasksViewModel.cs: Added GitHub service properties, lazy-init overlay VM,

OpenGitHubIssueSources command

  • TasksView.axaml: GitHub button in toolbar, GitHub badge on synced tasks,

overlay placement

  • TaskDetailPanel.axaml: GitHub Issue metadata card with issue ref and link

Version: 1.15.1 -> 1.16.0

minor Tasks

Replace CalendarDatePicker with MiniCalendarPicker in Tasks

Tasks 1.14.0 → 1.15.0 | 73d29c18
Details

Swaps out Avalonia's default CalendarDatePicker for the new

MiniCalendarPicker from UI.Adaptive in both TasksView (due date)

and TaskDetailPanel (due date, start date, reminder). The new

picker shows a compact mini-calendar popup matching the Calendar

plugin's sidebar style. Binds directly to DateTimeOffset? properties

instead of the DateTime? wrapper properties. Bumps to v1.15.0.

minor Tasks

Tasks UX: auto-assign project, remove Add buttons, remove card background

Tasks 1.13.0 → 1.14.0 | 87cfa008
Details

Project dropdown now auto-assigns on selection change via

OnSelectedProjectChanged partial handler. Added a static "None" sentinel

project as the first item so users can clear the assignment from the

dropdown directly. Removed the Assign and Clear buttons.

Removed redundant "Add" buttons from Tags, Contexts, Checklist, and

Related Tasks inputs — all already support Enter-to-submit via existing

KeyDown handlers. Updated watermark text to hint at Enter usage.

Removed the ThemeSurfaceBrush card background from the detail area so

content sits directly on the page background for a cleaner, modern look.

Version bump: 1.13.0 → 1.14.0

minor NotesTasks

Add AI "Generate Title from Content" action to Notes and Tasks plugins

Notes 1.49.3 → 1.50.0 | Tasks 1.12.0 → 1.13.0 | bf7b044f
Details

Notes plugin (1.50.0): Adds GenerateTitleFromContentAsync() that extracts all page block text, sends it to the AI service with a title-generation prompt (25-75 chars), and presents the suggestion via inline observable properties. Accept sets CurrentPageTitle, dismiss clears the suggestion, and undo restores the previous title. A "Generate Title" menu item is added to the BlockWrapper AI context menu alongside Summarize and Rewrite.

Tasks plugin (1.13.0): Adds GenerateTitleFromContentAsync() that gathers the task description, task notes, and associated project name/description for richer context. The AI Title button is placed in both the main TasksView header (next to status/priority badges) and the TaskDetailPanel headline block. An accept/dismiss suggestion banner appears below the title. Also adds AI Generate/Rewrite buttons to the main TasksView Description section (previously only in TaskDetailPanel).

Both use the direct IAiService.CompleteAsync() pattern with MaxTokens=48, Temperature=0.5, and dedicated feature IDs for usage tracking.

← Prev Page 26 of 53 Next →

Get notified about new releases