Skip to content

chore: Update versions to 8.0.0-rc1#465

Open
github-actions[bot] wants to merge 14 commits into
mainfrom
release/update-versions-8.0.0-rc1
Open

chore: Update versions to 8.0.0-rc1#465
github-actions[bot] wants to merge 14 commits into
mainfrom
release/update-versions-8.0.0-rc1

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Summary

This PR updates version references in the codebase following the release of version 8.0.0-rc1.

Changes

  • Updated version references in .csproj files
  • Updated README.md with the latest version information
  • Updated Umbraco marketplace README files with the latest version information

Additional Info


This PR was automatically created by the release workflow.

claude and others added 14 commits June 12, 2026 10:54
Investigation of Umbraco 18 beta breaking changes that affect Clean, with
a phased plan to upgrade to 18.0.0-beta2 / Clean 8.0.0-beta1. Covers the
OpenAPI Swashbuckle removal, IPublishedContent.Parent/Children property
removal, csproj bumps, and items confirmed unaffected.

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
Bump Umbraco.Cms.* package references from 17.1.0 to 18.0.0-beta2 across
all five projects, and bump the four packaged Clean.* projects from 7.0.5
to 8.0.0-beta1. uSync references in Clean.Blog are intentionally left at
17.0.1 / 16.1.0 until a v18-compatible release is published.

OpenAPI registration is rewritten for the Swashbuckle.AspNetCore removal
in Umbraco 18: AddOpenApi("clean-starter", ...) + AddOpenApiDocumentToUi
replaces SwaggerDoc/SwaggerGenOptions. The renamed file
CleanStarterOpenApiExtensions.cs exposes an AddCleanStarterOpenApi
extension that the HeadlessApiComposer calls.

IPublishedContent.Parent and IPublishedContent.Children properties were
removed in v18 in favour of the extension methods, so Author.cshtml,
mainNavigation.cshtml and xmlSitemap.cshtml are updated to call
Parent() / Children() instead.

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
Installs .NET 10 via the official dot.net install script into ~/.dotnet
on each remote Claude Code session, then writes DOTNET_ROOT, PATH,
DOTNET_CLI_TELEMETRY_OPTOUT and DOTNET_NOLOGO into CLAUDE_ENV_FILE so the
SDK is on PATH for the rest of the session. Guarded by CLAUDE_CODE_REMOTE
so it's a no-op outside the web container, and idempotent (only downloads
if ~/.dotnet/dotnet is missing).

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
Run a full build against 18.0.0-beta2 surfaced four remaining breaks:

- AssemblyVersion cannot be a prerelease string; split into a numeric
  AssemblyVersion/FileVersion (8.0.0.0) plus the prerelease Version and
  InformationalVersion (8.0.0-beta1).
- The new Microsoft.AspNetCore.OpenApi source generator requires
  InterceptorsNamespaces to include Microsoft.AspNetCore.OpenApi.Generated;
  added to Clean.Headless.csproj.
