Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/release-notes/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ and records the outcome in the file's data-block; you only render what's there:
script-generated *"Supersedes …"* note (kept verbatim).

> You never compute supersession or base selection — just render whatever markers the file
> contains. The mechanics (and the optional `scripts/versions.json` overrides) are script
> contains. The mechanics (and the optional `scripts/infra/docs/versions.json` overrides) are script
> internals.

When polishing a superseded page, keep the script-generated *"Preview only · Superseded by …"*
Expand Down
250 changes: 203 additions & 47 deletions .agents/skills/release-notes/scripts/generate-release-notes.py

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions .github/workflows/api-diff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ name: API Diff
# That target wraps Mono.ApiTools.NuGetDiff, walks every version published to
# NuGet.org (prereleases included) and writes a per-assembly markdown diff to
# changelogs/{PackageId}/{version}/{Assembly}.md. Baseline selection and
# superseded-version handling are driven by scripts/versions.json — see that
# superseded-version handling are driven by scripts/infra/docs/versions.json — see that
# file's $comment fields and the docs-api-diff-past target in
# scripts/infra/docs/docs.cake. To reproduce a run locally, just run that one
# command from the repo root.
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
global-json-file: global.json

# Single Cake target — the exact same command a human runs locally. It
# reads scripts/versions.json for compare_to / supersession overrides and
# reads scripts/infra/docs/versions.json for compare_to / supersession overrides and
# writes the changelogs under changelogs/.
- name: Generate changelogs
run: |
Expand Down Expand Up @@ -176,7 +176,7 @@ jobs:
git commit -m "[docs] Update API changelogs" \
-m "Regenerated by the api-diff workflow using Mono.ApiTools.NuGetDiff.
Compares all published NuGet.org versions (including prereleases).
Respects scripts/versions.json for comparison overrides."
Respects scripts/infra/docs/versions.json for comparison overrides."

git push --force origin "$PR_BRANCH"

