diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a410995..a468e8c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -9,7 +9,7 @@ on:
env:
SYMBOLS_DAYS_TO_KEEP: 14
SYMBOLS_KEEP_LAST: 10
-
+
defaults:
run:
shell: pwsh
@@ -17,35 +17,29 @@ defaults:
jobs:
build:
name: Build
- runs-on: windows-2022
- if: |
- !contains(github.event.head_commit.message, '***NO_CI***') &&
- !contains(github.event.head_commit.message, '[skip ci]')
+ runs-on: windows-2025-vs2026
+ if: "!contains(github.event.head_commit.message, '[no ci]')"
steps:
- name: Set up build environment
- uses: microsoft/setup-msbuild@v1.1
+ uses: microsoft/setup-msbuild@v3
- name: Set up NuGet
- uses: nuget/setup-nuget@v1
+ uses: nuget/setup-nuget@v2
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v6
with:
path: main
submodules: recursive
- fetch-depth: 0 # git complains when cloning the submodules without this
+ fetch-depth: 0
- name: Checkout branding
- if:
- github.repository == 'Windower/Fenestra' &&
- github.event_name == 'push'
- uses: actions/checkout@v3
+ if: github.repository == 'Windower/Fenestra' && github.event_name == 'push'
+ uses: actions/checkout@v6
with:
token: ${{ secrets.BRANDING_PAT }}
repository: Windower/Branding
ref: ${{ github.ref_name == 'stable' && '5.0/release' || '5.0/test' }}
path: branding
- name: Apply branding
- if:
- github.repository == 'Windower/Fenestra' &&
- github.event_name == 'push'
+ if: github.repository == 'Windower/Fenestra' && github.event_name == 'push'
run: |
Remove-Item 'branding/.git' -Recurse -Force
Copy-Item 'branding/*' 'main' -Recurse -Force
@@ -61,69 +55,3 @@ jobs:
run: |
Set-Location main
.github/workflows/index-sources
- - name: Upload build artifacts
- if: github.event_name == 'push'
- uses: actions/upload-artifact@v3
- with:
- name: binaries
- path: main/build/bin/release/
- deploy:
- name: Deploy
- needs: build
- runs-on: windows-2022
- if: |
- github.repository == 'Windower/Fenestra' &&
- github.event_name == 'push'
- steps:
- - name: Set up SSH
- run: |
- # Set up SSH
- Write-Output 'Starting ssh-agent service...'
- Get-Service -Name 'ssh-agent' | Set-Service -StartupType Manual
- Start-Service -Name 'ssh-agent'
- New-Item -ItemType Directory -Force -Path '~/.ssh' *>$null
- $env:SSH_KEY | &ssh-add -
- &ssh-keyscan -H "$(
- @($env:SSH_HOST) + (Resolve-DnsName $env:SSH_HOST).IPAddress -Join ','
- )" | Add-Content '~/.ssh/known_hosts'
- env:
- SSH_HOST: ${{ secrets.SSH_HOST }}
- SSH_KEY: ${{ secrets.SSH_KEY }}
- - name: Checkout
- uses: actions/checkout@v3
- - name: Download build artifacts
- uses: actions/download-artifact@v3
- with:
- name: binaries
- path: artifacts
- - name: Stage files
- run: |
- # Stage files
- New-Item -ItemType Directory -Force -Path './staging/files' *>$null
- Copy-Item './artifacts/windower.exe' -Destination './staging/files'
- Copy-Item './artifacts/core.dll' -Destination './staging/files'
- Copy-Item './artifacts/version.xml' -Destination './staging/files'
- Copy-Item './artifacts/windower.msi' -Destination './staging/files'
- Copy-Item './artifacts/windower.zip' -Destination './staging/files'
- Copy-Item './artifacts/windower.portable.zip' -Destination './staging/files'
-
- New-Item -ItemType Directory -Force -Path './temp/symbols' *>$null
- Copy-Item './artifacts/windower.exe' -Destination './temp/symbols/'
- Copy-Item './artifacts/windower.pdb' -Destination './temp/symbols/'
- Copy-Item './artifacts/core.dll' -Destination './temp/symbols/'
- Copy-Item './artifacts/core.pdb' -Destination './temp/symbols/'
- - name: Install debug tools
- run: choco install windows-sdk-10-version-2004-windbg
- - name: Update symbol database
- run: .github/workflows/update-symbols
- env:
- SSH_HOST: ${{ secrets.SSH_HOST }}
- SSH_USER: ${{ secrets.SSH_USER }}
- SYMBOLS_PATH: ${{ secrets.SYMBOLS_PATH }}/${{ github.ref_name == 'stable' && 'release' || 'test' }}
- - name: Deploy to server
- run: .github/workflows/deploy
- env:
- SSH_HOST: ${{ secrets.SSH_HOST }}
- SSH_USER: ${{ secrets.SSH_USER }}
- FILES_PATH: ${{ secrets.FILES_PATH }}/${{ github.ref_name == 'stable' && 'release' || 'test' }}
- SYMBOLS_PATH: ${{ secrets.SYMBOLS_PATH }}/${{ github.ref_name == 'stable' && 'release' || 'test' }}
diff --git a/core/core.vcxproj b/core/core.vcxproj
index fb32895..ebdd0aa 100755
--- a/core/core.vcxproj
+++ b/core/core.vcxproj
@@ -15,27 +15,123 @@
Win32
-
+
{A25AD743-C0E9-4CA6-8DF1-8055EDE2D9A0}
windower
core
10.0
+ DynamicLibrary
+ v145
+ Unicode
+ $(SolutionDir)build\bin\$(Configuration)\
+ $(SolutionDir)build\obj\$(ProjectName)\$(Configuration)\
+ $(SolutionDir)\fenestra.ruleset
+ true
+
+
+ true
+ false
+
+
+ false
+ true
+ true
true
true
$(SolutionDir)build\obj\$(Configuration)\$(ProjectName)\vcpkg
-
+
Debug
-
+
Release
+
+
+
+
+
+
+
+
+
+
+ Level4
+ true
+ WINDOWER_AUTO_VERSION;$(ReleaseConstants);WIN32_LEAN_AND_MEAN;NOMINMAX;WINVER=_WIN32_WINNT_WIN8;_WIN32_WINNT=_WIN32_WINNT_WIN8;PSAPI_VERSION=1;_HAS_AUTO_PTR_ETC=0;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;NDEBUG;_DEBUG;gsl_FEATURE_WITH_CONTAINER_TO_STD=14;gsl_FEATURE_MAKE_SPAN_TO_STD=14;gsl_FEATURE_BYTE_SPAN_TO_STD=14;gsl_FEATURE_OWNER_MACRO=0;%(PreprocessorDefinitions)
+ $(IntDir)src;$(ProjectDir)src;$(ProjectDir)lib;$(SolutionDir)extern\luajit\repo\src;%(AdditionalIncludeDirectories)
+ true
+ MultiThreadedDebug
+ true
+ /utf-8 /Zc:externConstexpr /Zc:throwingNew /Zc:__cplusplus
+ Async
+ $(IntDir)\%(RelativeDir)
+ stdcpplatest
+ true
+ true
+ TurnOffAllWarnings
+ true
+ true
+ false
+
+
+ $(SolutionDir)build\lib\luajit\$(Configuration)\;%(AdditionalLibraryDirectories)
+ $(ProjectName).def
+ lua51.static.lib;shlwapi.lib;dbghelp.lib;winhttp.lib;imm32.lib;dwrite.lib;d2d1.lib;windowscodecs.lib;icu.lib;%(AdditionalDependencies)
+
+
+ $(IntDir)src;$(ProjectDir)src;%(AdditionalIncludeDirectories)
+ WINDOWER_AUTO_VERSION;$(ReleaseConstants);%(PreprocessorDefinitions)
+ /c 1252
+
+
+
+
+ Level4
+ MaxSpeed
+ true
+ true
+ true
+ WINDOWER_AUTO_VERSION;$(ReleaseConstants);WIN32_LEAN_AND_MEAN;NOMINMAX;WINVER=_WIN32_WINNT_WIN8;_WIN32_WINNT=_WIN32_WINNT_WIN8;PSAPI_VERSION=1;_HAS_AUTO_PTR_ETC=0;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;NDEBUG;gsl_FEATURE_WITH_CONTAINER_TO_STD=14;gsl_FEATURE_MAKE_SPAN_TO_STD=14;gsl_FEATURE_BYTE_SPAN_TO_STD=14;gsl_FEATURE_OWNER_MACRO=0;%(PreprocessorDefinitions)
+ $(IntDir)src;$(ProjectDir)src;$(ProjectDir)lib;$(SolutionDir)extern\luajit\repo\src;%(AdditionalIncludeDirectories)
+ true
+ MultiThreaded
+ true
+ /utf-8 /Zc:externConstexpr /Zc:throwingNew /Zc:__cplusplus
+
+
+
+ Async
+ $(IntDir)\%(RelativeDir)
+ stdcpplatest
+ true
+ true
+ TurnOffAllWarnings
+ true
+ false
+ true
+ true
+
+
+ true
+ true
+ $(SolutionDir)build\lib\luajit\$(Configuration)\;%(AdditionalLibraryDirectories)
+ $(ProjectName).def
+ lua51.static.lib;shlwapi.lib;dbghelp.lib;winhttp.lib;imm32.lib;dwrite.lib;d2d1.lib;windowscodecs.lib;icu.lib;%(AdditionalDependencies)
+ true
+
+
+ $(IntDir)src;$(ProjectDir)src;%(AdditionalIncludeDirectories)
+ WINDOWER_AUTO_VERSION;$(ReleaseConstants);%(PreprocessorDefinitions)
+ /c 1252
+
+
@@ -351,119 +447,7 @@
-
-
- DynamicLibrary
- true
- v145
- Unicode
-
-
- DynamicLibrary
- false
- v145
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
- $(SolutionDir)build\bin\$(Configuration)\
- $(SolutionDir)build\obj\$(ProjectName)\$(Configuration)\
- $(SolutionDir)\fenestra.ruleset
- true
- false
-
-
- $(SolutionDir)build\bin\$(Configuration)\
- $(SolutionDir)build\obj\$(ProjectName)\$(Configuration)\
- $(SolutionDir)\fenestra.ruleset
- true
- true
-
-
-
- Level4
- true
- WINDOWER_AUTO_VERSION;$(ReleaseConstants);WIN32_LEAN_AND_MEAN;NOMINMAX;WINVER=_WIN32_WINNT_WIN8;_WIN32_WINNT=_WIN32_WINNT_WIN8;PSAPI_VERSION=1;_HAS_AUTO_PTR_ETC=0;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;NDEBUG;_DEBUG;gsl_FEATURE_WITH_CONTAINER_TO_STD=14;gsl_FEATURE_MAKE_SPAN_TO_STD=14;gsl_FEATURE_BYTE_SPAN_TO_STD=14;gsl_FEATURE_OWNER_MACRO=0;%(PreprocessorDefinitions)
- $(IntDir)src;$(ProjectDir)src;$(ProjectDir)lib;$(SolutionDir)extern\luajit\repo\src;%(AdditionalIncludeDirectories)
- true
- MultiThreadedDebug
- true
- /utf-8 /Zc:externConstexpr /Zc:throwingNew /Zc:__cplusplus
- Async
- $(IntDir)\%(RelativeDir)
- stdcpplatest
- true
- true
- TurnOffAllWarnings
- true
- true
- false
-
-
- $(SolutionDir)build\lib\luajit\$(Configuration)\;%(AdditionalLibraryDirectories)
- $(ProjectName).def
- lua51.static.lib;shlwapi.lib;dbghelp.lib;winhttp.lib;imm32.lib;dwrite.lib;d2d1.lib;windowscodecs.lib;icu.lib;%(AdditionalDependencies)
-
-
- $(IntDir)src;$(ProjectDir)src;%(AdditionalIncludeDirectories)
- WINDOWER_AUTO_VERSION;$(ReleaseConstants);%(PreprocessorDefinitions)
- /c 1252
-
-
-
-
- Level4
- MaxSpeed
- true
- true
- true
- WINDOWER_AUTO_VERSION;$(ReleaseConstants);WIN32_LEAN_AND_MEAN;NOMINMAX;WINVER=_WIN32_WINNT_WIN8;_WIN32_WINNT=_WIN32_WINNT_WIN8;PSAPI_VERSION=1;_HAS_AUTO_PTR_ETC=0;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;NDEBUG;gsl_FEATURE_WITH_CONTAINER_TO_STD=14;gsl_FEATURE_MAKE_SPAN_TO_STD=14;gsl_FEATURE_BYTE_SPAN_TO_STD=14;gsl_FEATURE_OWNER_MACRO=0;%(PreprocessorDefinitions)
- $(IntDir)src;$(ProjectDir)src;$(ProjectDir)lib;$(SolutionDir)extern\luajit\repo\src;%(AdditionalIncludeDirectories)
- true
- MultiThreaded
- true
- /utf-8 /Zc:externConstexpr /Zc:throwingNew /Zc:__cplusplus
-
-
-
- Async
- $(IntDir)\%(RelativeDir)
- stdcpplatest
- true
- true
- TurnOffAllWarnings
- true
- false
- true
- true
-
-
- true
- true
- $(SolutionDir)build\lib\luajit\$(Configuration)\;%(AdditionalLibraryDirectories)
- $(ProjectName).def
- lua51.static.lib;shlwapi.lib;dbghelp.lib;winhttp.lib;imm32.lib;dwrite.lib;d2d1.lib;windowscodecs.lib;icu.lib;%(AdditionalDependencies)
- true
-
-
- $(IntDir)src;$(ProjectDir)src;%(AdditionalIncludeDirectories)
- WINDOWER_AUTO_VERSION;$(ReleaseConstants);%(PreprocessorDefinitions)
- /c 1252
-
-
-
-
@@ -641,4 +625,4 @@
-
\ No newline at end of file
+
diff --git a/core/src/utilities/coroutine.hpp b/core/src/utilities/coroutine.hpp
index 5447303..f807f85 100755
--- a/core/src/utilities/coroutine.hpp
+++ b/core/src/utilities/coroutine.hpp
@@ -93,7 +93,7 @@ auto operator co_await(std::future future) noexcept
{
bool await_ready() const noexcept
{
- return this->wait_for(std::chrono::seconds(0)) !=
+ return this->wait_for(std::chrono::seconds::zero()) !=
std::future_status::timeout;
}