Skip to content

feat: desktop auto-updates, view transitions, and changelog system#13

Merged
kYaRick merged 21 commits intomainfrom
kya-feat-extra
Apr 26, 2026
Merged

feat: desktop auto-updates, view transitions, and changelog system#13
kYaRick merged 21 commits intomainfrom
kya-feat-extra

Conversation

@kYaRick
Copy link
Copy Markdown
Owner

@kYaRick kYaRick commented Apr 26, 2026

This PR introduces significant updates to improve the user experience and the project's technical foundation. Key changes include the transition to the View Transitions API for smooth SPA navigation, integration of a desktop auto-update system (Velopack), a new "What's New" modal with localized changelog support, and a complete refactor of the modal system to resolve stacking context issues. Additionally, mobile layout fixes and CI/CD optimizations for the desktop release have been implemented.

🏷️ Type of change

  • feat - new feature
  • 🐛 fix - bug fix
  • ♻️ refactor - code change, no new feature / no fix
  • 🚀 perf - performance improvement
  • 🧹 chore - tooling, config, CI, deps

🔗 Related issues

Closes #

✅ Checklist

  • Commits follow Conventional Commits
  • Code builds locally without warnings (dotnet build)
  • Tests added / updated where relevant
  • Fluent UI components used correctly - no inline styles or hex colors
  • PWA offline capability not broken
  • Documentation updated (README, AGENTS.md) if behavior or conventions changed

📸 Screenshots / demo

(Add screenshots of the new update banner and View Transitions if applicable)

💬 Notes for reviewers

  • View Transitions: Implemented as a progressive enhancement; navigation remains standard in browsers without support (e.g., older Safari).
  • Velopack: Currently configured for the alpha channel. Update checks occur 8 seconds after launch to ensure a fast initial startup.
  • Localization: Resource embedding for the CHANGELOG was adjusted to prevent MSBuild from routing them to satellite assemblies, which previously caused UA translation load failures.
  • Desktop UI: The update banner is implemented via a dedicated transparent WPF overlay window to avoid WebView2 HWND airspace clipping issues.

📋 Full Changes (Changelog Style)

Added

  • View Transitions API for seamless transitions between Landing, Wizard, and Advanced modes.
  • "What's new" modal with inline CHANGELOG.md rendering.
  • New XML import dialog featuring drag-and-drop, text pasting, and native file picker fallback.
  • Windows desktop auto-update system (Velopack, alpha channel) - background GitHub Release checks and one-click updates without admin rights.

Changed

  • Optimized loading bar and plane animations for narrow mobile viewports.
  • "Go to top" button redesigned with smooth custom-eased scrolling and improved visual feedback.
  • Modals are now vertically centered and feature refined open/close animations.
  • Desktop update banner moved to a dedicated overlay window to prevent WebView2 clipping.
  • Update checks now trigger after the first rendered frame.

Fixed

  • Resolved overlapping Wizard action buttons on mobile devices.
  • Updated Ukrainian translation: "Підкрутити в Advanced" -> "Доналаштувати в Advanced".
  • Fixed an issue where the Ukrainian changelog failed to render in the modal.
  • Resolved backdrop-filter (blur) stacking context issues in the import modal.
  • Stabilized update banner positioning during window resizing and language switching.

Maintenance

  • Refactored ModeCard to support View Transitions via standard link intercepts.
  • Implemented ChangelogService and UpdateService.
  • Renamed the Desktop assembly to preflight.xml for consistency with PWA and Velopack IDs.
  • Updated CI/CD (GitHub Actions) to automate portable desktop builds and releases.

