Releases: mono/SkiaSharp
Release list
Version 4.150.0
Updates the Skia engine to milestone 150, adds new image-filter, color-filter and paint APIs, and refreshes the bundled HarfBuzz.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
⚠️ Breaking Changes
- Promoted remaining pre-v4 obsolete APIs to errors and trimmed obsolete enums from the reference assembly by @ramezgerges (#4195)
- Removed deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow (#4186)
✨ What's New
- Updated the Skia engine to milestone 150 by @mattleibow (#4146)
- Added
SKImageFilter.CreateEmpty()andSKImageFilter.CreateCrop()by @mattleibow (#4228, #4229) - Added
SKColorFilter.CreateOverdraw()by @mattleibow (#4227) - Bound
SKPaint.GetFastBounds()for quick-reject culling by @mattleibow (#4271) - Cached the
SKSurfacecanvas wrapper across calls for better performance by @ramezgerges (#4247)
🐛 Fixes
- Fixed a small-sigma raster blur regression by @ramezgerges (#4269)
📦 Dependency Updates
- Updated HarfBuzz to 14.2.1 by @mattleibow (#4167)
All changes (45 pull requests)
- [skia-sync] Update skia to milestone 150 by @mattleibow in #4146
- feat: Add job-level status to release-status skill pipeline script by @mattleibow in #4159
- Build Tizen native dependencies in a Docker container (#4154) by @mattleibow in #4157
- Update harfbuzz to 14.2.1 by @mattleibow in #4167
- Migrate test suite from xUnit v2 to xUnit v3 (#4139) by @mattleibow in #4143
- Unify API changelog + release-notes versioning via shared versions.json by @mattleibow in #4171
- release-notes: fix --all timeout and migrate all pages to the metadata block by @mattleibow in #4174
- [docs] Unify changelog + release-notes generation: stable rollups and local skia links by @mattleibow in #4177
- release-notes: restore in-flight -unreleased naming + per-preview rollup (R1/R2/R3) by @mattleibow in #4179
- docs: refresh Skia adoption claims with verified product list by @mattleibow in #4185
- Remove deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow in #4186
- Add Chromium release heads-up to the security-audit skill by @mattleibow in #4188
- [docs] Unify API-diff + release-notes into one agentic workflow by @mattleibow in #4184
- [infra] Move release-notes Prepare into its own job (verbose, disk-managed, artifact handoff) by @mattleibow in #4193
- Update docs submodule to latest main by @github-actions[bot] in #3919
- docs: generate frameworks docs from output/nugets, latest-only monikers by @mattleibow in #4192
- Fix docs.cake moniker collision dropping iOS GL API docs by @mattleibow in #4197
- Make API-diff changelog generation host-independent + regenerate 4.147/4.148/4.150 changelogs by @mattleibow in #4196
- [v4] Promote remaining pre-v4 obsoletes to error and trim obsolete enums from the ref assembly by @ramezgerges in #4195
- Make doc generation reproducible and Linux-only; unify "API diff" terminology by @mattleibow in #4200
- Improve api-docs skill to prevent recurring doc-writer mistakes by @mattleibow in #4204
- Sync VERSIONS.txt with harfbuzz 14.2.1 by @mattleibow in #4214
- Add VERSIONS.txt step to the native-dependency-update skill by @mattleibow in #4215
- Fix release-branch skill integration-branch model and add bump-version helper by @mattleibow in #4211
- [api-docs] Stop merge from writing unfilled remarks scaffold to XML by @mattleibow in #4218
- [docs] Release-notes: main-only daily workflow + GitHub Release teaser playbook by @mattleibow in #4207
- Add mono/skia counterpart branching to release-branch skill by @mattleibow in #4220
- Fix integration test harness for .NET 10 by @mattleibow in #4221
- [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4224
- docs: drop obsolete GrVkYcbcrConversionInfo page to fix Learn xref collision by @mattleibow in #4225
- [docs] docs: regenerate API diffs and polish release notes by @github-actions[bot] in #4231
- Update docs submodule to latest main by @github-actions[bot] in #4234
- [skia-sync] Merge upstream chrome/m150 bug fixes by @mattleibow in #4190
- Add SKImageFilter.CreateEmpty() method by @mattleibow in #4228
- Add SKImageFilter.CreateCrop() - Fixes #3938 by @mattleibow in #4229
- Fix integration test harness Docker detection + command timeout, and release-testing skill filter syntax by @mattleibow in #4244
- Add SKColorFilter.CreateOverdraw() API by @mattleibow in #4227
- Support release-branch targeting in Skia upstream sync (+ Opus 4.7, libc++ build fix) by @mattleibow in #4239
- Add a main (tip) mode to the Skia upstream sync by @mattleibow in #4254
- perf(SKSurface): cache the Canvas wrapper across calls by @ramezgerges in #4247
- ci: regroup and rename GitHub Actions workflows; prune dead ones by @mattleibow in #4260
- Group release-notes site by support status (stable/preview) + audit drift check by @mattleibow in #4267
- Fix small-sigma raster blur regression (define SK_AVOID_SLOW_RASTER_PIPELINE_BLURS) by @ramezgerges in #4269
- Harden Skia-sync conflict policy, allow durable gn args, and split skill vs workflow by @mattleibow in #4258
- Bind SKPaint.GetFastBounds by @mattleibow in #4271
Version 4.151.0 (Preview 1)
Updates the Skia engine to milestone 151, alongside documentation and release-tooling improvements.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
✨ What's New
- Updated Skia engine to milestone 151 by @mattleibow (#4294)
All changes (15 pull requests)
- Add milestone sync script aligned to Chrome release schedule by @mattleibow in #4282
- [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4283
- ci(docs): stop the PR-author cache from re-triggering the docs pipeline by @mattleibow in #4285
- Add embedded image/font selectors to SkiaFiddle by @mattleibow in #4284
- api-docs skill: dual-purpose docs add + review (references + scripts) by @mattleibow in #4242
- docs: add release cadence section to releases index by @mattleibow in #4291
- docs: add "AI in SkiaSharp" site page by @mattleibow in #4292
- [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4296
- docs: restore release cadence section in releases index, driven by Chrome's schedule by @mattleibow in #4297
- [docs] docs: regenerate API diffs and polish release notes by @github-actions[bot] in #4298
- [skia-sync] Update skia to milestone 151 by @mattleibow in #4294
- Update README.md by @mattleibow in #4299
- [externals] Bump skia submodule to drop SK_BUILD_FOR_WASM redef by @ramezgerges in #3788
- [skia-sync] Drive upstream sync from versions.json with a run-number rotation by @mattleibow in #4306
- [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4311
Version 4.150.0 (RC 1)
New image-filter and color-filter APIs, a faster SKSurface canvas path, and a raster blur fix.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
✨ What's New
- Add
SKImageFilter.CreateEmpty()by @mattleibow (#4228) - Add
SKImageFilter.CreateCrop()by @mattleibow (#4229) - Add
SKColorFilter.CreateOverdraw()for overdraw visualization by @mattleibow (#4227) - Bind
SKPaint.GetFastBounds()for quick-reject culling by @mattleibow (#4271) - Faster
SKSurface.Canvas— cache the wrapper across calls by @ramezgerges (#4247)
🐛 Fixes
- Fix small-sigma raster blur rendering regression by @ramezgerges (#4269)
Thanks to our contributors: @ramezgerges
All changes (13 pull requests)
- [skia-sync] Merge upstream chrome/m150 bug fixes by @mattleibow in #4190
- Add SKImageFilter.CreateEmpty() method by @mattleibow in #4228
- Add SKImageFilter.CreateCrop() - Fixes #3938 by @mattleibow in #4229
- Fix integration test harness Docker detection + command timeout, and release-testing skill filter syntax by @mattleibow in #4244
- Add SKColorFilter.CreateOverdraw() API by @mattleibow in #4227
- Support release-branch targeting in Skia upstream sync (+ Opus 4.7, libc++ build fix) by @mattleibow in #4239
- Add a main (tip) mode to the Skia upstream sync by @mattleibow in #4254
- perf(SKSurface): cache the Canvas wrapper across calls by @ramezgerges in #4247
- ci: regroup and rename GitHub Actions workflows; prune dead ones by @mattleibow in #4260
- Group release-notes site by support status (stable/preview) + audit drift check by @mattleibow in #4267
- Fix small-sigma raster blur regression (define SK_AVOID_SLOW_RASTER_PIPELINE_BLURS) by @ramezgerges in #4269
- Harden Skia-sync conflict policy, allow durable gn args, and split skill vs workflow by @mattleibow in #4258
- Bind SKPaint.GetFastBounds by @mattleibow in #4271
Version 4.150.0 (Preview 2)
A maintenance preview that finalizes the v4 obsolete-API cleanup, removes .NET Interactive support, and refreshes HarfBuzz.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
⚠️ Breaking Changes
- Promoted remaining pre-v4 obsolete APIs to errors and trimmed obsolete enums from the reference assembly by @ramezgerges (#4195)
- Removed deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow (#4186)
📦 Dependency Updates
- Updated HarfBuzz to 14.2.1 by @mattleibow (#4167)
Thanks to our contributors: @ramezgerges
All changes (30 pull requests)
- Build Tizen native dependencies in a Docker container (#4154) by @mattleibow in #4157
- Update harfbuzz to 14.2.1 by @mattleibow in #4167
- Migrate test suite from xUnit v2 to xUnit v3 (#4139) by @mattleibow in #4143
- Unify API changelog + release-notes versioning via shared versions.json by @mattleibow in #4171
- release-notes: fix --all timeout and migrate all pages to the metadata block by @mattleibow in #4174
- [docs] Unify changelog + release-notes generation: stable rollups and local skia links by @mattleibow in #4177
- release-notes: restore in-flight -unreleased naming + per-preview rollup (R1/R2/R3) by @mattleibow in #4179
- docs: refresh Skia adoption claims with verified product list by @mattleibow in #4185
- Remove deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow in #4186
- Add Chromium release heads-up to the security-audit skill by @mattleibow in #4188
- [docs] Unify API-diff + release-notes into one agentic workflow by @mattleibow in #4184
- [infra] Move release-notes Prepare into its own job (verbose, disk-managed, artifact handoff) by @mattleibow in #4193
- Update docs submodule to latest main by @github-actions[bot] in #3919
- docs: generate frameworks docs from output/nugets, latest-only monikers by @mattleibow in #4192
- Fix docs.cake moniker collision dropping iOS GL API docs by @mattleibow in #4197
- Make API-diff changelog generation host-independent + regenerate 4.147/4.148/4.150 changelogs by @mattleibow in #4196
- [v4] Promote remaining pre-v4 obsoletes to error and trim obsolete enums from the ref assembly by @ramezgerges in #4195
- Make doc generation reproducible and Linux-only; unify "API diff" terminology by @mattleibow in #4200
- Improve api-docs skill to prevent recurring doc-writer mistakes by @mattleibow in #4204
- Sync VERSIONS.txt with harfbuzz 14.2.1 by @mattleibow in #4214
- Add VERSIONS.txt step to the native-dependency-update skill by @mattleibow in #4215
- Fix release-branch skill integration-branch model and add bump-version helper by @mattleibow in #4211
- [api-docs] Stop merge from writing unfilled remarks scaffold to XML by @mattleibow in #4218
- [docs] Release-notes: main-only daily workflow + GitHub Release teaser playbook by @mattleibow in #4207
- Add mono/skia counterpart branching to release-branch skill by @mattleibow in #4220
- Fix integration test harness for .NET 10 by @mattleibow in #4221
- [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4224
- docs: drop obsolete GrVkYcbcrConversionInfo page to fix Learn xref collision by @mattleibow in #4225
- [docs] docs: regenerate API diffs and polish release notes by @github-actions[bot] in #4231
- Update docs submodule to latest main by @github-actions[bot] in #4234
Version 4.148.0
Finalizes the v4 API surface by turning the remaining pre-v4 obsolete members into hard errors and trimming obsolete enums from the reference assembly.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
⚠️ Breaking Changes
- Remaining pre-v4 obsolete APIs now error, and obsolete enums are removed from the reference assembly by @github-actions[bot] (#4205)
All changes (1 pull request)
- [release/4.148.x] [v4] Promote remaining pre-v4 obsoletes to error and trim obsolete enums from the ref assembly by @github-actions[bot] in #4205
Version 4.150.0 (Preview 1)
Preview of SkiaSharp 4.150 built on Skia engine milestone 150.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
✨ What's New
- Updated Skia engine to milestone 150 by @mattleibow (#4146)
All changes (2 pull requests)
- [skia-sync] Update skia to milestone 150 by @mattleibow in #4146
- feat: Add job-level status to release-status skill pipeline script by @mattleibow in #4159
Version 4.148.0 (RC 1)
Upgrades the Skia engine to milestone 148 and promotes previously deprecated SKPaint text APIs to build errors.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
⚠️ Breaking Changes
- Previously deprecated
SKPainttext/font members now emit build errors — update call sites by @ramezgerges (#4068) - Remaining legacy
SKPaintstate-reading APIs marked obsolete; expect new compiler warnings by @mattleibow (#4114)
✨ What's New
- Updated Skia engine to milestone 148 by @mattleibow (#4125)
- Improved lifecycle management for shared singleton
SKObjectinstances by @ramezgerges (#4080)
🐛 Fixes
- Fixed WinUI Projection DLL not resolving for .NET 9 consumers on Windows by @mattleibow (#4084)
- Fixed
SKPixmap.GetPixelSpanoffset calculation (was using Height instead of Width) by @mattleibow (#4128) - Fixed
SKPixmap/SKBitmapGetPixelSpanto useRowBytesfor correct stride by @mattleibow (#4148)
📦 Dependency Updates
- Updated HarfBuzz to 14.2.0 by @mattleibow (#4035)
- Updated expat to 2.8.1 by @mattleibow (#4079)
Thanks to our contributors: @ramezgerges
All changes (35 pull requests)
- Document ADO pipeline chain tracking in release skills by @mattleibow in #4050
- Update harfbuzz to 14.2.0 by @mattleibow in #4035
- [docs] Update release notes for 4.147.0 (preview.3) by @mattleibow in #4057
- Fix release notes workflow to always checkout main by @mattleibow in #4059
- Enhance security-audit skill: CG alerts integration and viewer improvements by @mattleibow in #4058
- [docs] Update release notes for 4.147.0 (unreleased/main) by @github-actions[bot] in #4061
- Disable unused dependency manifests in skia submodule to suppress CG alerts by @mattleibow in #4054
- Update .NET SDK version to 10.0.108 by @mattleibow in #4055
- Improve security-audit skill: schema enforcement, CG reliability, and report quality by @mattleibow in #4070
- [skia-sync] Merge upstream chrome/m147 bug fixes by @mattleibow in #4044
- docs: force-push docs-live to prevent repo size bloat by @mattleibow in #4073
- Add es-metadata.yml with initial configuration by @mattleibow in #4075
- Add es-metadata.yml to cache exclude list by @mattleibow in #4077
- Migrate Linux Docker builds to .NET official cross-compilation images by @mattleibow in #4062
- Add --pull to Docker builds to ensure fresh base images by @mattleibow in #4087
- Fix native Windows builds failing to find .NET SDK 10.0.108 by @mattleibow in #4089
- Revert "Add --pull to Docker builds to ensure fresh base images" by @mattleibow in #4091
- Add ci-status skill for daily CI health dashboard by @mattleibow in #4094
- Fix WinUI Projection DLL not resolved for .NET 9 consumers on Windows by @mattleibow in #4084
- Add Chrome Releases blog integration to security-audit skill by @mattleibow in #4097
- feat(ci-status): add GitHub Actions tracking and restructure as collect → AI → render pipeline by @mattleibow in #4099
- Migrate device and WASM tests from XHarness to DeviceRunners
dotnet testby @mattleibow in #4004 - [skia-sync] Merge upstream chrome/m147 bug fixes by @mattleibow in #4081
- Update expat to 2.8.1 by @mattleibow in #4079
- Promote SKPaint text/font obsolete members to error by @ramezgerges in #4068
- Rework the lifecycle of singleton instances by @ramezgerges in #4080
- Fix SKPixmap.GetPixelSpan(x,y) offset using Height instead of Width by @mattleibow in #4128
- Move native-compat gate from [ModuleInitializer] to SkiaApi cctor by @mattleibow in #4133
- [skia-sync] Update skia to milestone 148 by @mattleibow in #4125
- Obsolete remaining legacy paint state-reading APIs (#3732) by @mattleibow in #4114
- Fix SKIASHARP_VERSION yaml missed by the m148 bump by @mattleibow in #4144
- release-notes: roll up preview-only/skipped versions into their successor by @mattleibow in #4149
- [docs] Two-way supersede links in release notes by @mattleibow in #4152
- Fix SKPixmap/SKBitmap GetPixelSpan to use RowBytes for stride by @mattleibow in #4148
- [docs] docs: update release notes for 4.148.0 (unreleased) by @github-actions[bot] in #4153
Version 4.147.0 (Preview 3)
Drops pre-.NET 8 WASM builds, adds new HarfBuzz color APIs and public API wrappers, and updates native dependencies.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
⚠️ Breaking Changes
- Dropped WASM native builds for pre-.NET 8 Emscripten versions by @mattleibow (#4022)
✨ What's New
- Added
HBColorstruct for proper HarfBuzzhb_color_trepresentation by @mattleibow (#4000) - Added missing public API wrappers and fixed naming convention violations by @mattleibow (#4001)
- Updated Tizen SDK support to version 10.0 by @mattleibow (#3743)
📦 Dependency Updates
- Updated zlib to 1.3.2.1-motley by @mattleibow (#3720)
- Updated FreeType to 2.14.3 by @mattleibow (#3726)
- Updated libjpeg-turbo to 3.1.4.1 by @mattleibow (#4012)
Thanks to our contributors: @ramezgerges, @ebariche, @sasakrsmanovic
All changes (37 pull requests)
- Keep raw PR data in release notes files as HTML comment by @mattleibow in #3877
- Fix SkiaSharp references for Uno Platform's Gallery sample by @ramezgerges in #3867
- [docs] Release notes for 4.147.0 by @github-actions[bot] in #3882
- Add workflow to persist agentic workflow data to aw-data branch by @mattleibow in #3907
- Add automated Skia upstream sync workflow by @mattleibow in #3825
- Add content-based build caching with ADO Cache@2 by @mattleibow in #3826
- Run stale staging sweep daily instead of weekly by @mattleibow in #3911
- [samples] Improve SkiaFiddle application size by @ebariche in #3849
- Add automated API docs pipeline by @mattleibow in #3918
- Fix CI: samples, Docker, NanoServer, coverlet, and build chain by @mattleibow in #3835
- [samples] Add Hero Image gallery sample by @mattleibow in #3792
- docs: Update Uno Platform link and description in README.md by @sasakrsmanovic in #3966
- Skip Skia sync workflow when upstream is already merged by @mattleibow in #3971
- Blazor gallery redesign: API Atlas with tag cloud filtering by @mattleibow in #3970
- Enable TreatWarningsAsErrors in binding/ and fix all warnings by @mattleibow in #3752
- Add missing API wrappers and fix naming convention violations by @mattleibow in #4001
- Add HBColor struct for proper hb_color_t representation by @mattleibow in #4000
- Fix UnicodeEncodeError on Windows CI in repo-deps.py by @mattleibow in #4006
- Update Tizen SDK installer from 6.1 to 10.0 by @mattleibow in #3743
- [main] Update zlib to 1.3.2.1-motley by @mattleibow in #3720
- [main] Update FreeType to 2.14.3 by @mattleibow in #3726
- Fix cgmanifest.json version mismatches by @mattleibow in #3830
- Fix docs deploy race condition with retry loop by @mattleibow in #4019
- Fix Skia Upstream Sync showing as failed when nothing to sync by @mattleibow in #4020
- Fix Alpine CI failures caused by transient GitLab 500 errors by @mattleibow in #4013
- Move API docs workflow to docs repo and optimize skill architecture by @mattleibow in #4024
- Fix font test failures in sync workflow by mounting /usr/share/fonts by @mattleibow in #4023
- Add manifest generation to docs-tool.ps1 extract by @mattleibow in #4025
- [WASM] Drop native builds for pre-.NET 8 Emscripten versions by @mattleibow in #4022
- Update libjpeg-turbo to 3.1.4.1 by @mattleibow in #4012
- [docs] Release notes for 4.147.0 (unreleased) by @github-actions[bot] in #4029
- Update api-docs skill: merge guard, anchored regex, workflow awareness by @mattleibow in #4030
- Add GitHub Actions workflow for API diff by @mattleibow in #4038
- Fix ANGLE WinAppSDK download failure on 1ES agents by @mattleibow in #4014
- [docs] API diff for v3.119.2 by @github-actions[bot] in #4046
- Add automated API diff workflow by @mattleibow in #4036
- [docs] docs: update release notes for 4.147.0 (unreleased) by @github-actions[bot] in #4049
New Contributors
- @ebariche made their first contribution in #3849
- @sasakrsmanovic made their first contribution in #3966
Version 3.119.4
Updates bundled libexpat and libpng to their latest versions.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
📦 Dependency Updates
- Updated libexpat to 2.7.5 by @mattleibow (#3722)
- Updated libpng to 1.6.58 by @mattleibow (#3723)
All changes (5 pull requests)
- Fix cgmanifest.json Skia milestone mismatch on release/3.119.x by @mattleibow in #3721
- [release/3.119.x] Free disk space on Linux CI agents by @github-actions[bot] in #3716
- [release/3.119.x] Update libexpat to 2.7.5 by @mattleibow in #3722
- [release/3.119.x] Update libpng to 1.6.58 by @mattleibow in #3723
- [release/3.119.x] Improve Android CI disk diagnostics by @github-actions[bot] in #3728
Version 4.147.0 (Preview 2)
Adds animated WebP encoding, a zero-copy stream-to-data API, and fixes a finalizer crash in SKPath.
📦 NuGet · 📖 Release notes · 🔀 Full changelog
⚠️ Breaking Changes
- Apple platform library TFMs updated to versioned
26.0; app TFMs remain unversioned by @mattleibow (#3798)
✨ What's New
- Add animated WebP encoding support via
SKWebpEncoderby @mattleibow (#3771) - Add
SKStream.GetData()for zero-copy stream-to-data conversion by @mattleibow (#3772)
🐛 Fixes
- Fix finalizer crash in
SKPathwhenSKPathBuilderis collected first by @ramezgerges (#3796)
Thanks to our contributors: @ramezgerges
All changes (27 pull requests)
- Bump HarfBuzzSharp to 8.3.1.6 after release by @mattleibow in #3780
- fix: reuse same PR for release notes workflow by @mattleibow in #3782
- [samples] Fix Skottie package downgrade NU1605 in Uno gallery by @ramezgerges in #3785
- Dev/skiafiddle ux improvements by @ramezgerges in #3790
- Automate website release notes with branch-diffing script by @mattleibow in #3787
- Improve docs landing page layout and hero section by @mattleibow in #3794
- Add skia-analyst and sample-scout skills with daily/weekly workflows by @mattleibow in #3755
- Simplify sample-scout to read GM files from local submodule by @mattleibow in #3802
- Fix skia-analyst and sample-scout: no safe outputs generated by @mattleibow in #3805
- Fix release notes script git fetch for CI shallow clones by @mattleibow in #3808
- Revert "Fix skia-analyst and sample-scout: no safe outputs generated" by @mattleibow in #3811
- Delete .github/workflows/skia-analyst.md by @mattleibow in #3812
- Add allowed-base-branches: [main] to release notes workflow by @mattleibow in #3813
- Make release notes script fully git-based with cumulative rollup by @mattleibow in #3815
- Fix Apple platform TFMs: use 26.0 for libraries, unversioned for apps by @mattleibow in #3798
- [Gallery] Add 5 new interactive samples and redesign Blazor home page by @mattleibow in #3757
- fix: preserve branch name in release notes workflow to reuse PRs by @mattleibow in #3822
- Fix update-docs workflow: add missing mdoc assembly search paths for Tizen and Gtk4 by @mattleibow in #3824
- Disable PR artifact retrieval in get-build-type.ps1 by @mattleibow in #3827
- [samples] Bump Basic Uno sample to Uno.Sdk/6.6.0-dev.208 by @ramezgerges in #3821
- fix: add recreate-ref to release notes workflow for branch reuse by @mattleibow in #3836
- [docs] Update release notes for 4.147.0 by @github-actions[bot] in #3837
- fix: skip release notes workflow when only docs/releases change by @mattleibow in #3839
- [docs] Update release notes for 4.147.0 by @github-actions[bot] in #3840
- Fix finalizer crash in SKPath when SKPathBuilder is collected first by @ramezgerges in #3796
- Add animated WebP encoding support (SKWebpEncoder) by @mattleibow in #3771
- Add SKStream.GetData() for zero-copy stream-to-data conversion by @mattleibow in #3772