Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ptr727/Utilities
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3.7.7
Choose a base ref
...
head repository: ptr727/Utilities
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4.0.7
Choose a head ref
  • 10 commits
  • 34 files changed
  • 3 contributors

Commits on Jul 10, 2026

  1. Bump the nuget-deps group with 1 update (#389)

    Updated [Serilog](https://github.com/serilog/serilog) from 4.3.1 to
    4.4.0.
    
    <details>
    <summary>Release notes</summary>
    
    _Sourced from [Serilog's
    releases](https://github.com/serilog/serilog/releases)._
    
    ## 4.4.0
    
    ## What's Changed
    * Emit SelfLog warning when extra arguments are provided by @​matantsach
    in serilog/serilog#2222
    * dont WriteQuotedJsonString for null by @​SimonCropp in
    serilog/serilog#2216
    * Pin System.Security.Cryptography.Xml to 8.0.3 in tests by @​ArieGato
    in serilog/serilog#2232
    * Route optional interfaces through OptionalInterfaceForwardingSink for
    restricted sinks by @​ArieGato in
    serilog/serilog#2234
    * `SelfMetrics` by @​nblumhardt in
    serilog/serilog#2237
    
    ## New Contributors
    * @​matantsach made their first contribution in
    serilog/serilog#2222
    * @​ArieGato made their first contribution in
    serilog/serilog#2232
    
    **Full Changelog**:
    serilog/serilog@v4.3.1...v4.4.0
    
    Commits viewable in [compare
    view](serilog/serilog@v4.3.1...v4.4.0).
    </details>
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Serilog&package-manager=nuget&previous-version=4.3.1&new-version=4.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore <dependency name> major version` will close this
    group update PR and stop Dependabot creating any more for the specific
    dependency's major version (unless you unignore this specific
    dependency's major version or upgrade to it yourself)
    - `@dependabot ignore <dependency name> minor version` will close this
    group update PR and stop Dependabot creating any more for the specific
    dependency's minor version (unless you unignore this specific
    dependency's minor version or upgrade to it yourself)
    - `@dependabot ignore <dependency name>` will close this group update PR
    and stop Dependabot creating any more for the specific dependency
    (unless you unignore this specific dependency or upgrade to it yourself)
    - `@dependabot unignore <dependency name>` will remove all of the ignore
    conditions of the specified dependency
    - `@dependabot unignore <dependency name> <ignore condition>` will
    remove the ignore condition of the specified dependency and ignore
    conditions
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    45abe5b View commit details
    Browse the repository at this point in the history
  2. publish-release: gate auto-publish to bot merges on main only (releas…

    …e-model) (#388)
    
    Part of the fleet release-model change: **a human PR merge never
    auto-cuts a release; only a bot (Dependabot/codegen) code-merge to
    `main` does, plus manual dispatch.**
    
    - **`push` trigger narrowed to `[main]`** — bot merges to `develop` no
    longer release; `develop` prereleases come via `workflow_dispatch`.
    - **Publish gated** to `github.actor == 'ptr727-codegen[bot]'` (the App
    merges every bot PR) / `dependabot[bot]`, so a human merge/promotion to
    `main` skips — the maintainer dispatches when release-ready. The
    `paths:` filter still means an Actions-only bump publishes nothing.
    - Empirically validated actor values on real runs (bot merges → App
    identity; human merges → `ptr727`).
    
    Header/comment updated to match. Takes effect on `main` once promoted.
    Companion to LanguageTags #255; template docs (WORKFLOW.md/AGENTS.md) +
    `PUBLISH_ON_MERGE` deletion follow.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    ptr727 and claude authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    1568ac1 View commit details
    Browse the repository at this point in the history
  3. Promote develop to main: gated release model + nuget-deps bump (#391)

    Promotion of `develop` -> `main`.
    
    Carries:
    - **#388** — gated release model: `publish-plan-task.yml` (plan job) +
    gated `publish-release.yml` (a human merge never auto-publishes; only a
    bot code-merge to main, or a dispatch, does) + codecov-comment cleanup.
    - **#389** — `Directory.Packages.props` nuget-deps bump.
    
    **This promotion is also the live gate test.** The diff touches
    `Directory.Packages.props` (a release-affecting path), so on merge the
    now-gated `publish-release.yml` will trigger — and because the promotion
    is a **human** merge (`github.actor = ptr727`), the `plan` job resolves
    `publish=false` and **skips the publish**. That proves a human
    merge/promotion does not auto-cut a release. (The next
    Dependabot/codegen merge to `main` — `actor = ptr727-codegen[bot]` —
    will publish.)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    e0cb671 View commit details
    Browse the repository at this point in the history
  4. Add resilient HttpClientFactory and AOT-safe AssemblyInfo

    Add a reusable HttpClientFactory (Polly retry/circuit breaker) with AssemblyInfo, an AOT-safe GetExecutingAssembly substitute, and HttpClientOptions. Route Download through the factory. Gate library AOT verification behind PublishAot and prove it via the Sandbox Native AOT smoke test. Also resolve CA1002/CA2007 and test-code analyzer findings.
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    405af67 View commit details
    Browse the repository at this point in the history
  5. Add mocked resilience tests exercising the Polly pipeline

    Add deterministic, network-free tests that exercise the HttpClientFactory Polly pipeline via a stub inner transport: retry on transient status, no retry on non-transient, retry on timeout, and no retry on caller cancellation. Re-adds the documented test-scoped CA2007 suppression (xUnit1030 conflict). Test-only; no library change.
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    c3c7843 View commit details
    Browse the repository at this point in the history
  6. Retry only known-transient exceptions in the resilience pipeline

    Narrow IsTransientFailure to retry only transient HTTP status, request timeouts, and network/IO errors; do not retry caller cancellation, an open circuit, or other exceptions (including programming errors). Adds two mocked tests. Addresses the Copilot finding on the develop->main release PR.
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    2b52e73 View commit details
    Browse the repository at this point in the history
  7. Remove ambiguous CreateClient user-agent overload

    Remove CreateClient(ProductInfoHeaderValue) to eliminate the CreateClient(null) ambiguity; callers set the user agent via HttpClientOptions. Addresses a Copilot finding on the develop->main release PR before the stable 4.0 API ships.
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    464a31c View commit details
    Browse the repository at this point in the history
  8. Match XML docs to Collection return types

    Update doc comments that still said 'list' for the Collection<T>/ReadOnlyCollection<T> return types on FileEx.EnumerateDirectories/EnumerateDirectory and StringHistory.StringList. Docs only. Addresses a Copilot finding on the develop->main release PR.
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    b0c32f8 View commit details
    Browse the repository at this point in the history
  9. Fail fast on status-bearing HttpRequestException

    Refine IsTransientFailure so a status-bearing HttpRequestException is transient only for a transient status (408/429/>=500); network HttpRequestException (no status) and IOException stay transient. Centralize the transient-status predicate. Add positive and negative mocked tests. Addresses Copilot findings on the develop->main release PR.
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    7eff371 View commit details
    Browse the repository at this point in the history
  10. Promote: resilient HttpClientFactory and AOT-safe AssemblyInfo (4.0) (#…

    …394)
    
    Promotes v4.0 to main for a stable release.
    
    ## Included
    
    - **HttpClientFactory** - reusable resilient HTTP client factory (Polly
    retry + circuit breaker, connection pooling), with `HttpClientOptions`
    for tuning and both a shared client and a resilience-handler surface.
    - **AssemblyInfo** - AOT-safe identity helper; `For<T>()` substitutes
    for `Assembly.GetExecutingAssembly()` (Native AOT), plus app
    name/version and a default User-Agent.
    - **Download** routed through the factory (signatures unchanged).
    - `List<T>` public members changed to `Collection<T>` /
    `ReadOnlyCollection<T>` (breaking API change).
    - Library AOT verification gated behind `PublishAot`; Sandbox is a
    Native AOT smoke test proving the pipeline and identity resolution under
    AOT.
    - Deterministic mocked resilience tests exercising the Polly pipeline
    offline.
    - CA1002/CA2007 and test-code analyzer cleanups.
    
    See [HISTORY.md](./HISTORY.md) for the full v4.0 entry.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    ptr727 authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    166ab0a View commit details
    Browse the repository at this point in the history
Loading