Skip to content

Give Windows a tray icon, and open the GUI with no console beside it … #136

Give Windows a tray icon, and open the GUI with no console beside it …

Give Windows a tray icon, and open the GUI with no console beside it … #136

Workflow file for this run

# Rolling build of main. The `nightly` tag is moved on every push, so the
# release page always holds exactly one set of development binaries.
name: Nightly
on:
push:
branches: ["main"]
workflow_dispatch:
concurrency:
group: nightly
cancel-in-progress: true
# Read for everything by default; the publish job below raises its own to
# `contents: write`, which is the only thing here that needs it.
permissions:
contents: read
jobs:
build:
uses: ./.github/workflows/build.yml
with:
version: nightly
# The same client as a page, packaged so it can be hosted without being
# built. It is a separate workflow rather than a fourth matrix entry because
# nothing about it matches: a nightly toolchain, a rebuilt standard library,
# trunk, and one artifact rather than one per platform.
web:
uses: ./.github/workflows/web-bundle.yml
with:
version: nightly
publish:
needs: [build, web]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: artifacts
merge-multiple: true
- name: Publish rolling nightly release
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
set -euo pipefail
cat > notes.md <<'NOTES'
Unsigned development build of `main`. Expect breakage.
Download the archive for your platform and unpack it. It holds two
binaries that belong together: `oxidezap` is the window, `oxidezapd`
holds the WhatsApp session, and the first starts the second when
nothing is already running. Keep them in the same directory.
The tarballs carry the execute bit. On macOS, clear the quarantine
flag before the first run:
xattr -dr com.apple.quarantine oxidezap oxidezapd
On Windows, SmartScreen will object. All of this follows from the
binaries being unsigned.
`oxidezap-nightly-web.zip` is the same client as a web page: the
bundle published to GitHub Pages, built to be served from anywhere
rather than from one directory. Unpack it and serve the files with
any static web server — over HTTPS or from `localhost`, and with
`coi-serviceworker.js` left beside `index.html`, which is what
obtains the cross-origin isolation the window needs. `README.md`
inside says the rest.
NOTES
echo "" >> notes.md
echo "Built from \`$GITHUB_SHA\`." >> notes.md
# Recreate rather than edit: `gh release edit` cannot move a tag, and
# a stale tag would leave the assets pointing at an older commit.
gh release delete nightly --yes --cleanup-tag || true
gh release create nightly artifacts/* \
--prerelease \
--target "$GITHUB_SHA" \
--title "Nightly (${GITHUB_SHA:0:7})" \
--notes-file notes.md