Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
16ef7ea
add ao support
njbrown Mar 25, 2026
eaf2963
add new library and ao shader
njbrown Mar 25, 2026
e494445
fix random generation and default prop values
njbrown Mar 25, 2026
ffe75a6
add curvature node
njbrown Mar 25, 2026
05f4d31
add swirl, rays and masked blur nodes
njbrown Mar 25, 2026
7c90466
add basis for bevel node
njbrown Mar 26, 2026
350a811
move new bevel to v3
njbrown Mar 26, 2026
c72f5b2
bevelv2 complete
njbrown Mar 26, 2026
d0a5e20
add curvature shapes props to bevel
njbrown Mar 26, 2026
cb4eba6
reimplement floodfill nodes
njbrown Mar 26, 2026
24aa086
remove duplicate nodes in v3
njbrown Mar 26, 2026
284422b
fix middle mouse panning for now
njbrown Mar 26, 2026
85c2650
add curve node, prop and widget
njbrown Mar 29, 2026
572d17d
centralize code generation and node boilerplate code
njbrown Mar 29, 2026
36c32ba
complete curve featureset
njbrown Mar 29, 2026
3d1b911
add blurhq
njbrown Apr 15, 2026
7dd95f6
add auto levels node
njbrown Apr 15, 2026
e0e0414
add distance node
njbrown Apr 15, 2026
bfb519d
add edge detection node
njbrown May 18, 2026
c29ecca
add color to mask node
njbrown May 18, 2026
3221d44
add rough grain
njbrown May 18, 2026
0651f9d
add directional scratches
njbrown May 18, 2026
bbc221c
make scratches seamless
njbrown May 18, 2026
5c3b51b
add vibrance
njbrown May 18, 2026
8aa67fa
add high pass
njbrown May 18, 2026
0f42166
add emboss
njbrown May 18, 2026
3f2da97
add voronoise fractal
njbrown May 18, 2026
7c8b619
make voronoi fractal seamless
njbrown May 18, 2026
e50859d
add makteittile
njbrown May 18, 2026
24869ee
fix diagonal
njbrown May 18, 2026
3d075b5
add toon gradient
njbrown May 18, 2026
932a252
add height blend
njbrown May 18, 2026
d027187
add domain warp
njbrown May 18, 2026
8bfdbbb
new batch of nodes
njbrown May 18, 2026
321f268
add curve icon
njbrown May 18, 2026
f33207f
make blurhq seamless
njbrown May 20, 2026
d9391de
implement file save
njbrown May 20, 2026
67d1948
fix save position offset
njbrown May 23, 2026
0dbea3f
display project name in title
njbrown May 23, 2026
69951a5
handle node deletion properly
njbrown May 23, 2026
396eea7
fix curvature
njbrown May 23, 2026
54dbfb3
add recent files menu
njbrown May 23, 2026
63387db
properly cleanup projects
njbrown May 23, 2026
95c15bf
make offset 0 in tilesmapler by default
njbrown May 23, 2026
6223305
make blur scale invariant
njbrown May 23, 2026
a22bdfc
render textures using linear sampling
njbrown May 23, 2026
cb21e32
add alpha and bump mesh detail
njbrown May 24, 2026
3a9c92e
fix tiling default props
njbrown May 24, 2026
458b41e
make bevelv2 scale invariant
njbrown May 24, 2026
ab04146
add new hdri
njbrown May 24, 2026
febb862
increase sphere generation perf
njbrown May 24, 2026
353f88d
remove original bevel from v3 lib
njbrown May 24, 2026
64e1fb2
display bool prop widget
njbrown May 24, 2026
36161e4
disable backface culling
njbrown May 24, 2026
e926dbb
optimize mesh generation
njbrown May 24, 2026
bcb7cc4
add rounded ends to cylinder
njbrown May 24, 2026
50b1ef7
add spread node
njbrown May 25, 2026
71afbf5
add status bar with progress bar
njbrown May 25, 2026
6006931
fix status bar alignment
njbrown May 25, 2026
c1f83c1
add github build script
njbrown May 29, 2026
b1d0e0b
notify discord on successful build
njbrown May 30, 2026
9df25f6
switch to aws for nightlies
njbrown May 30, 2026
756e687
add experimental v3 normal map node
njbrown May 31, 2026
6c3841e
comment out makeittile
njbrown May 31, 2026
b257ecb
refine gaussian blur
njbrown May 31, 2026
ab248ba
add perlin noise
njbrown May 31, 2026
cc949c0
add perlin noise 3d
njbrown May 31, 2026
b5a7319
remove old perlin2d
njbrown May 31, 2026
6a06105
add blend node
njbrown Jun 1, 2026
1e03749
fix blend node filter order
njbrown Jun 1, 2026
f9729f0
load and display alphas channels
njbrown Jun 1, 2026
85c7992
simplify overlay
njbrown Jun 1, 2026
329cde6
fix blending
njbrown Jun 1, 2026
34bd0d1
and x and y for solid cell nodes
njbrown Jun 6, 2026
3028b90
fix prop widget update flow
njbrown Jun 6, 2026
49332e7
fix preview screen panning
njbrown Jun 6, 2026
8a943b3
add props for frames and comments
njbrown Jun 6, 2026
d7331db
update frame props
njbrown Jun 6, 2026
3cfdca6
display texture channel above node
njbrown Jun 7, 2026
b379e6f
map range no longer affects alpha channel
njbrown Jun 7, 2026
239b35d
begin copy/paste impl
njbrown Jun 7, 2026
860dc9b
invalidate nodes after copy/paste
njbrown Jun 7, 2026
24b75fc
paste now happens relative to view
njbrown Jun 7, 2026
bc578b7
disable scrolling in comboboxes
njbrown Jun 7, 2026
7e5178b
add about dialog
njbrown Jun 7, 2026
bd422a0
add prop accordion
njbrown Jun 7, 2026
1cd9c01
display port names
njbrown Jun 7, 2026
0fdf57f
add undo/redo
njbrown Jun 10, 2026
81a51b1
add bricks2 node
njbrown Jun 14, 2026
cefc88b
pin windows build
njbrown Jun 15, 2026
7899592
update slack build message
njbrown Jun 15, 2026
310d7a8
render alpha channel in 3d view
njbrown Jun 20, 2026
373520b
add Set Alpha node
njbrown Jun 20, 2026
973997f
remove ok and cancel buttons from color picker
njbrown Jun 20, 2026
7323152
add library migration system
njbrown Jun 20, 2026
be4f9c4
show alert dialog before upgrade
njbrown Jun 20, 2026
64eafd7
fix old texture checking
njbrown Jun 20, 2026
304af37
implement dragging to window to open file
njbrown Jun 20, 2026
e458c45
fix image node save/load
njbrown Jun 20, 2026
398163e
match old bevel to new one on upgrade
njbrown Jun 21, 2026
ec0ee15
add sentry for error tracking
njbrown Jun 26, 2026
7438f0a
fix missing curl dep
njbrown Jun 26, 2026
f18f59e
tidy up telemetry
njbrown Jun 26, 2026
17ee858
add git hash to version
njbrown Jun 26, 2026
c59ac6c
fix crashpad build issues in ci build
njbrown Jun 27, 2026
e759268
fix ci: use inproc on macos, fix windows ps1 copy syntax
njbrown Jun 28, 2026
1ed6444
upload debug info to sentry post build
njbrown Jun 30, 2026
26d6a25
fix multithreading-based memory access and queueing bugs
njbrown Jul 6, 2026
992c73b
add crash testing inside main gated by flag
njbrown Jul 15, 2026
a44f0c1
fix symbolification generation in gh action for linux
njbrown Jul 15, 2026
12b2f1c
add manual windows crash to test symbolication in sentry
njbrown Jul 15, 2026
934a772
add manual crash test to mac build
njbrown Jul 15, 2026
30bf653
bump to macos version
njbrown Jul 15, 2026
5f0376c
add mac inproc test
njbrown Jul 16, 2026
5274f62
mac crash hack
njbrown Jul 16, 2026
f696500
switch to using crashpad in mac builds
njbrown Jul 16, 2026
01316a8
cmake crashpad fix
njbrown Jul 16, 2026
ca4051b
bump patch
njbrown Jul 16, 2026
ca8e85e
update macOS build to use Xcode 15 for compatibility with Qt 6.7.x
njbrown Jul 16, 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
229 changes: 214 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ on:
pull_request:
branches: [main, master]
workflow_dispatch:
inputs:
sentry_crash_test:
description: "After building, run --sentry-crash-test to send a real crash to Sentry (verifies symbolication)"
type: boolean
default: false

