Files
wallet/.gitea/workflows/ci.yaml
T
grenadeandClaude Fable 5.1 257b021066
ci / gate (push) Successful in 4m24s
feat: scaffold the workspace, the tauri shell and the webview
The house shape (architecture/generic.md §1): wallet-entities for the
vocabulary and the IPC wire types, wallet-core for the four ports that are the
architecture (KeyScheme, ChainAdapter, SwapProvider, FiatRamp), wallet-data
for the adapters that will implement them, and wallet-app as a Tauri 2 shell
whose commands are one-line shims. The webview is Vite + React + TypeScript
and reaches Rust only through ui/src/api/wallet.ts, typed by what ts-rs
exports from the entities crate on every `cargo test`.

Amounts are integer base units plus decimals, serialised as strings, because
the webview has no integer wide enough and a wallet that rounds is a wallet
that lies. The webview never receives a secret; readme.md and CLAUDE.md say
why and what will bite.

Two things the scaffold learned: Tauri's `version` field takes a JSON file or
a literal, never Cargo.toml, so the release workflow stamps it; and Prettier
must skip the generated types, which carry ts-rs's own style.

Placeholder icon; the mark comes later. CI targets the rust-gtk3 runner.

Refs #1

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ftBXYuba8ARhQeF74oUgW
2026-09-15 15:42:28 +03:00

48 lines
1.3 KiB
YAML

name: ci
# The quality gate (architecture/generic.md §12): format, lint as error, tests,
# and a frontend that typechecks and builds. Packaging and release live in
# their own workflow once the packaging epic lands.
on:
push:
branches: [main]
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
gate:
# `rust-gtk3`, not `rust`: tauri-build links against GTK and WebKitGTK dev
# libraries, which only that image carries (gitea-runners.md §3).
runs-on: rust-gtk3
steps:
- uses: actions/checkout@v4
- name: webview dependencies
working-directory: ui
run: pnpm install --frozen-lockfile
- name: webview gate
working-directory: ui
run: |
set -euo pipefail
pnpm typecheck
pnpm lint
pnpm format:check
pnpm build
- name: rust gate
run: |
set -euo pipefail
cargo fmt --check --all
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
- name: generated types are current
# `cargo test` regenerates ui/src/api/generated via ts-rs. A diff here
# means an entities change was committed without its TypeScript.
run: git diff --exit-code -- ui/src/api/generated