Add release stage badges to Dashboard marketplace and workspace plugins
Details
DashboardPluginItem now has ReleaseStage (string from server API) with
IsAlpha/IsBeta computed properties. WorkspacePluginEntry gets ReleaseStage
from local plugin metadata. Both marketplace plugin cards and workspace
plugin cards display red "Alpha" or orange "Beta" badges. OfficialPluginInfo
DTO gains release_stage field to deserialize from the server registry API.
Auto-size confirmation dialog height for longer messages (v1.42.5)
Details
Replace fixed Height="200" with SizeToContent="Height" on the
ConfirmationWindow so the dialog expands to fit multi-line messages
like the cloud clean/purge confirmations without clipping the buttons.
Add cloud clean and purge actions to settings (v1.42.4)
Details
Add "Clean my Cloud" and "Purge my Cloud" buttons to the Cloud Sync
settings section. Clean removes sync event batches to free storage while
preserving snapshots. Purge deletes all cloud data including snapshots,
blobs, and sync history. Both operations call server-side API endpoints
via PrivStackApiClient, show confirmation dialogs before proceeding,
and automatically pause/resume sync during the operation.
Skip sync snapshots for email entities unless linked
Details
Email entities (email_message, email_folder) are now excluded from all
sync channels (P2P, file-based, cloud) by default in SyncOutboundService.
Previously only cloud sync excluded them — now the early return in
NotifyEntityChanged skips ShareDocumentForSync, debounce, snapshot
recording, file event writing, and cloud push entirely.
When an email entity gets linked to another entity via a relation
property, the OnEntityLinked callback in PropertyValueViewModel fires.
InfoPanelViewModel reads the linked entity via SDK and calls the new
PromoteEntityForSync method which bypasses the exclusion, syncing the
email once so other devices can resolve the link.
Desktop version bumped to 1.42.3.
Exclude email entities from cloud sync to reduce wasted bandwidth
Details
Email messages and folders are always fetchable from IMAP, so syncing them to
cloud storage wastes S3 bandwidth and quota. Cross-plugin links to emails (stored
on the linking entity like a task) are still synced, preserving references across
devices.
Filtered in two places:
- SyncOutboundService.OnDebounceElapsed: skips email_message and email_folder
entity types from cloud push during normal operation
- Rust push_all_entities: skips excluded types during initial full seed
Desktop v1.42.2, Rust v1.13.1
Get notified about new releases