Runtime and build
- Move all projects to .NET 10 with SDK-style project files and a shared
Directory.Build.props (WIN/LINUX, x86/x64 defines)
- Load managed and unmanaged dependencies from libs/managed and
libs/unmanaged through assembly and native library resolvers
- Compile party modes with Roslyn instead of CodeDom
- Update AppVeyor to the .NET 10 SDK and dotnet test
- Download the FFmpeg and gstreamer runtimes from the dependencies
repository during the build
- Remove the VC++ 2015-2022 runtime check, no dependency needs it anymore
Graphics and windowing
- Replace the Direct3D 9 renderer with Direct3D 11 (Vortice)
- Pace Direct3D 11 frames with a frame latency waitable swap chain
- Move window, input and message boxes to SDL3
- Replace System.Drawing with SkiaSharp and WinForms with SDL3 and a
software renderer
Video and audio
- Replace Acinerella with FFmpeg 8.1.3 (FFmpeg.AutoGen)
- Add hardware accelerated video decoding (D3D11VA, DXVA2, VideoToolbox,
VAAPI, VDPAU) with software fallback
- Convert YUV video frames to RGB on the GPU in Direct3D 11 and OpenGL
- Add the video options HardwareDecoding, GpuColorConversion,
DecoderThreads and VideoDownscaleResolution
- Update OpenAL to OpenTK 4 and NAudio recording to WasapiRecorder
Fixes
- Fix the song preview start and shorten the reporter buttons
- Fix a crash when opening the highscore without a selected song
- Use the options slide highlight in the party mode screens to avoid
brightness flicker on VRR displays
- Disable GameInput in the x86 build, SDL3 crashes in GameInputCreate
on 32-bit systems with the GameInput runtime installed
- Fix a truncation warning in PitchTracker
* Apply R# clean-up for reliability
- Migrate to NUnit4 Assert.That
- Update dependencise versions
- Fix LangVersion to 9.0 (until net core migration)
- Reformat code
- Apply 'var' style (easier for refactoring)
- Remove redundant parentheses
- Add braces on every condition blocks (1 line)
- Uses new null checking patterns
- Uses AutoProperties when possible
- Uses string scalar type instead of class
- Clean usings
- Add .orig files in git ignore
- Rename some properties to respect defined conventions and US format definition
- ID -> Id
- BPM -> Bpm
- Finish -> End
* Update R# settings according to the clean-up made
* Add: Transifex file and renamed lang files
* Translate Vocaluxe/Website/locales/en.json in tr
100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'tr'.
* Translate Vocaluxe/Website/locales/en.json in es
100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'es'.
* Rename all language files to match transifex.
* Manual sync of translations
* Another manual sync of translations
* Adjust pr branch name
* Translate Output/Languages/en.xml in pt
97% of minimum 90% translated source file: 'Output/Languages/en.xml'
on 'pt'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate Output/Languages/en.xml in cs
96% of minimum 90% translated source file: 'Output/Languages/en.xml'
on 'cs'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate Output/Languages/en.xml in it
100% translated source file: 'Output/Languages/en.xml'
on 'it'.
* Translate Output/Languages/en.xml in ru
100% translated source file: 'Output/Languages/en.xml'
on 'ru'.
* Translate Output/Languages/en.xml in sv
100% translated source file: 'Output/Languages/en.xml'
on 'sv'.
* Translate Output/Languages/en.xml in de
100% translated source file: 'Output/Languages/en.xml'
on 'de'.
* Translate Output/Languages/en.xml in fr
100% translated source file: 'Output/Languages/en.xml'
on 'fr'.
* Translate Vocaluxe/Website/locales/en.json in hu
100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'hu'.
* Translate Vocaluxe/Website/locales/en.json in ru
100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'ru'.
* Fix: Unescape String during xml reading
* Translate Output/Languages/en.xml in ru
100% translated source file: 'Output/Languages/en.xml'
on 'ru'.
* Translate Output/Languages/en.xml in ru
100% translated source file: 'Output/Languages/en.xml'
on 'ru'.
* Translate Output/Languages/en.xml in ru
100% translated source file: 'Output/Languages/en.xml'
on 'ru'.
* Translate Output/Languages/en.xml in ru
100% translated source file: 'Output/Languages/en.xml'
on 'ru'.
* Fix: Seperate handling of unescaping
* Fix: Typo
* Fix: Typo
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>