Skip to content

upgrade to Dotnet10#1081

Open
ValiOff8 wants to merge 8 commits into
Splamy:masterfrom
ValiOff8:dotnet10
Open

upgrade to Dotnet10#1081
ValiOff8 wants to merge 8 commits into
Splamy:masterfrom
ValiOff8:dotnet10

Conversation

@ValiOff8
Copy link
Copy Markdown

This pull request migrates TS3AudioBot to .NET 10 and fixes the main compatibility issues needed to build, run, publish, and test the project on the new runtime.

Fixed / improved:

.NET 10 migration
Updated the project to target .NET 10 and fixed build/runtime compatibility issues.
Publishing compatibility
Web API compatibility
Adjusted response handling for newer Kestrel behavior.
Linux and Docker support
WebInterface build
Added/fixed WebInterface build support in the Docker workflow.
Fixed YouTube playback by using yt-dlp and improved handling of yt-dlp warnings.
Dependency updates
Updated outdated dependencies required for compatibility and security.

Tested with .NET 10:
restore
build
tests
Windows publish
Linux publish
Docker runtime
WebInterface build
basic bot functionality

The goal of this pull request is to keep the existing TS3AudioBot behavior unchanged while making the project work correctly on .NET 10.

ValiOff8 added 8 commits May 14, 2026 00:46
Update project target frameworks and required hosting references for .NET 10 compatibility.

Preserve existing bot, plugin, Web API, config, persistence, and WebInterface behavior while fixing version generation, RID publishes, and the local WebInterface build on current Node/OpenSSL.
Upgrade SixLabors.ImageSharp from 1.0.4 to 2.1.11.

Preserve existing image handling behavior.

Verify build, tests, win-x64 publish, and linux-x64 publish.

Confirm ImageSharp vulnerability warning is cleared.

Leave LiteDB unchanged for compatibility reasons.
- Use async response writing for Web API responses under Kestrel
- Avoid disposing ASP.NET Core response.Body during streamed responses
- Fix runtime detection for self-contained .NET 10 publishes
- Add regression tests for the .NET 10 Web API and runtime detection fixes
- Update AppVeyor to run restore, build, and tests before publish
- Verify build, tests, version run, win-x64 publish, and linux-x64 publish
On Debian and similar distros, only the versioned soname libopus.so.0
is installed by default. The unversioned libopus.so symlink requires
libopus-dev. Register a DllImportResolver on Linux that tries
libopus.so.0 before falling back to default resolution.
Windows behavior is unchanged.
- Multi-stage Dockerfile: sdk:10.0 build -> debian:trixie-slim runtime
- Runtime installs libopus0 and ffmpeg via apt-get
- docker-compose.yml wires ts3server + bot services with named volume
- docker/config/ts3audiobot.toml: main bot config (API on 58913)
- docker/config/bots/bot0.toml: bot instance (run=true, address=ts3server:9987)
- Dockerfile: add node:18-slim stage to build WebInterface/dist -> /app/WebInterface
- Dockerfile: add libicu-dev to runtime stage (.NET globalization requirement)
- TsDnsResolver: fall through to system DNS for single-label hostnames (fixes Docker service name resolution)
- docker/config/bots: restructure to bots/bot0/bot.toml subdirectory layout (required by bot)
- docker/config/bots/bot0/bot.toml: remove [bot] wrapper, use flat ConfBot root fields
- docker-compose.yml: fix image name teamspeak/teamspeak3-server -> teamspeak
- Dockerfile: add yt-dlp to runtime apt packages
- ts3audiobot.toml: set youtube-dl path to /usr/bin/yt-dlp, switch
  prefer_resolver to YoutubeDl (internal resolver uses deprecated
  get_video_info endpoint and always fails)
- bot0/bot.toml: add 'yt = play' alias so !yt routes to play instead
  of fuzzy-matching 'system quit' via ic3 (y+t appear at index 1,3
  in 'system quit', beating all other commands)
yt-dlp writes WARNING: lines to stderr during nsig fallback even when
it succeeds. The old check (any stderr = error) would throw on these.

Also, --no-warnings suppressed the nsig fallback mechanism itself,
causing YouTube bot-detection errors instead.

- Remove --no-warnings from ParamGetSingleVideo
- Only treat ERROR:-prefixed stderr lines as fatal; log WARNING: lines
  at debug level and continue
- Add System.Linq import for the Where/ToList filter
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
2 Security Hotspots
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Comment thread Dockerfile
FROM node:18-slim AS webui
WORKDIR /webui
COPY WebInterface/package*.json ./
RUN npm ci
@Citr0s
Copy link
Copy Markdown

Citr0s commented May 19, 2026

That's an awesome change! I would love to contribute as well with some QoL changes once this is merged. Dark mode is top of my list right now 👀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants