Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
eb06f9c
feat: OS-14592 Create BrightSign CI workflows
t-bashir-bs May 6, 2026
7a8162f
update ec2-github-runner with latest github runner
caneraltinbasak May 6, 2026
64eede4
ci: update EC2 AMI to 200GB disk image
caneraltinbasak May 6, 2026
e020bd6
actions: Update to node 24
t-bashir-bs May 6, 2026
183410d
actions: Remove target electron_node:overlapped-checker for release b…
t-bashir-bs May 6, 2026
b84d775
actions: Add step to display the disk space free after compilation
t-bashir-bs May 6, 2026
4c2ceb8
feat: OS-14993 Make redirects from one file to another transparent (#12)
t-bashir-bs May 6, 2026
ac6ef77
feat: OS-14967 Patch to force mime sniffing for file urls in Chromium…
t-bashir-bs May 6, 2026
9a8bbc9
feat : backport, Allow partitions to have app set quotas OS-14197 (#14)
gecko19 May 6, 2026
95cbb07
feat: Add BrightSign custom set-z-index feature to Wayland (#17)
t-bashir-bs May 6, 2026
f315b34
OS-14339: Support negative window offsets (#18)
t-bashir-bs May 6, 2026
e4f3087
feat: Add hideScrollBars BrowserWindow constructor param (#19)
t-bashir-bs May 6, 2026
27a16c4
feat: Use remote-debugging-address in devtools (#26)
t-bashir-bs May 6, 2026
c754c5d
feat: Add a webpreference to disable pinch to zoom (#24)
t-bashir-bs May 6, 2026
d2773bf
fix: Revert Modernize equality operators in StoragePartitionConfig
t-bashir-bs May 6, 2026
0973b28
fix: Allow websites from file:// domain to access cookies OS-16546 (#40)
t-bashir-bs May 6, 2026
fb3b4eb
fix: Fix weston-keyboard backspace problem with existing text
caneraltinbasak May 6, 2026
16bb025
fix: Retry wayland display server connection before giving up (#29)
caneraltinbasak May 6, 2026
50868c6
fix: Fix setOpacity test
caneraltinbasak May 6, 2026
d3dceff
feat: Add SetOpacity to linux ozone wayland: OS-16623 (#51)
t-bashir-bs May 6, 2026
8724559
feat: Use same nssdb path for roKeyStore and Chromium OS-17053 (#56)
t-bashir-bs May 6, 2026
4e3964a
feat: Implement setting uid and groups for renderer process OS-17053…
t-bashir-bs May 6, 2026
31b0fae
feat: Add bs z-order absolute level
caneraltinbasak May 6, 2026
577cf2d
feat: Add support for changing opacity on ozone wayland platform
caneraltinbasak May 6, 2026
9266dab
feat: Add support for SetIgnoreMouseEvents on Wayland platform
caneraltinbasak May 6, 2026
f80b595
fix: Increase file handle limit for renderer OS-17400 (#60)
t-bashir-bs May 6, 2026
1acb29b
feat: Add support for window rotation OS-17652 (#65)
t-bashir-bs May 6, 2026
a50dad1
fix: Disable changing mouse cursor (OS-17765)
jdye-bs May 6, 2026
8e06ec8
Add support for eglGetPlatformDisplayExt
t-bashir-bs May 6, 2026
477cf34
feat: Allow MSE to be disabled with disable-blink-features: OS-18170 …
t-bashir-bs May 6, 2026
4c0872e
fix: Do not convert tooltip position to screen coordinates for waylan…
t-bashir-bs May 6, 2026
04ac8a2
feat: Add virtual-keyboard-visibility-changed event OS-18421
t-bashir-bs May 6, 2026
6eadf60
feat: Short-circuit same origin check for frame load if websecurity i…
t-bashir-bs May 6, 2026
ba37178
feat: Add blob data fetching OS-18647 (#94)
t-bashir-bs May 6, 2026
f401b2a
feat: Add addFont api call to app: OS-14352 (#101)
t-bashir-bs May 6, 2026
cfca0fa
feat: Add switch to disable font matching cache: OS-14352 (#102)
t-bashir-bs May 6, 2026
a543372
feat: Add will-open-dialog event to webcontents (#30)
t-bashir-bs May 6, 2026
37945a9
fix: Add paths to _nodeModulePaths for Brightsign objects OS-19543 (#…
t-bashir-bs May 6, 2026
8799974
fix: Disable the error page being displayed on navigation errors (#113)
t-bashir-bs May 6, 2026
f4f029e
feat: Enable viewport options when viewport-enabled OS-20339 (#119)
t-bashir-bs May 6, 2026
249090c
feat: add memoryPressureMonitor API OS-20753, OS-20754
t-bashir-bs May 6, 2026
b8c6230
feat: propagate memory pressure notifications to renderer processes O…
caneraltinbasak May 6, 2026
54b2dfe
feat: Add setLanguage API to webcontents OS-20941 (#122)
t-bashir-bs May 6, 2026
d254af8
fix: disable BTM (DIPS) after change to navigation error-page behavior
t-bashir-bs May 6, 2026
d006bd5
test: fix getGPUInfo fixture data URL format
t-bashir-bs May 6, 2026
b653a7e
fix: race in cert verify cache session test
t-bashir-bs May 6, 2026
9efd674
fix: Fix the BrowserWindow.setAlwaysOnTop test
caneraltinbasak May 6, 2026
f2e0d49
fix(wayland): Use surface activation control protocol for unfocusable…
caneraltinbasak May 6, 2026
0dc113c
feat: Move z-order management to the compositor wayland version OS-20183
rsmith-brightsign May 6, 2026
2a9bfab
fix: use local server in zoomFactor windowOpenHandler test
t-bashir-bs May 6, 2026
b395ba2
fix: memorypressure shutdown DCHECK in AsyncMemoryConsumerRegistration
t-bashir-bs May 6, 2026
504ec3b
chore: Fix patch indexes
t-bashir-bs May 6, 2026
46dadec
fix: cast null resolve values to v8::Value in WebContents blob promise
t-bashir-bs May 6, 2026
5515ef0
fix: enable PDF viewer in incognito and when site isolation is off OS…
caneraltinbasak Mar 9, 2026
07b4bd6
feat: Optimise window show time OS-20603 (#121)
t-bashir-bs Mar 9, 2026
1438c79
feat: Add support for brightsign video player
t-bashir-bs Mar 28, 2026
6bb9cd0
feat: OS-14887 video player reuse (#43)
t-bashir-bs Apr 16, 2024
dea486b
feat(audio-video-tracks): Added support for html5 video-audio tracks …
caneraltinbasak May 12, 2025
79aed42
feat: Adds custom BrightSign video attributes and fixes (#57)
t-bashir-bs Jun 17, 2024
cb8a99d
feat: Add video/audio-codecs-supported flag support OS-20675
caneraltinbasak Jan 30, 2026
a03fb19
fix: set BrightSign surface role on toplevel window creation
t-bashir-bs May 11, 2026
5a41a81
ozone: Add nexus backend for ozone
t-bashir-bs Apr 24, 2026
f3ca390
feat: Add MSE support for series 3 & 4 devices OS-19598 (#111)
t-bashir-bs Apr 27, 2026
0ee6629
fix: gpu enable validating command decoder for BrightSign builds
t-bashir-bs May 13, 2026
9ad3a29
feat: Add mouse wheel scrolling for series 3&4 OS-20896 (#125)
t-bashir-bs Mar 23, 2026
ba72d89
fix: Correct time zone deficiencies OS-20888 (#124)
t-bashir-bs Mar 13, 2026
f97e999
chore: Fix indexes in a couple of patches
t-bashir-bs May 15, 2026
9f44136
fix: Update archaeologist-dig workflow to fetch base branch from base…
Copilot May 19, 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
4 changes: 3 additions & 1 deletion .github/workflows/archaeologist-dig.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
- name: Setting Up Dig Site
env:
CLONE_URL: ${{ github.event.pull_request.head.repo.clone_url }}
BASE_CLONE_URL: ${{ github.event.pull_request.base.repo.clone_url }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
BASE_REF: ${{ github.event.pull_request.base.ref }}
run: |
Expand All @@ -33,8 +34,9 @@ jobs:
cd electron
mkdir -p artifacts
git remote add fork "$CLONE_URL" && git fetch fork
git remote add base "$BASE_CLONE_URL" && git fetch base
git checkout "$HEAD_SHA"
git merge-base "origin/$BASE_REF" HEAD > .dig-old
git merge-base "base/$BASE_REF" HEAD > .dig-old
echo "$HEAD_SHA" > .dig-new
cp .dig-old artifacts

Expand Down
299 changes: 299 additions & 0 deletions .github/workflows/bs_electron_build_and_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,299 @@
name: 'BrightSign Build and Test Electron: Build and test workflow'
on:
workflow_call:
inputs:
runner_name:
required: true
type: string

github_hosted_runner:
required: true
type: boolean

build_type:
required: true
type: string
# "test" or "release"

aws_arn_role:
required: true
type: string

aws_region:
required: true
type: string

jobs:
build-and-test-electron:
name: Build and Test Electron
runs-on: ${{ inputs.runner_name }}
defaults:
run:
working-directory: ./

steps:
# Cleanups only needed for self hosted runners
# - name: Clean up work dir (temp instead of colpal/actions-clean@v1, until docker usage issue with sock file permissions sorted)
# run: rm -rf *

# - name: Cleanup work dir
# uses: colpal/actions-clean@v1
# if: ${{ always() }} # To ensure this step runs even when earlier steps fail
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-region: ${{ inputs.aws_region}}
role-to-assume: ${{ inputs.aws_arn_role }}
# Set role-duration-seconds to 10 hours
role-duration-seconds: 36000

- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 24

- name: Download config file and set env vars from it
run: |
aws s3 cp s3://electron-ci-config-bucket/config.json .
aws s3 cp s3://electron-ci-config-bucket/set_github_env_vars.py .
python3 set_github_env_vars.py --file config.json

- name: Check build type
if: inputs.build_type != 'test' && inputs.build_type != 'release'
run: |
echo "ERROR> build_type is set to \"${{ inputs.build_type }}\" and should be set to \"test\" or \"release\""
exit 1

- name: Install dependencies if Github hosted runner
if: inputs.github_hosted_runner == true
run: |
# From https://www.electronjs.org/docs/latest/development/build-instructions-linux
sudo apt-get update
sudo apt-get install -y build-essential clang libdbus-1-dev libgtk-3-dev \
libnotify-dev libasound2-dev libcap-dev \
libcups2-dev libxtst-dev \
libxss1 libnss3-dev gcc-multilib g++-multilib curl \
gperf bison python3-dbusmock openjdk-8-jre

# virtual framebuffer for running tests.
sudo apt install -y xvfb

# A fix for test case (to remove fonts-liberation that seems to be installed by default in Github default ubuntu image)...
# 2022-12-23T10:56:48.4520914Z not ok 2079 font fallback should use Helvetica for sans-serif on Mac, and Arial on Windows and Linux
# 2022-12-23T10:56:48.4522432Z AssertionError: expected 'Liberation Sans' to equal 'DejaVu Sans'
# 2022-12-23T10:56:48.4523556Z at Context.<anonymous> (electron/spec/chromium-spec.ts:2222:38)
sudo apt-get remove -y fonts-liberation

- name: Install and setup sccache
run: |
# export SCCACHE_ERROR_LOG="$PWD"/sccache.log
# export SCCACHE_LOG="info,sccache::cache=debug"

curl -o sccache_package.tar.gz -L https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-unknown-linux-musl.tar.gz
echo "1fbb35e135660d04a2d5e42b59c7874d39b3deb17de56330b25b713ec59f849b sccache_package.tar.gz" | shasum -a 256 -c

tar xzf sccache_package.tar.gz --strip-components=1
sudo ln -s "$PWD"/sccache /usr/local/bin/sccache

# echo '/home/ubuntu/.cargo/bin/sccache' >> $GITHUB_PATH
echo 'SCCACHE_REGION=${{ inputs.aws_region }}' >> $GITHUB_ENV
echo 'SCCACHE_CACHE_SIZE=100G' >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v3
with:
path: ./src/electron
fetch-depth: 0

- name: Get electron_version
run: echo "ELECTRON_VERSION=v$(python3 ./src/electron/script/get-git-version.py)" >> $GITHUB_ENV

- name: Setup build type Testing
if: inputs.build_type == 'test'
run: |
echo "Setting up build type as testing"
echo 'OUTPUT_FOLDER=out/Testing' >> $GITHUB_ENV
echo 'GN_IMPORT=//electron/build/args/testing.gn' >> $GITHUB_ENV
echo 'SCCACHE_BUCKET=${{ env.SCCACHE_TEST_BUILD_BUCKET_NAME }}' >> $GITHUB_ENV

- name: Setup build type Release
if: inputs.build_type == 'release'
run: |
echo "Setting up build type as release"
echo 'OUTPUT_FOLDER=out/Release' >> $GITHUB_ENV
echo 'GN_IMPORT=//electron/build/args/release.gn' >> $GITHUB_ENV
echo 'SOURCE_RELEASE_FILE_NAME=${{ env.ELECTRON_VERSION }}' >> $GITHUB_ENV
echo 'RELEASE_SRC_FOLDER=${{ env.ELECTRON_VERSION }}' >> $GITHUB_ENV
echo 'RELEASE_DST_FOLDER=${{ env.ELECTRON_VERSION }}' >> $GITHUB_ENV
echo 'SCCACHE_BUCKET=${{ env.SCCACHE_RELEASE_BUILD_BUCKET_NAME }}' >> $GITHUB_ENV

- name: Display sccache config
run: |
# echo $SCCACHE_BUCKET $SCCACHE_REGION $SCCACHE_CACHE_SIZE

sccache -s

- name: Configure Git cache params
run: |
echo 'GIT_CACHE_FOLDER_NAME=git-cache' >> $GITHUB_ENV
echo 'GIT_CACHE_PATH='"$PWD"'/git-cache' >> $GITHUB_ENV
echo 'GIT_CACHE_FILENAME=git-cache-${{ hashFiles('src/electron/DEPS') }}.tar.gz' >> $GITHUB_ENV

- name: Get depot tools
run: git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git

- name: Add depot tools to PATH
run: echo ''"$PWD"'/depot_tools' >> $GITHUB_PATH

- name: Retrieve git-cache
run: |
aws s3api head-object --bucket ${{ env.GIT_CACHE_BUCKET_NAME }} --key $GIT_CACHE_FILENAME || not_exist=true
if [ $not_exist ]; then
echo "Git cache ${GIT_CACHE_FILENAME} not found in bucket ${{ env.GIT_CACHE_BUCKET_NAME }}"
echo "GIT_CACHE_RESTORED=false" >> $GITHUB_ENV
else
echo "Git cache ${GIT_CACHE_FILENAME} found in bucket ${{ env.GIT_CACHE_BUCKET_NAME }}"
echo "GIT_CACHE_RESTORED=true" >> $GITHUB_ENV
aws s3 cp s3://${{ env.GIT_CACHE_BUCKET_NAME }}/$GIT_CACHE_FILENAME $GIT_CACHE_FILENAME --quiet
echo "Downloaded ${GIT_CACHE_FILENAME}"
tar --use-compress-program=pigz -xf $GIT_CACHE_FILENAME
echo "Uncompressed ${GIT_CACHE_FILENAME}"
rm $GIT_CACHE_FILENAME
fi

- name: GClient sync
run: |
gclient config --name "src/electron" --unmanaged git@github.com:${{ github.repository }}.git
gclient sync --with_branch_heads --with_tags

# TEMP if you don't do gsync
# cd src/electron
# gclient sync -f

- name: Save git-cache cache if needed
if: env.GIT_CACHE_RESTORED == 'false'
run: |
tar --use-compress-program=pigz -cf $GIT_CACHE_FILENAME ./$GIT_CACHE_FOLDER_NAME
aws s3 cp $GIT_CACHE_FILENAME s3://${{ env.GIT_CACHE_BUCKET_NAME }}/$GIT_CACHE_FILENAME --storage-class ONEZONE_IA --quiet

- name: Create source tarball and copy to artifacts bucket
if: inputs.build_type == 'release'
run: |
mkdir -p ${{ env.RELEASE_SRC_FOLDER }}

echo "Fetching chromium build tools to get export_tarball.py"
git clone https://chromium.googlesource.com/chromium/tools/build --depth 1

echo "Running export_tarball.py"
./build/recipes/recipe_modules/chromium/resources/export_tarball.py $RELEASE_SRC_FOLDER/${{ env.SOURCE_RELEASE_FILE_NAME }} --basename src --src-dir=./src --version=${{ env.ELECTRON_VERSION }} --remove-nonessential-files

echo "Uploading source tarball"
aws s3 cp ${{ env.RELEASE_SRC_FOLDER }}/${{ env.SOURCE_RELEASE_FILE_NAME }}.tar.xz s3://${{ env.ARTIFACT_BUCKET_NAME }}/${{ env.RELEASE_DST_FOLDER }}/ --acl public-read --quiet

- name: Set CHROMIUM_BUILDTOOLS_PATH env var
run: echo 'CHROMIUM_BUILDTOOLS_PATH='"$PWD"'/src/buildtools' >> $GITHUB_ENV

- name: Make sure electron git pack-refs file is present
# This is to stop ninja getting into an infinte loop of "[0/1] Regenerating ninja files"
# Found this file was the issue (as it was missing for some reason) by manually running ninja with -d explain
run: |
cd src/electron
git pack-refs --all

- name: Run GN Gen
run: |
cd src
gn gen $OUTPUT_FOLDER --args="import(\"${GN_IMPORT}\") cc_wrapper=\"sccache\""

- name: Run Ninja Build
run: |
cd src
ninja -C $OUTPUT_FOLDER electron

- name: Build other items for tests
if: inputs.build_type == 'test'
run: |
cd src
ninja -C $OUTPUT_FOLDER electron:node_headers

- name: Display sccache stats
run: sccache -s

- name: Check disk space
run: df -h

- name: Run unit tests
if: inputs.build_type == 'test'
run: |
cd src/electron
xvfb-run node script/spec-runner --disable-gpu

- name: Run Node.js Smoke Tests
if: inputs.build_type == 'test'
run: |
cd src/electron
xvfb-run node script/node-spec-runner.js --default

- name: Prepare release dist and upload
if: inputs.build_type == 'release'
run: |
cd src
ninja -C $OUTPUT_FOLDER electron:electron_dist_zip electron:node_headers electron:hunspell_dictionaries_zip
if [ "`uname`" == "Darwin" ]; then
target_os=mac
target_cpu=x64
if [ x"$MAS_BUILD" == x"true" ]; then
target_os=mac_mas
fi
if [ "$TARGET_ARCH" == "arm64" ]; then
target_cpu=arm64
fi
elif [ "`uname`" == "Linux" ]; then
target_os=linux
if [ x"$TARGET_ARCH" == x ]; then
target_cpu=x64
else
target_cpu="$TARGET_ARCH"
fi
else
echo "Unknown system: `uname`"
exit 1
fi
echo "Checking dist_zip.${target_os}.${target_cpu}.manifest"
echo "TARGET_OS_CPU=${target_os}-${target_cpu}" >> $GITHUB_ENV
electron/script/zip_manifests/check-zip-manifest.py $OUTPUT_FOLDER/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest

- name: Prepare release package and upload to artifacts bucket
if: inputs.build_type == 'release'
run: |
cd ${{ env.RELEASE_SRC_FOLDER }}
mkdir package
cd package
unzip -q ../../src/out/Release/dist.zip -d ./dist
cp ../../src/electron/npm/* .
cp ../../src/electron/electron.d.ts .
cp ../../src/LICENSE .

# Normally when electron is installed it will run install.js which will download the binary, create path.txt
# and copy fields 'name', 'repository', 'description', 'license', 'author', 'keywords' from the root package.json.

# We will manually do these steps and clear install.js

echo -n "electron" > path.txt
echo "" > install.js

echo "$(jq '. += {"name": "electron"}' package.json)" > package.json
echo "$(jq '. += {"repository": "https://github.com/brightsign/electron"}' package.json)" > package.json
echo "$(jq '. += {"description": "Build cross platform desktop apps with JavaScript, HTML, and CSS"}' package.json)" > package.json
echo "$(jq '. += {"license": "MIT"}' package.json)" > package.json
echo "$(jq '. += {"author": "Electron Community"}' package.json)" > package.json
echo "$(jq '. += {"keywords": [ "electron" ] }' package.json)" > package.json
echo "$(jq '. += {"version": "${{ env.ELECTRON_VERSION }}"}' package.json)" > package.json

electron_package_name="electron-package-${{ env.TARGET_OS_CPU }}-${{ env.SOURCE_RELEASE_FILE_NAME }}.tar.gz"
echo "Creating $electron_package_name"
tar --use-compress-program=pigz -cf "../$electron_package_name" .
cd ..

echo "Uploading $electron_package_name to s3://${{ env.ARTIFACT_BUCKET_NAME }}/${{ env.RELEASE_DST_FOLDER }}/"
aws s3 cp $electron_package_name s3://${{ env.ARTIFACT_BUCKET_NAME }}/${{ env.RELEASE_DST_FOLDER }}/ --acl public-read --quiet
Loading
Loading