diff --git a/.gitattributes b/.gitattributes
index 1ff0c42..9cc14f1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,63 +1,6 @@
-###############################################################################
-# Set default behavior to automatically normalize line endings.
-###############################################################################
-* text=auto
+# Enforce LF line endings everywhere — oxfmt writes LF and is not configurable.
+# This prevents CRLF/LF churn on Windows checkouts.
+* text=auto eol=lf
-###############################################################################
-# Set default behavior for command prompt diff.
-#
-# This is need for earlier builds of msysgit that does not have it on by
-# default for csharp files.
-# Note: This is only used by command line
-###############################################################################
-#*.cs diff=csharp
-
-###############################################################################
-# Set the merge driver for project and solution files
-#
-# Merging from the command prompt will add diff markers to the files if there
-# are conflicts (Merging from VS is not affected by the settings below, in VS
-# the diff markers are never inserted). Diff markers may cause the following
-# file extensions to fail to load in VS. An alternative would be to treat
-# these files as binary and thus will always conflict and require user
-# intervention with every merge. To do so, just uncomment the entries below
-###############################################################################
-#*.sln merge=binary
-#*.csproj merge=binary
-#*.vbproj merge=binary
-#*.vcxproj merge=binary
-#*.vcproj merge=binary
-#*.dbproj merge=binary
-#*.fsproj merge=binary
-#*.lsproj merge=binary
-#*.wixproj merge=binary
-#*.modelproj merge=binary
-#*.sqlproj merge=binary
-#*.wwaproj merge=binary
-
-###############################################################################
-# behavior for image files
-#
-# image files are treated as binary by default.
-###############################################################################
-#*.jpg binary
-#*.png binary
-#*.gif binary
-
-###############################################################################
-# diff behavior for common document formats
-#
-# Convert binary document formats to text before diffing them. This feature
-# is only available from the command line. Turn it on by uncommenting the
-# entries below.
-###############################################################################
-#*.doc diff=astextplain
-#*.DOC diff=astextplain
-#*.docx diff=astextplain
-#*.DOCX diff=astextplain
-#*.dot diff=astextplain
-#*.DOT diff=astextplain
-#*.pdf diff=astextplain
-#*.PDF diff=astextplain
-#*.rtf diff=astextplain
-#*.RTF diff=astextplain
+# Lockfiles — keep LF, mark as generated for diff/PR collapsing
+pnpm-lock.yaml -diff linguist-generated=true
\ No newline at end of file
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index 5e9a5b4..7ccb2f2 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -8,6 +8,10 @@ on:
- "workflow"
paths-ignore:
- "**.md"
+ - ".agents/**"
+ - ".claude/**"
+ - ".codex/**"
+ - "skills-lock.json"
workflow_dispatch:
inputs:
@@ -28,14 +32,20 @@ permissions:
packages: write # required for package publish
pull-requests: write # required for release PR creation
+concurrency:
+ group: package-release-${{ github.repository }}
+ cancel-in-progress: false
+ queue: max
+
jobs:
publish:
name: Publish
if: |
- contains(fromJSON('["main", "workflow"]'), github.ref_name) ||
- startsWith(github.ref_name, 'v') ||
- github.event.inputs.publish == 'true'
- uses: sketch7/.github/.github/workflows/dotnet-publish.yml@dotnet-libs-v2
+ (github.event_name != 'push' || github.event.created == false) &&
+ (contains(fromJSON('["main", "workflow"]'), github.ref_name) ||
+ startsWith(github.ref_name, 'v') ||
+ github.event.inputs.publish == 'true')
+ uses: sketch7/.github/.github/workflows/dotnet-publish.yml@dotnet-libs-v3
with:
force-preid: ${{ github.event.inputs.force-prerelease == 'true' }}
secrets:
@@ -49,7 +59,7 @@ jobs:
needs.publish.result == 'success' &&
github.event_name == 'push' &&
github.ref_name == 'main'
- uses: sketch7/.github/.github/workflows/prepare-release.yml@release-v1
+ uses: sketch7/.github/.github/workflows/prepare-release.yml@release-v2
with:
base-version: ${{ needs.publish.outputs.baseVersion }}
secrets:
@@ -58,11 +68,8 @@ jobs:
release:
name: Release
needs: publish
- # Only when a stable (non-prerelease) version was published — i.e. on push to v* branches
- if: |
- needs.publish.result == 'success' &&
- !fromJSON(needs.publish.outputs.isPrerelease)
- uses: sketch7/.github/.github/workflows/create-release.yml@release-v1
+ if: needs.publish.result == 'success'
+ uses: sketch7/.github/.github/workflows/create-release.yml@release-v2
with:
version: ${{ needs.publish.outputs.version }}
@@ -74,6 +81,8 @@ jobs:
needs.release.result == 'success' &&
needs.release.outputs.is-latest == 'true' &&
github.event_name == 'push'
- uses: sketch7/.github/.github/workflows/node-bump-main.yml@release-v1
+ uses: sketch7/.github/.github/workflows/node-bump-main.yml@release-v2
with:
released-version: ${{ needs.publish.outputs.version }}
+ secrets:
+ token: ${{ secrets.GH_PAT }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 25dcf01..75a8807 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,18 +3,25 @@ name: CI
on:
push:
branches:
- - main
- - "v*"
- "workflow"
paths-ignore:
- "**.md"
+ - ".agents/**"
+ - ".claude/**"
+ - ".codex/**"
+ - "skills-lock.json"
pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
branches:
- main
- "v*"
paths-ignore:
- "**.md"
+ - ".agents/**"
+ - ".claude/**"
+ - ".codex/**"
+ - "skills-lock.json"
permissions:
contents: read
@@ -25,4 +32,4 @@ permissions:
jobs:
ci:
name: dotnet ci
- uses: sketch7/.github/.github/workflows/dotnet-ci.yml@dotnet-libs-v2
+ uses: sketch7/.github/.github/workflows/dotnet-ci.yml@dotnet-libs-v3
diff --git a/.gitignore b/.gitignore
index 7d492c7..fec8a88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,16 +1,12 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# repo
-BenchmarkDotNet.Artifacts/
# User-specific files
*.suo
*.user
*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
# Build results
[Dd]ebug/
@@ -19,15 +15,71 @@ BenchmarkDotNet.Artifacts/
[Rr]eleases/
x64/
x86/
+build/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
+dist/
+dist-server/
+
+# sourcegen files
+**/Views/Home/Index.cshtml
+svg.config.g.ts
+# /wwwroot/dist/
+# /apps/**/dist/
+# apps/**/libraries/*
+publish/
+*.g.cs
+
+
+# Orleans
+orleans.codegen.cs
-# Visual Studio 2015 cache/options directory
+
+# Node
+node_modules
+npm-debug.log
+.nx/cache
+.nx/polygraph
+.nx/workspace-data
+.nx/self-healing
+.nx/migrate-runs
+.sass-cache/
+.eslintcache
+.angular
+
+# IDEs and editors
+.idea/
+.project
+.classpath
+*.launch
+.settings/
.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
+
+
+# AI
+.cursor\rules\nx-rules.mdc
+.github\instructions\nx.instructions.md
+.worktrees/
+.claude/worktrees
+.claude/settings.local.json
+# Skills CLI derived/machine-local output (regenerate with: npx skills experimental_install)
+.claude/skills/
+.codebase-memory/
+agent/
+.superpowers
+.playwright-mcp
+
+
+# Visual Studio Code
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+!.vscode/mcp.json
+.history/*
# MSTest test Results
[Tt]est[Rr]esult*/
@@ -42,11 +94,6 @@ TestResult.xml
[Rr]eleasePS/
dlldata.c
-# DNX
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
*_i.c
*_p.c
*_i.h
@@ -72,117 +119,42 @@ artifacts/
*.svclog
*.scc
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
# DotCover is a Code Coverage Tool
*.dotCover
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
-#*.pubxml
+*.pubxml
*.publishproj
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
# NuGet Packages
*.nupkg
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/packages/*
-# except build/, which is used as an MSBuild target.
!**/packages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
-# NuGet v3's project.json files produces more ignoreable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-# Microsoft Azure Emulator
-ecf/
-rcf/
+# Published artifacts (Aspire)
+artifacts/
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
+# BenchmarkDotNet generated output
+BenchmarkDotNet.Artifacts/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
+*.lscache
# but keep track of directories ending in .cache
!*.[Cc]ache/
@@ -192,18 +164,9 @@ ClientBin/
*~
*.dbmdl
*.dbproj.schemaview
-*.jfm
*.pfx
*.publishsettings
-node_modules/
-orleans.codegen.cs
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
+project.lock.json
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
@@ -217,48 +180,7 @@ UpgradeLog*.htm
*.mdf
*.ldf
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# JetBrains Rider
-.idea/
-*.sln.iml
-
-# CodeRush
-.cr/
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
\ No newline at end of file
+# System files
+.DS_Store
+Thumbs.db
+nul
diff --git a/Directory.Packages.props b/Directory.Packages.props
index d92e5be..40b43f8 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -19,7 +19,7 @@
-
+
diff --git a/FluentlyHttpClient.slnx b/FluentlyHttpClient.slnx
index b4f6c02..1468200 100644
--- a/FluentlyHttpClient.slnx
+++ b/FluentlyHttpClient.slnx
@@ -17,8 +17,6 @@
-
-
diff --git a/package.json b/package.json
index c1418d4..3c42c16 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,7 @@
{
"name": "@sketch7/fluently-http-client",
"version": "5.1.0",
+ "dotnetBuildSln": "./FluentlyHttpClient.slnx",
"scripts": {
"pack": "bash ./tools/pack.sh",
"prepublish:dev": "npm run pack",