feat: desktop auto-updates, view transitions, and changelog system#13
Merged
feat: desktop auto-updates, view transitions, and changelog system#13
Conversation
…nce ModeCard interactions - #12
…egrate WebView2 for rendering
…eadiness detection
- 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>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
There was a problem hiding this comment.
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.
Co-authored-by: Copilot <copilot@github.com>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 featurefix- bug fixrefactor- code change, no new feature / no fixperf- performance improvementchore- tooling, config, CI, deps🔗 Related issues
Closes #
✅ Checklist
dotnet build)📸 Screenshots / demo
(Add screenshots of the new update banner and View Transitions if applicable)
💬 Notes for reviewers
alphachannel. Update checks occur 8 seconds after launch to ensure a fast initial startup.📋 Full Changes (Changelog Style)
Added
Changed
Fixed
Maintenance
ModeCardto support View Transitions via standard link intercepts.ChangelogServiceandUpdateService.preflight.xmlfor consistency with PWA and Velopack IDs.