Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
d17263f
Bump the nuget-deps group with 3 updates
dependabot[bot] Aug 19, 2025
67e0beb
Merge pull request #255 from ptr727/dependabot/nuget/dot-config/devel…
github-actions[bot] Aug 19, 2025
5bcdae9
Bump the nuget-deps group with 1 update
dependabot[bot] Sep 29, 2025
79c53a2
Merge pull request #259 from ptr727/dependabot/nuget/UtilitiesTests/d…
github-actions[bot] Sep 29, 2025
2bbc4e0
Bump csharpier from 1.1.2 to 1.2.1
dependabot[bot] Nov 13, 2025
cb41e28
Merge pull request #264 from ptr727/dependabot/nuget/dot-config/devel…
github-actions[bot] Nov 13, 2025
3ab3496
Bump Serilog.Sinks.Console from 6.0.0 to 6.1.1
dependabot[bot] Nov 13, 2025
4016bbf
Merge pull request #265 from ptr727/dependabot/nuget/Sandbox/develop/…
github-actions[bot] Nov 13, 2025
08fcf16
Update dependencies
ptr727 Dec 1, 2025
456a74e
Merge branch 'main' into develop
ptr727 Dec 1, 2025
4f17437
Bump the nuget-deps group with 1 update
dependabot[bot] Dec 15, 2025
74124c6
Merge pull request #273 from ptr727/dependabot/nuget/dot-config/devel…
github-actions[bot] Dec 15, 2025
4272e63
Bump the actions-deps group across 1 directory with 2 updates (#270)
dependabot[bot] Dec 19, 2025
747164c
Bump the nuget-deps group with 1 update
dependabot[bot] Dec 24, 2025
04d920d
Merge pull request #275 from ptr727/dependabot/nuget/dot-config/devel…
github-actions[bot] Dec 24, 2025
ff3f4a0
Bump the nuget-deps group with 1 update
dependabot[bot] Jan 2, 2026
7f8d0f1
Merge pull request #278 from ptr727/dependabot/nuget/dot-config/devel…
github-actions[bot] Jan 2, 2026
59db073
.NET 10 and AOT support
ptr727 Jan 4, 2026
5e2d61e
Build pipeline also needs to be 10.0
ptr727 Jan 4, 2026
2bc1ec6
gitignore
ptr727 Jan 4, 2026
e5f7d19
Merge branch 'main' into develop
ptr727 Jan 4, 2026
8a78ced
rider
ptr727 Jan 4, 2026
050d3de
[WIP] Update changes based on feedback from pull request #279 (#280)
Copilot Jan 4, 2026
fd2725a
[WIP] Fix issues based on review feedback for pull request 279 (#281)
Copilot Jan 4, 2026
079f37a
Update UtilitiesTests/DownloadAsyncTests.cs
ptr727 Jan 4, 2026
0e54640
[WIP] WIP address feedback from review on 'Develop' pull request (#283)
Copilot Jan 4, 2026
ae9602a
[WIP] Address feedback from review on pull request #279 (#282)
Copilot Jan 4, 2026
79d523e
Initial plan (#284)
Copilot Jan 4, 2026
a54c300
Initial plan (#285)
Copilot Jan 4, 2026
8192493
Bump dependabot/fetch-metadata from 2 to 3 in the actions-deps group …
dependabot[bot] Apr 9, 2026
f78ac74
Convert to two-phase dual-publish release model (#320)
ptr727 Jun 5, 2026
e2996e1
Merge develop into main: two-phase dual-publish release model
ptr727 Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ indent_size = 2
[*.sh]
end_of_line = lf

# Husky git hooks are POSIX shell scripts (extensionless) and must be LF so the
# shebang execs on Linux/WSL; otherwise [*] = crlf would break them.
[.husky/pre-commit]
end_of_line = lf

# Windows scripts
[*.{cmd,bat,ps1}]
end_of_line = crlf
Expand All @@ -48,6 +53,47 @@ end_of_line = crlf
# Default to suggestion severity
dotnet_analyzer_diagnostic.severity = suggestion

# AnalysisMode=All (Directory.Build.props) enables every analyzer rule as a
# build warning, overriding the bulk suggestion default above on a per-rule
# basis; combined with TreatWarningsAsErrors that breaks the build on existing
# brownfield code. Relax the specific rules below back to suggestion — each is
# a deliberate, documented exception rather than a latent defect:
# CA1002 Public APIs intentionally expose List<T> (e.g. FileEx.EnumerateDirectory,
# StringHistory.StringList); changing to Collection<T> would break the
# published InsaneGenius.Utilities surface.
# CA1024 Download.GetUri is intentionally a method, not a property.
# CA1034 Unavoidable nested types generated by C# 14 `extension` members in
# Extensions.cs (the file already suppresses the related CA1708).
# CA1054 Download URL parameters are intentionally `string`, not `System.Uri`.
# CA1063 Existing IDisposable implementations are intentionally simple.
# CA1307 String operations rely on the default comparison; existing behavior
# is intentional and unchanged.
# CA1515 Library/console/test public types are intentionally public.
# CA1823 xUnit fixture fields are injected for lifetime/collection wiring and
# are not always referenced directly.
# CA1849 A few synchronous calls inside async paths are kept intentionally.
# CA2000 Stream/disposable ownership is frequently transferred (returned or
# stored), so scope-based disposal analysis reports false positives.
# CA2007 Library `await using` / `await foreach` disposal sites; the awaited
# async calls already use ConfigureAwait(false), and rewriting the
# using-declarations into ConfigureAwait blocks hurts readability.
# CA5394 Random is used for retry jitter / temp-name generation, not security.
# (IL3058 — Serilog not AOT-annotated — is a compiler/linker-level warning with
# no source location, so it can't be set here; it's handled via NoWarn in the
# AOT project files instead.)
dotnet_diagnostic.CA1002.severity = suggestion
dotnet_diagnostic.CA1024.severity = suggestion
dotnet_diagnostic.CA1034.severity = suggestion
dotnet_diagnostic.CA1054.severity = suggestion
dotnet_diagnostic.CA1063.severity = suggestion
dotnet_diagnostic.CA1307.severity = suggestion
dotnet_diagnostic.CA1515.severity = suggestion
dotnet_diagnostic.CA1823.severity = suggestion
dotnet_diagnostic.CA1849.severity = suggestion
dotnet_diagnostic.CA2000.severity = suggestion
dotnet_diagnostic.CA2007.severity = suggestion
dotnet_diagnostic.CA5394.severity = suggestion

csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
Expand Down
105 changes: 67 additions & 38 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,72 @@
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
#
# Every ecosystem appears **twice**: once with `target-branch: "main"`
# and once with `target-branch: "develop"`. Dependabot will open
# parallel PRs against each branch, so both stay current on
# dependency versions independently of the develop → main release
# cadence.
#
# Why dual-target and not develop-only:
# - `develop` is the integration branch and ships content forward to
# `main` through merge-commit releases, but the time between releases
# can be long (a feature branch may sit on develop for weeks).
# - Consumers (NuGet.org, GitHub releases) pull from `main` directly.
# If `main` only got dependency bumps via the next develop → main
# release, those consumers would ship outdated code in the interim.
#
# The merge-bot's `case` statement in
# .github/workflows/merge-bot-pull-request.yml dispatches the merge
# method per base ref (squash on develop, merge on main) so both bases
# auto-merge cleanly. `develop` remains strictly forward-only: there
# are no main → develop back-merges; each branch absorbs its own
# Dependabot PRs independently.
#
# Security update PRs (CVE-driven) are opened by Dependabot against
# the repo default branch (`main`) regardless of any `target-branch`
# config — the `case` statement handles them in the same code path.
version: 2
updates:

# main
- package-ecosystem: "nuget"
target-branch: "main"
directory: "/"
schedule:
interval: "daily"
groups:
nuget-deps:
patterns:
- "*"
- package-ecosystem: "github-actions"
target-branch: "main"
directory: "/"
schedule:
interval: "daily"
groups:
actions-deps:
patterns:
- "*"
# ----- nuget -----

# develop
- package-ecosystem: "nuget"
target-branch: "develop"
directory: "/"
schedule:
interval: "daily"
groups:
nuget-deps:
patterns:
- "*"
- package-ecosystem: "github-actions"
target-branch: "develop"
directory: "/"
schedule:
interval: "daily"
groups:
actions-deps:
patterns:
- "*"
- package-ecosystem: "nuget"
target-branch: "main"
directory: "/"
schedule:
interval: "daily"
groups:
nuget-deps:
patterns:
- "*"

- package-ecosystem: "nuget"
target-branch: "develop"
directory: "/"
schedule:
interval: "daily"
groups:
nuget-deps:
patterns:
- "*"

# ----- github-actions -----

- package-ecosystem: "github-actions"
target-branch: "main"
directory: "/"
schedule:
interval: "daily"
groups:
actions-deps:
patterns:
- "*"

- package-ecosystem: "github-actions"
target-branch: "develop"
directory: "/"
schedule:
interval: "daily"
groups:
actions-deps:
patterns:
- "*"
105 changes: 0 additions & 105 deletions .github/workflows/BuildPublishPipeline.yml

This file was deleted.

35 changes: 0 additions & 35 deletions .github/workflows/DependabotAutoMerge.yml

This file was deleted.

37 changes: 37 additions & 0 deletions .github/workflows/build-datebadge-task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build BYOB date badge task

on:
workflow_call:
inputs:
# Logical branch this badge run is for. The badge only updates on
# `main`; the publisher passes the branch explicitly so a scheduled
# run building `develop` doesn't try to write the main badge. Required
# (no `github.ref_name` fallback) so the gate can't silently misfire.
branch:
required: true
type: string

jobs:

date-badge:
name: Build BYOB date badge job
runs-on: ubuntu-latest

steps:

- name: Get current date step
id: date
run: |
set -euo pipefail
echo "date=$(date)" >> "$GITHUB_OUTPUT"

- name: Build BYOB date badge step
if: ${{ inputs.branch == 'main' }}
uses: RubbaBoy/BYOB@a4919104bc0ec7cfd7f113e42c405cc45246f2a4 # v1
with:
name: lastbuild
label: "Last Build"
icon: "github"
status: ${{ steps.date.outputs.date }}
color: "blue"
github_token: ${{ secrets.GITHUB_TOKEN }}
Loading