kYaRick and others added 12 commits April 25, 2026 19:37
- Implemented hash-based SPA route restoration in index.html to handle unknown routes and ensure proper navigation.
- Adjusted loading overlay display duration for desktop shell to improve user experience.
- Added drag-and-drop file support in files.js, allowing users to drop files directly into the application.
- Improved scroll behavior in scroll.js with a custom smooth scrolling function that respects user preferences.
- Refined splash screen and main window transition in App.xaml.cs for a smoother user experience during startup.
- Updated MainWindow.xaml and MainWindow.xaml.cs to ensure WebView2 is visible from the start and to handle navigation more effectively.
- Enhanced user data folder resolution in MainWindow.xaml.cs for better portability.
- Added document title synchronization with the taskbar entry in MainWindow.xaml.cs.
- Cleaned up SplashWindow.xaml and SplashWindow.xaml.cs for better visual and functional consistency during the splash screen display.
- Updated releasing documentation to reflect the inclusion of a Velopack desktop bundle alongside the PWA archive in GitHub Releases.
- Added new desktop packaging recipes in the justfile for building and releasing the desktop application.
- Implemented a file picker in the desktop application that routes through the native host for a better user experience.
- Introduced an update service to manage background updates for the desktop application, including a user-friendly update banner.
- Created a custom entry point for the WPF application to handle Velopack hooks before UI initialization.
- Enhanced file save and open dialogs to remember the last used directories across sessions.
- Updated project files to include necessary dependencies and configurations for the desktop application.
… handling

Co-authored-by: Copilot <copilot@github.com>
kYaRick and others added 2 commits April 26, 2026 23:36
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands preflight.xml with a Windows desktop shell auto-update flow (Velopack), introduces browser-native View Transitions for smoother SPA navigation, and adds an in-app “What’s new” changelog modal plus a refactored modal system to resolve stacking/backdrop issues.

Changes:

  • Added a WPF + WebView2 desktop host with Velopack update polling, update-ready UI banner, and packaging/release automation.
  • Implemented View Transitions via anchor-click interception and adjusted navigation UI to use <a href>/anchors where needed.
  • Added an embedded-resource changelog pipeline (Markdig) and a new XML import modal (drop/paste/picker) with localization updates.

Reviewed changes

Copilot reviewed 47 out of 48 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
srcs/Preflight.Desktop/UpdateService.cs Implements Velopack GitHub Releases polling/download + restart/apply entry points.
srcs/Preflight.Desktop/UpdateService.UpdateTest.cs Adds Debug-only update simulation hooks via env vars.
srcs/Preflight.Desktop/UpdateBannerWindow.xaml Defines overlay banner UI that sits above WebView2 HWND airspace.
srcs/Preflight.Desktop/UpdateBannerWindow.xaml.cs Wires banner text + restart/dismiss events.
srcs/Preflight.Desktop/Properties/launchSettings.json Adds a launch profile for update test mode.
srcs/Preflight.Desktop/Program.cs Adds custom WPF entry point to run Velopack hooks before UI.
srcs/Preflight.Desktop/Preflight.Desktop.csproj Adds WPF desktop project setup + Blazor wwwroot publish/copy integration.
srcs/Preflight.Desktop/MainWindow.xaml Adds in-window splash overlay + WebView2 host + custom chrome.
srcs/Preflight.Desktop/MainWindow.xaml.cs Adds WebView2 SPA fallback, splash readiness detection, desktop file dialogs, and update banner overlay handling.
srcs/Preflight.Desktop/App.xaml Adds shared WPF theme tokens/styles to match web UI.
srcs/Preflight.Desktop/App.xaml.cs Creates singleton UpdateService + defers update checks until first render.
srcs/Preflight.App/wwwroot/js/view-transitions.js Implements View Transitions click interception and navigation triggering.
srcs/Preflight.App/wwwroot/js/theme.js Disables WAAPI route animation when View Transitions are supported; tweaks animations.
srcs/Preflight.App/wwwroot/js/scroll.js Replaces native smooth-scroll with custom RAF eased scroll and interruption handling.
srcs/Preflight.App/wwwroot/js/files.js Adds desktop-host file picker RPC and drag-and-drop helpers.
srcs/Preflight.App/wwwroot/index.html Adds View Transitions script, desktop SPA-route restore, desktop SW behavior, and host-ready signaling.
srcs/Preflight.App/wwwroot/css/app.css Refactors modal overlay behavior/animations; adds styles for changelog/import modals; updates header + buttons + go-top + VT keyframes.
srcs/Preflight.App/Services/ImportModalService.cs Adds service bridge to open/close the import modal from pages via MainLayout.
srcs/Preflight.App/Services/ChangelogService.cs Adds embedded-resource changelog loader/cleaner + Markdig render + caching.
srcs/Preflight.App/Resources/SharedResources.resx Adds strings for Close/What’s new/Changelog/Import modal and minor text tweak.
srcs/Preflight.App/Resources/SharedResources.uk.resx Adds UA strings for Close/What’s new/Changelog/Import modal and translation adjustments.
srcs/Preflight.App/Program.cs Registers ChangelogService and ImportModalService.
srcs/Preflight.App/Preflight.App.csproj Embeds CHANGELOG resources with WithCulture=false to avoid satellite-assembly routing.
srcs/Preflight.App/Pages/Wizard/WizardShell.razor Converts wizard entry cards to <a href> wrappers for View Transitions; adjusts padding.
srcs/Preflight.App/Pages/Wizard/GuidedWizard.razor Converts step nav buttons to anchors for VT; enables wrapping for mobile.
srcs/Preflight.App/Pages/Wizard/Review.razor Adds wrapping for action row and increases bottom padding.
srcs/Preflight.App/Pages/Wizard/Steps/Step_Finish.razor Enables wrapping on final step action stack to avoid mobile overlap.
srcs/Preflight.App/Pages/Landing.razor Refactors navigation cards to use Href + OnSelect; routes import through modal service.
srcs/Preflight.App/Pages/Advanced/AdvancedShell.razor Keeps XML preview modal mounted for transitions; changes portal attach behavior.
srcs/Preflight.App/Layout/ModeCard.razor Refactors ModeCard to render as <a href> for View Transitions interception.
srcs/Preflight.App/Layout/MainLayout.razor Adds “What’s new” footer entry, renders changelog modal and import modal at layout root.
srcs/Preflight.App/Layout/LanguageSwitcher.razor Updates EN flag glyph to 🇺🇸.
srcs/Preflight.App/Layout/CommandPalette.razor Updates EN flag glyph to 🇺🇸.
srcs/Preflight.App/Layout/ImportXmlModal.razor Adds new import modal with drop zone, paste pad, and OS picker fallback.
srcs/Preflight.App/Layout/ChangelogModal.razor Adds modal rendering embedded changelog HTML and GitHub link.
justfile Adds desktop publish/pack/release recipes for Velopack + GitHub upload.
docs/releasing.md Documents combined PWA + desktop release packaging and local desktop pack/release commands.
docs/development.md Adds developer guide including desktop update test mode and architecture notes.
docs/changelog.md Adds changelog authoring guide and internal-block conventions.
docs/README.md Links to changelog authoring guide.
README.md Bumps displayed version badge/warning text to v0.1.2-alpha.
Preflight.slnx Adds Preflight.Desktop project to the solution.
Directory.Packages.props Adds WebView2 + Velopack package versions.
Directory.Build.props Bumps version to 0.1.2-alpha; adds branding properties and desktop defaults.
CHANGELOG.md Adds v0.1.2-alpha release notes + internal maintenance section.
CHANGELOG.uk.md Adds UA v0.1.2-alpha release notes + internal maintenance section.
.gitignore Ignores desktop blazor-temp, generated wwwroot, and portable WebView2 profile data.
.github/workflows/release.yml Extends release pipeline to produce and upload desktop Velopack artifacts alongside the PWA.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/releasing.md
Comment thread srcs/Preflight.App/Services/ChangelogService.cs
Comment thread docs/development.md Outdated
Comment thread docs/development.md Outdated
Comment thread srcs/Preflight.Desktop/MainWindow.xaml.cs
Comment thread srcs/Preflight.App/Layout/ImportXmlModal.razor
Comment thread srcs/Preflight.Desktop/UpdateService.cs
Comment thread srcs/Preflight.Desktop/Preflight.Desktop.csproj
Comment thread srcs/Preflight.App/Pages/Landing.razor
Comment thread .github/workflows/release.yml Outdated
kYaRick and others added 7 commits April 26, 2026 23:40
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…xperience

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
@kYaRick kYaRick merged commit c362545 into main Apr 26, 2026
2 checks passed
@kYaRick kYaRick deleted the kya-feat-extra branch April 26, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants