Replace sidebar agenda list with mini calendar widget, fix agenda event click (1.9.0)
Details
Sidebar now shows a mini month calendar with day-of-month cells, today
highlight, selected-date ring, and event-presence dots. Clicking a date
navigates the main view (day/week/month) or scrolls-to in agenda mode.
Month navigation arrows let the mini cal move independently of the main
view. Removed the redundant UpcomingEventGroups sidebar list that
duplicated the Agenda view. Single-clicking an event in Agenda view now
opens the event detail popover (previously only set SelectedEvent
without showing popover). Generalized ShowEventPopover to accept any
Control, not just Border, so the agenda Button elements can reuse the
same popover positioning logic.
Implement IShareableBehavior in 5 plugins for cloud sync sharing
Details
Adds IShareableBehavior capability to Tasks (1.8.0), Notes (1.37.0), Journal (1.4.0), Snippets (1.4.0), and RSS (1.6.0) plugins. Each plugin declares its shareable entity types, provides entity title/type resolution for the share dialog, and registers the capability in OnInitializeAsync. Calendar, Files, and Contacts are excluded from sharing per the cloud sync implementation plan (Calendar has no shareable entities, Files has complex blob handling deferred to Phase 8, Contacts deferred for privacy concerns).
Replace DataGrid with shared TableGrid in Data plugin browse view (1.14.0)
Details
Migrated DatasetBrowseView from the native Avalonia DataGrid to the shared
TableGrid control from PrivStack.UI.Adaptive. This brings the Data plugin's
table display in line with the Notes plugin's table blocks, providing a
consistent table UX across the app.
Created DatasetTableGridSource (ITableGridDataSource adapter) that bridges
IDatasetService CRUD operations to the TableGrid control. Supports both
editable dataset mode (cell editing, row/column add/delete) and read-only
SQL view mode. Saved view sort overrides are preserved through the adapter.
The view is significantly simplified — filter bar, pagination controls,
loading indicator, column rebuilding, sorting handlers, clipboard paste,
and cell edit wiring are all now handled internally by TableGrid. The
code-behind drops from 172 lines to 60, and the XAML from 95 to 60.
TableGrid provides additional capabilities not previously available in
the Data plugin browse view: export (CSV/TSV/JSON/Markdown), freeze panes,
column resize grips, infinite scroll mode, context menus for row/column
operations, keyboard cell navigation, and URL detection in cells.
Add inline properties panel and save-as-template (1.36.0)
Details
Inline Properties Panel:
- Show/Hide Properties toggle below cover image area reveals tags
and custom properties inline in the page editor
- Tags section with chip display, autocomplete input, add/remove
- Custom property editors for all types (Text, Number, Date, Checkbox,
Select, Url) with auto-save on change
- Per-property eye toggle to control inline visibility, persisted
per-page via plugin settings
- Properties load from IPropertyService (new SDK interface) on page
switch; changes sync to Info Panel via NotifyContentChanged
Save as Template:
- "Template" button added to page actions toolbar (after Export)
- Modal overlay with emoji picker, name, description, and category
fields for saving current page content as a reusable template
- PageTemplateService extended with user template persistence via SDK
entity storage (page_template entity type)
- User templates appear alongside built-in templates in the existing
template picker; TemplatePickerViewModel.RefreshTemplates() called
after save
Version bump: 1.35.4 → 1.36.0 (both .csproj and PluginMetadata)
Add table freezing, infinite scroll, and default settings (1.35.0)
Details
Add column/row freeze persistence, infinite scroll mode, and a plugin-wide
table defaults settings panel. TableBlock model gains FrozenColumns, FrozenRows,
and ScrollMode fields with full JSON serialization. All six data sources
implement OnFreezeColumnsAsync/OnFreezeRowsAsync. TableBlockEditor wires
freeze and scroll mode events from TableGrid and applies plugin-level defaults
for striping, color theme, page size, and scroll mode when per-table values
are unset. New NotesSettingsOverlay accessible via Settings cog > Table Defaults.
Get notified about new releases