jobs:
build-linux:
Expand All @@ -23,7 +28,7 @@ jobs:
- name: Install Qt6
uses: jurplel/install-qt-action@v4
with:
version: "6.7.0"
version: "6.7.3"
modules: "qtshadertools"
dir: "${{ github.workspace }}/Qt"
cache: true
Expand All @@ -38,14 +43,43 @@ jobs:
libxkbcommon-dev \
libvulkan-dev \
libxcb-cursor0 \
libxcb-shape0-dev
libxcb-shape0-dev \
libcurl4-openssl-dev

- name: Configure CMake
run: cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
run: cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSENTRY_BACKEND=crashpad -DTEXTURELAB_SENTRY_DSN="${{ secrets.SENTRY_DSN }}"

- name: Build
run: cmake --build build --target texturelab --parallel $(nproc)

- name: Upload debug symbols to Sentry
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
run: |
curl -sL https://sentry.io/get-cli/ | bash
# Upload the FULL, unstripped binary. It contains debug info AND the
# .eh_frame unwind info (CFI) that Sentry needs to walk a minidump's
# stack. objcopy --only-keep-debug drops the unwind info, which left
# crashes unsymbolicated ("debug information files are missing").
sentry-cli debug-files upload --include-sources \
build/src/texturelab/texturelab
# Strip the shipped copy to shrink the AppImage. The GNU build-id
# (== Sentry Debug ID) survives stripping, so the DIF we just
# uploaded still matches the binary that ships and crashes.
strip build/src/texturelab/texturelab

