## Build results
[Bb]in/
[Oo]bj/
[Oo]ut/
[Ll]og/
[Ll]ogs/
# artifacts/* rather than artifacts/ — git does not descend into an excluded directory,
# so a negation under a directory-level ignore never matches. The committed OpenAPI
# document and schema snapshots live here and are CI-diffed.
artifacts/*
!artifacts/openapi/
!artifacts/schema/

## .NET / MSBuild
*.user
*.suo
*.userosscache
*.sln.docstates
project.lock.json
project.fragment.lock.json
*.binlog
*.nuget.props
*.nuget.targets
msbuild.log
msbuild.err
msbuild.wrn

## NuGet
*.nupkg
*.snupkg
.nuget/
**/packages/*
!**/packages/build/
# packages.lock.json IS committed — restore --locked-mode depends on it

## Test / coverage
[Tt]est[Rr]esult*/
coverage*.json
coverage*.xml
coverage*.info
*.coverage
*.coveragexml
TestResults/
BenchmarkDotNet.Artifacts/

## IDEs
.vs/
.vscode/*
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/tasks.json
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries/
.idea/**/shelf/
.idea/**/contentModel.xml
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/httpRequests/
*.DotSettings.user

## OS
.DS_Store
Thumbs.db
desktop.ini

## Node (xterm.js bundle in DodoSSH.Client.WebAssets)
node_modules/
npm-debug.log*
yarn-error.log*
.pnpm-store/

## Client build / packaging output
publish/
Releases/
*.AppImage
*.dmg
*.deb
*.rpm
*.msix
*.appinstaller

## Secrets and local config — never commit these
*.pfx
*.p12
*.snk
appsettings.Local.json
appsettings.*.Local.json
.env
.env.*
!deploy/.env.example
secrets/
