Skip to content
Open
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
110 changes: 110 additions & 0 deletions .github/upgrades/assessment.csv

Large diffs are not rendered by default.

4,702 changes: 4,702 additions & 0 deletions .github/upgrades/assessment.json

Large diffs are not rendered by default.

5,680 changes: 5,680 additions & 0 deletions .github/upgrades/assessment.md

Large diffs are not rendered by default.

51 changes: 51 additions & 0 deletions .github/upgrades/execution-log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@

## [2026-02-08 18:00] TASK-000: Prerequisites verification

Status: Complete.

- **Verified**: .NET 10 SDK compatibility: Compatible SDK found.
- **Commits**: a2c5901: "TASK-000: Add upgrade plan, assessment and tasks"
- **Files Modified**: .github/upgrades/assessment.md, .github/upgrades/plan.md, .github/upgrades/tasks.md
- **Code Changes**: Added upgrade plan, assessment report, and generated task list for execution.

Success - Prerequisites verified and planning artifacts committed.



## [2026-02-08 18:03] TASK-001: Generate per-tier project lists and create Tier branches

Status: Complete.

- **Verified**: Per-tier project lists generated from assessment.md and saved to `.github/upgrades/tier-projects.md`.
- **Commits**: 260c9fb: "TASK-001: Add per-tier project lists"
- **Files Modified**: .github/upgrades/tier-projects.md
- **Code Changes**: Added per-tier project mapping to support execution.

Success - Tier branches will be created when tier actions start.



## [2026-02-08 18:06] TASK-002: Tier 1 - Update Target Frameworks (Leaf nodes)

Status: Complete.

- **Verified**: Tier 1 projects updated to include `net10.0` where appropriate.
- **Commits**: ead1e03: "TASK-002: Tier 1 - Add net10.0 targets to leaf projects"
- **Files Modified**: docs/docs-dummy.csproj, src/tools/src/CopyAsLink/CopyAsLink.csproj, src/tools/src/NRT-Tests/NRT-Tests.csproj, src/foundation/nuget/src/Dummy-PDFsharp.NuGet-wpf/Dummy-PDFsharp.NuGet-wpf.csproj
- **Code Changes**: Added `net10.0` TFMs to leaf projects and ensured multi-targeting entries included `net10.0`.

Success - Tier 1 projects updated and committed.


## [2026-02-08 18:12] TASK-003: Tier 2 - TFMs and package upgrades

Status: Complete.

- **Verified**: Applied package updates for Tier 2 projects and committed changes.
- **Commits**: c03a30a: "TASK-003: Tier 2 - Upgrade package references to 10.0.2 for logging and crypto"
- **Files Modified**: src/foundation/src/PDFsharp/src/PdfSharp.Cryptography/PdfSharp.Cryptography.csproj, src/foundation/src/shared/src/PdfSharp.System/PdfSharp.System.csproj
- **Code Changes**: Set `PackageReference` versions for `Microsoft.Extensions.Logging.Abstractions` and `System.Security.Cryptography.Pkcs` to `10.0.2` in Tier 2 projects.

Success - Tier 2 package updates applied and committed.


325 changes: 325 additions & 0 deletions .github/upgrades/plan.md

Large diffs are not rendered by default.

118 changes: 118 additions & 0 deletions .github/upgrades/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# .github/upgrades/tasks.md

This file contains sequenced execution tasks for the `.NET 10` upgrade (branch: `upgrade-to-NET10`).

> IMPORTANT: This file is authoritative for execution. Do not edit it manually while an execution agent runs it.

---

