Skip to content
Closed
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
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
[submodule "v2/webui"]
path = v2/webui
url = https://github.com/webui-dev/webui.git
1 change: 0 additions & 1 deletion v2/webui
Submodule webui deleted from 94a8cf
54 changes: 54 additions & 0 deletions v2/webui/.github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# https://webui.me
# https://github.com/webui-dev/webui
# Copyright (c) 2020-2026 Hassan Draga.
# Licensed under MIT License.
# All rights reserved.
# Canada.
#
# Special Thanks to Turiiya (https://github.com/ttytm)

name: CI
on:
push:
paths-ignore: ['**/*.md']
pull_request:
branches: [main]
paths-ignore: ['**/*.md']

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name == 'main' && github.sha || github.ref }}
cancel-in-progress: true

jobs:
windows:
uses: ./.github/workflows/windows.yml
permissions:
contents: write

macos:
uses: ./.github/workflows/macos.yml
permissions:
contents: write

linux:
uses: ./.github/workflows/linux.yml
permissions:
contents: write

linux_arm:
uses: ./.github/workflows/linux_arm.yml
permissions:
contents: write

linux_redhat:
uses: ./.github/workflows/linux_redhat.yml
permissions:
contents: write

linux_arch:
uses: ./.github/workflows/linux_arch.yml
permissions:
contents: write

zig:
uses: ./.github/workflows/zig.yml
193 changes: 193 additions & 0 deletions v2/webui/.github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# https://webui.me
# https://github.com/webui-dev/webui
# Copyright (c) 2020-2026 Hassan Draga.
# Licensed under MIT License.
# All rights reserved.
# Canada.
#
# Special Thanks to Turiiya (https://github.com/ttytm)

name: Linux
on:
workflow_call:

jobs:
setup:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Bundle WebUI Bridge
run: |
npm i -g esbuild
chmod +x bridge/build.sh
bridge/build.sh
- uses: actions/cache@v4
with:
path: bridge/webui_bridge.h
key: ${{ runner.os }}-${{ github.sha }}-bridge

