Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 13 of 127 Next →
February 28, 2026
patch NotesTasks

Fix state persistence for Notes and Tasks (BUG #12, #21, #25, #56)

Details

Notes: persist expanded sidebar node IDs and selected page across

sessions using IPluginSettings. On first load, restore expansion

state from settings and fall back to persisted SelectedPageId when

no in-memory selection exists.

Tasks: fix selected task restore to fall back to _allTasks when the

task isn't in the current filtered collection (BUG #25). Fix filter

project reference going stale on plugin switch by re-resolving

FilterProject after LoadProjects() rebuilds the list (BUG #56).

Persist ShowFiltersRow toggle state.

patch TasksTasks.Headless

Split Tasks plugin: create PrivStack.Plugin.Tasks.Headless

Details

Extract Models/ (16 files) and Services/ (16 files) from the Tasks

plugin into a new PrivStack.Plugin.Tasks.Headless project. This

assembly references only PrivStack.Sdk — zero Avalonia dependency —

making it loadable by the headless server.

New files in Headless:

  • TasksHeadlessPlugin.cs: HeadlessPluginBase entry point with entity

schemas, service initialization, and IApiProvider implementation

  • TasksApiHandler.cs: Shared API handler extracted from

TasksPlugin.Api.cs — used by both desktop and headless plugins

The UI plugin (PrivStack.Plugin.Tasks) now references the Headless

project for shared models and services. TasksPlugin.Api.cs delegates

to the shared TasksApiHandler.

Directory.Build.props updated: HeadlessPlugin=true opt-out prevents

UI.Adaptive (and thus Avalonia) from being added as a transitive

dependency to headless plugin projects.

AXAML xmlns declarations updated with assembly qualifier for types

now in the Headless assembly.

patch CalendarCanvasContactsDataEmailFilesFinanceHabitsJournalNotesWebClips

Bump patch versions for unified toast migration

Data 1.21.0 → 1.21.1 | Email 1.28.1 → 1.28.2 | Files 1.11.0 → 1.11.1 | Notes 1.65.1 → 1.65.2 | Canvas 1.0.4 → 1.0.5 | Habits 1.2.3 → 1.2.4 | Finance 3.24.1 → 3.24.2 | Journal 1.15.5 → 1.15.6 | Calendar 1.14.7 → 1.14.8 | Contacts 1.9.6 → 1.9.7 | WebClips 1.3.4 → 1.3.5 | e0df99f8
Details

Calendar 1.14.7→1.14.8, Canvas 1.0.4→1.0.5, Contacts 1.9.6→1.9.7,

Data 1.21.0→1.21.1, Email 1.28.1→1.28.2, Files 1.11.0→1.11.1,

Finance 3.24.1→3.24.2, Habits 1.2.3→1.2.4, Journal 1.15.5→1.15.6,

Notes 1.65.1→1.65.2, WebClips 1.3.4→1.3.5. Both csproj and

PluginMetadata versions updated.

patch CanvasDataEmailFinanceHabitsJournalWebClips

Migrate remaining plugins to unified IToastService

Details

Migrate Journal, Finance, Habits, WebClips, Canvas, Data, and Email

from local ErrorMessage/StatusMessage patterns to the shell's unified

IToastService. Email was the most involved — removed _errorMessage

ObservableProperty, ClearStatusAfterDelay helper, and converted all

ErrorMessage/StatusMessage completion notifications across 8 partial

class files to _toast?.Show() calls. StatusMessage retained for

in-progress indicators (sync status text). Sub-ViewModels (Compose,

AccountSetup, AccountSettings) keep their own ErrorMessage for inline

form validation.

patch Notes

Migrate Notes plugin from local ErrorMessage to unified IToastService

Details
  • Add IToastService to NotesViewModel constructor (injected from Host.Toast via NotesPlugin)
  • Replace all ~45 ErrorMessage assignments with Toast() calls using ToastType.Error
  • Remove [ObservableProperty] string? _errorMessage field (toast auto-dismisses)
  • Remove inline ErrorMessage border from NotesView.axaml (toast UI is shell-provided)
  • Add success toasts for key operations: wiki push, page duplicate, trash, restore, empty trash, template applied
  • Clean up double blank lines left by ErrorMessage = null removal
  • Leave SaveAsTemplate and WikiSources ErrorMessage untouched (form-level validation, separate VMs)
← Prev Page 13 of 127 Next →

Get notified about new releases