- name: Sentry crash test (manual)
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.sentry_crash_test == 'true' }}
run: |
export QT_QPA_PLATFORM=offscreen
# Crashes before the main window opens; crashpad_handler (copied next to
# the binary at build time) uploads the minidump via the built-in DSN.
build/src/texturelab/texturelab --sentry-crash-test || true
echo "waiting for crashpad to upload the minidump..."
sleep 25

- name: Install LinuxDeploy
uses: miurahr/install-linuxdeploy-action@v1
with:
Expand All @@ -56,9 +90,9 @@ jobs:
APPIMAGE_EXTRACT_AND_RUN: 1
DEPLOY_STDCXX: 1
run: |
export QMAKE=${{ github.workspace }}/Qt/Qt/6.7.0/gcc_64/bin/qmake
export PATH=${{ github.workspace }}/Qt/Qt/6.7.0/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=${{ github.workspace }}/Qt/Qt/6.7.0/gcc_64/lib:$LD_LIBRARY_PATH
export QMAKE=${{ github.workspace }}/Qt/Qt/6.7.3/gcc_64/bin/qmake
export PATH=${{ github.workspace }}/Qt/Qt/6.7.3/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=${{ github.workspace }}/Qt/Qt/6.7.3/gcc_64/lib:$LD_LIBRARY_PATH

# Create desktop file
cat > texturelab.desktop << 'EOF'
Expand All @@ -73,6 +107,11 @@ jobs:
# Create a placeholder icon (256x256 PNG with "TL" text)
cp src/icons/logo.png texturelab.png

# Bundle crashpad_handler alongside the main binary
mkdir -p AppDir/usr/bin
cp build/src/texturelab/crashpad_handler AppDir/usr/bin/ || \
cp build/_deps/sentry-build/crashpad_build/handler/crashpad_handler AppDir/usr/bin/

linuxdeploy-x86_64.AppImage \
--appdir AppDir \
--executable build/src/texturelab/texturelab \
Expand All @@ -88,7 +127,7 @@ jobs:
path: "*.AppImage"

build-windows:
runs-on: windows-latest
runs-on: windows-2022

steps:
- name: Checkout repository
Expand All @@ -101,23 +140,61 @@ jobs:
- name: Install Qt6
uses: jurplel/install-qt-action@v4
with:
version: "6.7.0"
version: "6.7.3"
arch: "win64_msvc2019_64"
modules: "qtshadertools"
dir: "${{ github.workspace }}/Qt"
cache: true

- name: Configure CMake
run: cmake -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release
run: cmake -B build -G "Visual Studio 17 2022" -A x64 -DSENTRY_BACKEND=crashpad -DTEXTURELAB_SENTRY_DSN="${{ secrets.SENTRY_DSN }}"

- name: Build
run: cmake --build build --target texturelab --config Release --parallel

- name: Upload debug symbols to Sentry
shell: pwsh
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
run: |
Invoke-WebRequest -Uri "https://github.com/getsentry/sentry-cli/releases/latest/download/sentry-cli-Windows-x86_64.exe" -OutFile "sentry-cli.exe"
$exe = "build\src\texturelab\Release\texturelab.exe"
$pdb = "build\src\texturelab\Release\texturelab.pdb"
if (-not (Test-Path $pdb)) { Write-Error "texturelab.pdb not found — build produced no debug info; Sentry cannot symbolicate."; exit 1 }
# Log the Debug IDs. The exe's Debug ID (from its CodeView record) MUST
# be non-null and match the pdb, or crash minidumps stay unsymbolicated.
Write-Host "== exe Debug ID =="; .\sentry-cli.exe debug-files check $exe
Write-Host "== pdb Debug ID =="; .\sentry-cli.exe debug-files check $pdb
.\sentry-cli.exe debug-files upload --include-sources "build\src\texturelab\Release\"

- name: Deploy Qt dependencies
shell: pwsh
run: |
mkdir deploy
copy build\src\texturelab\Release\texturelab.exe deploy\
${{ github.workspace }}\Qt\Qt\6.7.0\msvc2019_64\bin\windeployqt.exe deploy\texturelab.exe --release --no-translations
New-Item -ItemType Directory -Path deploy
Copy-Item "build\src\texturelab\Release\texturelab.exe" deploy\
& "${{ github.workspace }}\Qt\Qt\6.7.3\msvc2019_64\bin\windeployqt.exe" "deploy\texturelab.exe" --release --no-translations
$handler = @(
"build\src\texturelab\Release\crashpad_handler.exe",
"build\src\texturelab\crashpad_handler.exe",
"build\_deps\sentry-build\crashpad_build\handler\Release\crashpad_handler.exe"
) | Where-Object { Test-Path $_ } | Select-Object -First 1
if ($handler) { Copy-Item $handler deploy\ } else { Write-Warning "crashpad_handler.exe not found, skipping" }

- name: Sentry crash test (manual)
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.sentry_crash_test == 'true' }}
shell: pwsh
run: |
$env:QT_QPA_PLATFORM = "offscreen"
# Run the deployed bundle (Qt DLLs + crashpad_handler.exe alongside the
# exe). Crashes before the main window; crashpad uploads the minidump
# via the built-in DSN. Debug IDs match the PDB uploaded above.
$p = Start-Process -FilePath "deploy\texturelab.exe" -ArgumentList "--sentry-crash-test" -PassThru
if (-not $p.WaitForExit(60000)) { $p.Kill(); Write-Warning "timed out waiting for crash" }
else { Write-Host "app exited with code $($p.ExitCode) (crash expected)" }
Write-Host "waiting for crashpad to upload the minidump..."
Start-Sleep -Seconds 25

- name: Upload Windows artifact
uses: actions/upload-artifact@v4
Expand All @@ -126,7 +203,10 @@ jobs:
path: deploy/

build-macos:
runs-on: macos-latest
# Qt 6.7.x still references AGL.framework, which modern macOS SDKs (Xcode 16+)
# removed — so we pin Xcode 15 (macOS 14 SDK, AGL present) on macos-14. Build
# universal x86_64+arm64 so it runs on both Intel and Apple Silicon Macs.
runs-on: macos-14

steps:
- name: Checkout repository
Expand All @@ -136,22 +216,141 @@ jobs:
fetch-depth: 0
fetch-tags: true

