igneum/.github/workflows/ci.yml
igneum-labs a672725964 Igneum Wallet, for 0.1.3: the update card, one centred card over the window for an update
The banner under the header stays; the card is the first sight of an update. The same card as the miner's (one
language: the mark with a progress ring, "Igneum Wallet 0.1.3", one line (is available, is downloading with the
percent, is ready to install, Installing. The app restarts itself., did not install with the one-line cause and Try
again), up to three lines of release notes from the manifest with the rest behind "What changed", the size, Install
now and Later. Escape and the backdrop are Later. Reduced motion is honoured.

Rules (ui/update-card.js, pure, ui/update-card.test.mjs): the card never opens while the send screen is open, while
a Touch ID or Windows Hello line is on screen, while a wallet is being created or imported, or while the app quits;
it waits and comes once the block lifts. Later hides this version at this stage and leaves the banner; the card comes
back for a newer version, or when the download is ready and automatic updates are off (with them on it installs by
itself). An open card follows its update through downloading, ready, installing and failed; installing and failed
never open a card by themselves.

The engine serves ui/update-card.js next to app.js (src/server.rs). ?update=<kind>[&auto=0][&card=1] on the page
shows every state without a manifest. The version stays 0.1.2 until the next ship. CI runs the new test file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:33:40 +00:00

67 lines
2.7 KiB
YAML

# CI on every push and pull request (private repository, free runner minutes).
#
# What runs: the lottery-hash crate's tests (igneum-pow, release profile), the census tool's build, the two Python
# simulators' --quick modes (each under two minutes), the site build with an internal link check, and the gh-free
# identity grep of the public export list (tools/ci/forbidden-strings.txt).
#
# What does not run, on purpose: the node fork (vendor/igneum-node*, a rusty-kaspa fork of about 500 crates with
# rocksdb, blst and the execution layer) is gitignored here and too big for the free runners today (a cold build is
# 20 to 55 minutes on 2 to 8 vCPU, docs/bench-log.md). The workflow builds igneum-pow only; the fork's own tests run
# on the Mac and the seed node (infra/seed-nodes, infra/fast-time).
name: ci
on:
push:
pull_request:
jobs:
pow:
name: igneum-pow tests, igneum-census build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: toolchain
run: rustc --version && cargo --version
- name: igneum-pow tests (release)
working-directory: igneum-pow
run: cargo test --release
- name: igneum-census build (release)
working-directory: igneum-census
run: cargo build --release
sims:
name: simulators, quick modes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python3 -m pip install --quiet numpy
- name: finality_v2.py --quick (under two minutes)
working-directory: sim
run: time timeout 120 python3 finality_v2.py --quick > finality_quick.md
- name: difficulty/sim.py --quick (under two minutes)
working-directory: sim/difficulty
run: time timeout 120 python3 sim.py --quick > difficulty_quick.md
- uses: actions/upload-artifact@v4
with:
name: sim-quick-output
path: |
sim/finality_quick.md
sim/difficulty/difficulty_quick.md
site:
name: site build, link check, identity grep
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: site build
run: node site/build.mjs
- name: internal link check of site/*.html
run: node tools/ci/link-check.mjs
- name: identity grep of the public export list
run: bash tools/ci/identity-check.sh
- name: relay unit tests (parsers, secret compare)
run: node --test relay/test/parse.test.mjs relay/test/auth.test.mjs
- name: wallet update card (wording, note lines, when the card shows)
run: node --test app/igneum-wallet/ui/update-card.test.mjs