Skip to content

Extract request tabs and history into focused workflows #1097

Extract request tabs and history into focused workflows

Extract request tabs and history into focused workflows #1097

Triggered via pull request June 13, 2026 04:23
Status Success
Total duration 3m 47s
Artifacts –

ci.yml

on: pull_request
Secret Scan
13s
Secret Scan
Agent Instructions Sync Check
6s
Agent Instructions Sync Check
Release Build Verification
3m 7s
Release Build Verification
Unit Tests
1m 9s
Unit Tests
Integration Tests
39s
Integration Tests
UX Screenshot Verification
55s
UX Screenshot Verification
E2E Tests
1m 28s
E2E Tests
Code Coverage
1m 38s
Code Coverage
System Tests (Runner UI Automation)
2m 46s
System Tests (Runner UI Automation)
Fit to window
Zoom out
Zoom in

Annotations

98 warnings and 2 notices
Agent Instructions Sync Check
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Secret Scan
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, github/codeql-action/upload-sarif@ce64ddcb0d8d890d2df4a9d1c04ff297367dea2a. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Secret Scan
CodeQL Action v3 will be deprecated in December 2026. Please update all occurrences of the CodeQL Action in your workflow files to v4. For more information, see https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/
Build
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build: src/Arbor.HttpClient.Core.Tests/SseServiceTests.cs#L104
The behavior of 'StringBuilder.AppendLine(ref StringBuilder.AppendInterpolatedStringHandler)' could vary based on the current user's locale settings. Replace this call in 'SseServiceTests.ParseSseStreamAsync_ShouldRespectCancellationToken()' with a call to 'StringBuilder.AppendLine(IFormatProvider, ref StringBuilder.AppendInterpolatedStringHandler)'. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1305)
Build: src/Arbor.HttpClient.Core.Tests/ProcessEnvironmentCollection.cs#L10
Rename type name ProcessEnvironmentCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Build: src/Arbor.HttpClient.Core.Integration.Tests/KestrelServerCollection.cs#L9
Rename type name KestrelServerCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Build: src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Build: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Build: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
Build: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Build: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
Build: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Build: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Integration Tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Integration Tests: src/Arbor.HttpClient.Core.Integration.Tests/KestrelServerCollection.cs#L9
Rename type name KestrelServerCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Integration Tests: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Integration Tests: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Integration Tests: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
Integration Tests: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Integration Tests: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
Integration Tests: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
UX Screenshot Verification
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
UX Screenshot Verification: src/Arbor.HttpClient.Desktop/Shared/TextHelpers.cs#L15
'string.Contains(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Desktop.Shared.TextHelpers.StripNewlines(string)' with a call to 'string.Contains(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
UX Screenshot Verification: src/Arbor.HttpClient.Desktop/Features/Scripting/RoslynScriptRunner.cs#L24
Do not declare visible instance fields (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1051)
UX Screenshot Verification: src/Arbor.HttpClient.Desktop/Shared/DisposableExtensions.cs#L3
Rename namespace Arbor.HttpClient.Desktop.Shared so that it no longer conflicts with the reserved language keyword 'Shared'. Using a reserved keyword as the name of a namespace makes it harder for consumers in other languages to use the namespace. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1716)
UX Screenshot Verification: src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
UX Screenshot Verification: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
UX Screenshot Verification: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
UX Screenshot Verification: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
UX Screenshot Verification: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
UX Screenshot Verification: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
UX Screenshot Verification: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Unit Tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Unit Tests: src/Arbor.HttpClient.Core.Tests/SseServiceTests.cs#L104
The behavior of 'StringBuilder.AppendLine(ref StringBuilder.AppendInterpolatedStringHandler)' could vary based on the current user's locale settings. Replace this call in 'SseServiceTests.ParseSseStreamAsync_ShouldRespectCancellationToken()' with a call to 'StringBuilder.AppendLine(IFormatProvider, ref StringBuilder.AppendInterpolatedStringHandler)'. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1305)
Unit Tests: src/Arbor.HttpClient.Core.Tests/ProcessEnvironmentCollection.cs#L10
Rename type name ProcessEnvironmentCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Unit Tests: src/Arbor.HttpClient.Core.Integration.Tests/KestrelServerCollection.cs#L9
Rename type name KestrelServerCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Unit Tests: src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Unit Tests: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Unit Tests: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
Unit Tests: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
Unit Tests: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Unit Tests: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Unit Tests: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
E2E Tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Tests: src/Arbor.HttpClient.Desktop/Shared/TextHelpers.cs#L15
'string.Contains(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Desktop.Shared.TextHelpers.StripNewlines(string)' with a call to 'string.Contains(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
E2E Tests: src/Arbor.HttpClient.Desktop/Features/Scripting/RoslynScriptRunner.cs#L24
Do not declare visible instance fields (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1051)
E2E Tests: src/Arbor.HttpClient.Desktop/Shared/DisposableExtensions.cs#L3
Rename namespace Arbor.HttpClient.Desktop.Shared so that it no longer conflicts with the reserved language keyword 'Shared'. Using a reserved keyword as the name of a namespace makes it harder for consumers in other languages to use the namespace. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1716)
E2E Tests: src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
E2E Tests: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
E2E Tests: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
E2E Tests: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
E2E Tests: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
E2E Tests: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
E2E Tests: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Code Coverage
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Code Coverage: src/Arbor.HttpClient.Core.Tests/SseServiceTests.cs#L104
The behavior of 'StringBuilder.AppendLine(ref StringBuilder.AppendInterpolatedStringHandler)' could vary based on the current user's locale settings. Replace this call in 'SseServiceTests.ParseSseStreamAsync_ShouldRespectCancellationToken()' with a call to 'StringBuilder.AppendLine(IFormatProvider, ref StringBuilder.AppendInterpolatedStringHandler)'. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1305)
Code Coverage: src/Arbor.HttpClient.Core.Tests/ProcessEnvironmentCollection.cs#L10
Rename type name ProcessEnvironmentCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Code Coverage: src/Arbor.HttpClient.Core.Integration.Tests/KestrelServerCollection.cs#L9
Rename type name KestrelServerCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Code Coverage: src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Code Coverage: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Code Coverage: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
Code Coverage: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
Code Coverage: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Code Coverage: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Code Coverage: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Release Build Verification
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Release Build Verification: src/Arbor.HttpClient.Desktop/App.axaml.cs#L324
Avoid hardcoding SslProtocols 'Tls12' to ensure your application remains secure in the future. Use 'None' to let the Operating System choose a version. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca5398)
Release Build Verification: src/Arbor.HttpClient.Desktop/App.axaml.cs#L322
Transport Layer Security protocol version 'Tls11' is deprecated. Use 'None' to let the Operating System choose a version. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca5397)
Release Build Verification: src/Arbor.HttpClient.Desktop/App.axaml.cs#L321
Transport Layer Security protocol version 'Tls' is deprecated. Use 'None' to let the Operating System choose a version. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca5397)
Release Build Verification: src/Arbor.HttpClient.Desktop/App.axaml.cs#L332
The ServerCertificateValidationCallback is set to a function that accepts any server certificate, by always returning true. Ensure that server certificates are validated to verify the identity of the server receiving requests. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca5359)
Release Build Verification: src/Arbor.HttpClient.Desktop/Demo/DemoServer.cs#L117
Prefer 'static readonly' fields over constant array arguments if the called method is called repeatedly and is not mutating the passed array (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1861)
Release Build Verification: src/Arbor.HttpClient.Desktop/Shared/HttpContentTypeHelper.cs#L14
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Desktop.Shared.HttpContentTypeHelper.NormalizeMediaType(string)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Release Build Verification: src/Arbor.HttpClient.Desktop/Shared/TextHelpers.cs#L15
'string.Contains(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Desktop.Shared.TextHelpers.StripNewlines(string)' with a call to 'string.Contains(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Release Build Verification: src/Arbor.HttpClient.Desktop/Shared/TextHelpers.cs#L15
'string.Contains(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Desktop.Shared.TextHelpers.StripNewlines(string)' with a call to 'string.Contains(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Release Build Verification: src/Arbor.HttpClient.Desktop/Features/Scripting/RoslynScriptRunner.cs#L24
Do not declare visible instance fields (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1051)
Release Build Verification: src/Arbor.HttpClient.Desktop/Shared/DisposableExtensions.cs#L3
Rename namespace Arbor.HttpClient.Desktop.Shared so that it no longer conflicts with the reserved language keyword 'Shared'. Using a reserved keyword as the name of a namespace makes it harder for consumers in other languages to use the namespace. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1716)
Release Build Verification: src/Arbor.HttpClient.Core.Integration.Tests/KestrelServerCollection.cs#L9
Rename type name KestrelServerCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Release Build Verification: src/Arbor.HttpClient.Core.Tests/SseServiceTests.cs#L104
The behavior of 'StringBuilder.AppendLine(ref StringBuilder.AppendInterpolatedStringHandler)' could vary based on the current user's locale settings. Replace this call in 'SseServiceTests.ParseSseStreamAsync_ShouldRespectCancellationToken()' with a call to 'StringBuilder.AppendLine(IFormatProvider, ref StringBuilder.AppendInterpolatedStringHandler)'. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1305)
Release Build Verification: src/Arbor.HttpClient.Core.Tests/ProcessEnvironmentCollection.cs#L10
Rename type name ProcessEnvironmentCollection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Release Build Verification: src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Release Build Verification: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
Release Build Verification: src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
Release Build Verification: src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Release Build Verification: src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
Release Build Verification: src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
Release Build Verification: src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
System Tests (Runner UI Automation)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332, actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
System Tests (Runner UI Automation): src/Arbor.HttpClient.Desktop/Shared/TextHelpers.cs#L15
'string.Contains(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Desktop.Shared.TextHelpers.StripNewlines(string)' with a call to 'string.Contains(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Desktop/Features/Scripting/RoslynScriptRunner.cs#L24
Do not declare visible instance fields (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1051)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Desktop/Shared/DisposableExtensions.cs#L3
Rename namespace Arbor.HttpClient.Desktop.Shared so that it no longer conflicts with the reserved language keyword 'Shared'. Using a reserved keyword as the name of a namespace makes it harder for consumers in other languages to use the namespace. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1716)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Storage.Sqlite/SqliteCollectionRepository.cs#L219
Change return type of method 'DeserializeHeaders' from 'System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' to 'System.Collections.Generic.List<Arbor.HttpClient.Core.HttpRequest.RequestHeader>?' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L116
Change return type of method 'MergeParameters' from 'System.Collections.Generic.IReadOnlyList<Microsoft.OpenApi.Models.OpenApiParameter>' to 'System.Collections.Generic.List<Microsoft.OpenApi.Models.OpenApiParameter>' for improved performance (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1859)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Core/OpenApiImport/OpenApiImportService.cs#L15
Member 'Import' does not access instance data and can be marked as static (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Core/Sse/SseService.cs#L91
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1865)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Core/HttpRequest/CurlFormatter.cs#L68
'string.Replace(string, string?)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.HttpRequest.CurlFormatter.ShellEscape(string)' with a call to 'string.Replace(string, string?, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Core/Variables/VariableResolver.cs#L74
'string.IndexOf(char)' has a method overload that takes a 'StringComparison' parameter. Replace this call in 'Arbor.HttpClient.Core.Variables.VariableResolver.Resolve(string, System.Collections.Generic.IReadOnlyList<Arbor.HttpClient.Core.Environments.EnvironmentVariable>)' with a call to 'string.IndexOf(char, System.StringComparison)' for clarity of intent. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307)
System Tests (Runner UI Automation): src/Arbor.HttpClient.Core/Collections/Collection.cs#L5
Rename type name Collection so that it does not end in 'Collection' (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1711)
Release Build Verification
NOTICE: windows-latest requests are being redirected to windows-2025-vs2026 by June 15, 2026
System Tests (Runner UI Automation)
NOTICE: windows-latest requests are being redirected to windows-2025-vs2026 by June 15, 2026