- name: Select Xcode 15 (macOS 14 SDK still ships AGL.framework)
run: |
XC=$(ls -d /Applications/Xcode_15*.app 2>/dev/null | sort -V | tail -1)
if [ -z "$XC" ]; then echo "No Xcode 15.x found on runner"; ls -d /Applications/Xcode_*.app; exit 1; fi
echo "Using $XC"
sudo xcode-select -s "$XC/Contents/Developer"
xcodebuild -version

- name: Install Qt6
uses: jurplel/install-qt-action@v4
with:
version: "6.7.0"
version: "6.7.3"
modules: "qtshadertools"
dir: "${{ github.workspace }}/Qt"
cache: true

- name: Configure CMake
run: cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
run: |
# Crashpad's CMake locates the Mach mig defs at
# ${CMAKE_OSX_SYSROOT}/usr/include/mach/exc.defs. If CMAKE_OSX_SYSROOT
# is empty it resolves to /usr/include/mach (absent on modern macOS)
# and configure fails. Point it explicitly at the SDK, which ships them.
SDKROOT=$(xcrun --show-sdk-path)
echo "Using SDK: $SDKROOT"
cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_SYSROOT="$SDKROOT" -DTEXTURELAB_SENTRY_DSN="${{ secrets.SENTRY_DSN }}"

- name: Build
run: cmake --build build --target texturelab --parallel $(sysctl -n hw.ncpu)

- name: Generate dSYM and upload to Sentry
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
run: |
dsymutil build/src/texturelab/texturelab.app/Contents/MacOS/texturelab \
-o texturelab.dSYM
strip build/src/texturelab/texturelab.app/Contents/MacOS/texturelab
curl -sL https://sentry.io/get-cli/ | bash
sentry-cli debug-files upload --include-sources texturelab.dSYM

- name: Sentry crash test (manual)
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.sentry_crash_test == 'true' }}
run: |
export QT_QPA_PLATFORM=offscreen
# Crashpad (crashpad_handler bundled next to the binary) uploads the
# minidump out-of-process, symbolicated by the dSYM uploaded above.
build/src/texturelab/texturelab.app/Contents/MacOS/texturelab --sentry-crash-test || true
echo "waiting for crashpad to upload the minidump..."
sleep 25

- name: Upload macOS artifact
uses: actions/upload-artifact@v4
with:
name: texturelab-macos
path: build/src/texturelab/texturelab.app

deploy:
needs: [build-linux, build-windows, build-macos]
if: always()
runs-on: ubuntu-latest
steps:
- name: Download artifacts
if: ${{ needs.build-linux.result == 'success' || needs.build-windows.result == 'success' || needs.build-macos.result == 'success' }}
uses: actions/download-artifact@v4
with:
path: artifacts

- name: Zip and upload to S3
if: ${{ needs.build-linux.result == 'success' || needs.build-windows.result == 'success' || needs.build-macos.result == 'success' }}
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2
SHA: ${{ github.sha }}
run: |
cd artifacts
if [ -d texturelab-linux ]; then zip -r ../linux-$SHA.zip texturelab-linux/; fi
if [ -d texturelab-windows ]; then zip -r ../windows-$SHA.zip texturelab-windows/; fi
if [ -d texturelab-macos ]; then zip -r ../macos-$SHA.zip texturelab-macos/; fi
cd ..
for f in linux-$SHA.zip windows-$SHA.zip macos-$SHA.zip; do
if [ -f "$f" ]; then aws s3 cp "$f" s3://texturelab-nightlies/; fi
done

- name: Post to Discord
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
BRANCH: ${{ github.ref_name }}
SHA: ${{ github.sha }}
RUN_ID: ${{ github.run_id }}
REPO: ${{ github.repository }}
LINUX_RESULT: ${{ needs.build-linux.result }}
WINDOWS_RESULT: ${{ needs.build-windows.result }}
MACOS_RESULT: ${{ needs.build-macos.result }}
run: |
SHORT_SHA="${SHA:0:7}"
RUN_URL="https://github.com/$REPO/actions/runs/$RUN_ID"
S3_BASE="https://texturelab-nightlies.s3.us-east-2.amazonaws.com"

status_emoji() {
case "$1" in
success) echo "✅" ;;
failure) echo "❌" ;;
cancelled) echo "⏹️" ;;
*) echo "⚠️" ;;
esac
}

download_line() {
local result="$1" label="$2" url="$3"
if [[ "$result" == "success" ]]; then
echo "$(status_emoji "$result") **$label** — [Download]($url)"
else
echo "$(status_emoji "$result") **$label** — build $result"
fi
}

if [[ "$LINUX_RESULT" == "success" && "$WINDOWS_RESULT" == "success" && "$MACOS_RESULT" == "success" ]]; then
TITLE="Build succeeded — $BRANCH @ $SHORT_SHA"
COLOR=3066993
else
TITLE="Build failed — $BRANCH @ $SHORT_SHA"
COLOR=15158332
fi

DESCRIPTION="$(download_line "$LINUX_RESULT" "Linux" "$S3_BASE/linux-$SHA.zip")\n$(download_line "$WINDOWS_RESULT" "Windows" "$S3_BASE/windows-$SHA.zip")\n$(download_line "$MACOS_RESULT" "macOS" "$S3_BASE/macos-$SHA.zip")\n\n[View run]($RUN_URL)"

curl -s -X POST "$DISCORD_WEBHOOK" \
-H "Content-Type: application/json" \
-d "{
\"embeds\": [{
\"title\": \"$TITLE\",
\"description\": \"$DESCRIPTION\",
\"color\": $COLOR,
\"url\": \"$RUN_URL\"
}]
}"
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,8 @@ compile_commands.json
CTestTestfile.cmake
_deps

build/
build/
build-sentry-test/

# Secrets — Sentry auth token, org/project slugs
.env
23 changes: 23 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,29 @@ cmake_minimum_required(VERSION 3.10)

project(qtcompleteapp VERSION 0.1 LANGUAGES CXX)

# sentry-native (Crashpad backend for out-of-process crash capture)
include(FetchContent)
FetchContent_Declare(
sentry
GIT_REPOSITORY https://github.com/getsentry/sentry-native.git
GIT_TAG 0.7.20
)
set(SENTRY_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
if(WIN32)
set(SENTRY_BACKEND "crashpad" CACHE STRING "" FORCE)
set(SENTRY_TRANSPORT "winhttp" CACHE STRING "" FORCE)
elseif(APPLE)
# Crashpad: out-of-process minidumps with full thread stacks (symbolicated via
# the uploaded dSYM), same as Win/Linux. The inproc backend delivered crashes
# but with no stack frames on Apple Silicon, so reports were unsymbolicatable.
set(SENTRY_BACKEND "crashpad" CACHE STRING "" FORCE)
set(SENTRY_TRANSPORT "curl" CACHE STRING "" FORCE)
else()
set(SENTRY_BACKEND "crashpad" CACHE STRING "" FORCE)
set(SENTRY_TRANSPORT "curl" CACHE STRING "" FORCE)
endif()
FetchContent_MakeAvailable(sentry)

# Find Qt6 with GuiPrivate before adding subdirectories that need it
find_package(Qt6 COMPONENTS Core Gui Widgets REQUIRED)

Expand Down
21 changes: 21 additions & 0 deletions gh-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail

REPO="njbrown/texturelab"
WORKFLOW="build.yml"
BRANCH="${1:-$(git rev-parse --abbrev-ref HEAD)}"

echo "Triggering build for branch: $BRANCH"
gh workflow run "$WORKFLOW" --repo "$REPO" --ref "$BRANCH"

echo "Waiting for run to start..."
sleep 3

RUN_ID=$(gh run list --repo "$REPO" --workflow "$WORKFLOW" --branch "$BRANCH" --limit 1 --json databaseId -q '.[0].databaseId')

echo "Run ID: $RUN_ID"
echo "https://github.com/$REPO/actions/runs/$RUN_ID"

if [[ "${2:-}" == "--watch" || "${1:-}" == "--watch" ]]; then
gh run watch "$RUN_ID" --repo "$REPO"
fi
2 changes: 1 addition & 1 deletion public/assets
Loading
Loading