Skip to content

Merge v17/main into v18/main (2026-08-26) - #1050

Merged
KevinJump merged 2 commits into
v18/mainfrom
v18/merge-v17-updates
Aug 26, 2026
Merged

Merge v17/main into v18/main (2026-08-26)#1050
KevinJump merged 2 commits into
v18/mainfrom
v18/merge-v17-updates

Conversation

@KevinJump

Copy link
Copy Markdown
Owner

Summary

Brings the two v17 commits not yet ported to v18 (everything older was already backported via separate PRs):

Both cherry-picked cleanly with no conflicts.

Test plan

  • uSync.BackOffice, uSync.Backoffice.Management.Api, uSync.Tests all build with 0 errors
  • New TemplateSerializerTests pass (2/2)

KevinJump and others added 2 commits August 26, 2026 08:02
Template import failures (#1044) reported a generic "Failed to create
template" with a null exception, hiding the actual Umbraco status
(e.g. duplicate alias) - especially hard to diagnose on IIS/Production
where the failure mode differs from local dev. Propagate
attempt.Status and wrap it in an exception so the sync result carries
enough detail to diagnose. Also removes an unreachable duplicate null
check left over from an earlier refactor, and adds coverage for both
the failure and success create paths.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The uSyncCallbacks delegates (Callback, Update, SetRange, IncrementalUpdate,
Complete) were void, which forced consumers like uSync.Complete's
LocalHubClient/PublisherHubClient to .Wait() on every SignalR send.

Add optional async counterparts (CallbackAsync, UpdateAsync, SetRangeAsync,
IncrementalUpdateAsync, CompleteAsync) alongside the existing sync delegates,
plus Raise*Async helper methods that invoke the sync delegate then await the
async one if set. Existing constructors, properties and delegate types are
untouched, so this is purely additive.

Update the call sites that invoke callbacks directly off a uSyncCallbacks
instance (SyncService, SyncService_Single, SyncActionService,
SyncHandlerRoot, uSyncManagementService) to await the new Raise*Async
helpers. Call sites that extract the raw SyncUpdateCallback delegate to pass
into the public ISyncHandler.ExportAllAsync/ReportAsync interface are left
untouched, since changing that interface would be a breaking change.
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.

1 participant