Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
9e2fa65
Add Swagger UI Extensions: API Counter for Swashbuckle/NSwag
teociaps Feb 3, 2026
5229ad9
Add Swagger UI Extensions: API Counter for Swashbuckle/NSwag
teociaps Feb 3, 2026
6d49986
Merge branch 'new-extensions' of https://github.com/teociaps/SwaggerU…
teociaps Feb 5, 2026
b51f7a3
fix(core): make theme and endpoint registries thread-safe
teociaps Aug 10, 2026
3270f5f
perf(core): replace per-asset middleware chain with single dispatch t…
teociaps Aug 10, 2026
3b92082
fix(core): scope theme dispatch table per app and restore WebApplicat…
teociaps Aug 10, 2026
01e7da5
feat(themes): persist pinnable topbar state to localStorage
teociaps Aug 10, 2026
04ae318
ci: parameterize deploy.ps1 by package family, switch to themes-v*/ex…
teociaps Aug 10, 2026
a88eba3
refactor(themes): unify pinnable topbar state application into one fu…
teociaps Aug 10, 2026
0dae4fe
ci: harden tag parsing and update Build trigger for the new tag conve…
teociaps Aug 10, 2026
d22e545
feat(themes): add pinnable filter bar with offset-stacking CSS refactor
teociaps Aug 11, 2026
0cc2b8e
fix(themes): correct sticky-offset comment, style the filter pin butt…
teociaps Aug 11, 2026
880877b
feat(nswag): add EnableFilter() and EnableFilter(bool pinned)
teociaps Aug 11, 2026
2482a54
feat(swashbuckle): add EnableFilter(bool pinned) overload
teociaps Aug 11, 2026
b64889c
fix(nswag): use TryAdd for the filter AdditionalSettings key
teociaps Aug 11, 2026
a94e432
test(swashbuckle): cover both branches of EnableFilter(bool pinned)
teociaps Aug 11, 2026
ab85681
docs: document pin persistence, pinnable filter bar, and release note…
teociaps Aug 11, 2026
9c2791c
docs: fix v3.1 release notes formatting and cover NSwag filter suppor…
teociaps Aug 11, 2026
9183355
style(themes): deduplicate pin-button CSS shared between topbar and f…
teociaps Aug 11, 2026
51b24d9
Update NuGet package versions across projects
teociaps Aug 13, 2026
0cbe2bf
fix(themes): rename 'pinned' param to 'pinnable' for filter bar, enha…
teociaps Aug 13, 2026
1135cdd
docs(extensions): align package-readme/readme.txt style with Themes p…
teociaps Aug 13, 2026
6a32bbd
docs(extensions): drop cross-generator Extensions package from Relate…
teociaps Aug 13, 2026
886893d
chore(themes): bump version to 3.1.0
teociaps Aug 13, 2026
f54d36c
assets: add pinnable-filter-bar.gif for docs
teociaps Aug 13, 2026
a186a4f
fix(themes): remove duplicated API Counter feature from Themes packages
teociaps Aug 14, 2026
94903fd
chore(samples): drop API Counter calls from Themes samples
teociaps Aug 14, 2026
5dd93c4
fix(ci): loop dotnet test over each matched test project
teociaps Aug 14, 2026
a50845f
fix(ci): re-run Build/Test on new commits pushed to an open PR
teociaps Aug 14, 2026
45dee6f
ci(deploy): migrate NuGet push to Trusted Publishing (OIDC)
teociaps Aug 14, 2026
c0a274f
fix(extensions): stop Debug builds from inheriting the Themes package…
teociaps Aug 14, 2026
65f22cc
fix(extensions): support Microsoft.OpenApi v2 (Swashbuckle.AspNetCore…
teociaps Aug 17, 2026
37a8b34
fix(themes): hide Swashbuckle 10.x's native dark-mode toggle
teociaps Aug 17, 2026
8d1752a
fix(themes): fix filter-bar pin race condition and dark-mode class leak
teociaps Aug 17, 2026
774cf96
docs: link the wiki's new Troubleshooting page from README and readme…
teociaps Aug 18, 2026
c1c67fa
chore(build): split package versioning into per-family props files
teociaps Aug 18, 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
147 changes: 147 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
name: "?? Bug Report"
description: "Report a bug or issue with SwaggerUI.Themes or SwaggerUI.Extensions"
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thank you for reporting an issue! Please fill out the information below to help us investigate.

- type: dropdown
id: package_type
attributes:
label: "Package Type"
description: "Which type of package are you reporting an issue with?"
options:
- "Theme (AspNetCore.SwaggerUI.Themes)"
- "Theme (NSwag.AspNetCore.Themes)"
- "Extension (AspNetCore.SwaggerUI.Extensions)"
- "Extension (NSwag.AspNetCore.Extensions)"
- "Common (AspNetCore.Swagger.Themes.Common)"
- "Unsure"
validations:
required: true

- type: dropdown
id: integration
attributes:
label: "Integration Framework"
description: "Which Swagger integration are you using?"
options:
- "Swashbuckle.AspNetCore"
- "NSwag.AspNetCore"
- "Both"
- "Not applicable"
validations:
required: true

- type: input
id: dotnet_version
attributes:
label: ".NET Version"
description: "Which .NET version are you using? (e.g., 8.0, 9.0, 10.0)"
placeholder: "e.g., 8.0"
validations:
required: true

- type: input
id: package_version
attributes:
label: "Package Version"
description: "Which version of the package are you using?"
placeholder: "e.g., 3.0.0"
validations:
required: true

- type: textarea
id: description
attributes:
label: "Description"
description: "Clear and concise description of the bug"
placeholder: "What happened?"
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: "Steps to Reproduce"
description: "Step-by-step instructions to reproduce the issue"
placeholder: |
1. Configure the package with...
2. Navigate to...
3. See error...
validations:
required: true

- type: textarea
id: expected_behavior
attributes:
label: "Expected Behavior"
description: "What should happen?"
placeholder: "Describe the expected behavior"
validations:
required: true

- type: textarea
id: actual_behavior
attributes:
label: "Actual Behavior"
description: "What actually happens?"
placeholder: "Describe what actually happens"
validations:
required: true

- type: dropdown
id: browser
attributes:
label: "Browser (if UI-related)"
description: "Which browser are you using? (Only relevant for theme/UI issues)"
options:
- "Chrome"
- "Firefox"
- "Safari"
- "Edge"
- "Other"
- "Not applicable"

- type: textarea
id: code_snippet
attributes:
label: "Code Snippet"
description: "Relevant code that demonstrates the issue (optional)"
render: csharp
placeholder: |
// Your code here
app.UseSwaggerUI(Theme.Dark);

- type: textarea
id: error_logs
attributes:
label: "Error Logs or Stack Trace"
description: "Any relevant error messages or stack traces (optional)"
render: plain_text

- type: textarea
id: screenshots
attributes:
label: "Screenshots"
description: "Screenshots showing the issue (optional, for UI-related issues)"

- type: textarea
id: additional_context
attributes:
label: "Additional Context"
description: "Any other information that might be helpful"
placeholder: "Add any other context about the problem here"

- type: checkboxes
id: checklist
attributes:
label: "Verification"
options:
- label: "I have searched existing issues and found no duplicates"
required: true
- label: "I have provided clear reproduction steps"
required: true
- label: "I have included relevant error messages or logs"
9 changes: 8 additions & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
blank_issues_enabled: true
blank_issues_enabled: false
contact_links:
- name: "❓ Ask a Question"
url: "https://github.com/teociaps/SwaggerUI.Themes/discussions"
about: "Have a question or want to discuss? Use GitHub Discussions!"
- name: "📚 View Documentation"
url: "https://github.com/teociaps/SwaggerUI.Themes/wiki"
about: "Check the wiki for comprehensive documentation and guides"
105 changes: 105 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: "? Feature Request"
description: "Suggest a new feature or enhancement for SwaggerUI.Themes or SwaggerUI.Extensions"
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thank you for suggesting a feature! Please provide details to help us understand your idea.

- type: dropdown
id: feature_type
attributes:
label: "Feature Type"
description: "What category is your feature request for?"
options:
- "Theme (visual/styling enhancement)"
- "Extension (functional capability)"
- "Documentation"
- "Developer Experience"
- "Other"
validations:
required: true

- type: dropdown
id: package_scope
attributes:
label: "Package Scope"
description: "Which packages should this feature apply to?"
options:
- "Swashbuckle only (AspNetCore.SwaggerUI.*)"
- "NSwag only (NSwag.AspNetCore.*)"
- "Both Swashbuckle and NSwag"
- "Common/Shared"
- "Not sure"
validations:
required: true

- type: textarea
id: problem
attributes:
label: "Problem Statement"
description: "What problem does this feature solve? What is the use case?"
placeholder: |
Current situation: ...
Problem: ...
Why this matters: ...
validations:
required: true

- type: textarea
id: solution
attributes:
label: "Proposed Solution"
description: "Describe how you envision this feature working"
placeholder: |
Describe the ideal behavior/UI/API
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: "Alternative Solutions"
description: "Are there any alternative approaches? (optional)"
placeholder: "Have you considered other ways to solve this?"

- type: textarea
id: example_usage
attributes:
label: "Example Usage"
description: "How would users interact with this feature? (optional)"
render: csharp
placeholder: |
// Example code showing how the feature would be used
app.UseSwaggerUI(Theme.Dark, c =>
{
c.MyNewFeature();
});

- type: textarea
id: design_considerations
attributes:
label: "Design Considerations"
description: "Any thoughts on API design, backward compatibility, or performance? (optional)"
placeholder: "Backward compatibility impact, performance considerations, naming suggestions, etc."

- type: checkboxes
id: checklist
attributes:
label: "Verification"
options:
- label: "I have searched existing feature requests and found no duplicates"
required: true
- label: "This feature aligns with the project scope"
required: true

- type: textarea
id: additional_context
attributes:
label: "Additional Context"
description: "Any other information or references? (optional)"
placeholder: |
- Related issues: #123
- Similar features in other projects: ...
- References: ...
67 changes: 67 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: "? Question/Discussion"
description: "Ask a question or start a discussion about using the packages"
labels: ["question"]
body:
- type: markdown
attributes:
value: |
Have a question about how to use SwaggerUI.Themes or SwaggerUI.Extensions? Please ask away!

- type: dropdown
id: package_type
attributes:
label: "Package"
description: "Which package is your question about?"
options:
- "AspNetCore.SwaggerUI.Themes"
- "NSwag.AspNetCore.Themes"
- "AspNetCore.SwaggerUI.Extensions"
- "NSwag.AspNetCore.Extensions"
- "General/Not sure"
validations:
required: true

- type: input
id: dotnet_version
attributes:
label: ".NET Version"
description: "Which .NET version are you using?"
placeholder: "e.g., 8.0, 9.0, 10.0"

- type: input
id: package_version
attributes:
label: "Package Version"
description: "Which version of the package are you using?"
placeholder: "e.g., 3.0.0"

- type: textarea
id: question
attributes:
label: "Your Question"
description: "What would you like to know?"
placeholder: "Ask your question here..."
validations:
required: true

- type: textarea
id: context
attributes:
label: "Context"
description: "What are you trying to achieve? Include any relevant code."
render: csharp
placeholder: |
// Your code/setup here

- type: textarea
id: what_you_tried
attributes:
label: "What Have You Tried?"
description: "What solutions have you already attempted?"
placeholder: "Describe any troubleshooting steps you've already taken"

- type: textarea
id: additional_info
attributes:
label: "Additional Information"
description: "Any other details that might be helpful? (optional)"
65 changes: 65 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
## Description

<!-- Briefly describe your changes -->

## Type of Change

- [ ] ?? **Theme** (visual/styling updates)
- [ ] ?? **Extension** (functional capability)
- [ ] ?? **Documentation** (docs/comments only)
- [ ] ?? **Bug Fix** (fixes an issue)
- [ ] ?? **Refactoring** (internal improvements)
- [ ] ?? **Tests** (test updates/additions)

## Related Issue

Fixes #<!-- issue number --> or Relates to #<!-- issue number -->

## Package(s) Affected

- [ ] AspNetCore.SwaggerUI.Themes
- [ ] NSwag.AspNetCore.Themes
- [ ] AspNetCore.SwaggerUI.Extensions
- [ ] NSwag.AspNetCore.Extensions
- [ ] AspNetCore.Swagger.Themes.Common

## Testing

Please describe the testing done to verify this change:

<!-- Describe testing approach -->

- [ ] I have built the solution (`dotnet build -c Release`)
- [ ] I have run the test suite (`dotnet test`)
- [ ] I have tested with relevant sample projects
- [ ] All changes work across .NET 8, 9, and 10 (if applicable)

## Checklist

- [ ] My code follows the style guidelines of this project
- [ ] I have added/updated tests for my changes
- [ ] I have updated relevant documentation (README, CONTRIBUTING, wiki, etc.)
- [ ] My changes do not break any existing functionality
- [ ] I have verified no new compiler warnings are introduced

## Theme-Specific (if applicable)

- [ ] Minified CSS/JS files have been updated
- [ ] Minified file headers are correctly formatted (`/*Name*/...`)
- [ ] All placeholders (e.g., `{$THEME_SWITCHER}`) are preserved in minified files
- [ ] Theme is discoverable and testable

## Extension-Specific (if applicable)

- [ ] Implementation exists for both Swashbuckle and NSwag (if cross-platform)
- [ ] Extension works independently and with other extensions
- [ ] Tests cover the new functionality
- [ ] Sample applications demonstrate the feature

## Screenshots/Demo

<!-- If applicable, add screenshots or demonstration GIFs -->

## Additional Context

<!-- Add any other context or notes here -->
Loading
Loading