Add data.generate_insights intent for AI-triggered dataset analysis
Details
Expose the existing insights generator pipeline as an intent so Duncan
can trigger exploratory data analysis when users ask to analyze, report
on, or generate insights from an embedded dataset. The intent fetches
sample data, pushes a loading suggestion card, and sends the
DatasetInsightRequestMessage to the shell's DatasetInsightOrchestrator
— the same pipeline used by the UI "Generate Insights" button.
Bump Data plugin version to 1.21.0.
Notes: multi-image gallery for image blocks
Details
Replace the single-image ImageBlockEditor with a multi-image gallery
matching the Journal's photo section pattern. Key changes:
- Add ImagePhoto record, ImagePhotoLayout enum, extend ImageBlock with
Photos list and PhotoLayout property (backward-compatible — legacy
single-image blocks auto-migrate on load)
- New ImageLayoutBuilder: smart grid layouts (hero top/left/right, 2x2,
rows-of-3) with hover lift animation, rounded corners, and shadow
- New ImageLightbox: full-screen overlay with zoom (wheel, 0.5x–5x),
pan (drag when zoomed), navigation arrows, counter, double-tap reset
- Rewrite ImageBlockEditor: drop zone for empty state, multi-select
file picker, drag-to-reorder between cells, per-image remove button
on hover, layout picker for 3+ photos
- Add lightbox state and commands to NotesViewModel
- Update Markdown/PDF/DOCX export services to handle multi-image blocks
- Bump version to 1.64.0
Notes block editor overhaul: GroupBlock, multi-select, drag-to-split, list sub-blocks
Details
Phase 1 - Fix UTI drag error: Replace bare "PageBlock" drag format key with
reverse-DNS "com.privstack.pageblock" constant to fix macOS UTI validation error.
Phase 2 - Fix child block alignment: Remove 24px left indent from ChildBlocksHost
so nested block text aligns with parent title text.
Phase 3 - GroupBlock: New container block type for organizing related blocks.
Includes GroupBlock model with label/collapse/children, serialization support,
GroupBlockEditor control with collapse toggle and add-block button, picker entry.
Phase 4 - Multi-select: Shift+Click range select, Cmd+Click toggle select.
MultiBlockSelection model tracks selected indices with anchor. Context menu
shows Group Selected / Delete Selected / Move Up / Move Down when multi-selected.
Phase 5 - Drag-to-split columns: Center-zone drop creates ColumnLayoutBlock
with both blocks side-by-side (50/50). Tables/TOC refuse split and fall back
to reorder. BlockTemplateFactory extracts shared block DataTemplates used by
ColumnLayoutEditor, GroupBlockEditor (replaces limited Paragraph/Heading-only
inline templates with full block type support).
Phase 6 - List sub-blocks: BulletListEditor, NumberedListEditor, TaskListEditor
now render PageListItem.ChildBlocks via BlockTemplateFactory. BlockTreeHelper
CollectBlockText extended to traverse list item ChildBlocks for word count.
Version: 1.62.3 → 1.63.0
Files plugin: batch trash with suppressed notifications
Details
FilesViewModel.TrashFilesAsync now calls the new FileService.TrashFilesAsync
batch method which sets SuppressChangeNotification on each SDK message and
sends a single summary EntitySyncedMessage after all files are trashed.
Combined with the RagIndexService batch-coalescing debounce in PrivStack-IO,
this reduces bulk trash of N files from N×14 provider sweeps to 1 sweep.
Version bump: 1.10.5 → 1.11.0
Journal: photo drag reorder, hero layout picker, visible drop shadow (v1.15.0)
Details
Photos in the editor can now be dragged to reorder — drag a photo onto another to swap positions, changing which image is the hero. Added a layout picker (Hero Top / Hero Left / Hero Right) that appears below photos when 3+ are present. Hero Left/Right places the first photo as a tall column on the specified side with remaining photos stacked on the opposite side.
Replaced the PhotoLayout enum values (FullWidth/TwoColumn/ThreeColumn) with HeroTop/HeroLeft/HeroRight. HeroTop is the default (value 0) and matches the previous behavior, so existing entries are backward compatible.
Increased the resting drop shadow on photo cells from barely-visible (#15) to a proper subtle shadow (#18 + #10 dual layer) so photos have depth even before hover.
Get notified about new releases