diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml new file mode 100644 index 000000000..8f20683b6 --- /dev/null +++ b/.github/workflows/build-release.yaml @@ -0,0 +1,319 @@ +name: Build chiaki-ng weekly + +on: + push: + tags: [ 'v*.*.*' ] + +jobs: + create-release: + name: Upload release + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + - name: generate release notes + working-directory: chiaki-ng + run: | + echo -e "Linux Flatpak Release on Flathub as io.github.streetpea.Chiaki4deck\n" > release_notes.md + echo -e "Use brew to manage updates for the MacOS release with:\n" >> release_notes.md + echo -e "brew install --cask streetpea/streetpea/chiaki-ng\n" >> release_notes.md + echo -e "Windows Release, MacOS Release, and Linux Appimage Release attached.\n" >> release_notes.md + echo -e "Note: Pipewire required for appimage. For Linux pipewire is required for DualSense haptics.\nFor flatpak you can run with --env=SDL_AUDIODRIVER=pulse to use pulse instead of pipewire if you really want that (doing this means DualSense haptics won't work)\n" >> release_notes.md + echo -e "## Updates\n" >> release_notes.md + git tag -l --format='%(contents)' ${GITHUB_REF_NAME} >> release_notes.md + + - uses: ncipollo/release-action@v1 + id: maker + working-directory: chiaki-ng + with: + prerelease: false + allowUpdates: true + bodyFile: release_notes.md + outputs: + upload_url: ${{ steps.maker.outputs.upload_url }} + + build-win_x64: + name: Build chiaki-ng win_x64 (VC) + runs-on: windows-latest + permissions: + contents: write + needs: create-release + env: + CC: clang-cl.exe + CXX: clang-cl.exe + VULKAN_SDK: C:\VulkanSDK\ + triplet: x64-windows + vcpkg_baseline: 42bb0d9e8d4cf33485afb9ee2229150f79f61a1f + VCPKG_INSTALLED_DIR: ./vcpkg_installed/ + dep_folder: deps + libplacebo_tag: v7.349.0 + + defaults: + run: + shell: powershell + + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: Setup Vulkan + run: | + $ProgressPreference = 'SilentlyContinue' + $ver = (Invoke-WebRequest -Uri "https://vulkan.lunarg.com/sdk/latest.json" | ConvertFrom-Json).windows + echo Version $ver + Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/$ver/windows/VulkanSDK-$ver-Installer.exe" -OutFile VulkanSDK.exe + echo Downloaded + .\VulkanSDK.exe --root ${{ env.VULKAN_SDK }} --accept-licenses --default-answer --confirm-command install + + - name: Set up Ninja + run: choco install ninja + + - name: Set up Clang + uses: egor-tensin/setup-clang@v1 + with: + version: 18 + + - name: Setup MSVC + uses: ilammy/msvc-dev-cmd@v1 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + architecture: "x64" + + - name: Install pip dependencies + run: | + python3 -m pip install --upgrade pip + python3 -m pip install --upgrade setuptools wheel + python3 -m pip install --user --upgrade scons protobuf grpcio-tools pyinstaller + python3 -m pip install --user --upgrade meson + python3 -c 'import google.protobuf; print(google.protobuf.__file__)' + + - name: Setup Qt + uses: jurplel/install-qt-action@v4 + with: + version: "6.7.*" + host: 'windows' + target: 'desktop' + modules: 'qtwebengine qtpositioning qtwebchannel qtwebsockets qtserialport' + + - name: Setup ffmpeg + run: | + $ProgressPreference = 'SilentlyContinue' + Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/r52/FFmpeg-Builds/releases/download/latest/ffmpeg-n7.1-latest-win64-gpl-shared-7.1.zip" -OutFile ".\ffmpeg-n7.1-latest-win64-gpl-shared-7.1.zip" + Expand-Archive -LiteralPath "ffmpeg-n7.1-latest-win64-gpl-shared-7.1.zip" -DestinationPath "." + Rename-Item "ffmpeg-n7.1-latest-win64-gpl-shared-7.1" "${{ env.dep_folder }}" + + - name: Build SPIRV-Cross + run: | + git clone https://github.com/KhronosGroup/SPIRV-Cross.git + cd SPIRV-Cross + cmake ` + -DCMAKE_BUILD_TYPE=Release ` + -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}\${{ env.dep_folder }}" ` + -DSPIRV_CROSS_SHARED=ON ` + -S . ` + -B build ` + -G Ninja + cmake --build build --config Release + cmake --install build + + - name: Setup shaderc + run: | + $ProgressPreference = 'SilentlyContinue' + $url = ((Invoke-WebRequest -UseBasicParsing -Uri "https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2019_release.html").Content | Select-String -Pattern 'url=(.*)"').Matches.Groups[1].Value + Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile .\shaderc.zip + Expand-Archive -LiteralPath "shaderc.zip" -DestinationPath "." + cp "./install/*" "./${{ env.dep_folder }}" -Force -Recurse + rm "./install" -r -force + + - name: Setup vcpkg + uses: lukka/run-vcpkg@v11 + with: + vcpkgGitCommitId: ${{ env.vcpkg_baseline }} + runVcpkgInstall: true + vcpkgJsonGlob: "vcpkg.json" + + - name: Build libplacebo + run: | + git clone --recursive https://github.com/haasn/libplacebo.git + cd libplacebo + git checkout --recurse-submodules ${{ env.libplacebo_tag }} + meson setup ` + --prefix "${{ github.workspace }}\${{ env.dep_folder }}" ` + --native-file ../meson.ini ` + "--pkg-config-path=['${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\lib\pkgconfig','${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\share\pkgconfig','${{ github.workspace }}\${{ env.dep_folder }}\lib\pkgconfig']" ` + "--cmake-prefix-path=['${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}', '${{ env.VULKAN_SDK }}', '${{ github.workspace }}\${{ env.dep_folder }}']" ` + -Dc_args="/I ${{ env.VULKAN_SDK }}Include" ` + -Dcpp_args="/I ${{ env.VULKAN_SDK }}Include" ` + -Dc_link_args="/LIBPATH:${{ env.VULKAN_SDK }}Lib" ` + -Dcpp_link_args="/LIBPATH:${{ env.VULKAN_SDK }}Lib" ` + -Ddemos=false ` + ./build + ninja -C./build + ninja -C./build install + + - name: Apply Patches + run: | + git apply --ignore-whitespace --verbose --directory=third-party/gf-complete/ scripts/windows-vc/gf-complete.patch + git apply --ignore-whitespace --verbose scripts/windows-vc/libplacebo-pc.patch + + - name: Configure chiaki-ng + run: | + cmake ` + -S . ` + -B build ` + -G Ninja ` + -DCMAKE_TOOLCHAIN_FILE:STRING="vcpkg/scripts/buildsystems/vcpkg.cmake" ` + -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE ` + -DCMAKE_BUILD_TYPE=Release ` + -DCHIAKI_ENABLE_CLI=OFF ` + -DCHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER=ON ` + -DCHIAKI_ENABLE_STEAMDECK_NATIVE=OFF ` + -DCHIAKI_ENABLE_STEAM_SHORTCUT=OFF ` + -DPYTHON_EXECUTABLE="${{ env.pythonLocation }}\python.exe" ` + -DCMAKE_PREFIX_PATH="${{ github.workspace }}\${{ env.dep_folder }};${{ env.VULKAN_SDK }}" + + - name: Build chiaki-ng + run: | + cmake --build build --config Release --clean-first --target chiaki + + - name: Prepare Qt deployment package + run: | + mkdir chiaki-ng-Win + cp build\gui\chiaki.exe chiaki-ng-Win + cp scripts\qtwebengine_import.qml gui\src\qml\ + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libcrypto-*-x64.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libssl-*-x64.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\SDL2.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\hidapi.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\fftw3.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\opus.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libspeexdsp.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\lcms2.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\miniupnpc.dll" chiaki-ng-Win + cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\json-c.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\swresample-*.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avcodec-*.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avutil-*.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avformat-*.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\libplacebo-*.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\shaderc_shared.dll" chiaki-ng-Win + cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\spirv-cross-c-shared.dll" chiaki-ng-Win + windeployqt.exe --no-translations --qmldir=gui\src\qml --release chiaki-ng-Win\chiaki.exe + + - name: Compile .ISS to .EXE Installer + uses: Minionguyjpro/Inno-Setup-Action@v1.2.2 + with: + path: "scripts/chiaki-ng.iss" + options: /O+ + + - name: Rename installer + run: | + cp chiaki-ng-windows-installer.exe chiaki-ng-win_x64-VC-installer.exe + + - name: Upload chiaki-ng Artifact + uses: nanoufo/action-upload-artifacts-and-release-assets@v2 + with: + path: | + chiaki-ng-windows-installer.exe + upload-release-files: true + if-no-files-found: error + release-upload-url: ${{ needs.create-release.outputs.upload_url }} + + build-mac_arm64_github: + name: Build macOSX arm64 version Github + runs-on: macos-14 + permissions: + contents: write + needs: create-release + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install protobuf + run: | + pip3 install --user protobuf --break-system-packages + - name: Install brew dependencies + run: | + brew update + brew uninstall pkgconfig || true + brew install qt@6 ffmpeg pkgconfig opus openssl cmake ninja nasm sdl2 protobuf speexdsp libplacebo wget python-setuptools json-c miniupnpc + + - name: Configure chiaki-ng + run: | + cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCHIAKI_ENABLE_CLI=OFF -DCHIAKI_ENABLE_STEAMDECK_NATIVE=OFF -DCMAKE_PREFIX_PATH="$(brew --prefix)/opt/@openssl@3;$(brew --prefix)/opt/qt@6" + + - name: Build chiaki-ng + run: | + export CPATH=$(brew --prefix)/opt/ffmpeg/include + cmake --build build --config Release --clean-first --target chiaki + + - name: Deploy chiaki-ng + run: | + cp -a build/gui/chiaki.app chiaki-ng.app + cp scripts/qtwebengine_import.qml gui/src/qml/ + $(brew --prefix)/opt/qt@6/bin/macdeployqt chiaki-ng.app -qmldir="$PWD/gui/src/qml" -libpath=$(brew --prefix)/lib + mkdir -p chiaki-ng.app/Contents/Resources/vulkan/icd.d + wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.9/MoltenVK-macos.tar && tar xf MoltenVK-macos.tar + cp MoltenVK/MoltenVK/dylib/macOS/* chiaki-ng.app/Contents/Resources/vulkan/icd.d + $(brew --prefix)/opt/qt@6/bin/macdeployqt chiaki-ng.app -qmldir="$PWD/gui/src/qml" -libpath=$(brew --prefix)/lib + ln -s ../../../../../../../Frameworks chiaki-ng.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents + ln -s libvulkan.1.dylib chiaki-ng.app/Contents/Frameworks/vulkan + codesign --force --entitlements gui/entitlements.xml --deep --sign - chiaki-ng.app + hdiutil create -srcfolder chiaki-ng.app chiaki-ng.dmg + codesign --force --entitlements gui/entitlements.xml --deep --sign - chiaki-ng.dmg + cp chiaki-ng.dmg chiaki-ng-macos_arm64-Release.dmg + + - name: Upload chiaki-ng Artifact + uses: nanoufo/action-upload-artifacts-and-release-assets@v2 + with: + path: | + chiaki-ng-macos_arm64-Release.dmg + if-no-files-found: error + upload-release-files: true + release-upload-url: ${{ needs.create-release.outputs.upload_url }} + + build-appimage_x64: + name: Build chiaki-ng appimage_x64 + runs-on: ubuntu-latest + permissions: + contents: write + needs: create-release + + steps: + - name: Setup Podman + run: | + sudo apt update + sudo apt-get -y install podman + + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: 'recursive' + path: 'chiaki-ng' + + - name: Add QmlWebEngine Import + working-directory: chiaki-ng + run: | + cp scripts/qtwebengine_import.qml gui/src/qml/ + + - name: Run build script + working-directory: chiaki-ng/scripts + run: | + ./run-podman-build-appimage.sh + + - name: Upload chiaki-ng Artifact + uses: nanoufo/action-upload-artifacts-and-release-assets@v2 + with: + path: | + chiaki-ng/appimage/chiaki-ng.AppImage + upload-release-files: true + if-no-files-found: error + release-upload-url: ${{ needs.create-release.outputs.upload_url }} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c042d6db..fa11802f2 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,7 @@ tri_option(CHIAKI_USE_SYSTEM_CURL "Use system-provided curl instead of submodule set(CHIAKI_VERSION_MAJOR 1) set(CHIAKI_VERSION_MINOR 9) -set(CHIAKI_VERSION_PATCH 1) +set(CHIAKI_VERSION_PATCH 2) set(CHIAKI_VERSION ${CHIAKI_VERSION_MAJOR}.${CHIAKI_VERSION_MINOR}.${CHIAKI_VERSION_PATCH}) set(CPACK_PACKAGE_NAME "chiaki-ng") diff --git a/docs/updates/planned.md b/docs/updates/planned.md index 9c23d4473..289c32a10 100644 --- a/docs/updates/planned.md +++ b/docs/updates/planned.md @@ -1 +1,3 @@ -# Future Updates Planned \ No newline at end of file +# Future Updates Planned +- Add Switch port to `chiaki-ng` +- Add Android port to `chiaki-ng` \ No newline at end of file diff --git a/docs/updates/releases.md b/docs/updates/releases.md index 4bf8513f7..2a4637a05 100644 --- a/docs/updates/releases.md +++ b/docs/updates/releases.md @@ -75,6 +75,22 @@ In order to update your already installed `chiaki-ng` to the newest version, eit ## Releases (Newest First) +### 1.9.2 + +Small patch update: + +- Add Windows installer +- Increase stability of motion controls +- Add native webview for obtaining PSN tokens, making it possible to obtain the token easily in Steam OS game mode +- Add ability to set custom window resolution +- Fix import/export dialogs to work with appimage and Steam OS game mode +- enable switching between dpad mode and dpad touch emulation mode with any chosen combo up to 4 keys set in settings +- expand motion control reset to work with more games beyond the Resident Evil 4 demo +- Fix issue where session wouldn't close if canceled after waking the console but before connecting +- Fix issue where session may fail to connect if it receives invalid frames initially +- Show settings maximized at start instead of 720p + + ### 1.9.1 Small patch update: diff --git a/gui/io.github.streetpea.Chiaki4deck.appdata.xml b/gui/io.github.streetpea.Chiaki4deck.appdata.xml index d7d39cddc..d4d529ecf 100644 --- a/gui/io.github.streetpea.Chiaki4deck.appdata.xml +++ b/gui/io.github.streetpea.Chiaki4deck.appdata.xml @@ -25,26 +25,22 @@ streetpea@proton.me - - Adds dpad touch emulation to use the dpad for touchscreen touches and swipes see dpad touch emulation - Add --exit-app-on-stream-exit option to exit chiaki-ng immediately after closing a streaming session - Fix registration issues related to broadcast settings by automatically detecting when broadcast should be used - Reset motion controls when necessary to prevent jumping to position when using motion controls to aim in games that activate motion controls via a trigger press such as Resident Evil 4 Remake - Fix bug where upnp discovery could take too long, causing the remote connection via PSN to fail - Notify users of the possibility of remote connection via PSN as many users aren't aware of this option still - Add mapping for Share button on Xbox Series and Xbox One Controllers - Display current profile name with colon after application name as Application Display Name - Update controller mappings to be portable across all platforms (Linux, Mac/OS, and Windows) - Adds controller name for controller mapping for controllers that don't have a name configured in the mapping itself - Allow entering controller mapping and reset mapping using the back button - Make log dialogs, registered consoles, and hidden consoles scrollable with a controller - Increase STUN timeouts to 5 seconds + add timeouts for curl of 10 seconds - Make key mapping dialog navigable with controller - Disable zero-copy for hw cards that don't support it - Increase wait time for DualSense haptics of DualSense edge to come online to 15 seconds - Add homebrew cask for chiaki-ng for MacOS - Fix an error causing a crash when random stun allocation was used for remote connection via PSN - Fix a memory leak in remote connection via PSN + + +

This release provides the following improvements:

+
    +
  • Add native webview for obtaining PSN tokens, making it possible to obtain the token easily in Steam OS game mode
  • +
  • Increase stability of motion controls
  • +
  • Add ability to set custom window resolution
  • +
  • Fix import/export dialogs to work with appimage and Steam OS game mode
  • +
  • enable switching between dpad mode and dpad touch emulation mode with any chosen combo up to 4 keys set in settings
  • +
  • expand motion control reset to work with more games beyond the Resident Evil 4 Remake demo
  • +
  • Fix issue where session wouldn't close if canceled after waking the console but before connecting
  • +
  • Fix issue where session may fail to connect if it receives invalid frames initially
  • +
  • Show settings maximized at start instead of 720p
  • +
+
+

This release provides the following improvements: