Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
9b11325
Move to InfiniFrame.NativeLib
AnnaSasDev May 14, 2026
9539ac8
Update GitIgnore
AnnaSasDev May 14, 2026
f1b38fc
Update .gitignore
AnnaSasDev May 14, 2026
48b460b
Move native files to `InfiniFrame.NativeLib`, update project referenc…
AnnaSasDev May 14, 2026
5187885
Migrate `InfiniFrame.NativeLib` to `InfiniFrame.NativeBridge`, update…
AnnaSasDev May 14, 2026
28709b0
Remove unused `COUNT` logic and simplify byte array generation in CMa…
AnnaSasDev May 14, 2026
f449ef9
Update native artifacts path resolution and adjust native library nam…
AnnaSasDev May 14, 2026
0ec07f7
Remove obsolete fallback logic for native artifacts and update publis…
AnnaSasDev May 14, 2026
478258c
Add timeout handling for publish operations and process execution in …
AnnaSasDev May 14, 2026
fd6fe77
Update .gitignore
AnnaSasDev May 14, 2026
81ffc4b
Migrate `InfiniFrame.NativeLib` references to `InfiniFrame.NativeBrid…
AnnaSasDev May 15, 2026
d0fdfd2
Add `InfiniFrame.NativeBridge` to solution filters and adjust project…
AnnaSasDev May 15, 2026
f782fa1
Bump TUnit package versions to 1.44.39 in Directory.Packages.props
AnnaSasDev May 15, 2026
4bdd56e
Add PowerShell script to clean `bin` and `obj` folders and terminate …
AnnaSasDev May 15, 2026
c151e87
Migrate `InfiniFrame.Native` references to `InfiniFrame.NativeBridge`…
AnnaSasDev May 15, 2026
bc45c7c
Add local GitHub Actions harness with Docker/`act` support for Linux …
AnnaSasDev May 15, 2026
9efd1fe
Update native dependency paths to align with `InfiniFrame.NativeBridg…
AnnaSasDev May 15, 2026
ba557be
Replace Bash scripts with equivalent PowerShell scripts under `docker…
AnnaSasDev May 15, 2026
e155e10
Remove deprecated `.run` configurations for obsolete Bash scripts.
AnnaSasDev May 15, 2026
9d302cc
Update `gha-local` Dockerfile: bump `act` to v0.2.88, add Node.js 24 …
AnnaSasDev May 15, 2026
16d0841
Remove redundant `InfiniFrame.NativeBridge` build steps from GitHub A…
AnnaSasDev May 15, 2026
a58f19c
Normalize directory name case in `native-build.ps1` (`native` → `Nati…
AnnaSasDev May 15, 2026
30dc4e2
Introduce shared native build job and artifact reuse across GitHub Ac…
AnnaSasDev May 15, 2026
3889dc4
Consolidate native binaries actions: merge download and validation in…
AnnaSasDev May 15, 2026
da1edc9
Refactor GitHub Actions workflows: reorganize steps, remove unused in…
AnnaSasDev May 15, 2026
d7a14a5
Add architecture-specific handling for Windows builds in `native-buil…
AnnaSasDev May 15, 2026
5f438e5
Improve dependency setup in GitHub Actions: re-enable GTK3 verificati…
AnnaSasDev May 15, 2026
a815328
Normalize white spaces, indentation, and formatting across GitHub Act…
AnnaSasDev May 15, 2026
4f96a2b
Refactor `download-native-binaries` action: replace artifact mapping …
AnnaSasDev May 15, 2026
813434a
Add `setup-dependencies-native` action to dependency setup in GitHub …
AnnaSasDev May 15, 2026
c3be19d
Remove redundant `if: always()` conditions and adjust shell for Windo…
AnnaSasDev May 15, 2026
2780ebd
Add conditions to native targets for multi-framework builds in projec…
AnnaSasDev May 15, 2026
3ff65cc
Normalize native library file naming across platforms in project and …
AnnaSasDev May 15, 2026
21c4c92
Update Playwright script and binary paths for architecture-specific h…
AnnaSasDev May 15, 2026
3757ab6
Remove redundant `Platform=x64` property and simplify Playwright path…
AnnaSasDev May 15, 2026
139b979
Add native file verification for InfiniFrame.NativeBridge package in …
AnnaSasDev May 15, 2026
c77de1a
Improve Playwright script and binary path resolution in Windows workf…
AnnaSasDev May 15, 2026
56f2d96
Simplify Playwright script and binary path resolution in Windows work…
AnnaSasDev May 16, 2026
19e029a
Update `SolutionDir` property in Windows workflows to use `$env:GITHU…
AnnaSasDev May 16, 2026
b440da3
Update shared-testing-windows-playwright.yml
AnnaSasDev May 16, 2026
c51fa65
Update `SolutionDir` property and enhance NativeAOT validation in Win…
AnnaSasDev May 16, 2026
e1d483b
Add timeout and polling mechanisms for browser context and page readi…
AnnaSasDev May 16, 2026
ea44d9b
Remove caching configuration from CodeQL workflow in .NET matrix steps
AnnaSasDev May 16, 2026
f40160f
Introduce process timeout options and shared fixtures for publish tes…
AnnaSasDev May 16, 2026
50f2b59
Enhance frontend build process with lock file checks and refine stale…
AnnaSasDev May 16, 2026
5209519
Add validation for `TemporaryFilesPath` in `InfiniFrameNativeParamete…
AnnaSasDev May 16, 2026
4502b12
Refactor `Dialogs` namespace structure; relocate dialog-related class…
AnnaSasDev May 16, 2026
015bbf6
Remove `NativeDllEntryPoints` class; refactor `InfiniFrameNative` to …
AnnaSasDev May 16, 2026
60773d9
Refactor temporary file handling and directory validation; improve th…
AnnaSasDev May 16, 2026
8e850a9
Remove `TemporaryFilesPath` and associated logic from test utilities;…
AnnaSasDev May 16, 2026
d470836
Remove `TemporaryFilesPath` cleanup logic from test utilities; simpli…
AnnaSasDev May 16, 2026
7fee5b4
Refactor CodeQL workflow: modularize analysis steps by language, adju…
AnnaSasDev May 17, 2026
dabb051
Add macOS to CodeQL workflow and configure Brew cache management for …
AnnaSasDev May 17, 2026
335786e
Update CodeQL workflow to improve dependency setup and build process …
AnnaSasDev May 17, 2026
05754a9
Include `.github/workflows/ci-codeql.yml` and `.github/codeql-config.…
AnnaSasDev May 17, 2026
d04d9f7
Ensure `complete_matching_check_runs` considers `details_url` to matc…
AnnaSasDev May 17, 2026
1900417
Remove `InfiniFrameSkipNativeBuild` property from CodeQL workflow bui…
AnnaSasDev May 17, 2026
c93989a
Refactor frontend build logic: replace npm-based commands with Node.j…
AnnaSasDev May 17, 2026
30cbc8e
Remove `Restore NativeBridge` step from CodeQL workflow
AnnaSasDev May 17, 2026
29cd223
Update CodeQL workflow: comment out macOS support and restore NativeB…
AnnaSasDev May 17, 2026
ea9af3b
Potential fix for pull request finding 'CodeQL / Call to 'System.IO.P…
AnnaSasDev May 17, 2026
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
123 changes: 123 additions & 0 deletions .github/actions/download-native-binaries/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Download Native Binaries
description: Download, normalize, and verify native build artifacts for testing or release workflows

inputs:
artifact-type:
description: Artifact naming mode
required: true
default: testing
target-root:
description: Root path where normalized native artifacts should be written
required: false
default: ""

runs:
using: composite
steps:
- name: Resolve Native Artifact Settings
id: resolve-native-artifact-settings
shell: bash
run: |
set -euo pipefail

artifact_type="${{ inputs.artifact-type }}"
input_root="${{ inputs.target-root }}"

case "$artifact_type" in
testing)
pattern="native-testing-*"
;;
release)
pattern="native-*"
;;
*)
echo "Unsupported artifact-type: $artifact_type"
exit 1
;;
esac

if [ -n "$input_root" ]; then
root="$input_root"
elif [ "$artifact_type" = "testing" ]; then
root="src/InfiniFrame.NativeBridge/artifacts/native"
else
root="artifacts/native"
fi

echo "pattern=$pattern" >> "$GITHUB_OUTPUT"
echo "root=$root" >> "$GITHUB_OUTPUT"

- name: Download Native Build Artifacts
uses: actions/download-artifact@v8
with:
path: artifacts/native
pattern: ${{ steps.resolve-native-artifact-settings.outputs.pattern }}

- name: Normalize Native Artifacts
shell: bash
run: |
set -euo pipefail

ROOT="${{ steps.resolve-native-artifact-settings.outputs.root }}"
artifact_type="${{ inputs.artifact-type }}"

mkdir -p "$ROOT/windows/x64/Release" "$ROOT/windows/arm64/Release"
mkdir -p "$ROOT/linux/x64/Release" "$ROOT/linux/arm64/Release"
mkdir -p "$ROOT/osx/x64/Release" "$ROOT/osx/arm64/Release"

copy_artifact() {
src_name="$1"
dest_dir="$2"
src="artifacts/native/$src_name"
if [ -d "$src" ]; then
cp -R "$src"/. "$dest_dir"/
fi
}

if [ "$artifact_type" = "testing" ]; then
copy_artifact "native-testing-windows-x64" "$ROOT/windows/x64/Release"
copy_artifact "native-testing-windows-arm64" "$ROOT/windows/arm64/Release"
copy_artifact "native-testing-linux-x64" "$ROOT/linux/x64/Release"
copy_artifact "native-testing-linux-arm64" "$ROOT/linux/arm64/Release"
copy_artifact "native-testing-osx-x64" "$ROOT/osx/x64/Release"
copy_artifact "native-testing-osx-arm64" "$ROOT/osx/arm64/Release"
else
copy_artifact "native-windows-x64" "$ROOT/windows/x64/Release"
copy_artifact "native-windows-arm64" "$ROOT/windows/arm64/Release"
copy_artifact "native-linux-x64" "$ROOT/linux/x64/Release"
copy_artifact "native-linux-arm64" "$ROOT/linux/arm64/Release"
copy_artifact "native-osx-x64" "$ROOT/osx/x64/Release"
copy_artifact "native-osx-arm64" "$ROOT/osx/arm64/Release"
fi

- name: Verify Native Artifacts
shell: bash
run: |
set -euo pipefail

ROOT="${{ steps.resolve-native-artifact-settings.outputs.root }}"
EXPECTED=(
"$ROOT/windows/x64/Release/InfiniFrame.Native.dll"
"$ROOT/windows/x64/Release/WebView2Loader.dll"
"$ROOT/windows/arm64/Release/InfiniFrame.Native.dll"
"$ROOT/windows/arm64/Release/WebView2Loader.dll"
"$ROOT/linux/x64/Release/InfiniFrame.Native.so"
"$ROOT/linux/arm64/Release/InfiniFrame.Native.so"
"$ROOT/osx/x64/Release/InfiniFrame.Native.dylib"
"$ROOT/osx/arm64/Release/InfiniFrame.Native.dylib"
)

missing=0
for file in "${EXPECTED[@]}"; do
if [ ! -f "$file" ]; then
echo "Missing native artifact: $file"
missing=$((missing+1))
fi
done

if [ "$missing" -gt 0 ]; then
echo "Missing $missing native artifact(s)."
exit 1
fi

echo "All native artifacts downloaded and verified."
67 changes: 44 additions & 23 deletions .github/actions/setup-dependencies-native/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ name: Setup Native Dependencies
description: Install and cache Native related dependencies for Linux/macOS runners.

