Add AI summarize feature with suggestion panel (v1.44.0)
Details
Add block-level AI summarization: right-click any text block → AI → Summarize.
The AI suggestion panel shows the result with actions to replace the block,
insert above/below, or close and store for later retrieval. Includes
AiSuggestionStore for persisting suggestions via IPluginSettings,
AiSuggestionPanelViewModel for panel state management, and text extraction
from all block content types (paragraph, heading, list, code, callout,
blockquote). Context menu AI item is conditionally visible based on
IAiService.IsAvailable. Bump Notes plugin from 1.43.0 to 1.44.0.
Visual modernization pass 2 — shell components (v1.37.0)
Details
Continued modernization of the PrivStack desktop shell components
toward a Material 3 aesthetic, following the Phase 1 color and nav
overhaul (v1.36.0).
PluginCommandBar.axaml:
- Fixed StackPanel Spacing="-2" → Spacing="2" eliminating the
negative-spacing title/subtitle overlap
- Title downgraded from FontSizeLg/SemiBold to FontSizeMd/Medium
to reduce visual weight in the command bar
- Subtitle font size reduced to ThemeFontSizeXsSm for better hierarchy
PluginFooter.axaml:
- Removed the Windows XP-era 1×12px Border vertical separator between
primary and secondary stat sections
- Replaced with a modern "·" mid-dot separator (·) consistent
with the FilesView footer pattern
PrivStackTheme.axaml:
- Added global Button.view-toggle, Button.view-toggle:pointerover, and
Button.view-toggle.active styles so plugin views using the view-toggle
class work without needing a ViewToggleGroup wrapper
- Active state: ThemePrimaryMutedBrush background + ThemePrimaryBrush
foreground + SemiBold weight
Modernize design system to material-inspired indigo palette (v1.36.0)
Details
Overhaul the default Dark and Light themes plus core component styles to bring the
visual language in line with modern 2024-era desktop UI conventions (Linear, Craft,
Arc, Material 3). The previous design used a neon cyan primary (#00D4FF) and sharp
nav-item indicators that read as 2018-era SaaS. This commit replaces them
systematically across every touch point that the token system covers.
Color system (Dark theme):
- Primary accent: cyan #00D4FF → indigo #6366F1. The new hue is softer, premium,
and works equally well on dark and light surfaces without the "tech-startup neon"
connotation.
- Background surfaces shifted: #0A0A10 → #0F0F14, surface #141420 → #16161E,
elevated #1E1E2C → #21212C. The steps are now perceptibly distinct, giving the
depth hierarchy real visual weight instead of near-identical near-blacks.
- Navigation sidebar given its own explicit dark token set (#0E0E16 bg) rather than
aliasing the standard surface color, creating a clear light/dark split between
sidebar and content even in dark mode.
- Secondary accent: #8B5CF6 → #A78BFA (lighter, better contrast on the new surfaces).
- Semantic colors refreshed: success → #34D399 (vibrant emerald), warning →
#FBB32F (amber), info → #60A5FA (sky), danger → #F87171 (rose). All softer
and more readable than the previous Tailwind 500-level values on dark bg.
- Hover/selected/pressed states carry a subtle indigo tint (#1D1D2C / #201E3A)
instead of the cyan-tinted #1A2A35 that was previously selected state.
- Text primary: pure white → #EBEBF0 (slightly warm, reduces harshness on dark).
Color system (Light theme):
- Primary: #0099CC → #4F46E5. Consistent indigo family, darker shade for
sufficient contrast on white/near-white backgrounds.
- Surfaces and borders carry a subtle violet tint (#F0F0F6 bg, #E8E8F2 border-subtle)
that ties the light theme to the same design language as dark.
- Hover/selected states: #E0E2E8 / #D0E8F0 → #E2E2F0 / #D4D0F8 (indigo-tinted
instead of the previous cyan-tinted selection blue).
- Nav (both themes): unified to #111118 / #636380 / #1A1A2A for hover — consistent
dark sidebar regardless of light/dark content theme.
Component styles (PrivStackTheme.axaml):
- Button.accent, Button.danger, Button.success: corner radius ThemeRadiusSm (6px) →
ThemeRadiusLg (12px). On a 32px tall button this produces a clearly rounded shape
without being a full pill — exactly what MD3 specifies for filled buttons.
- Foreground on accent/danger/success buttons changed to ThemeTextOnAccentBrush
(#FFFFFF) rather than ThemeBackgroundBrush. This is semantically correct: the
background token can be near-black on dark themes, but text-on-accent should always
be white for legibility.
- Border.badge CornerRadius: hardcoded 10 → ThemeRadiusFull. Tags and badges are
now true pills, consistent with every modern design system.
- ProgressBar MinHeight: 4 → 6px; CornerRadius 2 → 3. The extra 2px makes the
bar visually present without being heavy, and matches typical Material 3 density.
Navigation sidebar (NavigationSidebar.axaml):
- Active item indicator: removed the 3px left border + asymmetric CornerRadius hack
(0,6,6,0) + offset padding (9,10,12,10). Replaced with a filled background pill
using ThemePrimaryMutedBrush (20% alpha indigo). The icon continues to render in
ThemePrimaryBrush (solid indigo) and text stays ThemeNavTextHoverBrush (white/near-
white), giving a clear active indication without the visual noise of a left stripe.
- Same change applied to Button.nav-item-collapsed.active for the collapsed sidebar
state, so the icon-only view is consistent.
- The pill treatment matches the Linear / Arc / Craft navigation pattern that
users associate with modern, well-designed desktop software.
Version: 1.35.0 → 1.36.0 (minor — new visual feature, no API/data changes)
Redesign dataset creation and import experience with friendly types and import preview (v1.16.0)
Details
Replace raw DuckDB type names (VARCHAR, INTEGER, etc.) with user-friendly
labels (Text, Number, Decimal, Yes/No, Date, Date & Time) throughout the
schema builder. Add ColumnTypeMapping model that maps between friendly
display labels and DuckDB types, handling all DuckDB type aliases.
Add import preview overlay that appears after file import or clipboard paste.
The overlay shows detected column types and a data preview (first 20 rows),
letting users adjust column names and types before finalizing. On confirm,
applies RenameColumn and AlterColumnType operations for changed columns.
On cancel, deletes the imported dataset.
Add "Paste CSV" button in the import expander, which reads CSV/TSV/PSV
content from the clipboard, imports via DuckDB auto-detect, and opens
the same import preview overlay.
File import now routes through the preview overlay instead of immediately
selecting the dataset, giving users a chance to review and adjust detected
schema before committing.
Add SQL editor intelligence and cross-plugin entity querying
Details
Introduces source:@PluginName syntax for querying entity data from any
plugin directly in the SQL editor. Adds a stateless SQL analysis engine
with CTE parsing, cursor-context-sensitive autocomplete, inline problem
detection (unknown sources/columns, ambiguous references), and a DuckDB
function catalog.
Entity source materialization fetches plugin data via IPluginDataSourceProvider,
creates temporary DuckDB tables, rewrites SQL to reference them, executes the
query, and cleans up. Results are cached for 30 seconds during live typing;
manual Ctrl+Enter bypasses the cache.
Eight plugins now implement IPluginDataSourceProvider: Calendar, Journal,
Notes, Email, Files, RSS, Snippets, and WebClips — joining the existing
Tasks and Contacts implementations. Each exposes its entities as tabular
data sources accessible via source:@PluginName in the query editor.
The SQL editor gains entity source coloring (teal), problem squiggles
(red errors, amber warnings), @ trigger for entity completions, and
context-aware completions for columns, functions, CTEs, and sources.
New files:
- Services/Analysis/: SqlAnalyzer, CteParser, ContextDetector,
ProblemDetector, SchemaRegistry, DuckDbFunctions, CursorContext,
SqlAnalysisModels
- Services/EntitySourceRegistry, EntitySourceMaterializer
- 8 plugin DataSources partial classes
Modified files:
- SqlPreprocessorClient: entity source regex methods
- SqlCompletionProvider: rewritten with SqlAnalyzer integration
- SqlSemanticColorizer: entity brush + problem squiggles
- SqlEditorControl: @ trigger, SchemaRegistry wiring
- QueryEditorViewModel: materializer + schema dependencies
- QueryEditorViewModel.LiveQuery: materialization in execution pipeline
- DataViewModel: pass-through entity source dependencies
- DataPlugin: create and wire EntitySourceRegistry/Materializer
- QueryEditorView: SchemaRegistry + entity source refresh wiring
Version bumps:
- Data: 1.14.1 → 1.15.0
- Calendar: 1.10.4 → 1.11.0
- Journal: 1.5.3 → 1.6.0
- Notes: 1.42.2 → 1.43.0
- Email: 1.21.5 → 1.22.0
- Files: 1.8.1 → 1.9.0
- RSS: 1.7.1 → 1.8.0
- Snippets: 1.5.2 → 1.6.0
- WebClips: 1.1.1 → 1.2.0
Get notified about new releases