- IBlockReference.ContentUdi was removed in favour of ContentKey
  (kjac umbraco/Umbraco-CMS#17365). blockgrid/items.cshtml and
  blocklist/default.cshtml updated; the block list null guard now checks
  Content instead of the old Udi.
- UmbracoHelper.RenderMacroAsync is gone (macros removed in v14+). The
  legacy grid macro editor partial is neutered with a migration note
  pointing at Block Grid/List.

Also pulls in the regenerated v18 umbraco-package-schema.json that the
build emits.

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
Drop the uSync and uSync.Command.Setup package references and adopt the
same AsyncPackageMigrationBase pattern Clean already uses (which is the
underlying API the management/packaging endpoints call):

- Embed Clean/Migrations/package.zip into the Clean.Blog assembly as
  Clean.Blog.Migrations.package.zip (linked, not duplicated).
- ImportPackageXmlMigration calls ImportPackage.FromEmbeddedResource at
  startup.
- BlogPackageMigrationPlan ("Clean.Blog", new GUID) keeps the migration
  idempotent so it only runs once per environment.
- PostMigrationNotificationHandler walks the imported tree and publishes
  every branch under the home root.
- BlogComposer wires the handler into IUmbracoBuilder so
  MigrationPlansExecutedNotification reaches it.

First-boot result: 37 doc types, 25 content items, 37 media items
imported in ~4s; SuccessPublish on all 25 nodes; /, /about, /blog,
/authors/paul-seal etc. return HTTP 200 with the real template HTML.

The uSync/ data folder, appsettings uSync sections and
appsettings-schema.usync.json are left in place per request.

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
Replaces what uSync.Command.Setup did before that package was removed:
the CI workflow (.github/workflows/powershell/CreateNuGetPackages.ps1)
boots Clean.Blog and authenticates to /umbraco/management/api/v1 as
'umbraco-back-office-clean-api-user' to export a fresh package.zip
via the management API. Without that client, the OAuth call fails
with invalid_client and the package export aborts.

ApiClientSetupHandler listens for UmbracoApplicationStartedNotification,
reads the existing uSync:Command:* keys from appsettings.Development.json,
creates an Api-kind user via IUserService.CreateAsync, attaches the
client id, and registers the OpenIddict application via
IBackOfficeApplicationManager.EnsureBackOfficeClientCredentialsApplicationAsync.

Logic mirrors uSync.Command.Setup 16.1.0 line-for-line but uses
Umbraco 18 Core types directly; verified by acquiring a Bearer token
from /security/back-office/token with the configured credentials.

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
The previous notification-based approach raced against CI: Kestrel was
listening on /umbraco within ~1s of boot, but the
UmbracoApplicationStartedNotification handler that provisioned the OAuth
client didn't fire for another ~7s, so CI's first /token call always
got invalid_client. Even moving to UmbracoApplicationStartingNotification
didn't help — both fire after the listener accepts requests.

Replace the notification handler with a static ApiClientSetup helper
called directly from Program.cs between BootUmbracoAsync() and the
middleware pipeline. At that point the core schema exists but the
listener hasn't started, so user/OpenIddict creation is race-free.

Also invoke PackageMigrationRunner.RunPendingPackageMigrations("Clean.Blog")
synchronously in the same window. Umbraco normally defers package
migrations to a hosted service that runs in parallel with the listener,
which made /token return 503 "application is currently being upgraded"
even when the API client existed. Running migrations inline finishes
content publishing before the listener opens.

Verified locally by reproducing CI's race (curl /umbraco until 200, then
immediately POST /token + GET /api/v1/package/$Version): both return
HTTP 200 on first attempt, with /, /about, /blog, /authors/paul-seal
serving real HTML.

https://claude.ai/code/session_01HLE33GSbBEKgKVsSV6D2AM
Re-add uSync 18.0.0-rc1 and remove the temporary package-migration
workaround that duplicated uSync's import (BlogPackageMigrationPlan,
ImportPackageXmlMigration, PostMigrationNotificationHandler, BlogComposer
and the embedded package.zip resource).

Keep ApiClientSetup to provision the backoffice API client used by the
package build, since uSync.Command.Setup has no Umbraco 18 build.
uSync 18 uses a v18 root folder. Move the content and schema seed from
v17 to v18 and drop the obsolete v16, v17 and v17-backup folders.

Fix the Vector Graphics (SVG) media type: set the umbracoWidth and
umbracoHeight property keys to the Umbraco 18 core values so the
first-boot import no longer fails trying to change the key of an
existing property type.
Update the generated PublishedModels to the v18 ModelsBuilder and pick up
the new UmbracoWidth and UmbracoHeight properties on the Vector Graphics
media type.
…c v18

Umbraco 18 exports BlockList labels correctly, so drop the
Fix-BlockListLabels workaround for issue #20801 from
CreateNuGetPackages.ps1 and the related documentation.

Update Get-UsyncKeys.ps1 and the docs to read the uSync seed from the
v18 folder instead of v17.
Add .claude/ to .gitignore (replacing the narrower settings.local.json
entry) and remove the previously tracked .claude/hooks/session-start.sh
and .claude/settings.json from the repository.
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