Make GitHub URLs clickable in task detail panel (BUG #43)
Details
Add OpenGitHubUrl RelayCommand that launches URLs via Process.Start.
Replace non-clickable TextBlocks for GitHub Issue and Link fields with
Button-wrapped TextBlocks that invoke the command.
Bump version 1.29.0 → 1.29.1.
Fix trash view titles not truncating with ellipsis (BUG #20)
Details
Add MinWidth="0" to parent StackPanels and MaxLines="1" to the title
TextBlock in the trash item template so titles truncate properly instead
of overflowing the list width.
Bump version 1.65.0 → 1.65.1.
Add SDK transport abstraction for Desktop client mode
Details
Extract FFI calls from SdkHost into ISdkTransport interface with two
implementations:
- FfiSdkTransport: wraps NativeLibrary P/Invoke calls with pointer
marshalling (standalone mode, existing behavior)
- HttpSdkTransport: proxies SDK calls over HTTP to a running headless
server (client mode, new)
When Desktop detects a running headless server at startup (probes
GET /api/v1/status), it switches to client mode: swaps the transport
from FFI to HTTP, skips DuckDB initialization and the unlock screen,
and routes all plugin data operations through the server. This solves
the DuckDB single-process limitation during development — server for
API testing, Desktop for UI verification, both against the same data.
Server-side: LocalApiServer gains SDK passthrough endpoints under
/api/v1/sdk/* (execute, search, vault, blob, db maintenance) so the
HttpSdkTransport has something to call. All endpoints sit behind the
existing API key authentication.
In client mode, server-managed background services (backup, file sync,
snapshot sync, reminders, RAG indexing, API server) are skipped since
the headless server handles them. UI services, plugin discovery, and
IPC still run locally.
SdkHost.SetTransport() follows the same post-build wiring pattern as
SetSyncOutbound() and SetVaultUnlockPrompt(). Pure refactor in
standalone mode — zero behavior change when no server is detected.
Fix AXAML xmlns references after Services extraction
Details
8 AXAML files still referenced `using:PrivStack.Desktop.Models` which
is now an empty namespace — all model types moved to
`PrivStack.Services.Models` during the architecture split.
Updated xmlns declarations:
- models → PrivStack.Services.Models (8 files)
- BacklinkEntry → PrivStack.Services via new svc: prefix (InfoPanel)
Fix color picker missing selected visual feedback (BUG #60)
Details
Add SelectedColorBrushConverter (IMultiValueConverter) that compares the
swatch color with the ViewModel's SelectedColor. Use MultiBinding on the
swatch BorderBrush to show a white ring around the currently selected color.
Bump version 1.14.6 → 1.14.7.
Get notified about new releases