Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 26 of 32 Next →
February 16, 2026
minor CanvasNotes

Extract Canvas/Whiteboard into standalone plugin (v1.0.0)

Notes 1.41.0 → 1.42.0 | 6288b94f
Details

Canvas (whiteboards) has been extracted from the Notes plugin into its

own standalone plugin PrivStack.Plugin.Canvas. This reduces the Notes

god-object problem and gives Canvas its own navigation entry in the

sidebar.

New plugin (PrivStack.Plugin.Canvas v1.0.0):

  • Standalone PluginBase<CanvasViewModel> with own NavigationItem
  • Whiteboard CRUD via WhiteboardService (PluginId: privstack.canvas)
  • Entity sidebar for cross-plugin drag-to-canvas
  • Connector toolbar with style/arrow controls
  • IDeepLinkTarget for whiteboard deep links
  • IRecipient<EntitySyncedMessage> for cloud sync
  • One-time data migration from privstack.notes to privstack.canvas

Notes plugin cleanup (v1.42.0):

  • Removed whiteboard EntitySchema, WhiteboardService, CanvasViewModel
  • Removed IsCanvasView property and Canvas toggle button
  • Removed ~450 lines of canvas XAML and ~200 lines of code-behind
  • Removed whiteboard sync handler and canvas event wiring
  • Retained inline CanvasBlock support (AddCanvasBlock command) for

embedded canvas blocks within pages

minor Notes

Add entity sources sidebar to canvas view (v1.41.0)

Notes 1.40.0 → 1.41.0 | 6c23f2a5
Details

Adds a new "Entity Sources" panel below the whiteboard list in the

canvas sidebar. The panel discovers all ILinkableItemProvider plugins

(Tasks, Contacts, Calendar, Journal, Snippets, RSS, Web Clips, Files)

and lists their items grouped by plugin. Items can be dragged directly

onto the canvas to create entity reference cards.

New files:

  • Models/CanvasEntityGroup.cs — grouped list model for sidebar TreeView
  • ViewModels/CanvasViewModel.EntitySidebar.cs — entity sidebar state,

loading, and client-side filtering with debounce

Changes:

  • NotesPlugin.cs: wire CapabilityBroker to CanvasViewModel, auto-load

entity sources on canvas navigation, version bump to 1.41.0

  • NotesViewModel.Canvas.cs: load entity sources on canvas view switch
  • NotesView.axaml: add resize handle + entity sources panel (header,

filter TextBox, TreeView with group/leaf templates) to canvas sidebar

  • NotesView.axaml.cs: add entity drag handlers using EntityDragHelper,

resize handlers, and filter debounce wiring

minor Notes

Toolbar overhaul with active highlighting, shapes flyout, and connector toolbars (v1.40.0)

Notes 1.39.0 → 1.40.0 | f0f6850e
Details

Toolbar redesign with Figma-style active tool highlighting via EnumMatchConverter and

Classes.active binding. Shape buttons consolidated into a single flyout dropdown exposing

all 8 shapes (Rect, Ellipse, Diamond, Parallelogram, Cylinder, Hexagon, RoundedRect,

Triangle). Clicking the button creates the last-used shape; clicking the dropdown opens

the full menu.

Connector sub-toolbar appears when Connector tool is active, providing Style (Straight,

Curved, Elbow) and Arrow (Forward, Both, Backward, None) pickers that set defaults for

new connectors. Selected connector toolbar appears when a connector is selected, allowing

live modification of style and arrow mode on the selected connector.

New CanvasViewModel.ConnectorToolbar.cs partial handles connector selection state, default

connector properties, and event handlers for ConnectorSelected/Deselected/PropertyChanged.

Code-behind wires canvas control events to VM and syncs default properties back to control.

minor ContactsJournalNotesRssSnippetsWebClips

Wire entity-ref drag from plugins to InfiniteCanvas

Rss 1.6.0 → 1.7.0 | Notes 1.38.0 → 1.39.0 | Journal 1.4.0 → 1.5.0 | Contacts 1.6.2 → 1.7.0 | Snippets 1.4.0 → 1.5.0 | WebClips 1.0.1 → 1.1.0 | 6f0541d7
Details

Add cross-plugin entity drag support so users can drag items from

Contacts, Journal, Snippets, RSS, and WebClips onto the Notes

InfiniteCanvas as reference cards. Each plugin emits the

privstack/entity-ref drag format using EntityDragHelper from

UI.Adaptive. Notes plugin wires EntityReferenceClicked events

through IDeepLinkTarget for double-click navigation back to the

source entity. Also adds entity-ref format to the Notes page tree

drag alongside the existing PageTreeNode format. Includes

EntityRefStyles color map for per-type badge rendering on canvas

cards. Version bumps: Notes 1.39.0, Contacts 1.7.0, Journal 1.5.0,

Snippets 1.5.0, RSS 1.7.0, WebClips 1.1.0.

February 15, 2026
minor Notes

Add canvas/whiteboard feature to Notes plugin (v1.38.0)

Notes 1.37.0 → 1.38.0 | a21d9189
Details

Add standalone whiteboard entities with CRUD operations, infinite canvas

view with sidebar, and embeddable canvas blocks inside pages.

New files:

  • Whiteboard model and WhiteboardSummary record for entity storage
  • WhiteboardService for whiteboard CRUD via SDK messaging
  • CanvasViewModel for whiteboard management, tool selection, autosave
  • NotesViewModel.Canvas partial for view switching and page navigation
  • CanvasBlockEditor control for embedding canvases inside page blocks

Modified files:

  • NotesPlugin: register whiteboard entity schema, sync handler, service init
  • Page.cs: add CanvasBlock type with converter support
  • NotesView.axaml: replace canvas placeholder with full canvas UI including

whiteboard sidebar, InfiniteCanvasControl, floating toolbar, and

performance warning badge

  • NotesView.axaml.cs: wire canvas control events (DataChanged, PageRef,

PerformanceWarning) and FitToView click handler

  • PickerViewModels: add Canvas entry to block type picker list
  • NotesViewModel: make SwitchToCanvasView async to load whiteboards

Consumes InfiniteCanvasControl from PrivStack.UI.Adaptive v1.27.0.

Whiteboard autosave uses 500ms debounce. Entity type uses LwwDocument

merge strategy for cloud sync compatibility.

← Prev Page 26 of 32 Next →

Get notified about new releases