@ -0,0 +1,181 @@ |
|||
name: Output API Diff |
|||
|
|||
on: |
|||
issue_comment: |
|||
types: [created] |
|||
|
|||
permissions: {} |
|||
|
|||
concurrency: |
|||
group: api-diff-${{ github.event.issue.number }} |
|||
cancel-in-progress: true |
|||
|
|||
jobs: |
|||
api-diff: |
|||
name: Output API Diff |
|||
if: >- |
|||
github.event.issue.pull_request |
|||
&& contains(github.event.comment.body, '/api-diff') |
|||
&& contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association) |
|||
runs-on: ubuntu-latest |
|||
|
|||
permissions: |
|||
contents: read |
|||
pull-requests: write |
|||
|
|||
steps: |
|||
- name: Check maintainer permission |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
const { data: permLevel } = await github.rest.repos.getCollaboratorPermissionLevel({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
username: context.payload.comment.user.login, |
|||
}); |
|||
const allowed = ['admin', 'maintain', 'write']; |
|||
if (!allowed.includes(permLevel.permission)) { |
|||
core.setFailed(`User @${context.payload.comment.user.login} does not have write access.`); |
|||
} |
|||
|
|||
- name: Add reaction to acknowledge command |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
await github.rest.reactions.createForIssueComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: context.payload.comment.id, |
|||
content: 'eyes', |
|||
}); |
|||
|
|||
- name: Get PR branch info |
|||
id: pr |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
const { data: pr } = await github.rest.pulls.get({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
pull_number: context.issue.number, |
|||
}); |
|||
if (pr.head.repo.full_name !== `${context.repo.owner}/${context.repo.repo}`) { |
|||
core.setFailed('Cannot run /api-diff on fork PRs — would execute untrusted code.'); |
|||
return; |
|||
} |
|||
core.setOutput('ref', pr.head.ref); |
|||
core.setOutput('sha', pr.head.sha); |
|||
|
|||
- name: Checkout PR branch |
|||
uses: actions/checkout@v4 |
|||
with: |
|||
ref: ${{ steps.pr.outputs.sha }} |
|||
submodules: recursive |
|||
|
|||
- name: Setup .NET |
|||
uses: actions/setup-dotnet@v4 |
|||
with: |
|||
global-json-file: global.json |
|||
|
|||
- name: Run OutputApiDiff |
|||
run: dotnet run --project ./nukebuild/_build.csproj -- OutputApiDiff |
|||
|
|||
- name: Post API diff as PR comment |
|||
if: always() && steps.pr.outcome == 'success' |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
const fs = require('fs'); |
|||
const path = require('path'); |
|||
|
|||
const diffDir = path.join(process.env.GITHUB_WORKSPACE, 'artifacts', 'api-diff', 'markdown'); |
|||
const mergedPath = path.join(diffDir, '_diff.md'); |
|||
|
|||
let body; |
|||
if (fs.existsSync(mergedPath)) { |
|||
let diff = fs.readFileSync(mergedPath, 'utf8').trim(); |
|||
if (!diff || diff.toLowerCase().includes('no changes')) { |
|||
body = '### API Diff\n\n✅ No public API changes detected in this PR.'; |
|||
} else { |
|||
const MAX_COMMENT_LENGTH = 60000; // GitHub comment limit is 65536 |
|||
const header = '### API Diff\n\n'; |
|||
const footer = '\n\n---\n_Generated by `/api-diff` command._'; |
|||
const budget = MAX_COMMENT_LENGTH - header.length - footer.length; |
|||
|
|||
if (diff.length > budget) { |
|||
diff = diff.substring(0, budget) + '\n\n> ⚠️ Output truncated. See the [full workflow run](' + |
|||
`${process.env.GITHUB_SERVER_URL}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}` + |
|||
') for complete diff.'; |
|||
} |
|||
|
|||
body = header + diff + footer; |
|||
} |
|||
} else { |
|||
body = '### API Diff\n\n⚠️ No diff output was produced. Check the [workflow run](' + |
|||
`${process.env.GITHUB_SERVER_URL}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}` + |
|||
') for details.'; |
|||
} |
|||
|
|||
// Collapse into <details> if large |
|||
if (body.length > 2000) { |
|||
const inner = body; |
|||
body = '<details>\n<summary>📋 API Diff (click to expand)</summary>\n\n' + inner + '\n\n</details>'; |
|||
} |
|||
|
|||
// Update existing bot comment or create a new one |
|||
const marker = '<!-- api-diff-bot -->'; |
|||
body = marker + '\n' + body; |
|||
|
|||
const { data: comments } = await github.rest.issues.listComments({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
issue_number: context.issue.number, |
|||
per_page: 100, |
|||
}); |
|||
const existing = comments.find(c => c.body?.includes(marker)); |
|||
|
|||
if (existing) { |
|||
await github.rest.issues.updateComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: existing.id, |
|||
body, |
|||
}); |
|||
} else { |
|||
await github.rest.issues.createComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
issue_number: context.issue.number, |
|||
body, |
|||
}); |
|||
} |
|||
|
|||
- name: Add success reaction |
|||
if: success() |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
await github.rest.reactions.createForIssueComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: context.payload.comment.id, |
|||
content: 'rocket', |
|||
}); |
|||
|
|||
- name: Report failure |
|||
if: failure() |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
await github.rest.reactions.createForIssueComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: context.payload.comment.id, |
|||
content: '-1', |
|||
}); |
|||
await github.rest.issues.createComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
issue_number: context.issue.number, |
|||
body: `❌ \`/api-diff\` failed. [See logs](${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}).`, |
|||
}); |
|||
@ -0,0 +1,124 @@ |
|||
name: Update API Suppressions |
|||
|
|||
on: |
|||
issue_comment: |
|||
types: [created] |
|||
|
|||
permissions: {} |
|||
|
|||
concurrency: |
|||
group: update-api-${{ github.event.issue.number }} |
|||
cancel-in-progress: true |
|||
|
|||
jobs: |
|||
update-api: |
|||
name: Update API Suppressions |
|||
if: >- |
|||
github.event.issue.pull_request |
|||
&& contains(github.event.comment.body, '/update-api') |
|||
&& contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association) |
|||
runs-on: ubuntu-latest |
|||
|
|||
permissions: |
|||
contents: write |
|||
pull-requests: write |
|||
|
|||
steps: |
|||
- name: Check maintainer permission |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
const { data: permLevel } = await github.rest.repos.getCollaboratorPermissionLevel({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
username: context.payload.comment.user.login, |
|||
}); |
|||
const allowed = ['admin', 'maintain', 'write']; |
|||
if (!allowed.includes(permLevel.permission)) { |
|||
core.setFailed(`User @${context.payload.comment.user.login} does not have write access.`); |
|||
} |
|||
|
|||
- name: Add reaction to acknowledge command |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
await github.rest.reactions.createForIssueComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: context.payload.comment.id, |
|||
content: 'eyes', |
|||
}); |
|||
|
|||
- name: Get PR branch info |
|||
id: pr |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
const { data: pr } = await github.rest.pulls.get({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
pull_number: context.issue.number, |
|||
}); |
|||
if (pr.head.repo.full_name !== `${context.repo.owner}/${context.repo.repo}`) { |
|||
core.setFailed('Cannot run /update-api on fork PRs — would execute untrusted code with write permissions.'); |
|||
return; |
|||
} |
|||
core.setOutput('ref', pr.head.ref); |
|||
core.setOutput('sha', pr.head.sha); |
|||
|
|||
- name: Checkout PR branch |
|||
uses: actions/checkout@v4 |
|||
with: |
|||
ref: ${{ steps.pr.outputs.sha }} |
|||
token: ${{ secrets.GITHUB_TOKEN }} |
|||
submodules: recursive |
|||
|
|||
- name: Setup .NET |
|||
uses: actions/setup-dotnet@v4 |
|||
with: |
|||
global-json-file: global.json |
|||
|
|||
- name: Run ValidateApiDiff |
|||
run: dotnet run --project ./nukebuild/_build.csproj -- ValidateApiDiff --update-api-suppression true |
|||
|
|||
- name: Commit and push changes |
|||
run: | |
|||
git config user.name "github-actions[bot]" |
|||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" |
|||
git add api/ |
|||
if git diff --cached --quiet; then |
|||
echo "No API suppression changes to commit." |
|||
else |
|||
git commit -m "Update API suppressions" |
|||
git push origin HEAD:${{ steps.pr.outputs.ref }} |
|||
fi |
|||
|
|||
- name: Add success reaction |
|||
if: success() |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
await github.rest.reactions.createForIssueComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: context.payload.comment.id, |
|||
content: 'rocket', |
|||
}); |
|||
|
|||
- name: Report failure |
|||
if: failure() |
|||
uses: actions/github-script@v7 |
|||
with: |
|||
script: | |
|||
await github.rest.reactions.createForIssueComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
comment_id: context.payload.comment.id, |
|||
content: '-1', |
|||
}); |
|||
await github.rest.issues.createComment({ |
|||
owner: context.repo.owner, |
|||
repo: context.repo.repo, |
|||
issue_number: context.issue.number, |
|||
body: `❌ \`/update-api\` failed. [See logs](${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}).`, |
|||
}); |
|||
@ -1,6 +1,6 @@ |
|||
[submodule "Numerge"] |
|||
path = external/Numerge |
|||
url = https://github.com/kekekeks/Numerge.git |
|||
[submodule "XamlX"] |
|||
path = external/XamlX |
|||
url = https://github.com/kekekeks/XamlX.git |
|||
[submodule "Avalonia.DBus"] |
|||
path = external/Avalonia.DBus |
|||
url = https://github.com/AvaloniaUI/Avalonia.DBus.git |
|||
|
|||
@ -0,0 +1,77 @@ |
|||
<Project> |
|||
<PropertyGroup> |
|||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageVersion Include="Appium.WebDriver" Version="5.2.0" /> |
|||
<PackageVersion Include="Avalonia.Angle.Windows.Natives" Version="2.1.25547.20250602" /> |
|||
<PackageVersion Include="Avalonia.BuildServices" Version="11.3.2" /> |
|||
<PackageVersion Include="AvaloniaUI.DiagnosticsSupport" Version="2.2.0-beta2" /> |
|||
<PackageVersion Include="BenchmarkDotNet" Version="0.15.6" /> |
|||
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" /> |
|||
<PackageVersion Include="Dotnet.Bundle" Version="0.9.13" /> |
|||
<PackageVersion Include="GtkSharp" Version="3.24.24.95" /> |
|||
<PackageVersion Include="HarfBuzzSharp" Version="8.3.1.3" /> |
|||
<PackageVersion Include="HarfBuzzSharp.NativeAssets.Linux" Version="8.3.1.3" /> |
|||
<PackageVersion Include="HarfBuzzSharp.NativeAssets.WebAssembly" Version="8.3.1.3" /> |
|||
<PackageVersion Include="MicroCom.CodeGenerator" Version="0.11.0" /> |
|||
<PackageVersion Include="MicroCom.CodeGenerator.MSBuild" Version="0.11.0" /> |
|||
<PackageVersion Include="MicroCom.Runtime" Version="0.11.0" /> |
|||
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.10" /> |
|||
<PackageVersion Include="Microsoft.Build.Framework" Version="18.0.2" /> |
|||
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="15.1.548" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.CSharp" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" /> |
|||
<PackageVersion Include="Microsoft.Reactive.Testing" Version="6.1.0" /> |
|||
<PackageVersion Include="Microsoft.Testing.Extensions.TrxReport" Version="2.0.2" /> |
|||
<PackageVersion Include="Microsoft.Windows.CsWin32" Version="0.3.257" /> |
|||
<PackageVersion Include="Mono.Cecil" Version="0.11.6" /> |
|||
<PackageVersion Include="MonoMac.NetStandard" Version="0.0.4" /> |
|||
<PackageVersion Include="Moq" Version="4.20.72" /> |
|||
<PackageVersion Include="Nito.AsyncEx.Context" Version="5.1.2" /> |
|||
<PackageVersion Include="NuGet.Protocol" Version="7.0.1" /> |
|||
<PackageVersion Include="Nuke.Common" Version="10.1.0" /> |
|||
<PackageVersion Include="Numerge" Version="1.0.0" /> |
|||
<PackageVersion Include="NUnit" Version="4.4.0" /> |
|||
<PackageVersion Include="NUnit3TestAdapter" Version="6.1.0" /> |
|||
<PackageVersion Include="Quamotion.RemoteViewing" Version="1.1.211" /> |
|||
<PackageVersion Include="SharpCompress" Version="0.41.0" /> |
|||
<PackageVersion Include="Silk.NET.Direct3D.Compilers" Version="2.22.0" /> |
|||
<PackageVersion Include="Silk.NET.Direct3D11" Version="2.22.0" /> |
|||
<PackageVersion Include="Silk.NET.Vulkan" Version="2.22.0" /> |
|||
<PackageVersion Include="Silk.NET.Vulkan.Extensions.EXT" Version="2.22.0" /> |
|||
<PackageVersion Include="Silk.NET.Vulkan.Extensions.KHR" Version="2.22.0" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp" Version="2.1.12" /> |
|||
<PackageVersion Include="SkiaSharp" Version="3.119.3-preview.1.1" /> |
|||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="3.119.3-preview.1.1" /> |
|||
<PackageVersion Include="SkiaSharp.NativeAssets.WebAssembly" Version="3.119.3-preview.1.1" /> |
|||
<PackageVersion Include="System.ComponentModel.Annotations" Version="4.5.0" /> |
|||
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="9.0.10" /> |
|||
<PackageVersion Include="System.Memory" Version="4.5.5" /> |
|||
<PackageVersion Include="System.Net.Http" Version="4.3.4" /> |
|||
<PackageVersion Include="System.Numerics.Vectors" Version="4.6.1" /> |
|||
<PackageVersion Include="System.Reactive" Version="6.1.0" /> |
|||
<PackageVersion Include="System.Reflection.Emit" Version="4.7.0" /> |
|||
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" /> |
|||
<PackageVersion Include="System.Text.Json" Version="10.0.0" /> |
|||
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" /> |
|||
<PackageVersion Include="Tmds.DBus.Protocol" Version="0.90.3" /> |
|||
<PackageVersion Include="Tmds.DBus.SourceGenerator" Version="0.0.22" /> |
|||
<PackageVersion Include="Xamarin.AndroidX.AppCompat" Version="1.7.1.1" /> |
|||
<PackageVersion Include="Xamarin.AndroidX.Core.SplashScreen" Version="1.2.0" /> |
|||
<PackageVersion Include="Xamarin.AndroidX.Window" Version="1.5.1" /> |
|||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" /> |
|||
<PackageVersion Include="Xunit.StaFact" Version="3.0.13" /> |
|||
<PackageVersion Include="xunit.v3.extensibility.core" Version="3.2.1" /> |
|||
<PackageVersion Include="xunit.v3.mtp-v2" Version="3.2.1" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<GlobalPackageReference Include="Microsoft.VisualStudio.SlnGen" Version="8.5.17" PrivateAssets="all" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,40 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids --> |
|||
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|||
<Suppression> |
|||
<DiagnosticId>CP0002</DiagnosticId> |
|||
<Target>M:Avalonia.LinuxFramebuffer.FbdevOutput.CreateFramebufferRenderTarget</Target> |
|||
<Left>baseline/Avalonia.LinuxFramebuffer/lib/net10.0/Avalonia.LinuxFramebuffer.dll</Left> |
|||
<Right>current/Avalonia.LinuxFramebuffer/lib/net10.0/Avalonia.LinuxFramebuffer.dll</Right> |
|||
</Suppression> |
|||
<Suppression> |
|||
<DiagnosticId>CP0002</DiagnosticId> |
|||
<Target>M:Avalonia.LinuxFramebuffer.FbdevOutput.Lock</Target> |
|||
<Left>baseline/Avalonia.LinuxFramebuffer/lib/net10.0/Avalonia.LinuxFramebuffer.dll</Left> |
|||
<Right>current/Avalonia.LinuxFramebuffer/lib/net10.0/Avalonia.LinuxFramebuffer.dll</Right> |
|||
</Suppression> |
|||
<Suppression> |
|||
<DiagnosticId>CP0002</DiagnosticId> |
|||
<Target>M:Avalonia.LinuxFramebuffer.FbdevOutput.CreateFramebufferRenderTarget</Target> |
|||
<Left>baseline/Avalonia.LinuxFramebuffer/lib/net8.0/Avalonia.LinuxFramebuffer.dll</Left> |
|||
<Right>current/Avalonia.LinuxFramebuffer/lib/net8.0/Avalonia.LinuxFramebuffer.dll</Right> |
|||
</Suppression> |
|||
<Suppression> |
|||
<DiagnosticId>CP0002</DiagnosticId> |
|||
<Target>M:Avalonia.LinuxFramebuffer.FbdevOutput.Lock</Target> |
|||
<Left>baseline/Avalonia.LinuxFramebuffer/lib/net8.0/Avalonia.LinuxFramebuffer.dll</Left> |
|||
<Right>current/Avalonia.LinuxFramebuffer/lib/net8.0/Avalonia.LinuxFramebuffer.dll</Right> |
|||
</Suppression> |
|||
<Suppression> |
|||
<DiagnosticId>CP0008</DiagnosticId> |
|||
<Target>T:Avalonia.LinuxFramebuffer.FbdevOutput</Target> |
|||
<Left>baseline/Avalonia.LinuxFramebuffer/lib/net10.0/Avalonia.LinuxFramebuffer.dll</Left> |
|||
<Right>current/Avalonia.LinuxFramebuffer/lib/net10.0/Avalonia.LinuxFramebuffer.dll</Right> |
|||
</Suppression> |
|||
<Suppression> |
|||
<DiagnosticId>CP0008</DiagnosticId> |
|||
<Target>T:Avalonia.LinuxFramebuffer.FbdevOutput</Target> |
|||
<Left>baseline/Avalonia.LinuxFramebuffer/lib/net8.0/Avalonia.LinuxFramebuffer.dll</Left> |
|||
<Right>current/Avalonia.LinuxFramebuffer/lib/net8.0/Avalonia.LinuxFramebuffer.dll</Right> |
|||
</Suppression> |
|||
</Suppressions> |
|||
@ -1,8 +1,8 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<!-- '!NET8_0_OR_GREATER' equivalent --> |
|||
<ItemGroup Condition="!('$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '8.0')))"> |
|||
<PackageReference Include="System.Memory" Version="4.5.5" /> |
|||
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.10" /> |
|||
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.10" /> |
|||
<PackageReference Include="System.Memory" /> |
|||
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" /> |
|||
<PackageReference Include="System.Diagnostics.DiagnosticSource" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
|
|||
@ -1,5 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))"> |
|||
<PackageReference Include="System.ComponentModel.Annotations" Version="4.5.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,7 +1,7 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="HarfBuzzSharp" Version="8.3.1.2" /> |
|||
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="HarfBuzzSharp.NativeAssets.Linux" Version="8.3.1.2" /> |
|||
<PackageReference Condition="'$(IncludeWasmSkia)' == 'true'" Include="HarfBuzzSharp.NativeAssets.WebAssembly" Version="8.3.1.2" /> |
|||
<PackageReference Include="HarfBuzzSharp" /> |
|||
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="HarfBuzzSharp.NativeAssets.Linux" /> |
|||
<PackageReference Condition="'$(IncludeWasmSkia)' == 'true'" Include="HarfBuzzSharp.NativeAssets.WebAssembly" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
|
|||
@ -1,5 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="SixLabors.ImageSharp" Version="2.1.12" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,3 +0,0 @@ |
|||
<Project> |
|||
<Target Name="Pack" /> |
|||
</Project> |
|||
@ -1,5 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.CSharp" Version="4.5.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,5 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.Reactive.Testing" Version="6.1.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,5 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="Moq" Version="4.20.72" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,4 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,6 +0,0 @@ |
|||
<Project> |
|||
|
|||
<ItemGroup> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -1,5 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="System.Reactive" Version="6.1.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,14 +0,0 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<PropertyGroup> |
|||
<SharpDXPackageVersion>4.0.1</SharpDXPackageVersion> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<PackageReference Include="SharpDX" Version="$(SharpDXPackageVersion)" /> |
|||
<PackageReference Include="SharpDX.Direct2D1" Version="$(SharpDXPackageVersion)" /> |
|||
<PackageReference Include="SharpDX.Direct3D11" Version="$(SharpDXPackageVersion)" /> |
|||
<PackageReference Include="SharpDX.DXGI" Version="$(SharpDXPackageVersion)" /> |
|||
<PackageReference Include="SharpDX.Direct3D9" Version="$(SharpDXPackageVersion)" Condition="'$(UseDirect3D9)' == 'true'" /> |
|||
<PackageReference Include="SharpDX.D3DCompiler" Version="$(SharpDXPackageVersion)" Condition="'$(UseD3DCompiler)' == 'true'" /> |
|||
<PackageReference Include="SharpDX.Mathematics" Version="$(SharpDXPackageVersion)" Condition="'$(UseSharpDXMathematics)' == 'true'" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,7 +1,7 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup> |
|||
<PackageReference Include="SkiaSharp" Version="3.119.1" /> |
|||
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="SkiaSharp.NativeAssets.Linux" Version="3.119.1" /> |
|||
<PackageReference Condition="'$(IncludeWasmSkia)' == 'true'" Include="SkiaSharp.NativeAssets.WebAssembly" Version="3.119.1" /> |
|||
<PackageReference Include="SkiaSharp" /> |
|||
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="SkiaSharp.NativeAssets.Linux" /> |
|||
<PackageReference Condition="'$(IncludeWasmSkia)' == 'true'" Include="SkiaSharp.NativeAssets.WebAssembly" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
|
|||
@ -1 +1 @@ |
|||
Subproject commit 9738c6121fdd143c78d3e25686a7e4e13c00f586 |
|||
Subproject commit 5530e1cbe9e105ff4ebc9da1f4af3253a8756754 |
|||
@ -1 +1 @@ |
|||
Subproject commit c32d3040e536ae9768233ea5a445697632578bd0 |
|||
Subproject commit 009d4815470cf4bf71d1adbb633a5d81dcb2bb52 |
|||
|
After Width: | Height: | Size: 264 KiB |
|
After Width: | Height: | Size: 334 KiB |
|
After Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 197 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 375 KiB |
|
After Width: | Height: | Size: 375 KiB |
|
After Width: | Height: | Size: 238 KiB |
|
After Width: | Height: | Size: 357 KiB |
|
After Width: | Height: | Size: 378 KiB |
|
After Width: | Height: | Size: 357 KiB |
|
After Width: | Height: | Size: 315 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 270 KiB |
|
After Width: | Height: | Size: 330 KiB |
|
After Width: | Height: | Size: 347 KiB |
|
After Width: | Height: | Size: 352 KiB |
|
After Width: | Height: | Size: 354 KiB |
|
After Width: | Height: | Size: 321 KiB |
|
After Width: | Height: | Size: 215 KiB |
|
After Width: | Height: | Size: 340 KiB |
|
After Width: | Height: | Size: 342 KiB |
|
After Width: | Height: | Size: 311 KiB |
|
After Width: | Height: | Size: 253 KiB |
|
After Width: | Height: | Size: 341 KiB |
|
After Width: | Height: | Size: 229 KiB |
|
After Width: | Height: | Size: 293 KiB |
|
After Width: | Height: | Size: 370 KiB |
|
After Width: | Height: | Size: 326 KiB |
|
After Width: | Height: | Size: 349 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 346 KiB |