Releases · GeneralLibrary/GeneralUpdate · GitHub
Skip to content

Releases: GeneralLibrary/GeneralUpdate

Release v10.5.0-rc.1

25 Jun 06:25

Choose a tag to compare

🚀 Features

  • Chain-count fallback threshold (#531) — Replace the single 80%-of-full-size heuristic with a two-condition strategy: (1) chain count exceeds MaxChainBeforeFallback (default 8) → full package, (2) combined chain size ≥ full size → full package. The new MaxChainBeforeFallback property is plumbed through UpdateConfigurationDownloadPlanBuilderClientStrategy. This prevents unnecessary switch-to-full when the chain total is only marginally below the full size, since the runtime fallback (FallbackFull) already handles chain application failures.

🐛 Bug Fixes

  • HttpDownloadExecutor missing auth headers (#533) — Download requests were missing the global auth provider and ExtraHeaders (e.g. X-Tenant-Id) from HttpClientProvider. Version validation and status reporting already applied them, but file downloads did not. This caused tenant-scoped file downloads to fail when the server requires X-Tenant-Id.

  • IPC test isolation on LinuxEncryptedFileIpcTests and EncryptedFileProcessContractProviderTests shared a single default IPC file path (/tmp/GeneralUpdate/ipc/process_info.enc). Cross-test filesystem interactions caused Async_Api_Delegates_To_Sync to return null on Linux. Each test instance now creates its own isolated temp directory.

  • SyncProgress<T> in OSS download tests — Replaced Progress\<T\> with SyncProgress\<T\> in OssDownloadExecutorTests to avoid flaky failures on Linux CI runners where async progress callbacks raced with test assertions.

  • Skip flaky Bowl SimulatedCrash test on CISimulatedCrashTest in Bowl is inherently non-deterministic in CI environments; marked to skip on CI runners.

  • EventManager test thread safety — All EventManager tests opted into the NonParallel xUnit collection to prevent thread-safety races between concurrent test runs.

  • CI publish workflow fixes — Added fetch-depth: 0 to checkout for changelog generation; normalized version input to strip optional v prefix before SemVer validation.

  • Bowl → BowlBootstrap test updatesd755b704 renamed Bowl.csBowlBootstrap.cs but missed updating 3 test files (BowlTests.cs, BowlCrashPipelineTests.cs, BowlAsyncTests.cs). Fixed references in all affected tests.

  • Package icon/README paths after src/c#/ → src/ refactor — The 923a7cd6 restructuring moved projects one level up but left ../../../imgs/ relative paths in all 5 .csproj files. dotnet pack failed across the board because ../../../imgs/ resolved above the repo root. Fixed to ../../imgs/.

♻️ Refactoring

  • Flatten directory structure — Move all projects from src/c#/ to src/ for a cleaner, more conventional layout. Drop Firmware from the solution file.

  • Bowl → BowlBootstrap rename — Rename Bowl.cs to BowlBootstrap.cs with corresponding class name change to clarify the bootstrap role.

  • Remove GeneralUpdate.Firmware — Deprecated OTA firmware update project removed entirely (~1,700 lines: GeneralFirmwareBootstrap, FirmwareConfig, FirmwareInfo, OTA decoders, etc.).


NuGet packages: GeneralUpdate.Core · GeneralUpdate.Differential · GeneralUpdate.Bowl · GeneralUpdate.Extension · GeneralUpdate.Drivelution

Release v10.5.0-beta.7

21 Jun 16:14

Choose a tag to compare

🚀 Features

  • feat(core): replace 80% size threshold with count-first chain-to-full fallback — 优化全量/链式更新切换策略,用数量阈值替代体积阈值

🐛 Bug Fixes

  • fix(core): deduplicate switch-to-full logic, add missing mapper, mixed-AppType tests — 修复全量切换重复逻辑、补充缺失映射器
  • fix(ci): filter out snupkg files from push to avoid 400 error — CI 推送过滤 sniupkg 避免 400 错误
  • fix(test): replace Progress<T> with SyncProgress<T> in OssDownloadExecutorTests — 修复 Ubuntu CI 偶发失败(SynchronizationContext 竞争)
  • fix(ci): skip flaky Bowl SimulatedCrash test on CI runners — CI 跳过需要 dump 权限的 Bowl 测试
  • fix(test): opt all EventManager tests into NonParallel collection — 修复 EventManager.Reset() 多线程竞争导致偶发失败
  • fix(ci): normalize version input in publish workflow to strip optional v prefix — 修复 NuGet 发布时 v 前缀导致打包失败

🔧 Chores

  • chore: bump version to v10.5.0-beta.7

Full Changelog: v10.5.0-beta.6...v10.5.0-beta.7

Release v10.5.0-beta.6

20 Jun 16:26

Choose a tag to compare

🚀 Features

  • feat(core): PackageType enum migration + chain/full fallback mechanism
  • feat(core): unified HTTP auth provider + custom headers + CVP fix
  • feat: align all components to SemVer 2.0 for version comparison (#521)

🐛 Bug Fixes

  • fix(core): resolve 16 audit findings — race conditions, design flaws, glue code, and performance issues
  • fix(core): skip redundant chain packages after full fallback
  • fix(core): eliminate all AOT-incompatible patterns for Native AOT support
  • fix: resolve CI failures and address Copilot review comments
  • fix: quote version variables in dotnet pack step to prevent MSB1008
  • fix CI: add missing using System.Collections.Generic for netstandard2.0

🧹 Chores & CI

  • fix(ci): add NuGet/login@v1 for OIDC trusted publishing to nuget.org
  • fix(ci): make pack/push steps resilient
  • fix(ci): remove --no-build from pack step
  • chore(drivelution): skip flaky timeout test
  • chore: add .NET Foundation prerequisite files

📝 Documentation

  • docs: add Discord badge to README
  • docs: add generalupdate-skill-codegen section and GitCode star badge (#519)

📦 NuGet Packages (v10.5.0-beta.6)

Package Version
GeneralUpdate.Bowl 10.5.0-beta.6
GeneralUpdate.Core 10.5.0-beta.6
GeneralUpdate.Differential 10.5.0-beta.6
GeneralUpdate.Drivelution 10.5.0-beta.6
GeneralUpdate.Extension 10.5.0-beta.6

Published via Trusted Publishing (OIDC) — no API keys required.

Release v10.5.0-beta.4

12 Jun 10:15
031ace0

Choose a tag to compare

Release v10.5.0-beta.4
19 commits since v10.5.0-beta.2 — focus on security hardening and update flow reliability.

🔒 Security & Reliability
Security audit fixes — BSDIFF overflow, Zip path traversal, ProcessExit deadlock, Trace listener leak, IPC key validation, and Strategy lifecycle hardening (#515)
Path traversal and process launch safety improvements (#516)
Pipeline failure now aborts IPC and application launch (#518)
Cross-version field mapping alignment between client SDK and server API (#505)
🚀 Features
CVP-first upgrade with automatic chain fallback (#500)
Backups disabled by default for reduced I/O overhead (#511)
BasicAuthProvider and refined authentication scheme system (#495)
Zero-config SetSource() with manifest.json auto-discovery (merged from prior cycle)
♻️ Refactoring
Removed UpgradeMode pass-through field from Core (#509)
Streamlined integration test projects (ClientTest/UpgradeTest) (#507)
🐛 Fixes
Backup recursive nesting and timestamp-based naming (#501/#502/#503)
14 code-review issues across Core/Differential/Bowl/Drivelution/Extension (#513)
📦 NuGet Packages
GeneralUpdate.Bowl · GeneralUpdate.ClientCore · GeneralUpdate.Common · GeneralUpdate.Core · GeneralUpdate.Differential · GeneralUpdate.Drivelution · GeneralUpdate.Extension

Release v10.5.0-beta.2

03 Jun 08:50

Choose a tag to compare

Between the previous stable release v10.4.6 and v10.5.0-beta.2, there are 150+ commits spanning major changes:

Category Highlights
Architecture refactor Strategy pattern rewrite, Pipeline FIFO ordering, Core↔Differential dependency reversal, unified OSS path
New features Zero-config SetSource() API, manifest auto-discovery, DiffPipeline parallel processing, StreamingHdiffDiffer, Brotli compression
Bug fixes SSL policy coverage, HttpClient lifecycle, OSS update crash/infinite loop, silent update identity fields, async anti-patterns, Bsdiff thread safety
New projects GeneralUpdate.Firmware (USB DFU, XMODEM/YMODEM, firmware formats), Vela OTA (Rust workspace)
Drivelution Batch driver updates, cross-platform BaseDriverUpdater, DI integration, retry/rollback pipeline
Bowl refactor Removed IPC dependency, simplified API, dropped macOS
Tests 1000+ unit tests added across Core, Differential, Bowl, Drivelution
Docs All XML documentation rewritten in English, BENCHMARK.md
Infrastructure net8.0+net10.0 upgrade, slnx migration, centralized package versions

Release v10.4.6

11 Apr 06:58
95b0114

Choose a tag to compare

Fix: orphaned temp files in BinaryHandler.Dirty cause patch failures …

Release v10.2.1

12 Feb 11:46
ef203ab

Choose a tag to compare

Add NuGet package metadata to Drivelution and Extension components (#…

Release v10.0.0

10 Jan 04:01
e6c7c0b

Choose a tag to compare

Support nullable download timeout option (#98)

Changed DownloadTimeOut option type to nullable int and updated usage to handle null values, allowing more flexible configuration of download timeout settings.

Release v9.5.10

26 Dec 12:54

Choose a tag to compare

修改配置