Skip to content

hqterm 0.3.0: Windows installer, Tailscale hosts, server setup, full … #22

hqterm 0.3.0: Windows installer, Tailscale hosts, server setup, full …

hqterm 0.3.0: Windows installer, Tailscale hosts, server setup, full … #22

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- run: bun install --frozen-lockfile
- run: bun test
- run: bunx tsc -p .
- run: sh -n install.sh && bash -n install.sh
- run: bun build --compile src/main.ts --outfile dist/hqterm && ./dist/hqterm --version
# The Windows installer for real: download, verify, install, PATH, twice
# (a re-run over an existing hqsh.exe must work too).
windows-install:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: install.ps1 (Windows PowerShell)
shell: powershell
run: ./install.ps1
- name: install.ps1 again (pwsh), then hqsh runs from the user PATH
shell: pwsh
run: |
./install.ps1
$env:Path = [Environment]::GetEnvironmentVariable('Path', 'User') + ';' + $env:Path
hqsh version
if ($LASTEXITCODE -ne 0) { exit 1 }
desktop:
runs-on: ubuntu-latest
defaults:
run:
working-directory: desktop
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm test
- name: Build AppImage
run: npm run dist
- name: Smoke test under Xvfb (window, PTYs, images, split, layout restore)
run: |
ls -la dist
app="$(ls dist/*.AppImage | head -n1)"
smoke() {
HQTERM_DESKTOP_SMOKE=10000 HQTERM_DESKTOP_SMOKE_SHOT="$PWD/$1" XDG_CONFIG_HOME="$RUNNER_TEMP/cfg" \
xvfb-run -a -s "-screen 0 1280x800x24" "$app" --appimage-extract-and-run --no-sandbox 2>&1 | grep -v appimage_extracted | tee "$1.log"
}
# First launch: one shell, then Ctrl+Shift+D splits it (2 PTYs).
smoke smoke-1.png
grep -q "hqterm-desktop smoke: ok (ptys=2)" smoke-1.png.log
cat "$RUNNER_TEMP/cfg/hqterm/desktop-layout.json"
# Second launch restores both panes, then splits again (3 PTYs).
smoke smoke-2.png
grep -q "hqterm-desktop smoke: ok (ptys=3)" smoke-2.png.log
- uses: actions/upload-artifact@v4
if: always()
with:
name: hqterm-desktop-smoke-screenshot
path: desktop/smoke-*.png
retention-days: 7
- uses: actions/upload-artifact@v4
with:
name: hqterm-desktop-linux-x86_64
path: desktop/dist/*.AppImage
retention-days: 7