Skip to content

fix(client): canonicalize rate-limit failure messages for post-content retry #379

fix(client): canonicalize rate-limit failure messages for post-content retry

fix(client): canonicalize rate-limit failure messages for post-content retry #379

Workflow file for this run

name: Client CI
on:
pull_request:
paths:
- '.github/workflows/client-ci.yml'
- 'packages/client/**'
- 'packages/protocol/**'
- 'scripts/**'
- 'install.sh'
- 'pnpm-lock.yaml'
- 'package.json'
push:
branches: [main]
paths:
- '.github/workflows/client-ci.yml'
- 'packages/client/**'
- 'packages/protocol/**'
- 'scripts/**'
- 'install.sh'
- 'pnpm-lock.yaml'
- 'package.json'
workflow_dispatch: {}
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Set up pnpm
uses: pnpm/action-setup@v5
with:
version: 9.12.0
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 22
cache: pnpm
# Mirrors the version pinned in release.yml so the cross-compile
# dry-run below exercises the exact same toolchain that publishes
# release assets.
- name: Set up Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.2.20
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build protocol
run: pnpm --filter @vicoop-bridge/protocol build
- name: Typecheck client
run: pnpm --filter @vicoop-bridge/client typecheck
- name: Test client
run: pnpm --filter @vicoop-bridge/client test
- name: Build client
run: pnpm --filter @vicoop-bridge/client build
# Cross-compile dry-run: produces every per-platform release binary
# (macOS arm64/x64, Linux arm64/x64, Windows x64) plus its .sha256
# sidecar into dist-release/, without uploading anything. Catches
# regressions in scripts/package-client-release.sh, the bun
# cross-compile matrix, and any code path that breaks under
# `bun build --compile` (e.g. unembeddable native modules) before
# the release workflow has to discover it on `main`. Whichever tag
# we feed only affects the asset filename — the build artefacts
# themselves are version-agnostic for this check.
- name: Cross-compile release binaries (dry-run)
run: |
CLIENT_VERSION="$(node -p "require('./packages/client/package.json').version")"
./scripts/package-client-release.sh "@vicoop-bridge/client@${CLIENT_VERSION}"
- name: Sanity-check Linux x64 binary
run: |
CLIENT_VERSION="$(node -p "require('./packages/client/package.json').version")"
BIN="dist-release/vicoop-client-${CLIENT_VERSION}-linux-x64"
GOT="$("$BIN" --version)"
if [[ "$GOT" != "$CLIENT_VERSION" ]]; then
echo "::error::compiled binary reported '$GOT', expected '$CLIENT_VERSION'"
exit 1
fi
echo "linux-x64 binary --version: $GOT"