Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 41 of 53 Next →
February 16, 2026
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 Core

Adaptive sync throttling via server rate-limit discovery (v1.11.0)

Core 1.10.6 → 1.11.0 | 6b3a67d9
Details

Add RateLimitConfig type and get_rate_limits() API client method. On

startup the sync engine fetches the server's throttling config and uses

it to cap flush batches (25 entities/cycle) and insert inter-entity

delays (120ms). Overflow entities are re-queued for the next flush cycle.

This proactively prevents 429 rate limit errors during bulk syncs

instead of relying solely on reactive retry-with-backoff.

minor UI Components

Add entity reference support to InfiniteCanvas (v1.28.0)

SDK 1.27.0 → 1.28.0 | f86115d0
Details

Add cross-plugin entity reference drag-and-drop to the InfiniteCanvas

control. Introduces the privstack/entity-ref data format enabling any

plugin entity (tasks, contacts, events, etc.) to be dropped onto the

canvas as a reference card, then double-clicked to navigate back.

Changes:

  • CanvasModels: add EntityReference type constant, EntityType/EntityId

fields on CanvasElement (additive, backward-compatible JSON)

  • New EntityRefDropPayload model for drag format serialization
  • New EntityRefStyle record for per-type badge colors and display names
  • InfiniteCanvasControl: add EntityRefStyles styled property and

EntityReferenceClicked event alongside existing PageReferenceClicked

  • InfiniteCanvasDragDrop: accept entity-ref format in OnDragOver/OnDrop,

deserialize payload and create entity_ref element with badge color

  • InfiniteCanvasInteraction: handle entity-ref double-click navigation

before existing page-ref check

  • Split InfiniteCanvasRendering.cs (361 lines) into two partials:

InfiniteCanvasRendering.cs keeps Render(), grid, empty state, creation

preview, and perf badge; InfiniteCanvasElementRendering.cs gets all

element-specific Draw methods plus new DrawEntityReference (rounded

card with colored badge circle, title, subtitle)

  • New EntityDragHelper in UI.Adaptive/Helpers for plugins to create

entity-ref drag data without boilerplate

  • Version bump: PrivStackSdkVersion 1.27.0 → 1.28.0
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.

minor Desktop Shell

Add browser extension companion infrastructure (v1.30.0)

Desktop 1.29.4 → 1.30.0 | 4223e02d
Details

Add IPC server using named pipes for secure local communication between the

desktop app and browser extensions via a native messaging bridge. Includes:

  • Named pipe IPC server (IpcServer, IpcConnectionHandler, IpcMessageRouter)

with length-prefixed JSON protocol and constant-time auth token validation

  • PrivStack.Bridge native messaging relay (C# AOT console app) that connects

browser extension stdin/stdout to desktop named pipe

  • NativeMessagingRegistrar for auto-registering host manifests on Chrome,

Firefox, Edge, and Brave across macOS, Windows, and Linux

  • BridgeAuthToken generation and storage in AppSettings
  • Graph plugin integration: WebClip node type with filter checkbox,

data loading in GraphDataService, and persisted visibility toggle

  • IPC message routing for clip.save, readlater, entity.search, snip.save,

transcribe.enqueue, history.batch_sync, and ping actions

  • Version bump: 1.29.4 → 1.30.0
← Prev Page 41 of 53 Next →

Get notified about new releases