package updates and self updating #7

Merged
cheapnud merged 4 commits from d/velopack-updates into master 2026-08-22 12:13:31 +00:00
Owner

Updates all packages and wires the new self-update support: the app checks the forge feed on startup and shows a restart chip when a new version is downloaded. bunit stays pinned at 2.7.2 over an upstream hang.

Updates all packages and wires the new self-update support: the app checks the forge feed on startup and shows a restart chip when a new version is downloaded. bunit stays pinned at 2.7.2 over an upstream hang.
bump CheapAvaloniaBlazor, CheapHelpers family, MudBlazor, Mapster, EF Core, and test SDK packages to latest. xunit.runner.visualstudio bumped to 4.0.0. bunit stays pinned at 2.7.2: 2.9.0 pulls in AngleSharp 1.7.0 and hangs an existing finishing-scan test (the async continuation after an EF await never resumes, so bunit's render-triggered WaitForAssertionAsync times out with zero renders observed).
wire WithVelopackUpdates against the forge repo and show a small update-ready chip in the app bar that hands off to the update service's restart. the host already runs the background check and download itself once configured, so the layout just observes the ready state and applies it on click. no update service configured or installed (dev runs) means no chip and no crash.
tick the velopack wiring item
All checks were successful
Claude PR Review / AI Code Review (pull_request) Successful in 16s
Build & Test / Build and Test (pull_request) Successful in 7m40s
19af48ee63

🤖 Claude AI Code Review

  1. Summary
    Bumps package versions and wires Velopack self-update, adding a restart chip to the app bar with test coverage. The plaintext HTTP feed is a known/documented risk.

  2. Code Quality
    Clean implementation with good handling of the subscribe/first-render race and proper IDisposable cleanup; well-tested via a fake service.

  3. Issues

🟡 Program.cs — the update feed uses plaintext HTTP over the LAN, which allows MITM → arbitrary code execution on update. The PR author already documented this in TODO.md as an accepted risk pending TLS/signing, so it's a conscious tradeoff rather than an oversight, but it remains a real security exposure worth surfacing at merge time.

🟢 MainLayout.razor — OnAfterRenderAsync wraps Updates.StateChanged += ... in a try/catch, but if subscription throws, the handler is never attached and Dispose unsubscribing a never-subscribed handler is harmless. Minor: the catch only logs to Debug.WriteLine, so failures are silent in release. Not blocking.

  1. Verdict: APPROVE

The code is well-structured and tested. The HTTP feed security risk is real but explicitly acknowledged and tracked as a follow-up infra/upstream item, so it's a deliberate decision rather than a blocker.


📊 Tokens: 6920 input + 484 output | 💰 Cost: ~$0.0467
Generated by Claude Opus 4.8 via Gitea Actions

## 🤖 Claude AI Code Review 1. **Summary** Bumps package versions and wires Velopack self-update, adding a restart chip to the app bar with test coverage. The plaintext HTTP feed is a known/documented risk. 2. **Code Quality** ⭐⭐⭐⭐☆ Clean implementation with good handling of the subscribe/first-render race and proper `IDisposable` cleanup; well-tested via a fake service. 3. **Issues** 🟡 Program.cs — the update feed uses plaintext HTTP over the LAN, which allows MITM → arbitrary code execution on update. The PR author already documented this in TODO.md as an accepted risk pending TLS/signing, so it's a conscious tradeoff rather than an oversight, but it remains a real security exposure worth surfacing at merge time. 🟢 MainLayout.razor — `OnAfterRenderAsync` wraps `Updates.StateChanged += ...` in a try/catch, but if subscription throws, the handler is never attached and `Dispose` unsubscribing a never-subscribed handler is harmless. Minor: the catch only logs to `Debug.WriteLine`, so failures are silent in release. Not blocking. 4. **Verdict**: **APPROVE** The code is well-structured and tested. The HTTP feed security risk is real but explicitly acknowledged and tracked as a follow-up infra/upstream item, so it's a deliberate decision rather than a blocker. --- 📊 **Tokens**: 6920 input + 484 output | 💰 **Cost**: ~$0.0467 *Generated by Claude Opus 4.8 via Gitea Actions*
cheapnud merged commit 85ca830920 into master 2026-08-22 12:13:31 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
cheapnud/CheapFurniturePlanner!7
No description provided.