## Task list (sequential)
**Progress**: 4/10 tasks complete (40%) ![40%](https://progress-bar.xyz/40)
### [?] TASK-000: Prerequisites verification *(Completed: 2026-02-08 18:01)*
- Actions:
1. Verify .NET 10 SDK is installed on the machine and global.json (if present) is compatible.
2. Verify Git working tree is clean on `upgrade-to-NET10` branch.
3. Ensure CI has capacity to run full-solution builds and tests.
- Validation:
- `dotnet --list-sdks` shows SDK for `net10.0` or upgrade validation tool confirms.
- Git status shows no uncommitted changes.

### [?] TASK-001: Generate per-tier project lists and create Tier branches *(Completed: 2026-02-08 18:03)*
- Actions:
- [?] (1) From `assessment.md`, produce definitive lists of projects for Tier 1..Tier 4.
- [?] (2) Create feature branches for each tier: `upgrade/net10/tier-1`, `upgrade/net10/tier-2`, `upgrade/net10/tier-3`, `upgrade/net10/tier-4` (branches off `upgrade-to-NET10`).
- Validation:
- Branches created and visible locally.
- Per-tier lists present in tasks or attached artifact.

### [?] TASK-002: Tier 1 ? Update Target Frameworks (Leaf nodes) *(Completed: 2026-02-08 18:07)*
- Scope: All Tier 1 projects (see `assessment.md` Tier 1 list)
- Actions:
1. On branch `upgrade/net10/tier-1` update `TargetFramework`/`TargetFrameworks` to include `net10.0` as proposed.
2. Restore and build each project targeting `net10.0`.
3. Run project-local unit tests or smoke checks.
- Validation:
- Each project restores and builds targeting `net10.0` with 0 errors.
- Local unit tests (if present) pass.
- Commit message: `TASK-002: Tier 1 - Add net10.0 targets`

### [?] TASK-003: Tier 2 ? Core libraries (TFMs + package updates) *(Completed: 2026-02-08 18:13)*
- Scope: Tier 2 projects (`PdfSharp.System`, `PdfSharp.Testing`, `PdfSharp.Fonts`, `PdfSharp.Cryptography`, `PdfSharp.Snippets`, etc.)
- Actions:
- [?] (1) On branch `upgrade/net10/tier-2` update TFMs to include `net10.0` where proposed.
- [?] (2) Apply package updates per plan (example):
- `Microsoft.Extensions.Logging.Abstractions` -> `10.0.2`
- `System.Security.Cryptography.Pkcs` -> `10.0.2`
- [?] (3) Restore, build tier projects and run unit tests.
- Validation:
- Tier build succeeds (0 errors).
- Unit tests pass.
- Commit message: `TASK-003: Tier 2 - TFMs and package upgrades`

### [?] TASK-004: Tier 2 verification and stabilization
- Actions:
- [?] (1) Run integration smoke tests that exercise Tier 2 APIs used by Tier 3.
2. Fix any compilation or test failures in Tier 2 code.
- Validation:
- Integration smoke tests pass.
- No unresolved compilation issues.
- If failures: mark task as failed and stop.

### [?] TASK-005: Tier 3 ? Feature libraries (TFMs + package updates)
- Scope: `PdfSharp.Charting`, `MigraDoc.Rendering`, `MigraDoc.DocumentObjectModel`, etc.
- Actions:
1. On branch `upgrade/net10/tier-3` update TFMs to include `net10.0` per plan.
2. Apply package updates affecting Tier 3 (e.g., `Microsoft.Extensions.Logging.Console` -> `10.0.2`, `System.Resources.Extensions` -> `10.0.2`).
3. Restore and build the entire tier; run feature tests and sample rendering smoke scenarios (generate PDFs).
- Validation:
- Full tier builds successfully.
- Sample rendering produces expected outputs without runtime exceptions.
- Commit message: `TASK-005: Tier 3 - TFMs and package upgrades`

### [ ] TASK-006: Tier 3 verification and stabilization
- Actions:
1. Run broader integration tests involving Tier 1-3 interactions.
2. Fix regressions.
- Validation:
- Integration tests pass.
- No critical runtime regressions on sample outputs.

### [ ] TASK-007: Tier 4 � Applications, samples, tools, and tests
- Scope: All application projects, sample projects, test projects
- Actions:
1. On branch `upgrade/net10/tier-4` update TFMs to include `net10.0` for apps and samples.
2. Replace deprecated test packages (example: replace `Xunit.Core` 2.9.3 with supported xUnit packages / upgrade test runner packages).
3. Update test SDKs if necessary.
4. Restore, build and run full test suites.
- Validation:
- Full-solution tests pass (unit + integration).
- Test runner outputs show 0 failed tests (or acceptable baseline if documented).
- Commit message: `TASK-007: Tier 4 - Apps, samples and test upgrades`

### [ ] TASK-008: Full-solution verification
- Actions:
1. Merge tiers into `upgrade-to-NET10` (or rebase as per branch strategy) after each tier is marked complete.
2. Run CI full-solution build and test pipeline.
3. Execute manual smoke tests (render sample PDFs, launch sample apps if feasible).
- Validation:
- CI build: 0 errors, tests passing
- Manual smoke test checklist passed
- If CI fails: stop execution and report failure.

### [ ] TASK-009: Finalize and prepare PRs to main
- Actions:
1. Ensure all PRs per tier are open with description and checklist.
2. Tag and document any known issues or follow-ups.
3. Create final merge or release branch as per repo policy.
- Validation:
- PRs contain pass/fail logs and validation checklist.
- Approval process begins.

---

## Notes
- Each task must be executed in order. Do not begin a later task until the previous task is complete and validated.
- All state changes (Starting/Completing/Failing tasks) must be reported using the `upgrade_track_tasks_execution_progress` tool before and after execution of the task actions.
- When ready for execution, confirm and I will: open `tasks.md` in the editor and wait for your confirmation to start execution. After your confirmation I will call `upgrade_track_tasks_execution_progress` with an empty `stateChanges` to retrieve the next task to run.


35 changes: 35 additions & 0 deletions .github/upgrades/tier-projects.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Per-tier project lists for .NET 10 upgrade

This file lists projects assigned to each tier. The authoritative full list remains in `.github/upgrades/assessment.md`.

## Tier 1 (Leaf nodes)
- docs\docs-dummy.csproj
- src\tools\src\CopyAsLink\CopyAsLink.csproj
- src\tools\src\NRT-Tests\NRT-Tests.csproj
- src\foundation\src\shared\src\PdfSharp.WPFonts\PdfSharp.WPFonts.csproj
- src\foundation\src\shared\src\PdfSharp.Shared\PdfSharp.Shared.csproj
- src\foundation\nuget\src\Dummy-PDFsharp.NuGet-wpf\Dummy-PDFsharp.NuGet-wpf.csproj

## Tier 2 (Core libraries)
- src\foundation\src\shared\src\PdfSharp.System\PdfSharp.System.csproj
- src\foundation\src\shared\src\PdfSharp.Testing\PdfSharp.Testing.csproj
- src\foundation\src\shared\src\PdfSharp.Fonts\PdfSharp.Fonts.csproj
- src\foundation\src\PDFsharp\src\PdfSharp.Cryptography\PdfSharp.Cryptography.csproj
- src\foundation\src\shared\src\PdfSharp.Snippets\PdfSharp.Snippets.csproj

## Tier 3 (Feature libraries)
- src\foundation\src\PDFsharp\src\PdfSharp.Charting\PdfSharp.Charting.csproj
- src\foundation\src\MigraDoc\src\MigraDoc.Rendering\MigraDoc.Rendering.csproj
- src\foundation\src\MigraDoc\src\MigraDoc.DocumentObjectModel\MigraDoc.DocumentObjectModel.csproj
- src\foundation\src\PDFsharp\src\PdfSharp.BarCodes\PdfSharp.BarCodes.csproj

## Tier 4 (Applications / Samples / Tools / Tests)
- src\foundation\src\PDFsharp\src\PdfSharp\PdfSharp.csproj
- src\samples\src\PDFsharp\src\HelloWorld\HelloWorld,PDFsharp.csproj
- src\samples\src\MigraDoc\src\HelloWorld\HelloWorld,MigraDoc.csproj
- All test projects under src\foundation\src\**\tests\ (migradoc & pdfsharp tests)
- Tools: src\tools\src\PdfFileViewer\PdfFileViewer.csproj, src\tools\src\PdfSharp.TestHelper\PdfSharp.TestHelper.csproj

## Notes
- These lists are derived from `assessment.md` and the plan's tier definitions. During execution, if any project has cross-tier dependencies that prevent strict ordering, the task execution will treat those projects as part of the higher-risk tier or merge them into a single PR.
- The exact per-project change list for each tier will be generated during the execution actions for that tier.
2 changes: 1 addition & 1 deletion docs/docs-dummy.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- This is a dummy project used to group the MD files as a tree in Visual Studio.
It does not contain any code. -->
<PropertyGroup>
<TargetFrameworks>net8.0</TargetFrameworks>
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
</PropertyGroup>

</Project>
8 changes: 4 additions & 4 deletions src/Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<Project>
<!--<Import Condition="Exists('Local.Packages.props')" Project="$([MSBuild]::GetPathOfFileAbove('Local.Packages.props', '$(MSBuildThisFileDirectory)'))" />-->
<PropertyGroup>
<Logging_Abstractions_PackageVersion>8.0.3</Logging_Abstractions_PackageVersion>
<Logging_PackageVersion>8.0.1</Logging_PackageVersion>
<Cryptography_PackageVersion>8.0.1</Cryptography_PackageVersion>
<Logging_Abstractions_PackageVersion>10.0.2</Logging_Abstractions_PackageVersion>
<Logging_PackageVersion>10.0.2</Logging_PackageVersion>
<Cryptography_PackageVersion>10.0.2</Cryptography_PackageVersion>
</PropertyGroup>

<ItemGroup>
Expand Down Expand Up @@ -35,7 +35,7 @@
<!--<PackageVersion Include="GitVersion.MsBuild" Version="6.1.0" />-->

<!-- Other packages -->
<PackageVersion Include="System.Resources.Extensions" Version="8.0.0" />
<PackageVersion Include="System.Resources.Extensions" Version="10.0.2" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net8.0-windows;net462</TargetFrameworks>
<TargetFrameworks>net8.0-windows;net10.0-windows;net462</TargetFrameworks>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
<!--<NoBuild>true</NoBuild>
<IncludeBuildOutput>false</IncludeBuildOutput>-->
Expand Down
2 changes: 1 addition & 1 deletion src/tools/src/CopyAsLink/CopyAsLink.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net8.0-windows</TargetFrameworks>
<TargetFrameworks>net8.0-windows;net10.0-windows</TargetFrameworks>
<RootNamespace>CopyAsLink</RootNamespace>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/tools/src/NRT-Tests/NRT-Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net8.0</TargetFrameworks>
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
<RootNamespace>NRT_Tests</RootNamespace>
</PropertyGroup>

Expand Down