inputs:
apt-cache-version:
description: Version token for apt package cache invalidation
required: false
default: "1.0"
brew-cache-key:
description: Full Homebrew cache key for macOS runners
required: false
Expand All @@ -29,31 +25,52 @@ runs:
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: >
pkg-config
xvfb
openbox
x11-utils
x11-xserver-utils
dbus-x11
at-spi2-core
dbus-x11
fonts-liberation
gsettings-desktop-schemas
libnotify4
libnotify-dev
libwebkit2gtk-4.1-dev
libgtk-3-dev
libglib2.0-dev
libgdk-pixbuf2.0-dev
libpango1.0-dev
libatk1.0-dev
libharfbuzz-dev
libegl1
libepoxy-dev
libx11-dev
libgdk-pixbuf2.0-dev
libgl1-mesa-dri
libegl1
libglib2.0-dev
libgtk-3-dev
libharfbuzz-dev
libnotify-dev
libnotify4
libpango1.0-dev
libwebkit2gtk-4.1-dev
libx11-dev
mesa-utils
fonts-liberation
openbox
pkg-config
x11-utils
x11-xserver-utils
xfonts-base
version: ${{ inputs['apt-cache-version'] }}
xvfb
version: 2.0

- name: Verify GTK3 Deps (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
set -euo pipefail

if pkg-config --exists gtk+-3.0; then
echo "gtk+-3.0 detected via pkg-config."
exit 0
fi

echo "gtk+-3.0 not found after cached apt step; running fallback apt install."
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libgtk-3-dev \
libwebkit2gtk-4.1-dev \
pkg-config

pkg-config --exists gtk+-3.0
echo "gtk+-3.0 is now available."

- name: Cache Homebrew
if: runner.os == 'macOS'
Expand All @@ -69,9 +86,13 @@ runs:
restore-keys: |
${{ inputs['brew-restore-key'] }}

- name: Install GTK3 (macOS)
- name: Install GTK3 and PowerShell (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
brew list gtk+3 >/dev/null 2>&1 || brew install gtk+3
brew list pkg-config >/dev/null 2>&1 || brew install pkg-config

if ! command -v pwsh >/dev/null 2>&1; then
brew list --cask powershell >/dev/null 2>&1 || brew install --cask powershell
fi
38 changes: 38 additions & 0 deletions .github/actions/setup-dependencies/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Setup Dependencies
description: Install and cache related dependencies.

inputs:
cache-dotnet:
description: Whether to cache .NET dependencies
required: false
default: true

runs:
using: composite
steps:
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
cache-dependency-path: |
package-lock.json
**/package-lock.json

- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: '3.x'

- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: |
8.x
9.x
10.x
cache: ${{ inputs['cache-dotnet'] }}
cache-dependency-path: |
**/*.csproj
**/*.props
**/Directory.Packages.props
6 changes: 6 additions & 0 deletions .github/actions/sync-check/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,13 @@ inputs:
runs:
using: composite
steps:
- name: Skip status/check sync in local mode
if: ${{ env.LOCAL_GHA_SKIP_STATUS == '1' }}
shell: bash
run: echo "LOCAL_GHA_SKIP_STATUS=1, skipping GitHub status/check sync."

- name: Sync status/check
if: ${{ env.LOCAL_GHA_SKIP_STATUS != '1' }}
shell: pwsh
run: |
$argsList = @(
Expand Down
84 changes: 0 additions & 84 deletions .github/actions/validate-native-test-binaries/action.yml

This file was deleted.

1 change: 1 addition & 0 deletions .github/scripts/sync_github_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ def complete_matching_check_runs(args: Args, token: str) -> bool:
for run in check_runs
if run.get("name") == args.context
and run.get("status") in ("queued", "in_progress")
and run.get("details_url") == args.target_url
and isinstance(run.get("id"), int)
]

Expand Down
Loading
Loading