Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
504 changes: 303 additions & 201 deletions .editorconfig

Large diffs are not rendered by default.

5 changes: 1 addition & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,4 @@
# These owners will be the default owners for everything in the repo. Unless a
# later match takes precedence, these users will be requested for review when
# someone opens a pull request.
* @scottoffen @sdoffen

# Recommendation: Use groups to define code owners, e.g.
# * @organization/team-name
* @scottoffen @sdoffen
104 changes: 104 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: 🐛 Bug report
description: Something reproducible that is broken and should be fixed.
labels: ["bug", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thanks for helping make FluentHttpClient better!
**Usage/how-to questions will be closed.** Please use Discussions or StackOverflow instead.

- type: checkboxes
id: preflight
attributes:
label: Before you submit
description: Please confirm the following.
options:
- label: I have searched existing Issues and Discussions.
required: true
- label: This is **not** a usage/how-to question.
required: true
- label: I have read the [contribution guidelines](https://github.com/scottoffen/fluenthttpclient/blob/main/CONTRIBUTING.md).
required: true

- type: input
id: fluenthttpclient-version
attributes:
label: FluentHttpClient Version
placeholder: e.g., 0.4.2 or commit SHA
validations:
required: true

- type: input
id: dotnet-version
attributes:
label: .NET SDK/Runtime Version
placeholder: e.g., .NET 8.0 or SDK 8.0.400
validations:
required: true

- type: input
id: os
attributes:
label: OS and Version
placeholder: e.g., Windows 11 24H2 / Ubuntu 24.04 / macOS 14.6
validations:
required: true

- type: textarea
id: other-stack
attributes:
label: Related Tooling / Libraries (optional)
description: If relevant, include DI container, logging framework, IDE, reverse proxy, etc.
placeholder: e.g., Microsoft.Extensions.DependencyInjection 8.0.0, Serilog 3.1, Rider 2024.2

- type: textarea
id: repro
attributes:
label: Minimal Reproducible Example
description: Provide the **smallest possible** code/config to reproduce. Link to a repo or include inline code.
render: csharp
placeholder: |
// minimal Program.cs or test demonstrating the issue
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to Reproduce
placeholder: |
1. ...
2. ...
3. ...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
placeholder: What should happen?
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
placeholder: What actually happens?
validations:
required: true

- type: textarea
id: logs
attributes:
label: Relevant Logs/Stack Traces (optional)
description: Redact secrets. Use backticks for code fences.
render: text

- type: textarea
id: screenshots
attributes:
label: Screenshots / Recordings (optional)
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: 📘 FluentHttpClient Documentation
url: https://scottoffen.github.io/fluenthttpclient
about: Start here. Many questions are answered in the official docs.
- name: 💬 Community Discussions
url: https://github.com/scottoffen/fluenthttpclient/discussions
about: Propose ideas, ask how-to questions, and get community help.
- name: "🙋 StackOverflow #fluenthttpclient"
url: https://stackoverflow.com/questions/tagged/fluenthttpclient?sort=newest
about: Ask/answer usage questions with the fluenthttpclient tag.
- name: 🔒 Report a security vulnerability
url: https://github.com/scottoffen/fluenthttpclient/security/advisories/new
about: Please report vulnerabilities privately rather than as a public issue.
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: 📖 Documentation update
description: Fix or improve documentation (READMEs or Docusaurus).
labels: ["documentation", "needs-triage"]
assignees: []
body:
- type: checkboxes
id: preflight
attributes:
label: Before you submit
options:
- label: I checked the latest published docs and the /docs source.
required: true
- label: I will keep the change clear, concise, and consistent with the existing documentation.
required: true

- type: textarea
id: location
attributes:
label: Affected pages/sections (optional)
description: Link the page(s) or file paths that need changes.
placeholder: /docs/getting-started.md

- type: textarea
id: change
attributes:
label: Proposed change
description: Be clear and concise. Include before/after snippets if helpful.
placeholder: |
**Before**
...
**After**
...
validations:
required: true
59 changes: 59 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: 💡 Feature request
description: Propose a change that improves FluentHttpClient.
labels: ["enhancement", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Please **start in Discussions first** to validate the idea with the community.
Create a feature request issue only after you've gathered positive feedback.

- type: checkboxes
id: preflight
attributes:
label: Before you submit
options:
- label: I have searched existing Issues and Discussions.
required: true
- label: I have read the [contribution guidelines](https://github.com/scottoffen/fluenthttpclient/blob/main/CONTRIBUTING.md).
required: true

- type: input
id: discussion-link
attributes:
label: Link to accepted Discussion
description: Paste the URL to the Discussion where consensus was reached.
placeholder: https://github.com/scottoffen/fluenthttpclient/discussions/123
validations:
required: true

- type: textarea
id: problem
attributes:
label: Problem Statement
description: Describe the **problem** this solves (not the solution).
placeholder: Users need to...
validations:
required: true

- type: textarea
id: proposal
attributes:
label: Proposed Solution
description: Outline how the solution would work at a high level.
placeholder: APIs, options, defaults, examples
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives Considered (optional)
placeholder: Why not X? What tradeoffs did you consider?

- type: textarea
id: breaking
attributes:
label: Breaking Changes / Migration (optional)
description: Describe any breaking changes and proposed migration path.
21 changes: 21 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Summary
<!-- Clear list of what you changed; one feature per PR. -->

## Related issue
<!-- Closes #___ (use Closes/Fixes/Resolves to auto-close on merge). -->

## Type
- [ ] Bug fix
- [ ] Feature
- [ ] Docs
- [ ] Other: ___

## Checklist
- [ ] Descriptive title and clear description
- [ ] Tests added/updated (xUnit + Shouldly + Moq if needed)
- [ ] Docs updated (if user-facing behavior changed)
- [ ] No cosmetic/whitespace-only changes
- [ ] Follows the [contribution guidelines](https://github.com/scottoffen/fluenthttpclient/blob/main/CONTRIBUTING.md) and C# conventions, with readability as a priority

## Notes
<!-- Breaking changes, migration notes, perf considerations, etc. -->
44 changes: 44 additions & 0 deletions .github/workflows/cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Cleanup prereleases from GitHub Packages. Delegates to the shared
# reusable workflow.
#
# Manual-only. Defaults to a dry run; the first run with any new mode or
# day count should always be a dry run so I can verify the list of
# versions about to be deleted before deletion actually happens.
name: Cleanup Prerelease Packages

on:
workflow_dispatch:
inputs:
mode:
description: 'Which versions to consider for deletion'
required: true
type: choice
default: prerelease-only
options:
- prerelease-only
- older-than-days
days:
description: 'For older-than-days mode: delete prereleases older than this many days'
required: false
type: number
default: 30
dry_run:
description: 'If true, lists what would be deleted without actually deleting'
required: false
type: boolean
default: true

concurrency:
group: cleanup-packages
cancel-in-progress: false

jobs:
cleanup:
uses: scottoffen/workflows/.github/workflows/dotnet-cleanup-packages.yml@v0
with:
mode: ${{ github.event.inputs.mode }}
days: ${{ fromJSON(github.event.inputs.days) }}
dry_run: ${{ github.event.inputs.dry_run == 'true' }}
package-names: |
FluentHttpClient
secrets: inherit
57 changes: 0 additions & 57 deletions .github/workflows/deploy-docs.yaml

This file was deleted.

34 changes: 34 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Build and deploy the Docusaurus documentation site to GitHub Pages.
# Delegates to the shared reusable workflow.
#
# One-time setup in this repo: Settings -> Pages -> Source -> "GitHub Actions".
# Without that, the deploy step fails.
name: Deploy Documentation

on:
workflow_dispatch:
push:
branches:
- main
# Only rebuild when docs content or this workflow itself changes.
# Source-code commits that don't touch docs won't trigger a deploy.
paths:
- 'docs/**'
- '.github/workflows/deploy-docs.yml'

jobs:
deploy:
uses: scottoffen/workflows/.github/workflows/docusaurus-deploy-pages.yml@v0
permissions:
contents: read
pages: write
id-token: write
# All defaults match the original workflow (docs path, Node 20, npm ci,
# npm run build), so most projects need no 'with:' block at all. Add
# inputs only if this repo deviates from the defaults, e.g.:
#
# with:
# docs-path: website
# node-version: '22'
# install-command: pnpm install --frozen-lockfile
# build-command: pnpm build
Loading