From 02ef187c07597f1d373d9c5f65b07ca842cbc697 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:20:15 +0100 Subject: [PATCH 01/26] CI: AppVeyor: Don't build branches twice when a PR is open (1.1) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 4c35ece2b1..4e6e6516dc 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,8 @@ image: Visual Studio 2022 configuration: Release platform: x64 +# Branches with an open PR are built as PR (merge commit) only - Mergify waits for that status. +skip_branch_with_pr: true install: - git submodule update --init - ps: | From f0a3eb13b624c230dcce6ee2080ed9fc6f9bbf47 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:20:36 +0100 Subject: [PATCH 02/26] CI: AppVeyor: Skip the build when only docs / website files changed (1.2) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 4e6e6516dc..107d765966 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,6 +4,27 @@ platform: x64 # Branches with an open PR are built as PR (merge commit) only - Mergify waits for that status. skip_branch_with_pr: true install: + - ps: | + # Skip the build if only docs / website / repository files changed. Exit-AppveyorBuild ends the build + # successfully, so a green status is still reported (Mergify waits for it). Tag (release) builds are never + # skipped. PR builds check out the merge commit (HEAD~1 = target branch), so this is the full PR diff. + # If git diff fails, the build runs normally. + if ($env:APPVEYOR_REPO_TAG -ne "true") { + $ChangedFiles = git diff --name-only HEAD~1 HEAD 2>$null + + if ($LASTEXITCODE -eq 0 -and $ChangedFiles) { + $BuildRelevantFiles = $ChangedFiles | Where-Object { $_ -notmatch '^(Website/|\.github/|\.claude/|Images/|Chocolatey/|WinGet/|Tests/Environments/|LICENSE$)|\.md$' } + + if (-not $BuildRelevantFiles) { + Write-Host "Only docs / website / repository files changed - skipping build." + Exit-AppveyorBuild + return + } + + Write-Host "Build relevant changes:" + $BuildRelevantFiles | ForEach-Object { Write-Host " $_" } + } + } - git submodule update --init - ps: | Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -UseBasicParsing -OutFile "$env:temp\dotnet-install.ps1" From 4970560cafeaa6ecbbdee934255f8210ceee65bc Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:20:42 +0100 Subject: [PATCH 03/26] CI: AppVeyor: Build ARM64 only for tags (1.3) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 107d765966..11eb57de88 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -72,10 +72,14 @@ build_script: # Build the wixproj directly, not the .sln - `dotnet build` rejects -p:RuntimeIdentifier # at the solution level (NETSDK1134). $Architectures = @( - @{ RuntimeIdentifier = "win-x64"; Platform = "x64" }, - @{ RuntimeIdentifier = "win-arm64"; Platform = "ARM64" } + @{ RuntimeIdentifier = "win-x64"; Platform = "x64" } ) + # Only tags (release) are built for ARM64 - branches and PRs are built for x64 to keep them fast. + if ($env:APPVEYOR_REPO_TAG -eq "true") { + $Architectures += @{ RuntimeIdentifier = "win-arm64"; Platform = "ARM64" } + } + foreach ($Architecture in $Architectures) { Write-Host "Building $($Architecture.RuntimeIdentifier)..." From 44179406358e96d41f0a5d66b663cc4b0eb04ac7 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:21:01 +0100 Subject: [PATCH 04/26] CI: AppVeyor: Run the unit tests (1.4) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 11eb57de88..603ca07bc6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -140,6 +140,15 @@ after_build: # Create artifacts archive for signing Compress-Archive -Path "$ArtifactsPath\*" -DestinationPath "$($ArtifactsPath).zip" +test_script: + - ps: | + # global.json selects Microsoft.Testing.Platform, which needs --project instead of a positional path. + dotnet test --project "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Tests\NETworkManager.Tests.csproj" --configuration Release --no-restore + + if ($LASTEXITCODE -ne 0) { + throw "dotnet test failed with exit code $LASTEXITCODE" + } + artifacts: - path: 'Artifacts.zip' deploy: From aca3f38cde452f86b131560634c0ebce3942b814 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:21:57 +0100 Subject: [PATCH 05/26] CI: AppVeyor: Skip the SDK download if already installed, disable dotnet logo / telemetry (1.5) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 603ca07bc6..26da4a77e7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,10 @@ image: Visual Studio 2022 +# Also exported as CONFIGURATION / PLATFORM environment variables, which MSBuild reads as properties. configuration: Release platform: x64 +environment: + DOTNET_NOLOGO: true + DOTNET_CLI_TELEMETRY_OPTOUT: true # Branches with an open PR are built as PR (merge commit) only - Mergify waits for that status. skip_branch_with_pr: true install: @@ -27,11 +31,18 @@ install: } - git submodule update --init - ps: | - Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -UseBasicParsing -OutFile "$env:temp\dotnet-install.ps1" - # Read the required SDK version from global.json instead of hardcoding it, so Dependabot's # weekly SDK bumps there don't silently drift out of sync with what CI installs. $DotnetVersion = (Get-Content "$($env:APPVEYOR_BUILD_FOLDER)\Source\global.json" -Raw | ConvertFrom-Json).sdk.version + + # Skip the download if the build image already has this SDK. + if (dotnet --list-sdks | Where-Object { $_ -like "$DotnetVersion *" }) { + Write-Host ".NET SDK $DotnetVersion (from Source\global.json) is already installed" + return + } + + Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -UseBasicParsing -OutFile "$env:temp\dotnet-install.ps1" + Write-Host "Installing .NET SDK $DotnetVersion (from Source\global.json)" & $env:temp\dotnet-install.ps1 -Architecture x64 -Version $DotnetVersion -InstallDir "$env:ProgramFiles\dotnet" before_build: From 7f270345a4ae4a54eacae0a4debcaf4a372a7dff Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:23:18 +0100 Subject: [PATCH 06/26] CI: Website: Build PRs only on website changes, cancel outdated PR builds, write access only for the deployment (2.1) Co-Authored-By: Claude Opus 5.5 --- .github/workflows/deploy_website.yml | 57 +++++++++++++++++++--------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/.github/workflows/deploy_website.yml b/.github/workflows/deploy_website.yml index 997ba8d86e..0695649891 100644 --- a/.github/workflows/deploy_website.yml +++ b/.github/workflows/deploy_website.yml @@ -12,15 +12,20 @@ on: - '.github/workflows/deploy_website.yml' - 'Website/**' pull_request: + paths: + - '.github/workflows/deploy_website.yml' + - 'Website/**' jobs: - build-and-deploy-website: - name: "Build and Deploy Website" + build-website: + name: "Build Website" runs-on: ubuntu-latest permissions: - contents: write + contents: read concurrency: - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || 'deploy' }} + # Cancel outdated PR builds, but never a build that is deployed. + group: ${{ github.workflow }}-build-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} defaults: run: working-directory: Website @@ -31,18 +36,8 @@ jobs: uses: actions/setup-node@v4 with: node-version: 22 - - - name: Get yarn cache - id: yarn-cache - run: echo "YARN_CACHE_DIR=$(yarn cache dir)" >> "${GITHUB_OUTPUT}" - - - name: Cache dependencies - uses: actions/cache@v4 - with: - path: ${{ steps.yarn-cache.outputs.YARN_CACHE_DIR }} - key: ${{ runner.os }}-Website-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-Website- + cache: yarn + cache-dependency-path: Website/yarn.lock - name: Install dependencies run: yarn install --frozen-lockfile @@ -53,9 +48,35 @@ jobs: # Used by scripts/fetch-release-data.mjs to raise the GitHub API rate limit. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload website + uses: actions/upload-artifact@v7 + if: github.event_name == 'release' || (github.event_name != 'pull_request' && github.ref == 'refs/heads/main') + with: + name: website + path: Website/build + # Keep .well-known/ and .nojekyll (hidden files are skipped by default). + include-hidden-files: true + retention-days: 1 + + # Separate job, so only the deployment gets write access (not the build with its npm dependencies). + deploy-website: + name: "Deploy Website" + needs: build-website + if: github.event_name == 'release' || (github.event_name != 'pull_request' && github.ref == 'refs/heads/main') + runs-on: ubuntu-latest + permissions: + contents: write + concurrency: + group: ${{ github.workflow }}-deploy + steps: + - name: Download website + uses: actions/download-artifact@v8 + with: + name: website + path: build + - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v4 - if: github.event_name == 'release' || (github.event_name != 'pull_request' && github.ref == 'refs/heads/main') with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./Website/build + publish_dir: ./build From e3c149d05f1e539a17302b5c2e9d6de71ee4ea8d Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:23:38 +0100 Subject: [PATCH 07/26] CI: Dependabot: Update GitHub Actions, bump all actions to the current version (2.2) Co-Authored-By: Claude Opus 5.5 --- .github/dependabot.yml | 7 +++++++ .github/workflows/codeql.yml | 8 ++++---- .github/workflows/deploy_website.yml | 4 ++-- .github/workflows/label.yml | 2 +- .github/workflows/milestone.yml | 2 +- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6c10014235..b7341b894c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -31,3 +31,10 @@ updates: patterns: - "react" - "react-dom" +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: weekly + target-branch: main + commit-message: + prefix: "Dependency (dependabot/github-actions):" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 12335a41d9..6ca48f18bb 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,21 +25,21 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: submodules: 'true' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/deploy_website.yml b/.github/workflows/deploy_website.yml index 0695649891..ea5f712d8c 100644 --- a/.github/workflows/deploy_website.yml +++ b/.github/workflows/deploy_website.yml @@ -30,10 +30,10 @@ jobs: run: working-directory: Website steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v7 with: node-version: 22 cache: yarn diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index 7ff9c4fdf6..f3f5699aed 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write steps: - name: Assign label - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | await github.rest.issues.addLabels({ diff --git a/.github/workflows/milestone.yml b/.github/workflows/milestone.yml index cf6abe3078..8ac2f987aa 100644 --- a/.github/workflows/milestone.yml +++ b/.github/workflows/milestone.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write steps: - name: Assign milestone - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const milestones = await github.rest.issues.listMilestones({ From bb31f931e5d23482d26549e1cfb2381d48878069 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:23:55 +0100 Subject: [PATCH 08/26] CI: CodeQL: Scan GitHub Actions workflows, run JavaScript on Linux, remove template leftovers (2.4) Co-Authored-By: Claude Opus 5.5 --- .github/workflows/codeql.yml | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6ca48f18bb..d837c6b572 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -2,26 +2,33 @@ name: "CodeQL" on: workflow_dispatch: - #push: - # branches: [ "main", "stable-*" ] - #pull_request: - # branches: [ "main", "stable-*" ] schedule: - cron: '38 21 * * 6' jobs: analyze: - name: Analyze - runs-on: ${{ 'windows-latest' }} - timeout-minutes: ${{ 360 }} + name: Analyze (${{ matrix.language }}) + runs-on: ${{ matrix.runs-on }} + timeout-minutes: 120 permissions: - # required for all workflows + contents: read security-events: write strategy: fail-fast: false matrix: - language: [ 'csharp', 'javascript-typescript' ] + include: + # C# is built (WPF, Windows only) for the most precise results. + - language: csharp + build-mode: autobuild + runs-on: windows-latest + - language: javascript-typescript + build-mode: none + runs-on: ubuntu-latest + # GitHub Actions workflows (e.g. pull_request_target, permissions). + - language: actions + build-mode: none + runs-on: ubuntu-latest steps: - name: Checkout repository @@ -29,17 +36,13 @@ jobs: with: submodules: 'true' - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). - - name: Autobuild - uses: github/codeql-action/autobuild@v4 + build-mode: ${{ matrix.build-mode }} - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 with: - category: "/language:${{matrix.language}}" + category: "/language:${{ matrix.language }}" From 29511f1a435e7849d0a7dfda3ad73034d4375f41 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:23:59 +0100 Subject: [PATCH 09/26] CI: Remove the stale bot (2.5) Co-Authored-By: Claude Opus 5.5 --- .github/stale.yml | 19 ------------------- AGENTS.md | 6 ------ 2 files changed, 25 deletions(-) delete mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 492b4d29ea..0000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 30 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - ":bug: bug" - - ":rocket: feature-request" - - ":book: documentation" - - ":hammer_and_wrench: code-cleanup" -# Label to use when marking an issue as stale -staleLabel: ":watch: stale" -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/AGENTS.md b/AGENTS.md index 06314812d2..51cd7b2ad8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -217,11 +217,6 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - **Transifex Integration** (`.github/transifex.yml`): - Automated translation synchronization - Syncs RESX files between GitHub and Transifex - -- **Stale Bot** (`.github/stale.yml`): - - Marks issues inactive for 30 days as stale - - Closes stale issues after 7 days - - Excludes bugs, feature requests, documentation and code-cleanup issues ## Contributing Areas @@ -357,7 +352,6 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - **`.github/dependabot.yml`**: Dependabot configuration - **`.github/mergify.yml`**: Mergify auto-merge configuration - **`.github/transifex.yml`**: Transifex translation sync configuration -- **`.github/stale.yml`**: Stale issue bot configuration - **`.gitmodules`**: Git submodule configuration (Dragablz) - **`Website/docusaurus.config.js`**: Documentation site configuration - **`Website/docs/changelog/next-release.md`**: Changelog of the upcoming release From d39059aca1d63605ddc25af834bca3fdb3138c8e Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:24:24 +0100 Subject: [PATCH 10/26] CI: Docs: Update the CI/CD section and the changelog (2.6) Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 18 +++++++++++++----- Website/docs/changelog/next-release.md | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 51cd7b2ad8..a3ebb0af86 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -183,9 +183,15 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana **Primary Build System**: AppVeyor (configuration in `appveyor.yml`) - Builds on the Visual Studio 2022 image -- Installs the .NET SDK version from `Source/global.json` +- Installs the .NET SDK version from `Source/global.json` (skipped if the image already has it) - Restores NuGet packages -- Builds the Release configuration for x64 and ARM64 (setup, portable and archive per architecture) +- Builds the Release configuration: x64 for branches and PRs, x64 and ARM64 for tags (setup, portable and archive per + architecture, only for tags) +- Runs the unit tests (`Source/NETworkManager.Tests`, `dotnet test --project`) +- Branches with an open PR are only built as PR (`skip_branch_with_pr`) +- Ends successfully without building if only docs / website / repository files changed (`Website/`, `.github/`, + `.claude/`, `Images/`, `Chocolatey/`, `WinGet/`, `Tests/Environments/`, `*.md`, `LICENSE`), so Mergify still gets a + green status. Tags are always built - Version format: `yyyy.M.d.0` (date-based) - Artifacts are signed via [SignPath.io](https://signpath.io/) - Released to GitHub Releases @@ -193,13 +199,14 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana **GitHub Actions Workflows**: - **CodeQL Analysis** (`.github/workflows/codeql.yml`): - Automated security scanning - - Analyzes C# and JavaScript/TypeScript code + - Analyzes C# (autobuild on Windows), JavaScript/TypeScript and GitHub Actions workflows (Linux) - Runs weekly and on-demand via workflow_dispatch - **Website Deployment** (`.github/workflows/deploy_website.yml`): - Builds and deploys Docusaurus website to GitHub Pages - - Triggers on changes to `Website/` directory + - Triggers on changes to `Website/` directory (push to `main` and PRs) and on published releases - Uses Node.js 22 with yarn for build + - Build and deploy are separate jobs, only the deploy job (`main` / release) has write access - **Label / Milestone** (`.github/workflows/label.yml`, `.github/workflows/milestone.yml`): - Label PRs from Dependabot, Transifex and ImgBot as dependencies @@ -207,7 +214,7 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana **Automation & Bots**: - **Dependabot** (`.github/dependabot.yml`): - - Weekly updates for NuGet packages, .NET SDK, and npm packages + - Weekly updates for NuGet packages, .NET SDK, npm packages and GitHub Actions - Automatic PR creation for dependency updates - **Mergify** (`.github/mergify.yml`): @@ -302,6 +309,7 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana ## Testing Strategy - **Manual Testing**: Primary testing approach (test environments in `Tests/Environments/`) +- **Unit Tests**: xUnit tests in `Source/NETworkManager.Tests`, run by AppVeyor CI - **Build Verification**: AppVeyor CI ensures builds succeed - **Windows only**: The application only builds and runs on Windows (WPF, Windows SDK, CsWinRT). Changes made on other platforms can't be compiled and must be verified on Windows diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 045f3d8781..bbe9a46420 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -383,5 +383,6 @@ Release date: **xx.xx.2026** - Input histories (e.g. hosts, domains, ports) are updated in place instead of being cleared and refilled, which avoids clearing the text of the input field and unnecessary updates. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Added a unit test project (xUnit) with tests for the run command parser and the history lists. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Reworked the GitHub issue templates as forms (bug report, feature request, question) that ask for the relevant information (e.g. affected feature, version, installation, Windows version, log), with links to the documentation, discussions, translations and security advisories. Simplified the pull request template and removed the Copilot summary section. [#3660](https://github.com/BornToBeRoot/NETworkManager/pull/3660) +- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it. Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Removed the stale bot. - Language files updated via [#transifex](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Ftransifex-integration) - Dependencies updated via [#dependabot](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Fdependabot) From 5ec3939f22af5eec8f6a322cb6921058762e3ce3 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:35:19 +0100 Subject: [PATCH 11/26] CI: Mergify: One auto-merge rule for LGTM label and bot PRs, only for main (2.7) Co-Authored-By: Claude Opus 5.5 --- .github/mergify.yml | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index 00b70a10ec..dc064e25db 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -1,28 +1,12 @@ -pull_request_rules: - - name: automatic merge for pull request based on label and ci success - conditions: - - label~=LGTM$ - - check-success=continuous-integration/appveyor/pr - actions: - merge: - method: squash - - name: automatic merge for Dependabot pull requests based on ci success - conditions: - - author=dependabot[bot] - - check-success=continuous-integration/appveyor/pr - actions: - merge: - method: squash - - name: automatic merge for Transifex pull requests based on ci success - conditions: - - author=transifex-integration[bot] - - check-success=continuous-integration/appveyor/pr - actions: - merge: - method: squash - - name: automatic merge for ImgBot pull requests based on ci success - conditions: - - author=imgbot[bot] +pull_request_rules: + - name: automatic merge for LGTM label and bot pull requests based on ci success + conditions: + - base=main + - or: + - label~=LGTM$ + - author=dependabot[bot] + - author=transifex-integration[bot] + - author=imgbot[bot] - check-success=continuous-integration/appveyor/pr actions: merge: From 9555c6b9c37dbd4fd673a7474e17133efac0cccc Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:35:31 +0100 Subject: [PATCH 12/26] CI: Mergify: Require the website build for website changes (2.8) Co-Authored-By: Claude Opus 5.5 --- .github/mergify.yml | 4 ++++ AGENTS.md | 1 + Website/docs/changelog/next-release.md | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index dc064e25db..16a07cf471 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -8,6 +8,10 @@ pull_request_rules: - author=transifex-integration[bot] - author=imgbot[bot] - check-success=continuous-integration/appveyor/pr + # Website changes (e.g. Dependabot npm updates) also need a successful website build + - or: + - -files~=^(Website/|\.github/workflows/deploy_website\.yml$) + - check-success=Build Website actions: merge: method: squash diff --git a/AGENTS.md b/AGENTS.md index a3ebb0af86..30cf849dc5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -220,6 +220,7 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - **Mergify** (`.github/mergify.yml`): - Auto-merges PRs with `LGTM` label after AppVeyor CI passes - Auto-merges Dependabot, Transifex, and ImgBot PRs after CI success + - PRs that change `Website/` (or the website workflow) also need a successful `Build Website` check - **Transifex Integration** (`.github/transifex.yml`): - Automated translation synchronization diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index bbe9a46420..876326a38e 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -383,6 +383,6 @@ Release date: **xx.xx.2026** - Input histories (e.g. hosts, domains, ports) are updated in place instead of being cleared and refilled, which avoids clearing the text of the input field and unnecessary updates. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Added a unit test project (xUnit) with tests for the run command parser and the history lists. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Reworked the GitHub issue templates as forms (bug report, feature request, question) that ask for the relevant information (e.g. affected feature, version, installation, Windows version, log), with links to the documentation, discussions, translations and security advisories. Simplified the pull request template and removed the Copilot summary section. [#3660](https://github.com/BornToBeRoot/NETworkManager/pull/3660) -- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it. Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Removed the stale bot. +- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it. Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Removed the stale bot. - Language files updated via [#transifex](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Ftransifex-integration) - Dependencies updated via [#dependabot](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Fdependabot) From 41aca305f18977f5d57c5b4d4b9b9ed8f60a07fa Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:35:42 +0100 Subject: [PATCH 13/26] CI: Mergify: Don't auto-merge Dependabot major updates (2.9) Co-Authored-By: Claude Opus 5.5 --- .github/mergify.yml | 2 ++ AGENTS.md | 3 ++- Website/docs/changelog/next-release.md | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index 16a07cf471..3d9ac925f0 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -7,6 +7,8 @@ pull_request_rules: - author=dependabot[bot] - author=transifex-integration[bot] - author=imgbot[bot] + # Major updates can break at runtime even if the build succeeds - they are merged manually after testing + - dependabot-update-type!=version-update:semver-major - check-success=continuous-integration/appveyor/pr # Website changes (e.g. Dependabot npm updates) also need a successful website build - or: diff --git a/AGENTS.md b/AGENTS.md index 30cf849dc5..7d865a3b7d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -219,7 +219,8 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - **Mergify** (`.github/mergify.yml`): - Auto-merges PRs with `LGTM` label after AppVeyor CI passes - - Auto-merges Dependabot, Transifex, and ImgBot PRs after CI success + - Auto-merges Dependabot (except major updates, they are merged manually after testing), Transifex, and ImgBot PRs + after CI success - PRs that change `Website/` (or the website workflow) also need a successful `Build Website` check - **Transifex Integration** (`.github/transifex.yml`): diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 876326a38e..8a0a261863 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -383,6 +383,6 @@ Release date: **xx.xx.2026** - Input histories (e.g. hosts, domains, ports) are updated in place instead of being cleared and refilled, which avoids clearing the text of the input field and unnecessary updates. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Added a unit test project (xUnit) with tests for the run command parser and the history lists. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Reworked the GitHub issue templates as forms (bug report, feature request, question) that ask for the relevant information (e.g. affected feature, version, installation, Windows version, log), with links to the documentation, discussions, translations and security advisories. Simplified the pull request template and removed the Copilot summary section. [#3660](https://github.com/BornToBeRoot/NETworkManager/pull/3660) -- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it. Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Removed the stale bot. +- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it. Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Dependabot major updates are no longer merged automatically. Removed the stale bot. - Language files updated via [#transifex](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Ftransifex-integration) - Dependencies updated via [#dependabot](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Fdependabot) From 6199991d8ce620e9554743c7dc1ff6dc06e88df3 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:53:11 +0100 Subject: [PATCH 14/26] CI: AppVeyor: Shallow clone (1.6) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 26da4a77e7..967555e0d4 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,6 +5,9 @@ platform: x64 environment: DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true +# Shallow clone - the history isn't needed (the version is date based). Must stay > 1, the docs-only check below +# compares HEAD with HEAD~1. +clone_depth: 50 # Branches with an open PR are built as PR (merge commit) only - Mergify waits for that status. skip_branch_with_pr: true install: From edd65ce6ca43747a08615267edc5caca368fa093 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:53:20 +0100 Subject: [PATCH 15/26] CI: AppVeyor: Build PRs without the setup (1.7) Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 3 ++- appveyor.yml | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 7d865a3b7d..741839818e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -186,7 +186,8 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - Installs the .NET SDK version from `Source/global.json` (skipped if the image already has it) - Restores NuGet packages - Builds the Release configuration: x64 for branches and PRs, x64 and ARM64 for tags (setup, portable and archive per - architecture, only for tags) + architecture, only for tags). PRs only build the application (`NETworkManager.csproj`), branches and tags the setup + (`NETworkManager.Setup.wixproj`) - Runs the unit tests (`Source/NETworkManager.Tests`, `dotnet test --project`) - Branches with an open PR are only built as PR (`skip_branch_with_pr`) - Ends successfully without building if only docs / website / repository files changed (`Website/`, `.github/`, diff --git a/appveyor.yml b/appveyor.yml index 967555e0d4..51967c70c9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -84,7 +84,13 @@ before_build: build_script: - ps: | # Build the wixproj directly, not the .sln - `dotnet build` rejects -p:RuntimeIdentifier - # at the solution level (NETSDK1134). + # at the solution level (NETSDK1134). PRs only build the application (the setup is built on branches and tags). + $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Setup\NETworkManager.Setup.wixproj" + + if ($env:APPVEYOR_PULL_REQUEST_NUMBER) { + $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager\NETworkManager.csproj" + } + $Architectures = @( @{ RuntimeIdentifier = "win-x64"; Platform = "x64" } ) @@ -97,7 +103,7 @@ build_script: foreach ($Architecture in $Architectures) { Write-Host "Building $($Architecture.RuntimeIdentifier)..." - dotnet build "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Setup\NETworkManager.Setup.wixproj" ` + dotnet build "$Project" ` --configuration Release --no-restore ` -p:Platform=$($Architecture.Platform) -p:RuntimeIdentifier=$($Architecture.RuntimeIdentifier) -p:PlatformTarget=$($Architecture.Platform) From af3471e5df9946695ea2517515e17a4194bd197d Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:53:28 +0100 Subject: [PATCH 16/26] CI: AppVeyor: Don't generate the ASP.NET Core HTTPS development certificate (1.8) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/appveyor.yml b/appveyor.yml index 51967c70c9..9672d300c5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,6 +5,7 @@ platform: x64 environment: DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true + DOTNET_GENERATE_ASPNET_CERTIFICATE: false # Shallow clone - the history isn't needed (the version is date based). Must stay > 1, the docs-only check below # compares HEAD with HEAD~1. clone_depth: 50 From 6d92e70275b1f04cbcab9d4cfe792d4deb93227d Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:56:04 +0100 Subject: [PATCH 17/26] Chore: Reference patched System.Security.Cryptography.Pkcs / Xml to fix NuGet audit warnings Microsoft.PowerShell.SDK 7.6.7 pulls in 10.0.10 (GHSA-r955-8q5j-3h83, GHSA-c399-9853-6jmj, GHSA-7hqp-7c5m-4vq6, GHSA-846f-f764-76mx, GHSA-2fmv-rv2c-59x7). The application already uses the copies of the Windows Desktop runtime (not part of the release), so nothing changes at runtime. Co-Authored-By: Claude Opus 5.5 --- Source/NETworkManager.Models/NETworkManager.Models.csproj | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/NETworkManager.Models/NETworkManager.Models.csproj b/Source/NETworkManager.Models/NETworkManager.Models.csproj index 7f177215fb..fb62d38e27 100644 --- a/Source/NETworkManager.Models/NETworkManager.Models.csproj +++ b/Source/NETworkManager.Models/NETworkManager.Models.csproj @@ -42,6 +42,11 @@ + + + From a54feec55a4ddcd5655b8a418f35669798af2a5e Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:57:23 +0100 Subject: [PATCH 18/26] CI: Website: Docusaurus Faster, update all Docusaurus packages together (2.10) Co-Authored-By: Claude Opus 5.5 --- .github/dependabot.yml | 4 + AGENTS.md | 2 + Website/docs/changelog/next-release.md | 2 +- Website/docusaurus.config.js | 8 + Website/package.json | 1 + Website/yarn.lock | 479 ++++++++++++++++++++++++- 6 files changed, 494 insertions(+), 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b7341b894c..e18e1ce737 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -31,6 +31,10 @@ updates: patterns: - "react" - "react-dom" + # All @docusaurus/* packages must have the same version (otherwise the website build fails) + docusaurus: + patterns: + - "@docusaurus/*" - package-ecosystem: "github-actions" directory: "/" schedule: diff --git a/AGENTS.md b/AGENTS.md index 741839818e..7487b7a942 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -207,6 +207,8 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - Builds and deploys Docusaurus website to GitHub Pages - Triggers on changes to `Website/` directory (push to `main` and PRs) and on published releases - Uses Node.js 22 with yarn for build + - Uses Docusaurus Faster (`@docusaurus/faster`, Rspack / SWC) for faster builds; all `@docusaurus/*` packages must have + the same version (Dependabot updates them as a group) - Build and deploy are separate jobs, only the deploy job (`main` / release) has write access - **Label / Milestone** (`.github/workflows/label.yml`, `.github/workflows/milestone.yml`): diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 8a0a261863..72b427b7a4 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -383,6 +383,6 @@ Release date: **xx.xx.2026** - Input histories (e.g. hosts, domains, ports) are updated in place instead of being cleared and refilled, which avoids clearing the text of the input field and unnecessary updates. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Added a unit test project (xUnit) with tests for the run command parser and the history lists. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Reworked the GitHub issue templates as forms (bug report, feature request, question) that ask for the relevant information (e.g. affected feature, version, installation, Windows version, log), with links to the documentation, discussions, translations and security advisories. Simplified the pull request template and removed the Copilot summary section. [#3660](https://github.com/BornToBeRoot/NETworkManager/pull/3660) -- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it. Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Dependabot major updates are no longer merged automatically. Removed the stale bot. +- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it and builds about 3x faster (Docusaurus Faster). Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Dependabot major updates are no longer merged automatically. Removed the stale bot. - Language files updated via [#transifex](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Ftransifex-integration) - Dependencies updated via [#dependabot](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Fdependabot) diff --git a/Website/docusaurus.config.js b/Website/docusaurus.config.js index d350703564..c947830690 100644 --- a/Website/docusaurus.config.js +++ b/Website/docusaurus.config.js @@ -8,6 +8,14 @@ import { themes as prismThemes } from "prism-react-renderer"; /** @type {import('@docusaurus/types').Config} */ const config = { + future: { + // Required by the SSG worker threads of Docusaurus Faster. + v4: { + removeLegacyPostBuildHeadAttribute: true, + }, + // Rspack, SWC and Lightning CSS instead of Webpack, Babel and Terser - builds about 3x faster. + faster: true, + }, title: "NETworkManager", tagline: "A powerful open-source tool for managing networks and troubleshooting network problems!", diff --git a/Website/package.json b/Website/package.json index f361ca429e..77df48080d 100644 --- a/Website/package.json +++ b/Website/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@docusaurus/core": "3.10.2", + "@docusaurus/faster": "3.10.2", "@docusaurus/plugin-client-redirects": "^3.10.2", "@docusaurus/preset-classic": "3.10.2", "@mdx-js/react": "^3.1.1", diff --git a/Website/yarn.lock b/Website/yarn.lock index adcc88a266..0132974b50 100644 --- a/Website/yarn.lock +++ b/Website/yarn.lock @@ -1730,6 +1730,22 @@ postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" +"@docusaurus/faster@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/faster/-/faster-3.10.2.tgz#6cacd14085445d5826990f7525c5df1cf371e04a" + integrity sha512-p/5E5/RyHv+QWusJMPN5i3OMJTqTgkhuwzVbB1AReDWTUHXQCmf5mlTFzGiDrWeQWIDOKsuOPn1jJh0s9LUOHA== + dependencies: + "@docusaurus/types" "3.10.2" + "@rspack/core" "^1.7.10" + "@swc/core" "^1.15.40" + "@swc/html" "^1.15.40" + browserslist "^4.24.2" + lightningcss "^1.27.0" + semver "^7.5.4" + swc-loader "^0.2.6" + tslib "^2.6.0" + webpack "^5.95.0" + "@docusaurus/logger@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.2.tgz#280bed53d0eb9cdc56e896a155036207910e89c9" @@ -2108,6 +2124,28 @@ utility-types "^3.10.0" webpack "^5.88.1" +"@emnapi/core@^1.5.0": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.3.tgz#5e95348a42cd1e06f0b9aa380cd74091daa4d520" + integrity sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg== + dependencies: + "@emnapi/wasi-threads" "1.2.3" + tslib "^2.4.0" + +"@emnapi/runtime@^1.5.0": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.3.tgz#84257ae3b0531eb2aec1ffa23d70700da007ba95" + integrity sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz#c9bf72fd4be5b928aee894820e8d814ed73916e9" + integrity sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g== + dependencies: + tslib "^2.4.0" + "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -2294,6 +2332,58 @@ dependencies: "@types/mdx" "^2.0.0" +"@module-federation/error-codes@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.22.0.tgz#31ccc990dc240d73912ba7bd001f7e35ac751992" + integrity sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug== + +"@module-federation/runtime-core@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz#7321ec792bb7d1d22bee6162ec43564b769d2a3c" + integrity sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/runtime-tools@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz#36f2a7cb267af208a9d1a237fe9a71b4bf31431e" + integrity sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/webpack-bundler-runtime" "0.22.0" + +"@module-federation/runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.22.0.tgz#f789c9ef40d846d110711c8221ecc0ad938d43d8" + integrity sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/runtime-core" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/sdk@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.22.0.tgz#6ad4c1de85a900c3c80ff26cb87cce253e3a2770" + integrity sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g== + +"@module-federation/webpack-bundler-runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz#dcbe8f972d722fe278e6a7c21988d4bee53d401d" + integrity sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@napi-rs/wasm-runtime@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c" + integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw== + dependencies: + "@emnapi/core" "^1.5.0" + "@emnapi/runtime" "^1.5.0" + "@tybys/wasm-util" "^0.10.1" + "@noble/hashes@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" @@ -2476,6 +2566,88 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1" integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww== +"@rspack/binding-darwin-arm64@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.12.tgz#e6e10e7ff15c2254d6cbe9125a747ada880a34f3" + integrity sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A== + +"@rspack/binding-darwin-x64@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.12.tgz#fe90b64228eb49612e4932049325f52a4ddcfd28" + integrity sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg== + +"@rspack/binding-linux-arm64-gnu@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.12.tgz#61d63a0fcb9b4eb25b9d68e1f897c8e2619a8a5a" + integrity sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw== + +"@rspack/binding-linux-arm64-musl@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.12.tgz#fd5157890b1250937bb98332dcbb35ff2d7aafd3" + integrity sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA== + +"@rspack/binding-linux-x64-gnu@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.12.tgz#a8c963c47a043069b154c704d87bf6a658772ac7" + integrity sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew== + +"@rspack/binding-linux-x64-musl@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.12.tgz#1e95af2b152a0833272c26c3473cfa60832ef8b0" + integrity sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw== + +"@rspack/binding-wasm32-wasi@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.12.tgz#37a10f322e82cbd51114e8a3182f46c6af101a20" + integrity sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg== + dependencies: + "@napi-rs/wasm-runtime" "1.0.7" + +"@rspack/binding-win32-arm64-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.12.tgz#77f648ee1cb717c50fdd02126a528b4960654116" + integrity sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g== + +"@rspack/binding-win32-ia32-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.12.tgz#9f7cbb26a9c8d9a1cc15d2059de21172b1623c41" + integrity sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ== + +"@rspack/binding-win32-x64-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.12.tgz#b4c6dceaa63def4aa205d25246c1a5b05d7f36b0" + integrity sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA== + +"@rspack/binding@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.12.tgz#8c0b19795f980b0e513855245e689719352c08a4" + integrity sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA== + optionalDependencies: + "@rspack/binding-darwin-arm64" "1.7.12" + "@rspack/binding-darwin-x64" "1.7.12" + "@rspack/binding-linux-arm64-gnu" "1.7.12" + "@rspack/binding-linux-arm64-musl" "1.7.12" + "@rspack/binding-linux-x64-gnu" "1.7.12" + "@rspack/binding-linux-x64-musl" "1.7.12" + "@rspack/binding-wasm32-wasi" "1.7.12" + "@rspack/binding-win32-arm64-msvc" "1.7.12" + "@rspack/binding-win32-ia32-msvc" "1.7.12" + "@rspack/binding-win32-x64-msvc" "1.7.12" + +"@rspack/core@^1.7.10": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.12.tgz#e2a36bd16a10e10aee5905827064ac4b8a63b321" + integrity sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ== + dependencies: + "@module-federation/runtime-tools" "0.22.0" + "@rspack/binding" "1.7.12" + "@rspack/lite-tapable" "1.1.0" + +"@rspack/lite-tapable@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425" + integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw== + "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -2623,6 +2795,179 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" +"@swc/core-darwin-arm64@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.20.tgz#bd0dc81a4a8504f1644d44f62d403def010a83d3" + integrity sha512-i7NFSDnuE6tdBvBgmoVKKmburgcwZt/FZK2IusJaVGrjFrMUC1hrgE3RI+Kt9RhYM7vHvQj0W9j53zSxKEMbWQ== + +"@swc/core-darwin-x64@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.16.20.tgz#731515fbfd3ba26cd0cb3afc1e6835f32b3cd565" + integrity sha512-ho/LkT1Q3beSBeZGNZnm1mVbh5bKZHC0UGHtK3MswqOylbHtZoMXJBL40N8JpDj5SBxwECmdNEyXnU9HJ4F6RA== + +"@swc/core-linux-arm-gnueabihf@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.20.tgz#12f258edf59a0914c7fa37da017215a7237b42e5" + integrity sha512-xm3/s3zp9WyNgB1Sl78tpH76MHgobI3TSenTY15bkSHyrdQa9W2MUSESHRPd7CHGFLfpWl/0jwwNp5+hwG0e9A== + +"@swc/core-linux-arm64-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.20.tgz#862188270d5d30689bfaf94becf24800ca957501" + integrity sha512-e6Um0U+VcTQyurOXhbratRQlrPITSRwugG00fhICbi2MGTi1vRiE4TMqGCjWpR1zPmZKXDGMw+yNFvh7AAgT2Q== + +"@swc/core-linux-arm64-musl@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.20.tgz#da4592ca8f6a6f899e86f3683d39d17df5913917" + integrity sha512-ekCO2obfK9NFwXGHfAQjjuU5mLDDC7qMaUJH/V/4iyzD0BqNhilr6McZrXLytOQ/xKtTNxLQ71wYrD3M2LW8Kg== + +"@swc/core-linux-ppc64-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.20.tgz#5b5f523a97d94a4cfec31f2cbf088914e8f10d5e" + integrity sha512-6/x2K3l4GNUWyaSmkywnth6ipZISzhVzOLsI66bj12/hSQYaKAyg9MKTwnuFf2B/iYA6GrjDghk36RYghRameQ== + +"@swc/core-linux-s390x-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.20.tgz#b9ca2c9a98092eb6fe648c13fe113a9d6baeda8d" + integrity sha512-1GTd8sqS/NpcF+Y3YDSE0bT31V61+hD7ZZWEsVyiyxk/HQt2zpk4zlJJHOASBLc+/CyUuBZ949n6QMszbIXkmQ== + +"@swc/core-linux-x64-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.20.tgz#c6f96b06b186f8d2ae38df8f9ee4dca04c65ca6d" + integrity sha512-XtMeYAgQa5UZhAX84TXn0sXPmhf1xHwcv0cl5hHiBXxTVbplY7WiTwIQU9uOtVm3VUqL/quyCm78/umUNZ7FmA== + +"@swc/core-linux-x64-musl@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.20.tgz#d0e0ecbefe2497b65b4d1e014afafa9c6b2dec14" + integrity sha512-qeF3UILa+MA4zJ29CdQ8KE7YbGFPMQBxWo3Lh0Ed0ETFEJ8pCKISWo7wQG4/SmfM9HX4KT1Odoj6ixyBn6Ji2Q== + +"@swc/core-win32-arm64-msvc@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.20.tgz#fff744c0ce7d7ceaf91294e9e5e2878de34c62d7" + integrity sha512-ciMtHXAmE+jnrWWO14rErr6tfK34QZm8jZRSdRLPodqJlzrYDw7TqN60HC8Yim5Ua9a1r/poyfkpNft6GRXvxA== + +"@swc/core-win32-ia32-msvc@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.20.tgz#71ac1c198d81365da96b29ebfcb114a0a014be66" + integrity sha512-MTbkgGooWebmjmATx1+QRECVZ+q4ICKNXCutwOrFVD5b5hdxla/yV4e6cRFrfNMowejaNpmMQg31ENWt0Yfzpg== + +"@swc/core-win32-x64-msvc@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.20.tgz#e539f998839be3b6fe7af4295c28cd0eba640c63" + integrity sha512-Lf5oMaSdJBImtGhDecasxcIa7Z5LeJ4aGmBOY7TScroO+A/MxxB9PslIpgV0rtG/FcxtipN7hveBg9ZTeboaaw== + +"@swc/core@^1.15.40": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.16.20.tgz#015a12e0f465a651606902596441a05aecdf9b53" + integrity sha512-zcdfS7k28OJIMuLhqRRyGja9PxrC2GXhFXkbQ1X15y6uZEMsTrqyej55V1DiJtlXaDOmwSLn5222YPT9ZoFxPA== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.28" + optionalDependencies: + "@swc/core-darwin-arm64" "1.16.20" + "@swc/core-darwin-x64" "1.16.20" + "@swc/core-linux-arm-gnueabihf" "1.16.20" + "@swc/core-linux-arm64-gnu" "1.16.20" + "@swc/core-linux-arm64-musl" "1.16.20" + "@swc/core-linux-ppc64-gnu" "1.16.20" + "@swc/core-linux-s390x-gnu" "1.16.20" + "@swc/core-linux-x64-gnu" "1.16.20" + "@swc/core-linux-x64-musl" "1.16.20" + "@swc/core-win32-arm64-msvc" "1.16.20" + "@swc/core-win32-ia32-msvc" "1.16.20" + "@swc/core-win32-x64-msvc" "1.16.20" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/html-darwin-arm64@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.16.20.tgz#69614fefac662af4f09831f7ccadd7f234be7754" + integrity sha512-oK3/ZrzrPTyR76WarAj4bd5MJGwEnQY1iwR2iDK8UfO2BGdhXTbACdX1xQA6Tvp3KdSgdpSqjnJg0RmuVZsqyg== + +"@swc/html-darwin-x64@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.16.20.tgz#cbfdadbc143fff1b4fa198f6a99bab70432822e1" + integrity sha512-X0UyEyl9BiL+beVE3UNRubTbEzEuniizjZGqq4vBnE5/HR17L3n/A6X7F5nKmpwwHoLWeQf5lDkuMRg4m5YHqg== + +"@swc/html-linux-arm-gnueabihf@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.16.20.tgz#760e888467a994a41c4e91be0b58aca42a7cad42" + integrity sha512-eVL7/nElpBLJmOIte/VsWbDOp0dtt4ITxSasa3uVedp4b8osXlo9TSwShMaG/Met6nEUNAzKedrFE3IBUOrPig== + +"@swc/html-linux-arm64-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.16.20.tgz#3f1341f25e049362207218a0fade52a2d59995af" + integrity sha512-VfGLshYQo46Qna40HG7RTdpn1EkZCmfLDj+FQ4wbWYjqrqlCNmKbUpSDnfrxIY596/EcMKIUR7iC+IFckIa1XQ== + +"@swc/html-linux-arm64-musl@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.16.20.tgz#203d1645ea13e84c5ff0b71348d95de433cb0fc6" + integrity sha512-FCNlKhcQTOkuvXrL1ksjsFQZHfYyWBSU+p4UNLvILG5xA/5nF8SJOhhCeNxkx8fdU5373Ysoovouwr7Df26pbw== + +"@swc/html-linux-ppc64-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.16.20.tgz#a7c44a257074adcaa5602fd5c377343143bdf77f" + integrity sha512-pMlmJhBC78VTbO5H9fYI9ZiL7NqQXSOQ3vpw5UtmrIFHdRbdOYSjrjNbJRiS2DekiXJI0rXt8K3Xi9AcH0n3sw== + +"@swc/html-linux-s390x-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.16.20.tgz#ffc93d2b670b8e77b701a62e6b347a1d10df0fe3" + integrity sha512-b18nBk4plmCvjYdythqbEfgrmmo2L9Slvw3wF381QTiLvf99rsZ3xaW9qe9SJW0xPz03qgyQrDJYhmxCq0kUYA== + +"@swc/html-linux-x64-gnu@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.16.20.tgz#b2a3e624c561e0771b5b06a69b2e8da2be320bfe" + integrity sha512-VlfJAohGbk/aRwFojgQ/yoNlCTY1FJTYGLjYlJiPaKDmGsMRwNHybfkruXNKZJGQ27WEJu+VQMlRaokcoekbsQ== + +"@swc/html-linux-x64-musl@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.16.20.tgz#5f38b3f12daab93e054ba590913e3f9bce43bc9d" + integrity sha512-eJvIqb0vFit//rBPkzERfEkopD00Zc/5FZ/PXJYUDTG/PqDfLibfn19hYfkhCmObM0iTK/9SXmB6PGYMWzAX2Q== + +"@swc/html-win32-arm64-msvc@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.16.20.tgz#914cc682fafc91d3c4c63d1426c65e6d757f844d" + integrity sha512-zSiIIUJbGvOFcLbBq7R30X1/53knnfGEKT/LEibaDTDmESXoSlKibeC/z7b5uz4faxU7j7qDvf0SAyZ/HHbVxQ== + +"@swc/html-win32-ia32-msvc@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.16.20.tgz#a3539a181bda92b46347948be9d5b445c4b445be" + integrity sha512-1/NH4EKzetpZ4fmDcrDabCrzBNA5FIFECL7uaymTlM8Mr796mhZlvcG87ujJsc83NWVrlI8xoGijwyPdQ6Nd8Q== + +"@swc/html-win32-x64-msvc@1.16.20": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.16.20.tgz#5115fe041febdf539321abfe60538eb8979c5a20" + integrity sha512-PrS6HeZcZI982YxuHDqfGDsEBp3/SmHhniFp7CFX0GNw6c2/g77azdmc0Y00tLqP7zEy1jtXnW1fl/6HhtrEjA== + +"@swc/html@^1.15.40": + version "1.16.20" + resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.16.20.tgz#f0b590cb54822605f89a5d9fa4a82031d4a524bd" + integrity sha512-mETtaIAFwf3ev+fNjjLmGygW3k3V3PADGZFee0Bs8attywmgoTa60J2KSHNNm7Z4mmQ+D4Q+s2eSBSnNzN2sQw== + dependencies: + "@swc/counter" "^0.1.3" + optionalDependencies: + "@swc/html-darwin-arm64" "1.16.20" + "@swc/html-darwin-x64" "1.16.20" + "@swc/html-linux-arm-gnueabihf" "1.16.20" + "@swc/html-linux-arm64-gnu" "1.16.20" + "@swc/html-linux-arm64-musl" "1.16.20" + "@swc/html-linux-ppc64-gnu" "1.16.20" + "@swc/html-linux-s390x-gnu" "1.16.20" + "@swc/html-linux-x64-gnu" "1.16.20" + "@swc/html-linux-x64-musl" "1.16.20" + "@swc/html-win32-arm64-msvc" "1.16.20" + "@swc/html-win32-ia32-msvc" "1.16.20" + "@swc/html-win32-x64-msvc" "1.16.20" + +"@swc/types@^0.1.28": + version "0.1.28" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.28.tgz#e3cd892383fba3b8904c40518bbe1265a50753f2" + integrity sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw== + dependencies: + "@swc/counter" "^0.1.3" + "@szmarczak/http-timer@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" @@ -2630,6 +2975,13 @@ dependencies: defer-to-connect "^2.0.1" +"@tybys/wasm-util@^0.10.1": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.4.tgz#3e85ecb266f9d1722250e89bc69528615720b154" + integrity sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A== + dependencies: + tslib "^2.4.0" + "@types/body-parser@*": version "1.19.6" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" @@ -3355,6 +3707,11 @@ baseline-browser-mapping@^2.11.12: resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz#26078c7a4b08299656ea7ddceaebec955dc44303" integrity sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw== +baseline-browser-mapping@^2.11.33: + version "2.11.34" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.34.tgz#d97a3dc0edb2f139758f7f2b1ae89552f391b35f" + integrity sha512-Aqr8mA1kIvyJ3UY5YAY7ib8LSo1DmDMbMnVqGPtsKW1LxaFQFwn9Eb3yvq2fUKJsRvaXjnAV7R5osqETapzNiA== + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3455,6 +3812,17 @@ browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4 node-releases "^2.0.53" update-browserslist-db "^1.3.0" +browserslist@^4.24.2: + version "4.29.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.29.5.tgz#e835ff9a00f683305b33f02828c908b397410d4a" + integrity sha512-khTmKu5NGYTotqcYo8Bew2k4RAE9PuXRSFRXG2lQBrCEQHyeQ/vX6gKMxfokwywBsLiXZMnHsmWMG1pnO8J7uQ== + dependencies: + baseline-browser-mapping "^2.11.33" + caniuse-lite "^1.0.30001819" + electron-to-chromium "^1.5.464" + node-releases "^2.0.60" + update-browserslist-db "^1.3.4" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3569,6 +3937,11 @@ caniuse-lite@^1.0.30001809: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz#4970b477dea3278374de9bc43aa8f5d39fc3cda2" integrity sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg== +caniuse-lite@^1.0.30001819: + version "1.0.30001820" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001820.tgz#bbed68c45bb4c4316084594ba044ba56e68bfae7" + integrity sha512-gfWD6MxqVCqAOwmODfZf7DchWvlrA+SRdNX7ceLfg3xRqe5ssjjpF7EgslC/0tiLiNTajdaNN/q8c/5u/7Gz8w== + ccount@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" @@ -4204,6 +4577,11 @@ destroy@1.2.0, destroy@~1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" @@ -4343,6 +4721,11 @@ electron-to-chromium@^1.5.402: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.420.tgz#fc66d26a722d6f227e2092acdf38dd55b198cb44" integrity sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA== +electron-to-chromium@^1.5.464: + version "1.5.467" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.467.tgz#7a3db88a95f09304a47ca0d838a1504fa048664a" + integrity sha512-Nw9X371rtZmYcBSnEijnCDONILjs93biCZO34juC7MBOmK8E+GFnyD4T/WvyrlJkppul7oxg6TwvtKst9SODTw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -5720,6 +6103,80 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +lightningcss-android-arm64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz#9a6841f88ae50fc83502903892b41af41bc2b907" + integrity sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg== + +lightningcss-darwin-arm64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz#c0f2c31c0bfd19fa4dd3f18e957a1f1a152097d6" + integrity sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg== + +lightningcss-darwin-x64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz#cb0705965acb538c6683949ce6925fb3cdf7c361" + integrity sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ== + +lightningcss-freebsd-x64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz#763538828b26bab2680dadafcc84ee78b0eb502b" + integrity sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg== + +lightningcss-linux-arm-gnueabihf@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz#6862e3176a331aedbdec1ed352b4d7d0dd0784de" + integrity sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ== + +lightningcss-linux-arm64-gnu@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz#c6a3a2ed15141daf6bdc2628930f8e39bdf473aa" + integrity sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg== + +lightningcss-linux-arm64-musl@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz#7fa1334971fc82845f9827df6ef8a0b20914bac6" + integrity sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ== + +lightningcss-linux-x64-gnu@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz#8b927862ea8c2bbc6831a46509244b50d9936e55" + integrity sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg== + +lightningcss-linux-x64-musl@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz#0c525bb077dfd94404c059cfe42dad797e96aeaf" + integrity sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw== + +lightningcss-win32-arm64-msvc@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz#850ee1103dac989cfab50e3ac22d1a69e394e63d" + integrity sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA== + +lightningcss-win32-x64-msvc@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz#e343ae152eed3609dc6e11949d1a3bf39a1c946f" + integrity sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA== + +lightningcss@^1.27.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.33.0.tgz#c08867d71a79385c6e190214fd72fef3e5f95f0b" + integrity sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA== + dependencies: + detect-libc "^2.0.3" + optionalDependencies: + lightningcss-android-arm64 "1.33.0" + lightningcss-darwin-arm64 "1.33.0" + lightningcss-darwin-x64 "1.33.0" + lightningcss-freebsd-x64 "1.33.0" + lightningcss-linux-arm-gnueabihf "1.33.0" + lightningcss-linux-arm64-gnu "1.33.0" + lightningcss-linux-arm64-musl "1.33.0" + lightningcss-linux-x64-gnu "1.33.0" + lightningcss-linux-x64-musl "1.33.0" + lightningcss-win32-arm64-msvc "1.33.0" + lightningcss-win32-x64-msvc "1.33.0" + lilconfig@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" @@ -6653,6 +7110,11 @@ node-releases@^2.0.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.54.tgz#09af17d5647aa9f221ec5cf2becb95b68a981afe" integrity sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ== +node-releases@^2.0.60: + version "2.0.61" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.61.tgz#83531ed93275c9d487fbd0bdeea0ad24c62dd5d5" + integrity sha512-5NUN6QCxNFrS9oEA9RPS+d0AP+ooGBzzovY2JhIpDRHacPvOhHjXjUsUMX9qp4nLHZ+5jVgXB2jj/P4arGOE/g== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -8679,6 +9141,13 @@ svgo@^3.0.2, svgo@^3.2.0: picocolors "^1.0.0" sax "^1.5.0" +swc-loader@^0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.7.tgz#2d1611ab314c5d8342d74aa5e5901b3fbf490de2" + integrity sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w== + dependencies: + "@swc/counter" "^0.1.3" + tapable@^2.0.0, tapable@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" @@ -8783,7 +9252,7 @@ tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.6.0, tslib@^2.8.1: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -8936,6 +9405,14 @@ update-browserslist-db@^1.3.0: escalade "^3.2.0" picocolors "^1.1.1" +update-browserslist-db@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz#e8bd4596f6900805f9f12c5a5200c83c59c38faf" + integrity sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + update-notifier@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" From baefd7bb9295ea7d594fbc74bfc4c09f44a982a7 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:33:53 +0100 Subject: [PATCH 19/26] Docs: Changelog: Link the CI PR #3675 Co-Authored-By: Claude Opus 5.5 --- Website/docs/changelog/next-release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 72b427b7a4..a7c001bff0 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -383,6 +383,6 @@ Release date: **xx.xx.2026** - Input histories (e.g. hosts, domains, ports) are updated in place instead of being cleared and refilled, which avoids clearing the text of the input field and unnecessary updates. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Added a unit test project (xUnit) with tests for the run command parser and the history lists. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644) - Reworked the GitHub issue templates as forms (bug report, feature request, question) that ask for the relevant information (e.g. affected feature, version, installation, Windows version, log), with links to the documentation, discussions, translations and security advisories. Simplified the pull request template and removed the Copilot summary section. [#3660](https://github.com/BornToBeRoot/NETworkManager/pull/3660) -- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it and builds about 3x faster (Docusaurus Faster). Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Dependabot major updates are no longer merged automatically. Removed the stale bot. +- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it and builds about 3x faster (Docusaurus Faster). Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Dependabot major updates are no longer merged automatically. Removed the stale bot. [#3675](https://github.com/BornToBeRoot/NETworkManager/pull/3675) - Language files updated via [#transifex](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Ftransifex-integration) - Dependencies updated via [#dependabot](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Fdependabot) From 3712b46986a9b2881fedf64f0573d93f6bb28dfb Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:42:43 +0100 Subject: [PATCH 20/26] CI: AppVeyor: Run the unit tests from Source, so global.json (Microsoft.Testing.Platform) is used (1.4) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 9672d300c5..21c3c959c7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -163,8 +163,11 @@ after_build: test_script: - ps: | - # global.json selects Microsoft.Testing.Platform, which needs --project instead of a positional path. - dotnet test --project "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Tests\NETworkManager.Tests.csproj" --configuration Release --no-restore + # Run from Source - dotnet test only picks up Source\global.json (Microsoft.Testing.Platform, which needs --project + # instead of a positional path) from the working directory. Otherwise it falls back to VSTest (MSB1001: Unknown switch). + Set-Location "$($env:APPVEYOR_BUILD_FOLDER)\Source" + + dotnet test --project "NETworkManager.Tests\NETworkManager.Tests.csproj" --configuration Release --no-restore if ($LASTEXITCODE -ne 0) { throw "dotnet test failed with exit code $LASTEXITCODE" From 01c2c86f655ab376794fbbad079f6be44794510b Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:46:33 +0100 Subject: [PATCH 21/26] Docs: Changelog: Link the Dependabot NuGet fix commit 1ce8310 Co-Authored-By: Claude Opus 5.5 --- Website/docs/changelog/next-release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index 451099dbef..60f2403fc7 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -374,7 +374,7 @@ Release date: **xx.xx.2026** ## Dependencies, Refactoring & Documentation - Code cleanup & refactoring -- Dependabot updates the NuGet packages again (no updates since February 2025). The Windows SDK version is now set via `TargetPlatformVersion` instead of in the target framework (`net10.0-windows10.0.22621.0` → `net10.0-windows`), which Dependabot can't handle ([dependabot-core#13278](https://github.com/dependabot/dependabot-core/issues/13278)). The build output moved from `bin\...\net10.0-windows10.0.22621.0\` to `bin\...\net10.0-windows\`. +- Dependabot updates the NuGet packages again (no updates since February 2025). The Windows SDK version is now set via `TargetPlatformVersion` instead of in the target framework (`net10.0-windows10.0.22621.0` → `net10.0-windows`), which Dependabot can't handle ([dependabot-core#13278](https://github.com/dependabot/dependabot-core/issues/13278)). The build output moved from `bin\...\net10.0-windows10.0.22621.0\` to `bin\...\net10.0-windows\`. [1ce8310](https://github.com/BornToBeRoot/NETworkManager/commit/1ce8310a876f0d5bf87d0b2e098bcb22d15dd5a9) - Context menus of lists (results, profiles, settings) get the view model in XAML instead of when they are opened. Their items, and menu items that are created outside of a menu (e.g. the extra items of the profile context menu), no longer cause XAML binding errors every time a list is filled, which hid real binding errors. - Converted the **IP Scanner** and **Port Scanner** engines from `Parallel.ForEach` with blocking calls to genuinely asynchronous `Parallel.ForEachAsync`, removing the risk of exhausting the application's ThreadPool at high concurrency settings. [#3564](https://github.com/BornToBeRoot/NETworkManager/pull/3564) - The TCP port probe (**IP Scanner**, **Port Scanner**) and the NetBIOS request (**IP Scanner**) report a refused connection, a timeout or no answer as result instead of throwing an exception for each of them (thousands per scan). Faster, and the application no longer lags while scanning with a debugger attached. [#3653](https://github.com/BornToBeRoot/NETworkManager/pull/3653) From 7e33d2e1890e2deb6b75012ddb589b00caf7e593 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:55:57 +0100 Subject: [PATCH 22/26] CI: AppVeyor: Skip branch builds only for squash merges of a PR, always build direct pushes (review 1) Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 3 ++- appveyor.yml | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 5910e57b5b..e784d107f3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -192,7 +192,8 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - Branches with an open PR are only built as PR (`skip_branch_with_pr`) - Ends successfully without building if only docs / website / repository files changed (`Website/`, `.github/`, `.claude/`, `Images/`, `Chocolatey/`, `WinGet/`, `Tests/Environments/`, `*.md`, `LICENSE`), so Mergify still gets a - green status. Tags are always built + green status. Tags are always built. Branch builds (e.g. `main`) only see the last commit, so they are only skipped + for squash merges of a PR (subject ends with `(#1234)`); direct pushes are always built - Version format: `yyyy.M.d.0` (date-based) - Artifacts are signed via [SignPath.io](https://signpath.io/) - Released to GitHub Releases diff --git a/appveyor.yml b/appveyor.yml index aecf4b1633..2ee80c3353 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,8 +16,13 @@ install: # Skip the build if only docs / website / repository files changed. Exit-AppveyorBuild ends the build # successfully, so a green status is still reported (Mergify waits for it). Tag (release) builds are never # skipped. PR builds check out the merge commit (HEAD~1 = target branch), so this is the full PR diff. + # Branch builds only see the last commit of a push, so they are only skipped for squash merges of a PR + # (subject ends with "(#1234)") - the PR build already checked the full diff. Direct pushes are always built. # If git diff fails, the build runs normally. - if ($env:APPVEYOR_REPO_TAG -ne "true") { + $IsPullRequest = [bool]$env:APPVEYOR_PULL_REQUEST_NUMBER + $IsSquashMerge = (git log -1 --format=%s HEAD) -match '\(#\d+\)$' + + if ($env:APPVEYOR_REPO_TAG -ne "true" -and ($IsPullRequest -or $IsSquashMerge)) { $ChangedFiles = git diff --name-only HEAD~1 HEAD 2>$null if ($LASTEXITCODE -eq 0 -and $ChangedFiles) { From 0b06fe380831bf211652d7e263681bdafb45e4f3 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:56:05 +0100 Subject: [PATCH 23/26] CI: AppVeyor: Docs-only check with --no-renames, so files moved out of Source are build relevant (review 2) Co-Authored-By: Claude Opus 5.5 --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 2ee80c3353..f5d73f606a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -23,7 +23,8 @@ install: $IsSquashMerge = (git log -1 --format=%s HEAD) -match '\(#\d+\)$' if ($env:APPVEYOR_REPO_TAG -ne "true" -and ($IsPullRequest -or $IsSquashMerge)) { - $ChangedFiles = git diff --name-only HEAD~1 HEAD 2>$null + # --no-renames: a moved file is listed with its old and new path (a file moved out of Source/ is build relevant) + $ChangedFiles = git diff --name-only --no-renames HEAD~1 HEAD 2>$null if ($LASTEXITCODE -eq 0 -and $ChangedFiles) { $BuildRelevantFiles = $ChangedFiles | Where-Object { $_ -notmatch '^(Website/|\.github/|\.claude/|Images/|Chocolatey/|WinGet/|Tests/Environments/|LICENSE$)|\.md$' } From ecfb8fcec0f43d901bf5802b35d9def72febce0a Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:56:22 +0100 Subject: [PATCH 24/26] CI: AppVeyor: Build the setup in PRs that change it (review 3) Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 4 ++-- appveyor.yml | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e784d107f3..8cd0de9c93 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -186,8 +186,8 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana - Installs the .NET SDK version from `Source/global.json` (skipped if the image already has it) - Restores NuGet packages - Builds the Release configuration: x64 for branches and PRs, x64 and ARM64 for tags (setup, portable and archive per - architecture, only for tags). PRs only build the application (`NETworkManager.csproj`), branches and tags the setup - (`NETworkManager.Setup.wixproj`) + architecture, only for tags). PRs only build the application (`NETworkManager.csproj`) unless they change + `Source/NETworkManager.Setup/`, branches and tags the setup (`NETworkManager.Setup.wixproj`) - Runs the unit tests (`Source/NETworkManager.Tests`, `dotnet test --project`) - Branches with an open PR are only built as PR (`skip_branch_with_pr`) - Ends successfully without building if only docs / website / repository files changed (`Website/`, `.github/`, diff --git a/appveyor.yml b/appveyor.yml index f5d73f606a..f76bb5cb0b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -91,13 +91,21 @@ before_build: build_script: - ps: | # Build the wixproj directly, not the .sln - `dotnet build` rejects -p:RuntimeIdentifier - # at the solution level (NETSDK1134). PRs only build the application (the setup is built on branches and tags). + # at the solution level (NETSDK1134). PRs only build the application, unless they change the setup (e.g. WiX + # updates via Dependabot) - the setup is always built on branches and tags. $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Setup\NETworkManager.Setup.wixproj" if ($env:APPVEYOR_PULL_REQUEST_NUMBER) { - $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager\NETworkManager.csproj" + # PR builds check out the merge commit (HEAD~1 = target branch), so this is the full PR diff + $ChangedFiles = git diff --name-only --no-renames HEAD~1 HEAD 2>$null + + if ($LASTEXITCODE -eq 0 -and -not ($ChangedFiles | Where-Object { $_ -like "Source/NETworkManager.Setup/*" })) { + $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager\NETworkManager.csproj" + } } + Write-Host "Building $Project" + $Architectures = @( @{ RuntimeIdentifier = "win-x64"; Platform = "x64" } ) From 5828e71a04eb885173912fc67c7634d7d5395bf6 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:56:56 +0100 Subject: [PATCH 25/26] CI: Website: Run deploying runs (build + deploy) one after the other again (review 4) Co-Authored-By: Claude Opus 5.5 --- .github/workflows/deploy_website.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy_website.yml b/.github/workflows/deploy_website.yml index ea5f712d8c..d6d806bd85 100644 --- a/.github/workflows/deploy_website.yml +++ b/.github/workflows/deploy_website.yml @@ -16,16 +16,18 @@ on: - '.github/workflows/deploy_website.yml' - 'Website/**' +# Runs that deploy (main, release, manual) run one after the other incl. the build, so the last triggered run also +# deploys last (e.g. a release build isn't overwritten by an older main build). Outdated PR runs are cancelled. +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || 'deploy' }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + jobs: build-website: name: "Build Website" runs-on: ubuntu-latest permissions: contents: read - concurrency: - # Cancel outdated PR builds, but never a build that is deployed. - group: ${{ github.workflow }}-build-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} defaults: run: working-directory: Website @@ -66,8 +68,6 @@ jobs: runs-on: ubuntu-latest permissions: contents: write - concurrency: - group: ${{ github.workflow }}-deploy steps: - name: Download website uses: actions/download-artifact@v8 From a69e26089f7f01a648ca31a2962777a2ecb8f64c Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:57:08 +0100 Subject: [PATCH 26/26] CI: CodeQL: Install the .NET SDK from global.json for the C# autobuild (review 5) Co-Authored-By: Claude Opus 5.5 --- .github/workflows/codeql.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d837c6b572..7a00dd98f0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -36,6 +36,13 @@ jobs: with: submodules: 'true' + # The C# autobuild needs the SDK from Source/global.json (the runner image may only have an older one) + - name: Setup .NET + if: matrix.language == 'csharp' + uses: actions/setup-dotnet@v6 + with: + global-json-file: Source/global.json + - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: