Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 26 of 139 Next →
February 27, 2026
patch Desktop Shell

Fix context menu drop shadow clipped by popup window bounds

Details

The BoxShadow on MenuFlyoutPresenter and ContextMenu was invisible

because the Popup native window sizes exactly to its child, clipping

any shadow that extends outside the Border bounds.

Override the control templates to wrap the LayoutRoot Border in a Panel

with margin (12,6,12,22) matching the shadow extent (blur=24 offset-y=8).

This inflates the popup window, giving the shadow room to render. The

BoxShadow is now set directly on the template Border instead of via a

separate style selector.

patch Desktop Shell

Add fade-in animation to context menus and menu flyouts

Details

MenuFlyoutPresenter and ContextMenu now have a subtle 120ms open

animation: fade from opacity 0 to 1 with a -4px Y translate slide-in,

using CubicEaseOut easing. The animation runs each time the popup

enters the visual tree (i.e., each open).

Drop shadows were already defined (0 8 24 0 #40000000, 0 2 6 0

#28000000) — this adds the missing entrance transition.

patch Desktop Shell

Add Sign In button to update modal for expired sessions

Details

When the update download fails due to an expired token and refresh also

fails, the modal now shows a "Sign In" button that triggers the OAuth

PKCE flow directly from the update dialog. On successful auth, tokens

are persisted and the user can immediately retry the download without

navigating to Settings.

  • Added SignInCommand to UpdateViewModel with full OAuth PKCE flow
  • Updated UpdateModal.axaml auth notice: replaced "go to Settings" text

with an inline Sign In button + "Waiting for browser..." state

  • Added IsAuthenticating property for button state management
patch Desktop Shell

Add client-side token refresh fallback for update downloads

Details

When the access token is rejected during update download, the client now

silently attempts to refresh it via /api/auth/refresh using the stored

refresh token. On success, new tokens are persisted and the download

retries. On failure, the access token is cleared and the UI shows

"Session expired — please sign in again" instead of a generic error.

New: PrivStackApiClient.RefreshAccessTokenAsync() + RefreshTokenResponse DTO.

patch Desktop Shell

Fix info panel hover zone blocking plugin content clicks

Details

The info-tab-hover-zone Border used a 36px-wide transparent background

with IsHitTestVisible=True at ZIndex=10, creating an invisible click

barrier across the entire right edge of the content area. This blocked

clicks on plugin UI elements positioned near the right edge (e.g., the

settings cog in Tasks).

Fix: Remove the wide transparent hit area. The tab button is now always

slightly visible (opacity 0.15) and becomes fully visible on hover of

the button itself. The parent border no longer has a background or

forced hit-test, so pointer events pass through to the plugin content

below.

← Prev Page 26 of 139 Next →

Get notified about new releases