Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
bac8961
feat(connection): one connection-settings store for every application
Sep 6, 2026
678b666
test: drop the hand-written store test
Sep 6, 2026
a68645d
feat(connection): the panel, and the check that catches the bug it re…
Sep 6, 2026
9634f80
fix(toggle): Switch, Checkbox and Radio never ran their callback unde…
Sep 6, 2026
2e17831
fix(controls): drop the click fallback from the toggles
Sep 6, 2026
01e1709
fix(connection-settings): make the switch a draft like every other field
Sep 6, 2026
1a5669a
docs(ui-usage): document connection settings
Sep 6, 2026
6f6dd58
test(qa-harness): import the connection hook from its own module
Sep 6, 2026
3ff7a35
ci: run the component sweep on Linux, and stop pinning a stale engine
Sep 6, 2026
cdca668
ci: no font packages
Sep 6, 2026
fd73fb1
ci: run the QA sweep under bash, not zsh
Sep 7, 2026
6754001
ci: port the QA harness off zsh properly
Sep 7, 2026
0cbf84e
fix(connection): commit, persist and reconnect from one snapshot
Sep 7, 2026
c59cb65
feat!: one value-change contract, and five parameters that did nothing
Sep 7, 2026
d4366b7
fix: one overlay owner, real enforcement, and a shared control scale
Sep 7, 2026
016c391
refactor(switch,text): put the classes in the recipe
Sep 7, 2026
8ba1d43
test(qa): two profiles, so Linux can answer what Linux can answer
Sep 7, 2026
b6db184
ci: run the sweep as the profile this runner can answer
Sep 7, 2026
6481da7
refactor(switch): the label and description come from the recipe
Sep 7, 2026
0ffb810
fix(connection,overlay): close the gaps review found
Sep 7, 2026
4c15309
test(qa): the headless profile runs every check the full one does
Sep 7, 2026
004b1cf
feat(check:api): the contract records types, not just names
Sep 7, 2026
9026ac7
fix(density): one default size, one gap scale, and a check for each
Sep 7, 2026
e84cc52
ci: pin the QA tools to the versions the sweep needs
Sep 7, 2026
9d78f22
fix(connection,overlay): a synchronous throw, a modal's focus, and a …
Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 45 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,16 @@ on:

jobs:
build:
# qa-inspect-host is a native renderer binary. Its currently published
# Linux runtime predates Tauri's GTK trait additions, while macOS is the
# supported build used by the host's own CI and by AgencyZero.
runs-on: macos-14
# Linux, since `qa-inspect-host` 0.1.9. It could not be built here before:
# it reached the engine through `tauri-runtime-blitz`, which brought the
# Tauri runtime with it, and that does not compile on Linux at all -- its
# `RawWindow` is a `gtk::ApplicationWindow` there and a Blitz window has
# none. So this job ran on macOS to get a host at all.
#
# The host opens no window, and now does not compile one: it takes the
# runtime with `default-features = false`, so nothing in its graph is Tauri
# or GTK. macOS is for building packages, not for a component sweep.
runs-on: ubicloud-standard-2
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -50,9 +56,18 @@ jobs:
# Check, Build and the whole test suite were skipped rather than failed —
# a green-looking pipeline that had verified nothing.
#
# `--locked` uses each crate's own published lockfile, which is the set
# its author tested. It costs nothing in currency: both tools still
# install at their newest version.
# `--locked` is gone, and it did cost currency: a lockfile is frozen at
# publication, so the host was pinned to whatever engine existed the day
# it was released. A renderer fix could then never reach this gate without
# a host release, and that is not hypothetical -- `ps-blitz` 0.4.3 fixes
# three defects in checkbox activation, and the host published before it
# kept installing 0.4.2, so `switch`, `checkbox` and `radio` went on
# failing here against an engine that had already been fixed.
#
# The mismatch `--locked` was added for is gone with it: it happened when
# `qa-inspect-host` wanted `ps-blitz` 0.4.x while its `tauri-runtime-blitz`
# wanted 0.3.x, so the same type existed twice. Both now require `^0.4`
# and resolve to one copy.
#
# One command per tool, deliberately. `cargo install a b --locked`
# resolves the two together and downgrades to satisfy both — it picks
Expand All @@ -64,8 +79,16 @@ jobs:
# which leaves rust-cache nothing useful to restore on the next run.
CARGO_TARGET_DIR: target/qa-tools
run: |
cargo install ps-qa --locked
cargo install qa-inspect-host --locked
# Pinned to a floor, not left to "latest".
#
# The sweep needs `--headless` and a host that can replace a text
# field without a font catalogue. Installing whatever is newest meant
# a version without those failed as `unexpected argument`, which
# reads as a broken workflow rather than a tool that is too old --
# and a host that silently appended to a field would not have failed
# at all until a check disagreed about a value.
cargo install ps-qa --version "^0.6.2"
cargo install qa-inspect-host --version "^0.1.12"

- name: Install Dependencies
run: bun install
Expand All @@ -91,16 +114,25 @@ jobs:
# minutes while preserving a clean document between components.
- name: Rendered component outcomes
env:
# GitHub's shared macOS runner took 1.6-1.9s for outcomes that pass
# locally under 1.25s. This widens scheduling deadlines only; every
# A shared runner takes longer than a local machine for outcomes that pass
# locally well inside the budget. This widens scheduling deadlines only; every
# declared rendered-state transition is still required.
QA_TIMEOUT_SCALE: 2
# This runner has no font catalogue, and it should not have one: a
# component library that needs a GUI stack installed to be tested is
# a component library nobody can test. With no fonts every glyph
# shapes to nothing, so anything sized by its text lays out flat and
# every paint assertion fails for a reason that says nothing about
# the component. The headless profile asks the same questions about
# layout instead; the full profile keeps the visual half and runs
# where there are fonts. See `PROFILES` in generate-checks.ts.
QA_PROFILE: headless
run: |
bun run qa:checks
bun run qa:entries
git diff --exit-code -- tests/ps-qa tests/qa-harness/entries
git diff --exit-code -- tests/ps-qa tests/ps-qa-headless tests/qa-harness/entries
bun run qa:build
zsh tests/qa-harness/run-all.sh
bash tests/qa-harness/run-all.sh

# Fails when docs/api-contract.md and the shipped types disagree, in
# either direction. Never runs with --write: regenerating the document on
Expand Down
Loading
Loading