Expand All @@ -190,7 +190,7 @@ jobs:
--body "Automated API changelogs comparing all published NuGet.org versions.
Generated by the \`api-diff\` workflow using \`Mono.ApiTools.NuGetDiff\`.

Respects \`scripts/versions.json\` for comparison overrides and supersession tracking.
Respects \`scripts/infra/docs/versions.json\` for comparison overrides and supersession tracking.

---
- **Workflow run:** ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
Expand Down
4 changes: 2 additions & 2 deletions documentation/dev/writing-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ git diff changelogs/

`docs-api-diff-past` diffs **published** NuGet.org versions: every version is
compared against its predecessor, with baselines and superseded-version skips
driven by [`scripts/versions.json`](../../scripts/versions.json) (same config the
driven by [`scripts/infra/docs/versions.json`](../../scripts/infra/docs/versions.json) (same config the
release-notes script uses). Superseded versions still get their own changelog;
they are only removed from the pool of *baselines*, so e.g. `4.148.0` walks past
the abandoned `4.147.*` previews and lands on `3.119.4`.
Expand Down Expand Up @@ -197,7 +197,7 @@ inspection — it is **not** meant to be committed.
The API changelogs (Cake) and the website release notes
([`generate-release-notes.py`](../../.agents/skills/release-notes/scripts/generate-release-notes.py))
are **separate systems** that deliberately share only one thing:
[`scripts/versions.json`](../../scripts/versions.json). That file is the single
[`scripts/infra/docs/versions.json`](../../scripts/infra/docs/versions.json). That file is the single
source of truth for two decisions, and both systems honour it identically:

- **Supersession** — only a version with an explicit `status: superseded` entry
Expand Down
27 changes: 20 additions & 7 deletions documentation/docfx/releases/1.49.0.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
# Version 1.49.0
<!--
RAW PR DATA — Do not remove this comment block.
AI uses this data to generate the polished release notes below.
Re-run the script to refresh this data from git history.

> **Initial release of SkiaSharp** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.0-preview1)
Generated: 2026-06-16T19:32:16Z by generate-release-notes.py
version: 1.49.0
status: preview
branch: release/1.49.0-preview1
diff: ff9f7d81f4e6..release/1.49.0-preview1
prs: 0

## Highlights
*No changes found.*
-->

<!-- Generated: 2026-06-16T18:45:00Z by claude-opus-4.8 -->

The first public release of SkiaSharp — a cross-platform 2D graphics API for .NET that wraps Google's Skia library (milestone 49). This preview brought Skia's powerful rendering capabilities to Xamarin and .NET developers for the first time.
# Version 1.49.0

> **Preview release** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview)

## Breaking Changes
## Highlights

*None in this release.*
An early preview build of SkiaSharp. No pull requests were recorded in this preview's diff range (`ff9f7d81f4e6..release/1.49.0-preview1`), so there are no itemised changes to report for this build.

## Links

- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview1)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview)
25 changes: 19 additions & 6 deletions documentation/docfx/releases/1.49.1.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
# Version 1.49.1
<!--
RAW PR DATA — Do not remove this comment block.
AI uses this data to generate the polished release notes below.
Re-run the script to refresh this data from git history.

> **First stable release** · Released April 18, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.1)
Generated: 2026-06-16T19:32:16Z by generate-release-notes.py
version: 1.49.1
status: stable
branch: release/1.49.1
diff: 6ab85368ed69..release/1.49.1
prs: 0

## Highlights
*No changes found.*
-->

<!-- Generated: 2026-06-16T18:45:00Z by claude-opus-4.8 -->

The first stable (non-preview) release of SkiaSharp, promoting the 1.49 series to production-ready status. This release included stability improvements and fixes following the initial preview.
# Version 1.49.1

> **Released April 18, 2016** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.1)

## Breaking Changes
## Highlights

*None in this release.*
The first stable (non-preview) release of SkiaSharp, promoting the 1.49 series to production-ready status after the initial previews.

## Links

Expand Down
36 changes: 20 additions & 16 deletions documentation/docfx/releases/1.49.2.1.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
# Version 1.49.2.1

> **Skia m49 sync and community additions** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2.1-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2.1-beta)

## Highlights
<!--
RAW PR DATA — Do not remove this comment block.
AI uses this data to generate the polished release notes below.
Re-run the script to refresh this data from git history.

This patch release syncs SkiaSharp with the latest changes from Google's upstream Skia milestone 49, along with community contributions from @kekekeks.
Generated: 2026-06-16T19:32:16Z by generate-release-notes.py
version: 1.49.2.1
status: stable
branch: release/1.49.2.1-beta
diff: release/1.49.1..release/1.49.2.1-beta
prs: 0

## Breaking Changes
*No changes found.*
-->

*None in this release.*
<!-- Generated: 2026-06-16T18:45:00Z by claude-opus-4.8 -->

### Engine
# Version 1.49.2.1

- **Skia m49 upstream sync** — Pulled in the latest changes from Google's Skia milestone 49 codebase.
> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2.1)

## Community Contributors ❤️
## Highlights

| Contributor | What They Did |
|-------------|--------------|
| [@kekekeks](https://github.com/kekekeks) | Additions to this release |
A packaging and servicing update over 1.49.1 with no user-facing code changes.

## Links

- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.2-beta...v1.49.2.1-beta)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2.1-beta)
- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.2.1)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2.1)
- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.49.2.1)
35 changes: 19 additions & 16 deletions documentation/docfx/releases/1.49.2.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,29 @@
# Version 1.49.2
<!--
RAW PR DATA — Do not remove this comment block.
AI uses this data to generate the polished release notes below.
Re-run the script to refresh this data from git history.

> **Community-driven improvements** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2-beta)
Generated: 2026-06-16T19:32:16Z by generate-release-notes.py
version: 1.49.2
status: stable
branch: release/1.49.2-beta
diff: release/1.49.1..release/1.49.2-beta
prs: 0

## Highlights
*No changes found.*
-->

A community-driven beta release with contributions from five different contributors, bringing improvements and fixes to the SkiaSharp library.
<!-- Generated: 2026-06-16T18:38:00Z by claude-opus-4.8 -->

## Breaking Changes
# Version 1.49.2

*None in this release.*
> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2)

## Community Contributors ❤️
## Highlights

| Contributor | What They Did |
|-------------|--------------|
| [@bholmes](https://github.com/bholmes) | Contributions to this release |
| [@joelmartinez](https://github.com/joelmartinez) | Contributions to this release |
| [@migueldeicaza](https://github.com/migueldeicaza) | Contributions to this release |
| [@petergolde](https://github.com/petergolde) | Contributions to this release |
| [@tdenniston](https://github.com/tdenniston) | Contributions to this release |
A small maintenance release. No tracked pull requests landed between `1.49.1` and this version; the build was published to refresh the packaged binaries.

## Links

- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.2-beta)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2-beta)
- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.2)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2)
52 changes: 24 additions & 28 deletions documentation/docfx/releases/1.49.3.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,42 @@
# Version 1.49.3

> **UWP support and canvas clipping** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.3-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.3-beta)

## Highlights

A feature-packed beta that brings Windows UWP support, improved canvas clipping APIs, better custom platform support, and important fixes for text encoding and canvas save/restore operations.
<!--
RAW PR DATA — Do not remove this comment block.
AI uses this data to generate the polished release notes below.
Re-run the script to refresh this data from git history.

## Breaking Changes
Generated: 2026-06-16T19:32:18Z by generate-release-notes.py
version: 1.49.3
status: stable
branch: release/1.49.3-beta
diff: release/1.49.1..release/1.49.3-beta
prs: 1

*None in this release.*
- Rename Native Library [#77] by @mattleibow in https://github.com/mono/SkiaSharp/pull/81 (9 commits, 2 days)
-->

## New Features
<!-- Generated: 2026-06-16T18:40:00Z by claude-opus-4.8 -->

### Platform
# Version 1.49.3

- **Windows UWP support** — SkiaSharp can now be used in Universal Windows Platform apps.
- **Custom platform support** — A new mechanism allows using SkiaSharp on unofficially supported platforms (such as Linux) by disabling the default native library inclusion. Set `<ShouldIncludeNativeSkiaSharp>False</ShouldIncludeNativeSkiaSharp>` in your project and manually include a native library named `libSkiaSharp`.
> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.3)

### API Surface
## Highlights

- **`SKCanvas` clipping** — New overloads for `ClipRect` and `ClipPath` that accept `SKRegionOperation` and antialias parameters, enabling clip region resets. Also added `GetClipBounds` and `GetClipDeviceBounds` for querying the current clip.
This patch release renames the native library to align packaging and loading conventions across platforms.

```csharp
void ClipRect(SKRect rect, SKRegionOperation operation = SKRegionOperation.Intersect, bool antialias = false);
void ClipPath(SKRect rect, SKRegionOperation operation = SKRegionOperation.Intersect, bool antialias = false);
bool GetClipBounds(ref SKRect bounds);
bool GetClipDeviceBounds(ref SKRectI bounds);
```
## New Features

## Bug Fixes
### Platform

- **`SKCanvas.Save` / `SKCanvas.SaveLayer` return values** — These methods now correctly return the value from native code.
- **Text encoding handling** — `SKPaint.MeasureText`, `BreakText`, `GetTextPath`, and `GetPosTextPath` now use the encoding from `SKPaint.TextEncoding` instead of incorrectly converting to UTF-16, matching the behavior of text drawing operations.
- **Native library rename** — Renames the bundled native library for consistent naming across the supported platforms. ([#81](https://github.com/mono/SkiaSharp/pull/81))

## Platform Support

| Platform | What's New |
|----------|-----------|
| 🪟 Windows | UWP support added |
| 🐧 Linux | Custom platform mechanism enables unofficial support |
| 📦 General | Native library renamed for consistent packaging |

## Links

- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.2.1-beta...v1.49.3-beta)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.3-beta)
- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.3)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.3)
- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.49.3)
53 changes: 24 additions & 29 deletions documentation/docfx/releases/1.49.4.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,42 @@
# Version 1.49.4

> **tvOS support and PDF creation** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.4-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.4-beta)
<!--
RAW PR DATA — Do not remove this comment block.
AI uses this data to generate the polished release notes below.
Re-run the script to refresh this data from git history.

## Highlights
Generated: 2026-06-16T19:32:19Z by generate-release-notes.py
version: 1.49.4
status: stable
branch: release/1.49.4-beta
diff: release/1.49.1..release/1.49.4-beta
prs: 1

This beta adds Apple tvOS as a supported platform and introduces PDF document creation via the new `SKDocument` API, enabling developers to generate multi-page PDF files using familiar SkiaSharp drawing methods.
- Rename Native Library [#77] by @mattleibow in https://github.com/mono/SkiaSharp/pull/81 (9 commits, 2 days)
-->

## Breaking Changes
<!-- Generated: 2026-06-16T18:38:49Z by claude-opus-4.8 -->

*None in this release.*

## New Features
# Version 1.49.4

### Platform
> **Native library servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.4)

- **Apple tvOS support** — SkiaSharp can now be used in tvOS applications.
## Highlights

### Images & Documents
This servicing release renames the bundled native library so it resolves consistently across all supported platforms.

- **PDF creation** — New `SKDocument` API enables creating multi-page PDF files using standard `SKCanvas` drawing operations.
## New Features

```csharp
using (var stream = new SKFileWStream("document.pdf"))
using (var document = SKDocument.CreatePdf(stream))
{
using (var canvas = document.BeginPage(width, height))
using (var paint = new SKPaint())
{
canvas.DrawText("...PDF...", 10f, 100f, paint);
document.EndPage();
}
### Platform

document.Close();
}
```
- **Consistent native library naming** — Renames the native library to a single, predictable name, improving native library resolution across platforms. ([#81](https://github.com/mono/SkiaSharp/pull/81))

## Platform Support

| Platform | What's New |
|----------|-----------|
| 🍎 Apple | tvOS support added |
| 📦 General | Consistent native library naming |

## Links

- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.3-beta...v1.49.4-beta)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.4-beta)
- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.4)
- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.4)
- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.49.4)
Loading
Loading