Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 138 additions & 3 deletions .github/workflows/sdk-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -422,9 +422,142 @@ jobs:
path: dist/*
if-no-files-found: error

build-sdk-windows:
name: build-sdk-full (windows / x86_64)
runs-on: windows-2022

env:
BUILD_DIR: build-sdk-full
INSTALL_DIR: install-sdk-full
ASSET: vix-sdk-windows-x86_64.zip

steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0

- name: Checkout tag (manual input)
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag != '' }}
shell: pwsh
run: |
git fetch --tags --force
git checkout "tags/${{ github.event.inputs.tag }}"

- name: Setup vcpkg
shell: pwsh
run: |
git clone https://github.com/microsoft/vcpkg $env:GITHUB_WORKSPACE\vcpkg
"VCPKG_ROOT=$env:GITHUB_WORKSPACE\vcpkg" | Out-File -FilePath $env:GITHUB_ENV -Append
cd $env:GITHUB_WORKSPACE\vcpkg
.\bootstrap-vcpkg.bat

- name: Vcpkg install
shell: pwsh
run: |
cd $env:GITHUB_WORKSPACE
& "$env:VCPKG_ROOT\vcpkg.exe" install --triplet x64-windows --x-manifest-root "$env:GITHUB_WORKSPACE"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Configure SDK full
shell: pwsh
run: |
cmake -S . -B "$env:BUILD_DIR" -A x64 `
-DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\$env:INSTALL_DIR" `
-DVIX_ENABLE_INSTALL=ON `
-DVIX_BUILD_EXAMPLES=OFF `
-DVIX_BUILD_TESTS=OFF `
-DVIX_ENABLE_WARNINGS=ON `
-DVIX_ENABLE_HTTP_COMPRESSION=OFF `
-DVIX_ENABLE_DB=ON `
-DVIX_DB_USE_SQLITE=ON `
-DVIX_DB_USE_MYSQL=OFF `
-DVIX_DB_USE_POSTGRES=OFF `
-DVIX_DB_USE_REDIS=OFF `
-DVIX_CORE_WITH_MYSQL=OFF `
-DVIX_ENABLE_ORM=ON `
-DVIX_ENABLE_WEBSOCKET=ON `
-DVIX_ENABLE_CLI=ON `
-DVIX_ENABLE_MIDDLEWARE=ON `
-DVIX_ENABLE_P2P=ON `
-DVIX_ENABLE_P2P_HTTP=ON `
-DVIX_ENABLE_CACHE=ON `
-DVIX_ENABLE_ASYNC=ON `
-DVIX_ENABLE_VALIDATION=ON `
-DVIX_ENABLE_CRYPTO=ON `
-DVIX_ENABLE_WEBRPC=ON `
-DVIX_ENABLE_TIME=ON `
-DVIX_ENABLE_TESTS_MODULE=ON `
-DVIX_ENABLE_TEMPLATE=ON `
-DVIX_ENABLE_PROCESS=ON `
-DVIX_ENABLE_THREADPOOL=ON `
-DVIX_ENABLE_KV=ON `
-DVIX_ENABLE_AGENT=ON `
-DVIX_ENABLE_GAME=OFF `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake"

if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Build SDK
shell: pwsh
run: |
cmake --build "$env:BUILD_DIR" --config Release
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Install SDK
shell: pwsh
run: |
cmake --install "$env:BUILD_DIR" --config Release
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Verify installed SDK tree
shell: pwsh
run: |
if (!(Test-Path "$env:INSTALL_DIR\bin\vix.exe")) { throw "missing bin\vix.exe" }
if (!(Test-Path "$env:INSTALL_DIR\include\vix.hpp")) { throw "missing include\vix.hpp" }
if (!(Test-Path "$env:INSTALL_DIR\include\vix\websocket.hpp")) { throw "missing include\vix\websocket.hpp" }
if (!(Test-Path "$env:INSTALL_DIR\lib\cmake\Vix\VixConfig.cmake")) { throw "missing VixConfig.cmake" }
if (!(Test-Path "$env:INSTALL_DIR\lib\cmake\Vix\VixTargets.cmake")) { throw "missing VixTargets.cmake" }

& "$env:INSTALL_DIR\bin\vix.exe" --version
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Package SDK
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path dist | Out-Null
Compress-Archive -Path "$env:INSTALL_DIR\*" -DestinationPath "dist\$env:ASSET" -Force
if (!(Test-Path "dist\$env:ASSET")) { throw "missing SDK archive" }

- name: Validate packaged SDK
shell: pwsh
run: |
Remove-Item -Recurse -Force smoke-sdk -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Force -Path smoke-sdk | Out-Null

Expand-Archive -LiteralPath "dist\$env:ASSET" -DestinationPath smoke-sdk -Force

if (!(Test-Path "smoke-sdk\bin\vix.exe")) { throw "archive missing bin\vix.exe" }
if (!(Test-Path "smoke-sdk\include\vix.hpp")) { throw "archive missing include\vix.hpp" }
if (!(Test-Path "smoke-sdk\lib\cmake\Vix\VixConfig.cmake")) { throw "archive missing VixConfig.cmake" }

& "smoke-sdk\bin\vix.exe" --version
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Upload dist
uses: actions/upload-artifact@v4
with:
name: sdk-dist-windows-x86_64
path: dist/*
if-no-files-found: error

publish-sdk:
name: publish-sdk
needs: build-sdk
needs:
- build-sdk
- build-sdk-windows
runs-on: ubuntu-24.04

steps:
Expand All @@ -441,8 +574,10 @@ jobs:
mkdir -p dist

find dist-all -type f -name "vix-sdk-linux-x86_64.tar.gz" -exec cp -f {} dist/ \;
find dist-all -type f -name "vix-sdk-windows-x86_64.zip" -exec cp -f {} dist/ \;

test -f dist/vix-sdk-linux-x86_64.tar.gz
test -f dist/vix-sdk-windows-x86_64.zip

ls -lah dist

Expand All @@ -453,7 +588,7 @@ jobs:

cd dist

for f in vix-sdk-*.tar.gz; do
for f in vix-sdk-*.tar.gz vix-sdk-*.zip; do
[ -f "$f" ] || continue
sha256sum "$f" > "$f.sha256"
done
Expand Down Expand Up @@ -488,7 +623,7 @@ jobs:
printf "%s" "$MINISIGN_PRIVATE_KEY_B64" | base64 -d > "$keyfile"
test -s "$keyfile"

for f in vix-sdk-*.tar.gz; do
for f in vix-sdk-*.tar.gz vix-sdk-*.zip; do
[ -f "$f" ] || continue
"$MS" -S -s "$keyfile" -m "$f"
done
Expand Down
37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## v2.6.2

### Added

- Added constant-time byte comparison helpers to the crypto module for security-sensitive comparisons.
- Added PBKDF2-HMAC-SHA256 password hashing and verification helpers to the crypto module.

### Fixed

- Fixed `vix run` for generic CMake projects by detecting and running the executable produced by the build instead of assuming the folder name is the target name.
- Kept default `vix run` output cleaner during normal execution.
- Fixed `vix update` so it updates only dependencies with newer resolved versions instead of reprocessing every dependency in the project.
- Fixed `vix update` so it respects the version constraints declared in `vix.json` instead of always resolving direct dependencies to the latest registry version.
- Improved `vix update` so it can refresh lockfile metadata and package hashes even when dependency versions do not change.
- Improved `vix update` summaries by separating version changes from lockfile metadata updates.
- Improved `vix update` output so already-current dependencies are no longer repeated in the main update summary.
- Improved `vix outdated` so the default view shows only direct project dependencies from `vix.json`, with `--all` available for the full locked dependency graph.
- Improved `vix list` so the default view shows only direct project dependencies from `vix.json`, with `--all` available for transitive locked dependencies.
- Added pagination and JSON output support to `vix list`.
- Fixed `vix install` output so it reports only dependencies that were actually installed or relinked instead of counting every dependency from `vix.lock` as newly installed.
- Fixed `vix install` output to keep dependency installation messages shorter and cleaner.
- Fixed project dependency installation by handling stale or broken `.vix/deps` links more reliably.
- Fixed transitive registry dependency propagation so packages like `rix/rix` can expose dependencies such as `rix/csv`, `rix/debug`, and `rix/auth` without requiring every app to list them manually.
- Improved `vix publish` diagnostics when a tag exists locally but has not been pushed to `origin`.
- Fixed `vix publish` registry preparation so stale local publish branches and untracked registry entry files are cleaned before checking whether a version already exists.
- Improved registry dependency workflows after testing the registry install, update, and generated CMake integration flow in production with `pico.vixcpp.com`.
- Fixed the Windows SDK release pipeline so `vix-sdk-windows-x86_64.zip` is built, packaged, checksummed, signed, and uploaded to GitHub Releases.
- Fixed the Windows installer failure where `install.ps1` attempted to download `vix-sdk-windows-x86_64.zip` but the asset was missing from the release.
- Improved CMake error parsing so multi-line `message(FATAL_ERROR ...)` diagnostics are displayed clearly instead of collapsing into unreadable one-line reasons.
- Improved `vix build` verbose behavior so `-v` remains readable while `--cmake-verbose` is reserved for raw CMake/Ninja output.
- Improved `vix tests` failure diagnostics so test runner output is summarized with clearer failed test names, source locations, focused error messages, and compact code frames.
- Improved `vix.app` diagnostics when `.vix/vix_deps.cmake` is missing.
- Improved `vix.app` resource validation so missing resources fail early with a clear error instead of a long post-build CMake command.
- Fixed build toolchain behavior by using absolute system archiver paths.
- Exposed middleware app integration helpers through the public aggregate header.
- Kept middleware aggregate header cache independent.

## v2.6.1

### Changed
Expand Down
Loading
Loading