build:
needs: setup
runs-on: ubuntu-22.04
permissions:
contents: write
strategy:
matrix:
include:
- cc: gcc
arch: x64
- cc: clang
arch: x64
fail-fast: false
env:
ARTIFACT: webui-linux-${{ matrix.cc }}-${{ matrix.arch }}
CC: ${{ matrix.cc }}
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
with:
path: bridge/webui_bridge.h
key: ${{ runner.os }}-${{ github.sha }}-bridge
fail-on-cache-miss: true
- name: Setup
run: |
if [ "$CC" == "clang" ]; then
sudo ln -s llvm-ar-14 /usr/bin/llvm-ar
sudo ln -s llvm-ranlib-14 /usr/bin/llvm-ranlib
sudo ln -s llvm-strip-14 /usr/bin/llvm-strip
fi
- name: Build Debug Target
run: make debug
- name: Build Release Target
if: ${{ !cancelled() }}
run: make
- name: Build TLS Debug Target
run: make WEBUI_USE_TLS=1 debug
- name: Build TLS Release Target
run: make WEBUI_USE_TLS=1
- name: Build Examples
run: |
examples_base_dir=$(pwd)/examples/C
for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
echo "> $example"
cd $example || (exit_code=1 && continue)
if ! make; then
echo "Failed to build '$example'"
exit_code=1
continue
fi
if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
echo "Failed to find executable for '$example'" && find .
exit_code=1
continue
fi
done
exit $exit_code
- name: Setup Browser
uses: browser-actions/setup-chrome@v1
- name: Prepare Artifact
run: |
cp -r include dist
mv dist/ "$ARTIFACT"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT }}
path: ${{ env.ARTIFACT }}
- name: Prepare Release
if: >
github.repository_owner == 'webui-dev'
&& (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
run: |
zip -r "$ARTIFACT.zip" "$ARTIFACT"
if [ $GITHUB_REF_TYPE == tag ]; then
echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
else
{
echo "IS_PRERELEASE=true";
echo "TAG=nightly";
echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
echo "BODY=Generated from commit $GITHUB_SHA."
} >> $GITHUB_ENV
fi
- name: Update Nightly Tag
if: env.IS_PRERELEASE
uses: richardsimko/update-tag@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: nightly
- name: Release
if: >
github.repository_owner == 'webui-dev'
&& (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
uses: ncipollo/release-action@v1
with:
artifacts: ${{ env.ARTIFACT }}.zip
tag: ${{ env.TAG }}
body: ${{ env.BODY }}
name: ${{ env.TITLE }}
prerelease: ${{ env.IS_PRERELEASE }}
allowUpdates: true

build-ubuntu-22:
needs: setup
runs-on: ubuntu-22.04
permissions:
contents: write
strategy:
matrix:
include:
- cc: gcc
arch: x64
- cc: clang
arch: x64
fail-fast: false
env:
ARTIFACT: webui-linux-${{ matrix.cc }}-${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
with:
path: bridge/webui_bridge.h
key: ${{ runner.os }}-${{ github.sha }}-bridge
fail-on-cache-miss: true
- name: Setup
run: |
CC="${{ matrix.cc }}"
if [ "$CC" == "clang" ]; then
sudo ln -s llvm-ar-14 /usr/bin/llvm-ar
sudo ln -s llvm-ranlib-14 /usr/bin/llvm-ranlib
sudo ln -s llvm-strip-14 /usr/bin/llvm-strip
else
sudo apt -qq install gcc-11
CC+="-11"
fi
echo "CC=$CC" >> $GITHUB_ENV
- name: Build Debug Target
run: make debug
- name: Build Release Target
if: ${{ !cancelled() }}
run: make
- name: Build TLS Debug Target
run: make WEBUI_USE_TLS=1 debug
- name: Build TLS Release Target
run: make WEBUI_USE_TLS=1
- name: Build Examples
run: |
examples_base_dir=$(pwd)/examples/C
for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do
echo "> $example"
cd $example || (exit_code=1 && continue)
if ! make; then
echo "Failed to build '$example'"
exit_code=1
continue
fi
if [[ ! -e "main" || ! -e "main-dyn" ]] ; then
echo "Failed to find executable for '$example'" && find .
exit_code=1
continue
fi
done
exit $exit_code
111 changes: 111 additions & 0 deletions v2/webui/.github/workflows/linux_arch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# https://webui.me
# https://github.com/webui-dev/webui
# Copyright (c) 2020-2026 Hassan Draga.
# Licensed under MIT License.
# All rights reserved.
# Canada.

name: Linux-Arch
on:
workflow_call:

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- cc: gcc
arch: x64
- cc: clang
arch: x64
fail-fast: false
env:
ARTIFACT: webui-linux-arch-${{ matrix.cc }}-${{ matrix.arch }}
CC: ${{ matrix.cc }}
steps:
- name: Check out the repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Build Arch Linux Docker Image
run: |
docker build -t archlinux:latest - <<EOF
FROM archlinux:latest
RUN pacman -Syu --noconfirm git npm make gcc clang llvm lld
EOF

- name: Run build inside Arch Linux container
run: |
docker run --rm \
-v ${{ github.workspace }}:/workspace \
-w /workspace \
--user root \
-e CC=${{ matrix.cc }} \
archlinux:latest \
bash -c "
git config --global --add safe.directory /workspace &&
npm i -g esbuild &&
chmod +x bridge/build.sh &&
if [ '${{ matrix.cc }}' == 'clang' ]; then
export AR=llvm-ar
export STRIP=llvm-strip
fi &&
./bridge/build.sh &&
make debug &&
make &&
make WEBUI_USE_TLS=1 debug &&
make WEBUI_USE_TLS=1 &&
chown -R $(id -u):$(id -g) /workspace
"

- name: Prepare Artifact
run: |
cp -r include dist
mv dist/ "$ARTIFACT"

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT }}
path: ${{ env.ARTIFACT}}

- name: Prepare Release
if: >
github.repository_owner == 'webui-dev'
&& (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
run: |
zip -r "$ARTIFACT.zip" "$ARTIFACT"
if [ $GITHUB_REF_TYPE == tag ]; then
echo "TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
else
{
echo "IS_PRERELEASE=true";
echo "TAG=nightly";
echo "TITLE=WebUI Nightly Build $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
echo "BODY=Generated from commit $GITHUB_SHA."
} >> $GITHUB_ENV
fi

- name: Update Nightly Tag
if: env.IS_PRERELEASE
uses: richardsimko/update-tag@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: nightly

- name: Release
if: >
github.repository_owner == 'webui-dev'
&& (github.ref_type == 'tag' || (github.ref_name == 'main' && github.event_name == 'push'))
uses: ncipollo/release-action@v1
with:
artifacts: ${{ env.ARTIFACT }}.zip
tag: ${{ env.TAG }}
body: ${{ env.BODY }}
name: ${{ env.TITLE }}
prerelease: ${{ env.IS_PRERELEASE }}
allowUpdates: true
Loading
Loading